顯示具有 交易策略 標籤的文章。 顯示所有文章
顯示具有 交易策略 標籤的文章。 顯示所有文章

2015年4月11日 星期六

程式交易利用選擇權避險 – 3

 

跳空這件事,是我們想要避險的一大因素,有多少次一覺醒來看到美股大漲大跌,而我們部位是反向時的那種感受,真希望能夠有多一點避險,然後準備開盤被巴。

 

但是我們怎會知道開盤會跳空大漲大跌呢? 也可以換句話說,我們怎麼知道美股會大漲大跌呢? 除了一些事件因素之外 (數據公布或FOMC會議等等....前文有稍微介紹過,美元與FOMC會議 ),可以多參考 VIX 。

 

可由網址 http://stockcharts.com/h-sc/ui?s=vix 看到S&P 500 指數期貨的波動程度,如圖。

 

31

 

一般來說,波動率越大,表示盤勢的漲跌幅也會越大,像現在波動率一直掉,那美股的漲跌可能就越小,這樣的話,我們的跳空風險可能也就越小。( 不只跳空,我們的波動率也可能隨著S&P500的VIX跟著變大變小,因素當然是有很多,這只是其中一個。)

 

再來,我們拿VIX和S&P500期貨價格的走勢來比對看看,如圖。

 

32

 

這是2014/9~2015/2這段期間的比對,很明顯用肉眼就看的出來跌勢時VIX上漲,漲勢時VIX下跌,所以人家都說看VIX就可以看出來市場的氣氛如何,是恐慌還是舒緩

 

回到主題,這和選擇權避險有什麼關係?

 

選擇權的Greeks其中一項重要因素Vega就是波動率,我們真正關心的會影響價格的隱含波動率,很可能會跟著VIX的方向走,那由上圖的關係顯示,假如我們的趨勢程式單能夠跟對空頭盤勢時,期貨是空單,那搭配避險的選擇權應該要選空方波動會趨向大的正Vega,避險要作多而且是正Vega值的是,Buy Call

 

另一方面,多頭時趨勢單作多,期貨是多單,搭配的選擇權應該選多方波動會趨向小的負Vega,避險要作空而且是負Vega值的是,Sell Call

 

我們再來用實際例子檢視這個想法,為什麼是這個樣子,在空方時期貨作空單,行情真的下去了又急又快,波動率上升,我們的避險單Buy Call可以因為Vega上升而少輸一點,例如急跌兩百點時,Call價格卻掉沒多少或掉不下去,那我們可以有更多彈性來調整避險的Call。

 

反之,多方趨勢時期作多單,行情慢慢的走上去,波動率下降,我們的避險單Sell Call 可以因為Vega下降而少輸一點,例如今天小漲30點,Call的價格可能只漲一點點或跟本不動,那我們可以有更多彈性來調整避險的Call。

 

這篇紀錄的是偏重選擇權Vega的特性來搭配程式單的避險,因此要再特別注意,到期日要夠久,Vega才有影響效果,所以別用週選,要用月選較適合,另外,雖然這看起來很合理好用,但也只是眾多因素中的一項而已,換句話說,程式交易利用選擇權避險後面還有好幾篇。

 

 

2014年9月14日 星期日

程式交易與選擇權避險

 

大部份的程式交易都是趨勢型,有波段行情發生時能夠大賺,但是區間震盪的行情則會不斷的虧損,而在虧損時期要怎麼應對是這篇的主題。

 

遇到虧損時最容易想東想西,而最不該作的事最常去作,就是自己動手去調程式部位,這通常都沒什麼好結果,作程式的人,要謹記在心,程式部位是神聖不可侵犯的,有什麼問題,盤後再修改測試,別在盤中手癢。

 

而這個修改測試要怎麼作,是否必要改,就要好好想了,因為虧損是正常的,當虧損是在預期的範圍內,那不該改,若很想改,或許該改的是自己的心態,是不是不夠瞭解程式和它的表現狀況。

 

確定改要怎麼作,我們希望可以在震盪時降低虧損,首先是很常參考的逆勢單策略,把逆勢單加入投資組合裡,佔有小部份的比例,目標是讓整體組合在區間震盪時少輸一點,當然在大賺時應該也會少贏一點點,達到較平穩的目的。

 

但是逆勢單要寫的好並不簡單,光是要在長期的回測能夠獲利就是一個挑戰,於是標準不能看太高,別賠就好,只要不賺不賠,就能夠對整體策略組合有幫助,能夠降低drawdown。

 

而效果比逆勢單好的是利用選擇權避險,一個區間,假設就陣子的9200~9600,不停洗刷時,趨勢單虧損哭哭,逆勢單也不一定能獲利,但是選擇權有策略可以降低損失。當然選擇權也不是簡單的東西,而且回測也不容易,L想要紀錄的是實際應用的一些想法。

 

前提是很重要的,程式單為主,選擇權避險為輔。

目標是很重要的,程式單輸錢時,選擇權加進去可以少輸一點,反之,程式單贏錢時,選擇權會小賠或沒賺賠。

 

如此強調的原因是,選擇權本身就有很多策略,但把它當作獲利主軸和當作避險角色時,兩者想法是不同的概念。在這邊,需要專注在我們的前提和目標。

 

以下,都是針對台指市場的交易為例。首先,要確認時機,要利用選擇權避險的時機是特定的還是長駐的? 沒有標準方案,視程式交易特性,如果是有長波段單,或許長駐搭配會適合,若大部份是短單或經常無單,或許特定時間或極短期較好。

 

再來就看選擇權避險方式,就以這段期間9200~9600上下洗刷的區間為例,假如程式單是在9300點跌破時翻空的情況下,避險方式主要有下面幾種,我們就來看看如何搭配以及優缺點。

 

  1. Buy call

  2. Sell put

  3. Buy call + Buy put

  4. Sell call + Sell put


 

第一種,Buy call 可以擋住急拉時的風險,但是經常會歸零,如果是手動作避險的人,好處是不用去理它,不需要擔心太多,因為風險可以完全鎖住。要不要再作成多頭價差,上面再sell call? L是覺得有點多餘,因為我們目標是避險,上面再多作一個就沒辦法完全鎖住。強調again,經常歸零,買便宜的效果差,買貴的又很花成本,這是另一個要深入的主題。

 

第二種,Sell put可以增加收入,持有空單再去sell put就是等於sell call,只是履約價較低的sell call,我們程式單原本最大的利基就是能大賺一波,行情走越久我們就抱越久賺越多,但是加了sell put之後,作對的時候會少賺很多,作錯的時候也只是增加一點收入。

 

為什麼說是一點呢? 因為一般情況下,如果行情馬上反轉,空單被軋,以9300空單被軋到9400或9500時幾乎就停損翻多了,那這個sell put在翻多時也要出場了,這樣避險能賺多少? 當然,這勝率是高的,只是賺賠比需要多加考慮,也要思考自己的程式單是否適合,以單純sell方來說,L的經驗是拿到”加碼”的應用比較好一點。就是空單時想加碼,就同時作sell call,這是另一個要深入的主題,(這句好像重覆再用,為以後鋪梗)。

 

以上兩種是單腳,與程式單配合,如果程式單反轉時,這個選擇權部位也需要反轉,後兩種則不一定,而且很有趣。

 

