顯示具有 回測 標籤的文章。 顯示所有文章
顯示具有 回測 標籤的文章。 顯示所有文章

2014年6月10日 星期二

組合的相關性

 想請教一下comewish大... 是否有在策略群或商品群之上加上一層第三方軟體在做管理?
因為這幾個月我才放比較大資金踏入多商品的領域~ 卻發現"相關性"這東西其實並不可靠~
盡管在數據或報告上, 很多商品或策略顯示幾近零相關, 但實際上運作時卻發現手上所持有的商品可能在短期內很明顯地就是出現"一起賺"或"一起賠"的現象~
所以我目前的想法是擺脫或是減少使用相關性堆疊的作法
改成主動式的資金管理~
如同海龜, 在單一商品上使用動態距離加碼的方式~
在多商品上, 我想使用類似的動態分配的方式
例如目前手上資金有限, 雖然數據上也許顯示歷史相關性很低, 組合DD也很低, 以相關性堆疊的作法, 也許可以持有六種商品, 但如果瞬間相關性拉高, 則可能六種一起在短時間爆掉
我在想如果使用動態的規劃方式, 如海龜單一商品的作法利用浮動損益距離來規劃~
例如限制基本狀態最多只能先持有三種商品, 當前三種損益大於若干之後, 方能進第四種, 第五種訊號, 第六種~
另外也可能對某些種類做限制
例如我目前監控了十幾種商品, 其中三種或五種可能是貨幣類, 有些是指數類
我可能會限制某一種類別最高的持有數量~
例如同一時間可能有三種貨幣類發出了訊號, 但第三方管理軟體則可以設定, 貨幣類最多只能持有兩種, 先到先做
以上~ 我目前是先請人幫我寫軟體做處理~
不知道comewish大是否能給些意見~



一但跨入多商品的組合交易,最重要的一個主題是投資組合之間的相關性的問題,因為組合的目的是要利用組合商品之間的低相關性或是負相關性來降低整體組合的波動,如果你運氣很好找到兩個負相關的曲線,組合之後會得到一條很平穩向上的淨值曲線,聽起來好像很玩美,理論上是這樣沒錯,但是實務上想要找到這樣的兩條曲線非常的困難,不要說負相關,連低相關都不是那麼容易,而且其中要解決的問題其實很多,我只能分享一些我自已遇到的問題,很多問題我自已也還在尋找解決的辨法,很多的問題我也希望我自已有答案,不過如果那麼容易的話,這個工作就太沒有挑戰性了。

先從簡單的來討論,最簡單的模式是單一策略套用到多商品上,例如海龜的系統,它處理的方法是計算商品之間的相關性,分出高相關與低相關,並限制高相關的商品可以持有的上限,低相關的商品可以持有的上限,同方向部位可以持有的上限,規則如下

單一市場----每個市場最大為4個單位。 

高度相關市場----對於高度相關的市場,在一個特定方向上最大可以有6個單位(即,6個多頭單位或6個空頭單位)。高度相關市場包括:燃油和原油;黃金和白銀;瑞士法郎和德國馬克;短期國庫券和歐洲美元……等。

低度相關市場----對於低度相關的市場,在一個特定方向上最大可以有10個單位。低度相關市場包括:黃金和銅;白銀和銅,以及很多因部位限制而海龜不能進行交易的穀物組合。

單一方向----在一個多頭方向或一個空頭方向上全部單位的最大數目為12。因此,理論上你可以同時持有12個單位的多頭部位和12個單位的空頭部位。

這是一個很好的範例,其實你也可以照他的規則下去執行,或是加以修改成你可以接受的規則,不過這裏面有一些問題存在,所謂相關性的是如何定義的?用定性的方法或是定量的方法?在海龜的法則並沒有說的很清楚,如果是定量的方法的話,在計算相關係數時會有取樣的問題,你要取樣多少天?取樣出來樣本的結果可以代表母體嗎?更麻煩的是如果你用滾動的方式取樣,這個相關係數是會變動的,這就很像我們在做WFA,In Sample算出來的值和Out Sample算出來的值會一樣嗎?

另外一個更麻煩的問題,當你限制了持有的部位的時候,雖然你降低了暴倉的可能,或是MaxDD的大小,但是你必需知道你也同時限制了獲利的可能性,這中間的取捨並不是那麼的容易,因為你也可以利用降低資金槓桿的方式來降低MaxDD的大小,那一種效果比較好?這要看你的系統的特性,並沒有辨法一概而論。事實上我很少使用海龜的做法,你可以看我最近的交易記錄,我去重壓了多檔的債劵期貨,雖然結果很慘,但是交易不能只看短期的結果。

