淺談WF
NEWS 2018/10/01

Walk-Forward的觀念,其實已經很普及,但做法上不外乎就是取某段期間樣本內的資料,來測試其它期間的適用度。舉例:2008-2015樣本內最佳化,來看2001-2008,2015-2017的績效表現是否可以維持一致性。符合這種條件下的參數,的確有機會拉長策略的生命週期。但其中的小疑問就是,何時要再進行最佳化 與 樣本內外的資料何時重新調整?

 

其實這是個沒有標準答案的問題,每支策略的邏輯不同,結果也大不同。正好受邀朋友幫忙測試WF,也利用這個機會分享我個人對於WF的應用與看法。

 

WF我覺得算是一種可以比較”合理”評估策略期望與風險的工具。同時,也提供了另一個評估維度 - 何時調整參數。下圖為WF的其中一種模式,對於策略來說,我覺得歷史資料可以幫助參數學習,所以我選用的模式是讓他可以學習,而不是移動窗格。

 

 

先就期望與風險來說,我在評估策略上不在只是看歷史資料。而是樣本內最佳化參數套用在下一期間的實際績效。從這個實際績效去評估,較合理的報酬與風險,同時去比較樣本內外的差異來做為未來報酬的合理預期。

 

再來,經過測試可以選定最佳或者是方便的調整時間點。此時,參數調整不在是因為績效打平的被動調整,而是主動且定期的讓參數去學習盤勢。

 

WF組成下的實際績效,沒有任何作弊的空間。很多過度最佳化的程式,(樣本外/樣本內)的平均表現都會低於5折以下。而就我的經驗而言,一個穩定的策略折數大多會在0.7以上,且參數的穩定性在回測過程也呈現穩定情況。這樣的程式通常生命週期會長一點(還是會掛的啦)。

 

經由朋友的同意,我就用他的策略做例子來說明WF。在說明之前,為了這次的文章,本人的爛電腦光跑最佳化(3萬多次)就花了1天的時間。跑WF分析又花了10個小時。一般來說,有效參數的最佳化最好控制在2000次以下,是比較符合效益的。

 

樣本外資料期間:20070616~20170508

 

下圖為原始報酬與WF後報酬,可以看到淨利部份是由651萬降至515萬,MaxDD由79萬長大至87萬。一般來說,除非特殊情況,回測期間若夠長,淨利表現一定較差,MaxDD也一定較大。這也就是為什麼我們常常說DD是用來打的。再來從曲線來看,可以發現策略曲線在不利時,通常樣本外的DD會比最佳化出來DD還要差。但就這個策略來說,淨利與MaxDD在WF下,我認為還算不錯。

WF調整後

 

 

WF另一個重要的意義就是調整時間點(或說是檢測時間點)。以這個程式來說,選用26週整是個不錯的時間點,下圖為動態調整的數字。

 

這張表裡面RuBust值就是樣本外月報酬/樣本內月報酬,也是WF報表中最核心的數字。以這個策略而言,RuBust值為0.58。可以想像成如果今天最佳化上線的未來26週,月報酬打折的比例(期望值)。通常來說0.7以上,表現會較為穩定。

 

再來我們看一下參數的變化,這裡共有7個參數,但我0.05與0.35是固定值。由這個測試可以發現,110在未來最佳化的過程中,我們可以省略。此外,就參數的敏感度來說,其實最好的參數變化並不大,這個結果並不令人意外,這主因在於策略本身的邏輯性夠,參數相對而言只是「微調」。在這10年的資料空間,參數調整10次,201506後參數也固定下來,還不用調整。回想起來,201506後的行情週k的區間並不太大,至少對於這個策略來說,參數還算適用。

 

最後我們來觀察一下MaxDD的變化。在樣本內報表內,標註起來的地方在參數調整後,MaxDD是變小的。其實這就是靜態與動態的差別,靜態作弊的情況,但是動態調整下卻有可能面對到更大的風險。樣本外(26週)面對的風險最大是55萬,連續操作最大的風險則是87萬。用這些數字來做風險規畫與策略評估,相對而言會真實許多。

 

最後我們可以得知,下一次要調整參數的時間點為2017/6/3日那週。這樣的做法,考慮了時間、空間與動態的過程,但也不能保證策略不失效。搭配著自己的管理系統,至少在風險評估上會更為貼切。