第三第四種,雙buy和雙sell,先想想本質的差異,delta我們確定是要偏正的(初始時),因為是要拿來作期貨空單的避險,而雙buy是long gamma付theta,雙sell 是short gamma 收theta,也就是說,我們需要先確定想要和時間或趨勢作朋友?想不出來的話,不如反著想,不想要和時間或趨勢的哪個作敵人?

 

當你很害怕程式單被跳來跳去的行情巴的亂七八糟,早上急拉衝高讓空單停損翻多,午盤又下跌又翻空,抱著空單收盤後又看到美股一直漲,覺得明天起床又要面對虧損,這樣的情況下,你害怕的是波動劇烈,肯定作雙buy是好選擇,但不是雙buy了就沒事不管它,可以不管,但要想想,如果9300的期貨空單,搭配我們依區間9200~9600的想法,去buy 9600 call及buy 9200 put,後續要怎麼進出,需要考量一點,你認為9200或9600會不會破?

 

如果會,就不要管它,但是如果沒破,洗來洗去又回到9300,那完全沒避到險還多輸雙buy權利金,怎麼辦? 如果覺得不會破,但是洗刷又很劇烈,雙buy無誤,但是要管要調,當行情從9300漲到9400時,因為雙buy是long gamma,所以delta會從假設中立到偏多,這樣我們就再把它中立,就是空期貨。空了之後,行情真的又洗回9300,delta又會偏空,那再中立,就是買期貨,以此要訣反之亦然,洗的越快越嚴重,賺的越多,重點是,真的破了9600或9200,也不會輸。

 

另一方面,假如行情就是不太動,好長一段時間都是在9200~9600了,程式單賺不到錢,偶爾輸輸,也不是很痛,或許就適合與時間當朋友,雙sell收theta。這在台股是特別有利,因為我們的官股行庫都是排球隊的,指數跳上去就往下殺球,指數掉下去就撲去救球,區間操作超級明顯,而且作的還真厲害。我們若作雙sell時,官股行庫是很強的隊友,就假設sell 9200 put 和sell 9600 call,或者是從最大未平倉的合約來選履約價也好,如果這個區間一直沒走出去,這個雙sell就能帶來一些獲利。

 

以上四種選擇權避險方式只是大致介紹,實際上行情的路徑、波動程度、時間的拿捏、履約價選擇,都是重要因素,這些是另外好幾個要深入的主題。

 

2014年7月18日 星期五

指數分配與選擇權價差策略

 

W

延續幣圖誌上,牧大的分享 期貨報酬率 v.s. 對數常態分配? (R實務篇) 此篇,

我們瞭解市場漲跌的分配是尖頭肥尾的,白話文也就是沒啥漲跌的日子非常多,很大漲跌的日子也比想像多。

 

而依據這樣的特性,在選擇權市場的交易上,我們很自然的想到,雙SELL價平的選擇權賺取低波動的日子,再雙BUY兩倍價外兩檔或再遠的履約價來賺取大波動的日子,這樣組合的價差交易實質是買方部位,風險有限,獲利無限,而且收的權利金還會比買方花費的權利金多。

 

損益如上圖顯示,沒啥波動的中間區域是獲利的,向兩邊越遠的獲利也越大,會虧損的區域僅在兩邊小漲小跌的部份,很符合前篇市場漲跌的分配的觀察結果,所以若拿來操作,應該是很好的策略………吧?

 

這樣的策略能不能獲利?  L認為”應該不會”。

 

說”應該”的原因是沒有去完整回測過,若要作回測,方式是模擬每日收盤前,將前日部位平倉,然後價平CALL和PUT各賣出一口,價外二或三檔的CALL和PUT各買進兩口,這個履約價的選擇差別就像上圖一樣會是不同的”W”,日復一日這樣測試得結果。

 

可想而知這樣作的交易費用是很高的,每日一單位的操作就要新倉賣兩口買四口,平倉買兩口賣四口,或許,以週的頻率來作一次會好很多,而且週的指數報酬率分配,”應該”也類似日的分配一樣是尖頭肥尾。以下我們先排除掉交易成本的影響,單看這個策略是否有獲利能力。

 

說”不會”的原因是選擇權市場本來就是這樣的分配,我們從買賣兩方獨立出來看,作買方的人買兩邊價外的CALL或PUT,權利金的價格低,若有大行情的出現會獲利數倍的可能,就像前篇20倍速的選擇權提到的一樣。而不論是主動投機或作避險,對買方來說,價外的履約價遠比價內的履約價更有需求,很自然的,越多人想買,這些價外的選擇權就會被買起來變貴比價平價內的貴,要注意的是,這些價外的選擇權價格是低的,但是比較貴

 

另一邊,作賣方策略會怎麼選擇履約價? 這因素很多,如果我們先簡化要以時間價值最大的因素作為第一考量,那價平的時間價值是最多的,價內外兩三檔的時間價值就有點少,再更價內外三四檔以上的履約價已經沒什麼時間價值,賣深價內外的只能收一點點權利金,所以從時間價值這個因素來看,價平的履約價是最適合賣方的,也因此,越多人想賣,這個價平履約價的權利金就會被越賣越便宜,要注意的是,價平選擇權價格是比價外高的,但是比較便宜

 

以上所說的貴和便宜,其實就是隱含波動率的差別,只是L想用白話一點的方式來紀錄這些差別,簡單的說,價平履約價的隱含波動率會比較低(便宜),越往價外履約價的隱含波動率會比較高(貴),如果把所有履約價的隱含波動率排列,就是波動率微笑曲線了,如下圖。

 

SMILE

 

波動率微笑曲線有一些應用,例如右方越高,可能表示市場越貪婪,左方越高,可能表示市場越恐懼,又或者微笑並不是很好看,部份平部份斜,關於波動率微笑曲線GOOGLE一下可以查到很多資料,上一段以買賣方角度來解釋波動率微笑的成因只是其中一種說法,還有一些解釋可以再找資料研讀,這邊先回到開始的問題,那價差策略到底可不可行。

 

由前面的說明可以瞭解,這個策略是去賣比較便宜的價平選擇權,然後又去買比較貴的價外選擇權,市場上本來就是這樣的傾向了,所有選擇權市價都是當下的均衡點,當我們這個策略作進去市場後,能夠獲利只有兩種可能,第一,未來的波動比現況波動的預期更低,也就是尖頭更尖,我們策略的賣方可以獲利。第二,未來的波動比現況波動的預期更大,也就是肥尾更肥,那我們策略的買方可以獲利。

 

那所以到底能不能獲利? 不一定,除非我們能預期以上兩種可能會出現再作吧,如果像傻瓜投資法一樣一直作下去,L會預期這長期的表現是沒賺沒賠,但會一直付出交易費用,是不是如此,或許哪天心血來潮再作測試了。

 

FXB

《本文與 Bituzi 同步刊登》

 

2014年7月4日 星期五

20倍速的週選擇權

 

週選擇權翻20倍

 

近期台指盤勢的波動有些放大,前次結算和這幾日的強漲行情都可以看到有選擇權在一兩個交易日中就可以翻了幾十倍,如同上圖,5點的CALL在兩個交易日翻成100點。

 