如果你要使用海龜的方法管理你的風險的話,你還有一件事情要特別注意,那就是相關性有分長期與短期,也就是我說的取樣長度的問題,兩個長期低相關的商品有可能在短期是高相關的,這個有可能是某些特別的事件造成的,例如日本311地震,很多商品的從低相關性突然變成高相關,也有可能就只是你運氣不好,當好那一陣子你持有的那幾個商品有可能從低相關突然變成高相關,不見得需要有什麼特別的理由。

組合的風險控制是一個很複雜的問題,我也不認為它可以單獨和你的策略分開討論,它是策略的一部份。所以我也沒有辨法給你一個標準的答案,目前我知道可以做組合風控的工具有TradingBlox和TradeStation的Portfolio Maestro,MultiChart要9.0版才會推出。


2014年6月3日 星期二

CT01回測報告

CT01是一個很簡單的逆勢系統,使用均線判斷出主趨勢之後,等待拉回兩天買進,或是反彈兩天之後放空。
回測期間2001年至今
交易商品美盤29種期貨商品

績效雖然沒有特別突出,但是Sharp指數有2以上,MaxDD也只有12%,是屬於穩定獲利的系統,來看一下獲利曲線,這是對數坐標,可以看到很平穩的向上走。


改成線性坐標,下面是Drawdown的大小,可以看出來大多數的時間DD都在5%之內。


看一下系統整體的風險,可以看出都在10%之內


再來是月獲利,大多數的月份都是獲利的

看一下詳細的統計,可以看到系統的勝率高達78%,月勝率高達8成。


所以結論是不要小看簡單的方法,運用得當的話,簡單的方法是可以創造不簡單的績效。


2014年5月22日 星期四

波段加碼單的回測研究

最近因為K大波段的中心思想是價差一文,讓我想研究不同加碼比例的差異與比較,廢話不多說,先來看這次要回測的系統的統計表,這是日線的系統單口沒有加碼的統計果。
01.png
01E.png
可以看出來MaxDD很大,PF 1.89,ROA 497%,這種系統有興趣做的人應該不會很多
我另外加了兩個很簡單的加碼訊號,並且設定不同的加碼口數,然後用最佳化跑各種口數的組合,最佳化的報表在下方。
Test1.rar (1.75 KB, 下載次數: 131)
我們以ROA做排序,可以找出最佳的組合為1:2:3,剛好是倒三角型的加碼方式,最差的組合為3:2:1剛好為正三角型的加碼方式。由最佳到最差的組合分別如下:
1:2:3>1:3:2>2:3:1>2:1:3>3:2:1
看一下1:2:3的回測報表
123.png
123E.png
可以看出來很簡單的加碼策略,可以很有效的提昇一個系統的績效,PF從1.89提昇到2.79,ROA從497%提昇到1103%,而且最佳的加碼方法是 一般人都不敢用的倒三角型的加碼方式,所以做交易時很多時候不要只相信你的直覺,回測結果往往可以顛覆你平常的觀念,盡信書不如自已動手做回測,你會有很 多新的發現。

20140522補充:
加碼時要算好槓桿,不要過度重倉交易,建議把加碼訊號都拆開來成為單獨的策略,這樣比較不會過度交易

全球85個交易所總整理




補充內容 (12-10-19 20:03):
CFFE - http://www.cffex.com.cn/en_new/

2014年5月19日 星期一

用蒙地卡羅模擬法做系統最佳化

蒙地卡羅模擬法是一種很好用的方法,特別適用於一些不確定結果的情況,應用亂數的模擬取得一些可能的結果。然後你再跟據這些結果做出一個累計次數分佈表,你就可以得到在多少信心水準之上,你會可能會得到什麼結果,基本觀念我想大家都懂,問題是如何把蒙地卡羅模擬法應用在交易上呢?

一般常看到的用法就是把蒙地卡羅模擬法運用在MaxDD的估計上面,把交易結果打散用亂數重組,用以估計未來可能發生的MaxDD,但是基本上我覺得這樣做沒有任何的意義,因為這樣的統計結果不會對你的系統有任何的幫助,相反的它會強迫你不斷的做最佳化,因為越好的結果跑出的來統計越好,最後又掉入Over Fitting的陷阱中,因為最後的交易結果往往和統計的結果有很大的差異。所以我個人非常反對把蒙地卡羅模擬法運用在MaxDD的估計上面,那是把好的工具用在錯誤的地方的最佳例子。

相反的我把蒙地卡羅模擬法用在系統的開發與最佳化上面,一般開發系統往往免不了的一個步驟就是最佳化,但是最佳化沒做好就變成Over fitting,結果聖杯拿到市場交易變剩杯,我想這是許多人都有共同的經驗,不要懷疑我也有相同的經驗,而且我交的學費也不會比別人少,但是要判斷有沒有Over fitting非常的困難,於是又有什麼參數孤島的理論,搞了一堆理論,但是問題仍然沒解決。所以我提出我自已的解決辨法。

