2010年5月26日 星期三
交易程式之老幹發新枝 by Walk Forward
如果不是已經正在使用程式交易的人可能就不要浪費時間閱讀這篇文章了。
之前與網友1127在MSN上討論了一些交易上的想法,及今天看到天相在Plurk嗆聲暫停期貨的交易,讓我想分享一下這個我自己實作的經驗,或許沒有什麼學理可言,反正我一直是從實戰中且暫且走,也從交流中這邊學一點,那邊偷一些的。
參加過寶來舉辦的一個講座,有藍色投機客主講的一部分內容「Walk Forward Analysis」,您可以先參考一下那是什麼東西。
我實際投入資金做當沖交易到今天差不多半年了,使用的是自己設計交易程式DT_01(記錄在此),在其他地方,我都戲稱它是"合成獸",因為這個交易策略其實拼湊而來的。你可以在這個交易記錄上看到我用兩個Tag去記錄,分別是 DT_01 與 DT_01.x 原因就是我把這個交易策略一拆為多個交易程式,雖然策略核心是一樣或說是差異極小的,但畢竟會造成每天的下單口數不一致,忽大忽小的,這就像是把多個交易策略去形成投資組合的方式,老套了。
今天我沒有要講 DT_01 的設計核心或是概念(東抄西拼的有什麼好講...),我要講的是我如何拆 DT_01 成為 DT_01.1 、 DT_01.2 ....的 DT_01.x。
從「Walk Forward Analysis」中可以看到他是先設定過去一段日期區間做測試樣本,取出最佳化的參數群之後,看看隨後一段日子的時間是否表現OK?以檢驗這個可能要上線的候選交易程式是否有 Curve Fitting 的風險?我則是從這個概念想到了把一個程式拆成數個的想法。
我先把要用來作為測試的歷史數據區間切成數等份,比如有18個月的歷史數據,而打算要把程式拆成4個,我就保留原本已經在使用的 DT_01 不動。另外的3個,則是取用這18個月的歷史數據切成3段也就是各6個月,以這各6個月的歷史數據拿 DT_01 去做參數最佳化,因為測試用的數據不同,通常這樣得到的最佳參數就會有3組不一樣,除非你本來的程式是沒有參數,或是原選用參數所致的表現實在是美麗到不行,要不然,不同的歷史數據理論上會有不同的走勢,所以不同的參數可以得到最佳表現算是可以想像得到的。
接著把用了3組各6個月的數據去最佳化出來的參數當做3個新的程式,與原本選用參數的程式合起來就有4個了,就這樣以同樣的策略核心去得到不同參數的數個程式以組成一個投資組合。
這不是把一整串的歷史資料都拿來跑最佳化,然後選前幾名的參數來做成投資組合。我的想法是這就像是新的程式各自 Match 不同的走勢,因為用來測試的歷史數據來自各不同的區段,冀望未來行情發生的時候,這些不同參數的新程式有各自表現較佳的一段,而不是為了『照顧過去歷史的全部,而犧牲未來的可能性』。
我不知道這樣做到底是我在幻想還是瞎扯,但是我做了,也正在 Run。
對了,這樣新生出來的程式再把全部的歷史資料拿回來套會發現各自的績效表現都比那個舊的差,這是正常的,也是應該的。
熱門文章
-
殷鑑不遠。這是 2019/07/03 的台指期貨,在大約 10來秒的時間之中,台指閃崩了近 500點,並且快速回復。這樣類似的事件,在台指不是空前,也不會絕後,即使台灣期貨交易所有所謂的動態穩定機制在運作,這一天,據我所聽聞到也有不少友人在這很短的時間內... 中槍了。這裡,我們...
-
經過多年的策略開發對腦力的壓榨,如果手上的素材(資料)沒有新東西的話,基本可以說很快就會從滿腔熱血走到老狗變不出新把戲。因為最容易取得的資料就是商品歷史價格,策略的開發也就幾乎是圍繞在價格及其衍生的數值為基礎,也就是價格因素策略。 台灣是一個特別奇妙的市場,交易所公開的資料相...
-
在 MultiCharts 裡,本來我以為 EntryPrice(0) 就代表了最後一個進場的成本價,經過測試後,確定了 EntryPrice( 0 ) 不是最後一次進場價,而是最後進場方向的第一筆價格(可查閱"程式交易語法大全 page 255")。什麼意思...
-
STO 訂閱購買: https://www.touchance.com.tw/sto/index 推展「 以選擇權執行策略訊號 」一段時間日子後,深感這工具的程式碼即使經過面對面的詳細解說,其實對絕大部分的人來說,難度依然是非常的高!我想,上過課的同學其實就是買工具回去用吧 XD...