不過,看的到要怎麼吃的到呢? 本篇要紀錄的是週選擇權的一些特性和應用,還有策略執行的心得。

 

先專注在”倍數”這個特性上來思考,如果我們想要賺很多倍,那第一條件是成本點數要很小,才有機會到一兩百點時能賺幾十倍,第二條件是要對標的很敏感,才有機會在盤勢對邊時快速的增值。會符合這兩個條件的商品就是快到期的選擇權,因為存續期間短,時間價值剩不多,偏價外的履約價成本小,同時有很高的敏感度,行情發生時能快速變成價內等同期貨。

 

所以我們針對週選擇權的GREEKS來觀察並應用,要怎麼掌握價格變化需要理解THETA和GAMMA,這兩個因素就是前述兩個條件的觀察點。在快要到期時,選擇權的THETA和GAMMA都是大的,(THETA大表示時間價值掉的快,而不是時間價值本身的點數大)這兩個GREEKS是反向的,之前已有紀錄過選擇權入市先決定要站哪一邊,與時間同邊還是要與趨勢同邊,這篇先跳過這部份,我們著重買方倍數的策略,也就是付一點權利金,付一點THETA,來買一個噴出,來買一個正GAMMA。

 

既然會有這麼高的賺賠比,當然勝率也是非常低的,勝率低的原因是要很準,方向要對、時間要快、幅度要夠,缺一不可

 

方向錯就不用說了,而且錯的離譜也是好事,因為也只會損失一點點。時間要快就是要拿捏的夠準,也必須要知道如果多久時間沒發動時會損失的THETA值,當然若有心理準備全賠的話就不用算那麼細了。幅度要夠,因為買一點點的權利金肯定是價外一兩檔之外的履約價,如果衝不到那麼遠,權利金一樣是雙手奉上。

 

接著是考慮操作的計劃,買進5點的選擇權,衝到100點的過程,你抱的住嗎? 大多數人都是會出場停利的,鮮少有人能夠抱的住一大波,當然不是說抱牢牢一定好,要談出場方式需要回頭想想這個策略評估。原本,估計是賺10倍以上,勝率不到1成,但若會先出場停利,表示勝率會提高,也許兩三成,但同時賺賠比也只剩下三四倍,哪種好? 可能要從凱利公式來檢視這兩種出場策略的數值再來判斷,前提是,操作是有紀律的。

 

而實際上操作的經驗,L是有小小建議,如果買進真的噴出,不要出場,要抱到底!!! 就當作忘了這個部位,會結算多少就是多少。原因是大部份情況,出場又會想買回,但會買不回來,同時進進出出又造成額外費用,也沒那麼準也可以短線都作對(真那麼準不如作短線就好了),反而賺的不如緊抱的多。

 

近期盤勢波動放大,從買方角度來想,我們追求便宜的選擇權能倍數獲利,但賣方當然也不是傻瓜,這種狀況多了,很自然的VOL也會增加,波動率增加後的選擇權就沒那麼便宜了。

 

 

FXB

《本文與 Bituzi 同步刊登》

 

2014年6月27日 星期五

多策略組合的觀察2

 

以前篇 多策略組合的觀察 回應讀友們的思考,或許是前篇例子說明不夠清楚,這篇就再延伸紀錄了。

 

要回應的重點整理

1. 組合的整體績效及風險

2. 資金運用效率

3. 同時運作四種不同邏輯的情形

4. 策略的刪減

5. 遇上系統性風險

 

同一個範例,策略A、B、C、D四支,及ABCD的組合,假設是一年的表現如圖。

 

策略組合

 

關於組合的整體績效,為什麼是加總不是平均,換個角度想,A、B、C、D是我們屬下的四個交易員,我們就當作管理者的角色,A交易員這年賺了300、B交易員賺了120…等等,很優秀的,四個交易員都是賺的,這個TEAM一年下來賺的,就是四個人加總起來的,800。

 

以A自己的角度來看,他的drawdown 30,表示這一年裡,績效從高點回落最多的幅度是30元,同理,B是15元,等等。不過從管理者的角度看,他們四個交易員每天有賺有賠,常常互相抵消一部份虧損,所以整個TEAM的drawdown變成只有40,而不是他們四個人加起來的90

 

如此,對TEAM來說的獲利風險比,是800 / 40 = 20倍,比起他們每人個別的比率都還好。

 

關於資金運用效率,可以有許多種資金管理方法,在例子中有drawdown資料,所以就假設是以drawdown 的倍數來控管資金使用,再假設這個倍數是3倍,A交易員drawdown 30,那需要準備本金 90來交易,交易的結果是獲利300元。而以TEAM來說,需要準備本金 120元,交易的結果是獲利800元,以這樣的例子來說,300/90 比 800/120,那當然是後者資金有效率了

 

關於同時運作四種不同邏輯的情形,讀友經驗是可能會混亂,可能會互相衝突。但是,我們要的就是衝突,如果四個策略常常同向,才該注意,這樣就會失去風險分散的效果。而實際運作上,比四種還多上太多了,夠分散的邏輯策略十個、幾十個都常常運用。

 

關於策略的刪減,以ABCD四個交易員的表現來說,A和C表現較好,那是否選擇AC兩個就好了? 這有兩個問題,第一,現實交易上,我們無法事先得知A和C表現是比B及D好,換句話說,我們若事先就知道誰什麼時間表現最好,那段時間不就梭哈押他就行了嗎? 那就不需要多策略了,當然是作不到。第二,如果A+C表現如預期的比B+D好,還是不能表示AC會比ABCD好,因為多個策略帶來的drawdown分散效果不同,例如AC的drawdown可能也是40,那AC和ABCD的P/D是480/40 & 800/40,當然還是ABCD好。這個部份,要延伸的主題是怎麼選擇各策略以及相關性的測試,下篇再紀錄了。

 

關於遇上系統性風險,讀友經驗可能會全賠,這當然可能,也就是我們要瞭解drawdown的目的,但一個好的分散組合,或許一兩天偶爾會全賠,但拉長時間看應該是有的賺有的賠,而更長的時間看應該是都要賺,才是正常有效的分散,所以我們才研究那麼多種策略來搭配。

 

以上,請讀友想法繼續交流討論囉。

 

 

2014年6月20日 星期五

多策略組合的觀察

多策略組合標圖

 

由前篇 避免過度最佳化 提到了單一程式策略儘量專注著目標,不需要把多種盤勢邏輯統統放在一支改成大雜燴,那很容易走進最佳化的陷阱,而此篇要紀錄的是各程式所合成的策略組合觀察。

 

一般說來,走到衡量整體組合的程式交易者已經作了非常多的事情了,經過策略邏輯的設計、實戰、修改,瞭解自己偏好的交易型態,瞭解自己能夠接受的風險程度,才有辦法一支一支的打造出合適的策略,再將各支策略組合觀察整體績效,觀察的第一重點就是利潤風險比。

 

以下圖為例,有四支交易策略A、B、C、D,及其個別的獲利風險

 

策略組合

 

而這四支策略組合在一起時的獲利是各別策略獲利的加總,但Drawdown則是大為降低,組合的獲利風險比為800/40=20倍,比起原先各別策略的P/D都要高的多,這是我們要的東西,原先一支策略A估計的獲利300就要準備承擔30的風險,現在組合有800的獲利卻僅要估計40的風險

 