我寫了兩支亂數的程式,其中一支程式是用亂數的方法選擇市場,也就是我用程式產生一個Random Portfolio,而且這個Random Portfolio是每次回測的時候,它都會重新組合一個新的Random Portfolio,也就是每次回測的Portfolio的內容是不相同的。透過這樣的方式,我可以很放心的去比較不同參數或方法的好壞,也可以檢視我的 Money Managerment與我的Risk Managerment是否有發揮它應該發揮的效用。
下面的結果是我用Random Portfolio搭配我的系統產生10次回測的結果,你可以看結果的分佈知道你的Robustness(系統穩建度)如何,你可以看到回測的結果分佈的情況非常的穩定。當然你也可做100次以上的回測,然後再把回測的結果做成分佈表。
RandomPortfolio.png
第二支程式則是Random Entry 隨機進場法,透過這支程式我可以檢視我的Portfolio Managerment是否有優勢存在。也可以檢視不同的參數所產生的結果的分佈情況,做為參數選擇的依據。下面是我用Random Entry搭配我的Portfolio Managerment,做10次回測產生的結果,可以看到每次的結果都是正數,這可以證明我的Portfolio Managerment存在一個正數的期望值。
RandomEntry.png

雖然用蒙地卡羅模擬法做系統最佳化有許多的好處,不過同時它增加系統開發的難度,可想而知,許多的系統經不起這樣的方法催殘,你很快就會看到系統的真面目,另外一個是倍數增加的測試量,假設你每個參數要做10次的回測,那麼你在做參數最佳化的時候,需要多跑10倍的回測量,等於你回測的時間也多了 10倍。不過和它的好處比起來,它的缺點其實不算什麼。

多市場分散的重要性

之前一直想寫一篇關於多市場分散對於交易系統的重要性分析,不過一直受限於歷史資料不足,還有很多技術上的困難沒有克服,所以一直沒有動手寫,最近我終於把我的報價升級到World Futures,所以也沒有藉口再拖下去,所以上來報告一下我的研究結果。

我想很多人都知道分散投資的重要,但是因為對於國外市場的熟悉度不足,所以目前大多數的交易人都還是以台指為主要的交易標的,有做分散的大多以策略分散為主,真正有做多市場分散交易的人少之又少。不幸的是去年2010年台指的波動率很低,所以就算你做了策略分散,去年的績效應該都不會讓人滿意,一些條件比較差的交易員去年可能已經從市場畢業了。所以我覺得還是要在此再強調一下多市場分散的重要性。

我用一支我以前寫的策略,使用隨機的方式選取市場交易[註],選取的市場從30個開始,一直到170個市場,每次增加20個市場,每組隨機選取10次做回測,因為是用隨機的方式選取市場,所以每次回測的市場都不相同。這樣可以讓我們來觀察交易的市場數目,對於交易結果的影響是什麼,影響的程度有多大。以下是回測的Summary Results,我依照市場數做分組。

大家可能對TB的報表不太了解,我先簡單說明一下
第一欄是Test No 這只是TB做最佳化回測的編號
第二欄是Sumilation這是我做隨機市場回測的編號,1-10代表是10次的不同的隨機市場組合回測
第三欄是How Many Market這是我隨機選擇市場的數目
第四欄是End Balance這是最後的回測的淨值
第五欄是CAGR%(Compound Annual Growth Rate)這是年複合報酬率或是幾何平均報酬率
第六欄是MAR指數這是把CAGR%除以MaxDD%代表你系統的風報比
其它的應該就不用再解釋了

隨機選擇30個市場,分別做十次回測(每次回測的市場是不同的)
30M.png

隨機選擇50個市場,分別做十次回測
50M.png

隨機選擇70個市場,分別做十次回測
70M.png

隨機選擇90個市場,分別做十次回測
90M.png

中間略......

隨機選擇170個市場,分別做十次回測
170M.png

可以簡單比較一下30個市場和170個市場的差異,要注意的是,這是用同樣的系統與同樣的參數,唯一不同的只是交易的市場數目而已。

下面的圖可以看出市場越多,系統MAR指數的平均值也越高,最低值也隨市場增加而增加
SteppedParameterGraph_P1.png

下面是把全部的市場加入回測
summary.png
LogarithmicEquityGraph_P1.png
LinearEquityDrawdownGraph_P1.png
MonthlyReturnsGraph_P1.png

2014年5月15日 星期四

回測的陷阱

版上程式交易的人比例上比較少一點,但是我還是分享一下以前做的回測結果。
常常有人PM問我要如何做回測或交易的問題,例如這個問題:

我想請問關於程式回測除了要注意是否最佳化,參數高原,Walk Forward Analysis,交易次數是否有參考性以外
我有部分採用資金管理,將每筆下單風險控制於2%內,也有分批加碼策略,以同樣口數加碼
請問是否還需要留意什麼呢?
我目前以2006當作今年來編寫程式,當2006有獲利時以相同的參數及周期回測2007-2010 每年獲利都還很平均
並沒有產生哪一年大賺或哪一年大賠現象
主要我是想請教您 我還需要注意哪些 可以讓回測更有參考性呢?

我的回答是:因為歷史資料是死的,市場行情是每天在變,用一個死的東西去套活的東西,你想結果會是什麼?不要對未來的結果有太大的期望,這是我想告訴你 的。我覺得如果有什麼可以給你的建議的話,那就是不要太相信你的資料,也不要太相信回測結果,回測只是參考而已。帳戶裏面的錢才是真的獲利。

我做了一個回測說明我的觀點,我用1996-2005的10年的歷史資料找出表現最佳的10個市場,做成一個投資組合A,然後再用同樣的歷史資料找出表現 最差的10個市場,做成另一個投資組合B,分別回測兩者的績效,之後再用2006-2010的資料做out of sample的回測,你猜那一個組合的回測結果會比較好?是A或B?
先看最佳的10個市場和最差的10個市場的in sample的回測

這是最佳的10個市場的組合A的回測
B10A.png

再來看最差的10個市場的組合B的回測
W10A.png

看完這兩個回測的結果,我想應該不會有人會去選組合B去交易吧,讓我們來看看同樣的系統同樣的組合,在後面5年的表現是如何?

這是最佳的10個市場的組合A的Out of Sample回測
B10.png
還算有賺錢,但是和原來前10年的績效差很多

再來看看原來最差的10個市場的組合的Out of Sample回測
W10.png
可以發現跌破大家的眼鏡,過去最差的組合可以打敗過去回測最佳的組合,而且績效超過一倍,看完這個回測,你應該會了解為何我會回答

如果有什麼可以給你的建議的話,那就是不要太相信你的資料,也不要太相信回測結果,回測只是參考而已。帳戶裏面的錢才是真的獲利


這個回測也回答了這篇裏面的一個很重要的問題:請問一下,有先剔除掉這系統無法賺錢的市場嗎??不然放一個本來就不會獲利的標的,這樣只是拖累績效吧??
http://www.coco-in.net/thread-10081-1-1.html

如何分析交易記錄

剛好有網友私下問我如何提昇交易能力的問題,我請他分析他的交易報表,結果發現他雖然有做交易記錄,但是交易記錄的方式有點奇怪,所以提出我個人的分析的 方法供大家參考,基本上我的方法和TS統計方式比較類似,我是把所有的交易記錄在一個Excel中,然後再做日結表,月結表與年結表,那個網友是用日為單 位,每天的交易記錄在一個Excel中,這樣的缺點是你無法分析比較長期的記錄,而且每天行情的變化也會影響你的操作。

如果你有把你的交易記錄下來之後,有幾個數字你需要去統計出來,分別為

沖銷損益加總
費用加總
總次數
平均損益= (沖銷損益加總-費用加總)/總次數  (這個數字可以看出你的交易效率如何,數字越大越好,不過還要看你的交易周期為何,極短線的可能低於100以下,波段單最好要有3000以上)
費用比=費用加總/費用加總  (這個數字可以看出你是否有過度交易,建議是在30%以下,不過如果是極短線的交易員這個數字可能高達50%,不過這個數字是越小越好)

獲利交易加總
獲利交易次數
平均獲利=獲利交易加總/獲利交易次數 (要計算費用)

損失交易加總
損失交易次數
平均損失=損失交易加總/損失交易次數 (要計算費用)

平均損益比 = 平均獲利/平均損失 (這個是我非常重視的數字,這個數字一定要大於1,如果小於1的話,表示你有心態面的問題,這個數字也是越大越好,當沖來說最好要大於2以上,波段的話最好要大於3)

Profit Factor = 獲利交易加總/損失交易加總 (這個數字也是越高越好,這表示你冒1元的風險,可以獲得多少獲利)

勝率=獲利交易次數/總次數 (這個數字只有在平均損益比大於1的情況下,它是越高越好,如果你的平均損益比小於1的話,那勝率高只代表你有心態面的問題)

最大獲利  (這個數字可以看出你持單的能力)
最大損失  (這個數字可以看出你凹單的能力)

另外我還會統計錯帳的金額,無論是因為斷線或是人為疏失,這個金額也一定要檢討,如果金額很大的話,你就要檢討你是否有紀律的問題或是你應該要換一個期貨商或是換網路。