在這個例子中,要特別衡量是組合後的Drawdown 40,與原先個別策略的Drawdown加總 90 (30+15+20+25),所計算的比例 40 / 90 = 44.4%。這個比例的意義是組合的效果,各策略因為彼此不同的損益期間表現,所以在每段時間都有互相抵補的效果

 

當然也要各策略屬性不同、目標不同才會有效,不然每支策略賺的時候一起賺、賠的時候一起賠,那放在一起也沒什麼效果,這種情況的比例算出來會是高的,可能70%、80%以上。

 

調整組合的目標就是希望能夠再降低這個比例,希望能夠到40%、30%或更低,所以在打好基礎,有了一個基本組合後,開始慢慢調整整體組合,這時可能會發現某支不太會獲利的策略加進組合反而是蠻有效的,甚至沒什麼賺賠的策略放進組合,雖然總獲利沒增加,但是Drawdown降低了,那也是一個進步

 

而且加一支普通的策略所花費的工夫,比精雕細琢一支複雜策略來的輕鬆多了。由組合的角度看,或許普通策略更值得,各位讀友可以多加思考這樣的方法,同時再次避免了單一策略的過度最佳化

 

另外有一點可以多注意的是,若要增加部位時,同一策略的加碼往往不如再加進新的策略,當然,新策略並不是那麼好生,所以對於學習新邏輯、測試新想法,都是無法停止、要持續下去的。

 

 

 

附記1: 單一策略的評估主要有介紹三項方法,各自重要,而組合評估也同樣適用,此篇僅著重獲利風險比,而另兩種方法仍值得觀察參考。

 

附記2: 此篇紀錄策略組合的評估方法及好處,工具利用可以是MultiCharts的Portfolio backtester或EXCEL自行計算(由每日的測試損益推算),這部份下篇再紀錄了。

 

 

 

FXB

《本文與 Bituzi 同步刊登》

 

 

2014年6月7日 星期六

避免過度最佳化

 

help

 

程式交易策略的設計有個大難題,不論是新手或老手都會一直感到困擾的問題是: 我的程式是否過度最佳化了?

 

以我們現在開發程式交易策略的方式,是將歷史資料作為數據,套用各種不同的邏輯來測試,希望能找到一種通則可以適用在對未來的預測。這樣的方式是利用歸納法找出通則,而通則是表示有一定的機率,也可以當作是我們回測的勝率。

 

但若將前述各種不同的邏輯條件增加的越來越多,就會越來越像是對數據作細節的描述,可以得到很漂亮的測試,但對未來的預測能力必然不如對過去的好,這很像是考試前把所有的考古題答案背下來,而不是真的瞭解怎麼解答,那當考試時題目稍有改變就不會寫了。

 

有指標就一定有參數,有參數就一定要作選擇,選擇參數的個數及個別的範圍。還有更大的考量是,要怎麼判斷是否也用了太多指標以致於最佳化了? 或許它真的就是這麼準,也沒什麼不可能。

 

那怎麼辦?

目前並沒有主動正向的建議或準則說明該使用多少參數或指標個數,只有被動的再去測試,常用的方法是forward backtesting,就是把數據切兩部份,一部份測試合適參數,另一部份作為未知數據來測試結果。假設同一組參數在這兩部份的運作情形差異不大,那很可能表示這組參數是夠穩健的,若在兩部份的差異很大,那好險有先作測試…

 

這邊說的差異大不大要如何判斷? 可以利用之前談過的交易策略評估,參考連結

交易策略評估-Kelly formula

交易策略評估-獲利風險比

交易策略評估-損益期間

(交流會的朋友知道怎麼從測試報表中,較快速的選擇合適參數了)。

 

 

以上,是針對單一策略作forward backtesting來判斷是否過度最佳化,但作了也評估過了,能表示未來績效會和測試時一樣好嗎? 當然,還是不一定的,唯一可以確定的是對這支策略的信心和瞭解更加提昇了,這也是很重要的。

 

除了forward backtesting之外,避免過度最佳化是從策略組合的角度來設計,簡單的說,就是讓各策略專注。專注在目標上,目標是長波段10%行情、中波段3%行情、當沖策略、極短線策略、震盪盤策略或是針對只作多空單方向的特殊策略等等。

 

在設計這些策略時,單一的目標要夠明確,例如想設計一個大行情必吃的策略,那小行情就不予理會,或許能作到避開損失就夠好了,千萬不要想連震盪小行情也吃的到,因為這樣很可能又會陷入多重邏輯的陷阱

 

以交流會談到的故事來說,動物界舉辦了鐵人三項比賽,項目是飛行、短跑和游泳,老鷹在飛行項目得了第一名,但是短跑和游泳都不行,獵豹在短跑得了第一名,但是另兩項不行,海豚則是游泳第一名,但另外兩項也不行。最後這項比賽的冠軍是一隻鴨子,三項都會一點,雖然都不怎樣。

 

這故事和程式交易策略有什麼關係? 假如我們希望設計一個任何狀況都適用的策略,什麼行情大小都要吃到,那麼就可能會設計出一個什麼都吃不好的鴨子,而好的作法應該是建立一個團隊,由老鷹、獵豹和海豚組合的超級戰隊。

 

這和避免過度最佳化又有什麼關係? 當我們專注在特定目標設計策略可以有較簡化的邏輯,同時在組合時又可以有效的截長補短,這個有不有效,主要是指降低整體drawdown,也就是看老鷹、獵豹和海豚彼此合不合,這個戰隊能否發揮綜合效果,這部份下篇再紀錄了。

 

 

 

2014年5月10日 星期六

波段策略應用個股期貨

 

台指期近年來波動小,作期貨單找方向實在是沒什麼便宜可佔,所以除了台指之外,要平衡整體損益的方法就是找其它商品,作選擇權找時間和波動的利潤、作國外期貨,那是一個更大的世界。

 

其實國內還有選擇,就是個股期貨。以最大成交量的幾檔,日成交量也有一千口以上,而且這些也都是高價且波動大的標的。目前來說,宏達電、可成、TPK、聯發科,都是優先考慮的標的。

 

相對台指期來說,這些股票的波動率實在是非常大,因此趨勢單就更有交易機會了。L 使用 歷史波動率策略設計 此篇所介紹的類似策略,屬於中長線的波段。針對以上四檔個股期貨作測試,時間取不長,從2013/7開始,進出的狀況如下圖。

 

個股期

 

測試出來的績效是很不錯的,整體組合的績效如下。

 

個股期2

 

多空獲利平均,可成、聯發科、宏達電多單獲利,TPK空單獲利。將近一年的時間獲利約85萬,而drawdown 約17萬,這個獲利風險比將近五倍,相當高,當然也是因為這幾支個股都非常有趨勢。

 

現在是事後來看這四支個股在過去一年的趨勢單獲利很好,並不能以此預期未來獲利狀況,再進一步的研究可能要把現貨資料拿來測試,至少五年十年的,若績效也穩定的話,那對策略的信心就高多了

 

不過若是程式單以長線趨勢為主的話,押台指期不如押這幾檔個股有機會,有興趣的朋友也多測試看看囉。

 

 

 

2014年4月9日 星期三

趨勢追隨策略類型3-均線策略

 

續前篇 Trend Following 趨勢追隨策略類型 以及 趨勢追隨策略類型2-突破 。

 

最基礎的均線趨勢追隨是每個人都會測試的,差異只在根據每人經驗找出合適的長度及調整,而這個合適的標準主要是以獲利風險比作為判斷

 

大致上,越長期的均線可以獲取越大的波段,不容易被掃蕩,但是Drawdown也較大,而且Drawdown時間長。反之,中短期的均線搭配過濾邏輯和停損停利,比較容易可以設計出Drawdown較小的策略,但獲利也就被限制了許多。

 

此篇紀錄一個長期的均線追隨策略。先作個前提,在設計時要特別注意自己可以忍受的Drawdown,瞭解損益期間的分布,而不是單看測試的勝率和最大獲利數字,甚至可以說,這兩項是相對不重要的,因為長線策略要作的長,就要受的了Drawdown,如果風險大小和期間長短是讓你沒辦法承受,那再漂亮的策略也是無用。另外這類型的策略的勝率偏低,目標是大波段獲利,要求高的盈虧比,遇到振盪期被洗刷,也有人是很快就受不了的,所以測試數據中的連續虧損次數也要注意。

 

這篇用的跟隨均線的判斷很簡單,均線之上保持多單,之下保持空單,因為一條線容易來回洗刷,所以稍微作個緩衝的通道,以High、Low取平均就有兩條線。問題只在於均線長度如何決定,L自己有個偏好的方式是取短中長三個長度再平均,另外也利用短期的趨勢再作微調。

 

基本上是一個非多即空的策略,跟到底,但是偶有乖離非常大時可以執行停利,這個非常大,是定義在均線上下10%,夠大了吧,其實遇到的次數很少,所以這個策略在場內的時間比例非常高。

 

以下是策略的程式碼供參考。

 

code

 

運用在台指期的5分K,這策略使用到的均線參數多了點,不過這是依各人偏好所設計。

 

實際進出圖形如下。

 

StrategyPic

 

很明顯的,該被刷就被刷,該吃到就吃到,調整到圖形的進出和心裡所想的接近時,就能夠接受它了。

 

這個搭配行情看進出是很重要也很花時間的,在最佳化的過程中可以找出很多均線的參數,L看過許多測試數據,會說明多少K線使用多少均線是最好的選擇,那種文章參考參考就好了,沒有那種最佳參數,只有找到適合自己的參數才是最重要的

 

過去績效(05~14)如圖。

 

perfor

 

Drawdown 322000,對這樣的長期策略來說很平常,甚至到40萬也不奇怪。

 

perTrade

 

勝率34.55%,配合盈虧比3.05,也是典型長期策略的數據。

 

perYear

 

損益期間來看,近年表現都比較差,但我們可以解讀是行情走勢的原因,這兩年有什麼大波段呢?

 

以一個策略原型來說,這樣的績效是蠻不錯的,若是能夠認同這樣的獲利風險,這其實就是一個可以運用的長線策略,但若覺得風險無法承受,那可以試試什麼情況不須在場內,也就是加上過濾邏輯和停損停利,把Drawdown降低。不過獲利也將會被限制,各自取捨吧。

 

 

2014年3月14日 星期五

價格波動率與買賣方策略

 

先前紀錄了幾篇關於波動率及買賣方策略的文章,以及波動率在程式交易上的應用例子。如以下

歷史波動率隱含波動率 (with EXCEL VBA、C#)歷史波動率策略設計台指選擇權結算買賣方損益,不過還並未紀錄操作實務上的重點,這篇再繼續作延伸。

 

選擇作買方或賣方有很多考慮因素,波動率是其中很重要的因素之一,如果對未來預期波動程度會變大,則作買方有利,如果預期波動程度變小,則作賣方有利。這樣的解釋其實並不夠清楚,而且是有前提的,在持倉的所有期間

 

舉個例子說,吳波判斷未來台指期價格波動會加大,決定進行買方策略,假設價平的履約價是8000,則同時買進8000的CALL及8000的PUT,經過一個月漲漲跌跌,最後又回到8000結算,但是吳波最後卻還是獲利,這只有一種可能,在這個月的期間內價格波動確實超過當初他買進時的水準,而且吳波有進行動態調整。

 

這個動態調整是這樣的,在8000點進場後,市場波動確實加大,很快下跌到7900點時,這比吳波認為的波動來的快,而現在總部位DELTA變成 -1,吳波就買進一口期貨,使總部位DELTA變成0,然後,又下跌到7800,總部位(含加進的一口期貨)又變成 -1,這時吳波又買進一口期貨,然後市場回到7900,總部位DELTA變成 1,這時又賣出一口,之後市場又回到8000,總部位DELTA又變成 1,這時又賣出一口。雖然指數又回到8000,但是期貨買進7900及7800,賣出7900及8000,這個調整的部份就獲利不少。

 

而後指數往上了,到8200時賣出期貨以平衡DELTA,越往上越賣,往回跌就買回來,所以吳波是被動式買低賣高,總結下來調整的期貨獲利比買方部位的虧損要多

 

反過來說,賣出兩邊選擇權在8000,就算最後結算正好在8000點,也不見得會獲利,因為期間內可能漲到8300、8500,可能跌到7800、7700之類的,只要超過預期的波動(也可以說是賣方所能容忍的價位程度),那這個賣方投資人必須在8300買進期貨,在7700賣出期貨,為了保護(避險)被迫買高賣低,最後這個避險的成本超過了選擇權賣方的獲利。

 

以上數據僅作舉例,若熟悉選擇權跨式部位的損益及GREEKS變動可以很輕易瞭解要說明的內容。另外,避險在例子中是用期貨執行,實際上的選項很多,例如部位平倉、用不同的履約價、搭配不同的買賣方,那就是要繼續看各種價差交易了

 

其中更大的學問是如何決定調整的時機,如果在建立前就有預期的波動水準,當到達時很自然就要進行調整,或者是以總部位的DELTA來進行調整,和前面所述的例子一樣,另外一種方式則是依照時間來作DELTA中立,例如每天、每週之類的,時間到就調整一次。

 

回到開頭所先講的結論,如果對未來預期波動程度會變大,這個未來預期是最重點考量,若要以價格波動程度作為選擇買賣方策略最重要的因素,要小心目前現狀波動率給人先入為主的觀念,因為市場上的價格已經作了反應,例如我們知道現在日經波動程度很大,常常一天2%、3%在跑,那麼作買方再來調整會很好作,這就錯了,那要作買方的權利金是很貴的,除非波動再放大、更大,才能夠獲利。

 

此文緣由朋友問到外資部位總是買方一大堆,這種盤整區間行情不是賠死了嗎? L只能回說不一定,要看調整的好不好,不是只由買賣方就可判斷損益的。以上,供有同樣疑問的朋友參考囉。

 

 

 

2014年1月21日 星期二

趨勢追隨策略類型2-突破

 

續前篇 Trend Following 趨勢追隨策略類型 。設計趨勢追隨的程式交易策略,首先就是要判斷趨勢,一般常見方法有兩種,第一是均線策略,跟著市價與均線的位置或均線的斜率來判斷趨勢方向,第二就是突破,由基準點開始看盤勢漲跌了多少作為突破,再持續同一方向的趨勢

 

這個基準點的設定可能是特定價位或某特定時段所依據,例如特定價位設定上個月結算價,或心裡認為特別重要的價位。特定時段可能設定每日開盤的價格或每週、每月甚至每年開盤價格都可以運用。

 

而漲跌多少算是突破可以追價? 這就是看前面所設定的週期,越長期的週期應當配合越大的突破價差,例如每季開始的市價設定為基準點,漲跌5%作為突破,在未翻回反方向突破前持續持有直到每季結束,這樣也是個可以測試的策略,可能都比一些奇奇怪怪的指標還會獲利了。

 

另外一個考慮漲跌價差的設定是波動率,例如最近一段時間波動大,那這個漲跌價差就應該同步放大,真的夠大才去追突破,免得盤整常常洗刷,反之,波動小時,漲跌價差也應該同步縮小,跟著市場作小波段。

 

這樣跟著波動率所設定漲跌價差,可以利用的方式很多,例如取日的 ATR、利用BBand、或 歷史波動率 等等,此篇就來紀錄應用歷史波動率來設計突破策略。

 

要考慮的參數有

  1. 取多少期間的歷史波動率,計算出對應點數

  2. 由目前市價要漲跌多少比例的對應點數算是突破


 

程式範例如下:

 

HVpCode

 

基準點BP設定為目前市價,計算出對應的波動點數HVp,例如HVp為100點,把它當作目前可能波動的範圍上下區間是100點,而基準點在中心點,那當市價突破基準點加減50點時,就視為是一個趨勢開始,建立方向部位並將新的基準點設為目前市價,以此再續看下一個突破點

 

策略表現及指標如圖:

 

HVpPic

 

這樣的策略可以有以下績效(10minK,2005~2013)

 

HVpPer

 

HVpTradePer

 

以一個策略原型來說,這樣的績效是蠻不錯的,問題在於drawdown如何縮小。另外注意這是非多即空的策略,進一步也可以試試什麼情況不須在場內,例如波動非常小時,可能不要有單,或許可以降低些drawdown。也可能是相反的,波動很大時先退出,因為可能大幅drawdown都是在此期間產生。

 

突破策略百百種,開頭提到的以年月日作基準點的策略也可以慢慢紀錄,另外均線策略也是非常多樣化的,持續調整囉。

 

 

2013年12月31日 星期二

籌碼分析-法人期貨未平倉

 

籌碼分析是期權交易方法中的一種,其中最常聽到的是由期交所每日公布法人期貨未平倉資料,用以判斷法人的方向,這算是一個顯學吧,每日期貨商的分析報告和分析師幾乎都會引用這項資料,也有許多書籍、程式交易、甚至一些論文都在研究法人未平倉部位和台指走勢的相關性,不過,L不覺得能夠盡信或使用,可能要換個方式說,L還未找到能夠應用它的並可認同的策略,即使它回測是會獲利的。

 

最初的認識是由程式回測而來,曾有試過外資未平倉部位加上均線邏輯,最讓人疑惑的就是大跌段2008年時,外資期貨多單從五千多點抱到四千點,這怎麼能用呢? 有多少人可以承受這樣的回檔? 就算抱過那兩三個月後開始大賺,也是一場空,因為都被抬出場了。這是其一,再來看看以今日(2013/12/30)為例。

 

前一個交易日(2013/12/27)的外資期貨未平倉如圖

 

1227期

 

今日(2013/12/30)的外資期貨未平倉如圖

 

1230期

 

這一陣子外資一路是空單,慢慢降低,指數則是由盤整區8400震盪到今日收盤8625,但如果說外資是被軋空的話就太不負責任了,因為那是錯的今日的行情是上漲82點,價位如圖。

 

1230期行情

 

假設27日的期貨留倉-881口在今日全數未動,那今日損益則是82點*200*-881口=-14,448,400,但是選擇權呢,是賺的。

 

前一個交易日(2013/12/27)的外資選擇權未平倉如圖

 

1227選

 

今日(2013/12/30)的外資選擇權未平倉如圖

 

1230選

 

買權最後一欄契約金額464,689,000 減前日金額389,659,000再加今日權利金收回的金額5,490,000 = 80,520,000

 

而賣權最後一欄契約金額201,020,000 減前日金額226,178,000再減今日權利金繼續投入的金額18,304,000 = -43,462,000

 

則買賣權合計80,520,000 – 43,462,000 =權利金今日獲利 35,410,000

 

期貨與選擇權合計則是 -14,448,400 + 35,410,000 = 20,961,600

 

所以,今日台指上漲82點,外資部位是獲利約2100萬,反過來說,如果作期貨在今天要賺到這個獲利需要作多幾口台指呢? 20961600 / 82 / 200 = 約 1278 口,這是一個可以拿來約當期貨總部位的DELTA,BUT,只在這個盤後時間點有效,因為明天一開盤,選擇權部位會因為THETA變化、會隨著行情變化GAMMA和DELTA、權利金變化更跟著VEGA變化,所以也不曉得會變到哪裡去。

 

若是想要很粗估選擇權的DELTA,就繼續來算算,首先粗估,買權總付出權利金464,689,000 / 口數92,743 = 每口平均是5010.5 元,也就是約100點的CALL,那現在市場上100點的CALL最接近的是8500(148點)和8600(79點)之間,對應的DELTA約是8500(0.795)和8600(0.576),已經是價平靠價內了,目標是100點,那再插補法算一下對應的DETLA位置,然後再乘92743口,得到粗估的買權DELTA…然後再算賣權的…以下省略

 

這個東西已經非常粗略的估計,不知能代表多少真實狀況,因為完全不曉得履約價的分配,而且還有不同月份,除非那麼厲害再把今日總權利金變化對應行情和各履約價的OI變化量這兩個因素再加進去好好算一算,或許,只是或許能夠得到比較接近的部位狀況。

 

問題是,期貨有了,假設選擇權也能算的出來粗估的,還是沒辦法知道法人部位偏空還是偏多,因為摩台是不需揭露的,而且以未平倉部位來看,台指現在才58465口,但摩台是219033口,就算合約價值比除下去也有約12萬多口,這比台指還大的太多了,怎能知摩台在外資部位是什麼比例? 什麼部位? 所以當然不知外資總期權部位是偏多偏空呢?

 

摩台OI

 

小結論:

  1. 期貨偏多不代表作多,至少加看選擇權部位

  2. 期貨加選擇權總共偏多也不代表作多,因為摩台部位不知道

  3. 以不知道的假設方向作回測的結果,即使是可獲利的也難以信服

  4. 分析師和研究員的未平倉參考分析其實是作報告而已,有時準有時不準,不過至少有東西寫


 

以上,紀錄目前的心得,或許有更好的方式判斷這些資料,只是目前還未有好方法,繼續觀察囉~

 

 

 

2013年12月29日 星期日

大陸滬深300選擇權商品明年上市

 

兩岸金融交流越趨緊密,我們雖然無法直接交易對岸商品,但也許哪天當政策開放,大陸商品也將成為我們的投資組合之一,因此隨時保持關注是必要的。

 

自從大連商品交易所、鄭州商品交易所與上海期貨交易所自一年多前開始期權(選擇權)仿真交易後,今年11月8號大陸中國金融交易所(簡稱中金所),公布 股指期權仿真交易業務規則,形同宣布明年中國衍生性交易市場將全面性進入下一個階段-選擇權的時代來臨,未來也許中國再上市更多選擇權交易商品後,結合既有的大連、鄭州與上海三個商品交易所將成為亞洲衍生性商品交易的重鎮。

 

然而一般台灣人對指數類選擇權的商品最為熟悉,因此對於滬深300指數推出的選擇權關注度也較其他商品選擇權更為高出許多,下圖即為中金所公布的商品合約規格表。

 

圖片 2

 

看完上圖,可能很直觀的了解到每跳種一點大約10人民幣,也差不多相當於台指選擇權1點的價值,而比較特別的是,規則中並沒有如同台灣在不同價格的時候跳動點跟隨改變,例如台指選擇權在50點時,往上跳一ticks是1點,而往下跳一點則是0.5點。讀者可以從下圖仿真交易的畫面中更看出這點的差異。

 

圖片 3

 

比較兩岸交易規則差異時,其中有一點差異特別讓J注意到,並可推演到交易策略上,而這交易規則是「履約價的上市規則」。讀者可先行閱讀下圖。

 

圖片 5

 

比較早參與台指選擇權交易市場的讀者可能會有印象,以前台灣履約價上市的交易規則跟現在(2010/10/19後)是不同的,可先參考下圖紅框處。

 

圖片 4

 

現行的規則修改如下。

 

圖片 6

 

現在讀者有沒有發現,中金所目前規劃的交易規則就像以前台灣的交易規則,而這其中隱藏了很好的交易機會與策略,我想經歷過以前08年大波動的時候的讀者可能會想起,當年我們在作交易的時候會出現PUT履約價不足的問題,就算想買便宜的權利金,因為只多開5檔履約價而導致行情大幅變動的時候連最遠的履約價都超級貴,讓許多人無法狠下心去買這保險或利用選擇權作空,而眼睜睜看著行情繼續快速往下而錯失大好賺錢機會。

 

現在再去看看大陸的交易規則與J的仿真交易截圖,讀者可以發現中金所只多開到當時指數的價外3檔(150點),而其指數的漲跌停還比台灣7%大(滬深指數10%),我們簡單計算一下,如果滬深指數在3000點,若出現稍微大一點的波動例如5%的幅度,就已經讓指數變動150點,因此只要指數高一點或波動再大一點,是非常容易超過3檔價外,所以散戶與法人的行為就可能再次出現與台灣過去一樣的極端狀況,例如昨天的便宜價外,開盤後突然變成很貴的價平,法人大量買進避險,散戶買不下手,而收盤時已經變成深度價內,最後回頭一看,這種讓你貴到買不下手(例如BUY PUT),最後就是眼睜睜看著行情繼續大幅同向波動, 錯失一次賺大錢的機會。

 

本篇除了簡單的提及了大陸選擇權市場的發展現況外,主要期望提醒讀者,交易制度的研究也是相當重要的,對於每個合約設計的環節都是會影響到交易策略的設計與市場的波動,本篇J的小想法,僅是站在歷史可能重演的角度發想,也許之後其選擇權上市前交易規則有可能再作調整,讀者可持續關注明年的正式上線。

 

2013年12月26日 星期四

Trend Following 趨勢追隨策略類型

 

Trend Following趨勢追隨是 期權交易分類 裡最基本的一個策略,這也是每個人都知曉的策略。目前(2013/12)在 isag 裡列出的611檔CTA中,有311檔的策略類型完全或部份是Trend Following,是所有列出的策略類型中最多的一種。

 

Trend Following基本的邏輯就是利用技術指標判斷趨勢方向,然後持有跟隨,這些指標都是一般常見的例如moving average、MACD、breakout X days等等,它的特性就是在趨勢市場獲利,不論是漲勢或跌勢,而在震盪盤整期虧損,因為常常碰到停損或轉向

 

在這些Trend Following類型的CTA裡要找表現很好的有很多,要找到表現很差甚至破了MaxDD的也不少。可見要作的好也不是容易的事,就像我們大家一群人,就算用同一條線作為主要邏輯,最後結果也會是天差地遠。

 

isag Maxdd

 

L記得朋友說過程式交易不就可以解決這些問題了,一樣的策略給誰作都一樣,其實L心裡想的是,不論誰作都會不一樣,但要解釋很花時間。會變成這樣的原因非常多,資金不同、環境不同、個性不同、容忍風險程度不同、執行能力、保持紀律的能力等等,不適合的人用策略兩三次交易就用不下去,兩三天就想換了,那這樣就算策略在中長期可以獲利根本就不重要了。

 

程式交易可以解決一部份問題,但設計的策略、資金運用、風險控制等等還是離不開交易策略的本質這些都是關於 交易心理與經驗 的影響,這也是交易員不會停止的課題,而且它的重要性是比其它分類(交易方法、系統建置、程式交易策略)還更重要,畢竟你設計出來的東西是來自於你怎麼想的。

 

回到Trend Following的特性,需要再特別強調當行情出現時絕對、必須要能獲利。不論你是自己作單、幫親友操作、在公司作交易員,都一樣,假設操作台指期碰到一波400~800點行情時,你的策略卻賺不到錢,那是很糟糕的事情,不管你有什麼理由,別人都會認為你的策略不行,如果小漲小跌沒賺錢,大漲大跌又賺不到錢,那還要作什麼交易?

 

當然不是說策略只有Trend Following這一種,只是在對應盤勢上,當有行情出現時,一般人會給予更高的期望,這可能也是普遍把Trend Following作為基本策略的原因之一。

 

設計Trend Following類型的交易策略有幾個主題

  1. 要選用什麼指標作判斷? 前述的moving average、MACD、breakout X days會一一測試介紹。

  2. 要選用多長的期間? 其實也等於你的目標波段要多少點?

  3. 如何有效避免震盪洗刷的次數?

  4. 對應程式交易策略的標準如何?


 

以上,再慢慢紀錄了

 

2013年12月6日 星期五

波段突破策略(with ATR)

 

紀錄一個常用也好用的邏輯,突破策略。區間突破最常使用在當沖程式裡,不過波段的程式使用起來也不差,基本邏輯就是由開盤向上漲多少要突破作多,向下跌多少要突破做空,很單純,最主要的因素只有這個突破的臨界點是如何決定?

 

先前曾經紀錄過簡單當沖突破的測試 - 當沖逆勢單進場。其中提到開盤點為準,漲50點作多,跌50點作空,如果沒翻就擺到收盤,這樣的邏輯在近年是無法獲利的。但是波段程式就不一樣了,能獲利。只是突破的區間要思考,不是單純點數或比例就能適用的。

 

這時 Average True Range(ATR) 平均真實範圍 就是個好用的指標,當行情波動大時,這個區間確認也應該放大,波動小時,則區間也小,因此加上波動性的指標有用處,ATR比其它波動性指標直接方便的是它本身就是價格的表示,而不是比例或無法對應的數字。例如ATR 100點,就是近期日高低點數平均在100點,而開盤後往上50點或往下50點的區間內都很正常,而我們設定的突破邏輯就是市價漲超過50點作多,跌超過50點作空。

 

搭配觀察指標和策略訊號的程式碼範例如下。

 

id

 

bkatr

 

在策略設計的部份只有一個參數,是要決定ATR用多少期間,其中變數TRX是每日的TR值,ATR用來紀錄…ATR,TR的陣列和其中註記//replace AverageArray的部份是因為Multicharts內建的AverageArray用起來不對勁,就自己再寫進策略裡,內容就是把TRX一個個放進TR陣列裡,放到最後一個時順便算一下裡面那些TR的平均值紀錄到ATR。

 

再詳細一點的紀錄程式,因為ATR在這個例子中使用的是日線層級,但實際運用的K線可能是10min、5min、8min之類的,會要再搭配其它的指標,所以才使用這種Array的方式將TR記錄下來,在新的一天開始時計算一次( date <> date[1] ),然後看是要多少個TR的平均,一個一個放進去,另外特別注意Array第一個位置是0起始,所以for迴圈裡目標值減一,這樣個數才對。

 

這個Array+For迴圈的方法在使用不同k線層級的指標時蠻好用的,可以多加利用,如果是常coding的朋友可能會覺得一個地方怪怪的,平常都是for i=0 to X,這邊因為i是 Multicharts 的關鍵字所以不能用,常常都要再改成 j….,是特別的習慣。

 

回到突破邏輯,以ATR所計算的近日高低作為區間,它近期的進出及績效(2005~2013,10min)如下。

 

chart

 

performance

 

trade

 

以一個不加濾網、不加出場邏輯、未設停損停利的邏輯來說,這樣的績效是蠻不錯的,值得繼續研究開發。

 

延伸一點的說,區間可以使用其它的波動性指標來調整、或直接用N日高低區間、或布林通道的區間、或參考CDP之類的,都可嘗試看看。這樣的突破邏輯應該是每個人都會測試過的基本款,不過應用時如何決定區間指標和如何搭配濾網就是深入的工夫了。

 

 

2013年11月13日 星期三

歷史波動率策略設計

 

在 歷史波動率 這一篇中紀錄了歷史波動率的計算和指標語法,就可以拿來作為策略訊號的設計或濾網,基礎想法是在於波動率期間的比較,如果短期的波動率小於長期的波動率,表示目前行情較為穩定、黏著、緩慢,也比較像是多頭的環境中表現的狀況。反之,若短期的波動率大於長期的波動率,表示目前行情的波動較快速、急拉急殺,可能有恐慌氣氛,那就像是空頭盤勢了。

 

以上述波動率比較作為濾網,嘗試搭配最根本的均線策略邏輯,市價大於均線作多、市價小於均線作空,設計一個留倉長波段策略來觀察表現,程式碼如下列:

 

CODE

 

 

主要邏輯在第11、12列,如前述,另出場條件設定為市價反向跌/漲破均線時多少點該出場。以上參數也列出來了,讀者可以自行練習邏輯和參數調整。範例策略使用30分線的週期,進出場的價位節錄如下圖。

 

pic

 

可以先預想勝率和盈虧比和強弱處,它就和基本的均線策略一樣,大波段可以獲利,均線黏著時易洗刷,勝率應低於40%,盈虧比應高於2.5,drawdown起碼25萬以上。就以上圖來觀察,搭配波動率作濾網是有效果的,避開了不少次無謂的洗刷。績效報告如下圖 (2005~2013,交易費用800)。

 

績效結果

 

交易分析

 

績效報告中,最大的亮點是盈虧比很高,尤其是空單的表現,表示這個策略在空方勢時可以抱的很緊、很久。pro/DD 和 kelly值也相當不錯,更多的策略評估可以參考 交易策略評估-Kelly formula 、 交易策略評估-獲利風險比 、交易策略評估-損益期間 。

 

以上,是利用歷史波動率作為策略邏輯的應用,參數都是經過最佳化的,另外值得注意的是這個策略2013年表現並不突出,不至虧損,但幾乎無獲利,因此若要當作實戰的交易邏輯還有得思考修改。

 

 

2013年9月24日 星期二

停損點轉向指標-SAR

 

SAR停損點轉向指標,或稱為拋物線型指標,是 Technical 技術分析  中很常見的一個指標,常用在設定停損點。在 investopedia 的介紹 中如下圖

 

SAR定義


 

它是移動式的跟隨著行情,當反向穿越時就是進/出場點,計算的公式如

 

SARt = SARt-1 + AF * ( EP - SARt-1)

 

其中AF為加速因子(acceleration factor),EP為極值(extreme price)

反轉條件:SARt與當天價格發生交會,即下跌波段時SARt < Hight,上漲波段時SARt > Lowt,即為反轉訊號。此時,SAR0= EP。

 

網路上有篇文章對於SAR指標有蠻詳細的說明,想進一步瞭解SAR可以點進

SAR指標介紹 - 部落格 - 財經知識庫 - MoneyDJ理財網

 

而我們在應用上,也不需要自己重新編寫指標的原始碼,SAR指標在 Multicharts 有內建函數 ParabolicSAR,訊號有 ParabolicSAR LE及 ParabolicSAR SE,兩者都可以直接看原始碼參考或修改。SAR指標可以用在進場或出場訊號,不過單單僅用在進場訊號時表現並不好,原因和一般趨勢型策略相同,在震盪區間時進出次數太多,另外SAR若套用在短時間的K線上也有同樣的問題,太容易翻單了。

 

而讓單一指標發揮效用的最簡易方法就是交配,把不同屬性的指標拿來結合使用,因此我們除了用較長的K線之外,還要增加些過濾的邏輯,建議是能表示趨勢的指標,例如ADX(可參考  動能指標-ADX與Momentum  此篇)。

 

以下提供一個SAR及ADX結合應用的程式範例,主要邏輯是當ADX小於門檻值時,就照著SAR的方向作部位,另外再加上停損停利的設定。另外,這次同樣沒直接顯示參數的數值,請有興趣的朋友自己測試。

 

ADXSAR_noin


 

加上ADX的判斷後可以有效避免區間震盪時的洗刷,在有趨勢時(ADX大於門檻)的波段,不讓訊號翻轉。例如以下的圖示,若無ADX的過濾,那麼高檔的震盪會多了許多無謂的反轉。但反過來說,也就沒翻的那麼快,或許等到ADX轉弱已經回吐獲利一大段,這些就是邏輯設計的取捨了。

 

高檔避免震盪進出


 

這樣的邏輯有以下績效。L所使用的是台指期30分K線,測試時間為2005~2013,費用雙邊設定共800。

 

策略績效


 

獲利風險比 : Profit / Drawdown 值為13.63

 

總交易分析


 

Kelly 值 : 13.3

 

年週期


 

月週期


 

在 損益期間的評估 上,年週期表現穩定,近兩年波動較小,獲利也較小了。而月週期看來是有不短的時間要忍受,整體看來還是正常。

 

損益曲線


 

損益曲線是挺漂亮的。以上是SAR指標的介紹及結合ADX應用,請有興趣的讀者一起動手測看看吧~