手把手教學篇靜態回測範例DEMO
因為有同學想更了解DD管理大概要怎麼設定與使用,所以許願能夠講一下近期前幾篇所用到的回測工具
這一篇所用到的範例程式碼與工具可以在討論區中下載 (需配合使用艾揚的加值函數GV Plus或網路上可以下載到的 ADE套件來做圖表間的資訊傳輸)
<GV Plus是好東西,必備,比ADE穩定很多>
這裡要再提醒的是,目前我們能比較簡單做到的回測仍是屬於靜態的(僅將加權值或部位值用於原策略的進出場位置)。而平台實際上能夠做到的是更全面的動態型資金管理(即使是在策略訊號行進中也能因應數值變化來進行即時應變),不過雖然回測僅能先簡單地做靜態式的回測,其實也足夠我們進行數據的分析觀察以及輔助我們進行設定了。
我們先從討論區裡下載一下已經寫好的回測範例套件,匯入至Multicharts中

紅色框起來的地方是我們主要會用到的三個訊號
第一個 @QB_Static_BackTest_Pass為我們的行車電腦(同QB_Connect的計算)
第二個 @QB_Strategy_PureTrend為我們過去幾篇文章中所使用的一千零一隻均線策略
第三個 @QB_Strategy_PureTrend_GetDMM為我們接收行車電腦的資訊後所運行的結果
匯入後我們就可以來選定一個商品來進行我們要做的回測觀察
以大家比較常做的台指期為例
(基本上跟之前手把手教學篇—小日經篇一樣,多空分拆、BackAdjustedData那些我就不講了,這裡我跳快一點)


選擇日線,記得勾選以分線組成(交易時段為熱門時段 08:45 ~ 13:45)
然後掛上我們套件中的一千零一隻無腦均線跟蹤策略跟靜態回測用的行車電腦

設定一下交易成本以及行車電腦運算分析所需要用到的最大使用K棒數量

然後我們就可以先來看一下一千零一隻策略的原始表現
基本上經過 多空分拆 跟 BackAdjustedData資料偏差調整處理 之後,長期表現就已經還可以了,基本上台指只要有行情就不會漏掉(無腦均線跟蹤系統的好處,單一參數邏輯簡單傻傻緊跟所以不會有漏掉的,所以其實也沒什麼特徵失效的問題)


接著來辦正事,我們可以勾選或設定一下我們想要了解行車電腦中所提供的回測選項(同QB_Connect中的設定)

EVA_OnOff 為基礎評價函數的開關
MyFilterOnOff 為你自行擴充的噪音處理區塊開關(預設區塊裡面是空的,未來可依據你自己的經驗與需求設計)
Lookbackdays 為你希望作評價分析的最大回溯周期
後面四個DD開頭的則是同學們最近比較想花時間了解的DD管理項目
DD_Management_OnOff 為DD管理的開關
DD_Management_Mode 為想要使用的管理模式
DD_StdLen 為DD管理所使用的波動參考周期
DD_Weight 則為波動參考周期的權重(預設為統計學上慣用的兩倍,可依據商品特性調整)
這個回測模組主要是要幫助同學來理解DD管理該怎麼設定比較好,所以我們就直接開啟 DD_Management_OnOff 設定為 1
目前我們提供四種基本模式(同學可以自行重新依據自己的需求設計更多其他模式,細節請同學直接看原碼)
Mode 1/Mode 2 為原始策略訊號,並在DD達閥值之後加碼
Mode 3則為濾鏡模式(忽略原始策略訊號,僅在DD到達閥值之後開啟策略)
Mode 4(重要)為函數式的寫法。
之前的文章裡有寫過一件很重要的事情,由於受到MC的思想制約,我們很習慣把策略與濾鏡寫成二分法(所以才叫做濾鏡),也就是閥值式的寫法。但策略中閥值式的寫法很容易造成一個大問題,也就是如果行情沒有到達閥值的時候就展開了,我們很容易就會錯失掉等了很久的重要行情,所以更好的方式就是改用函數(描述機率分布或資金分配演算法)的形式來撰寫,這樣就不會錯失任何訊號或行情又能同時依據即時的優勢與風險變化來靜態或動態分配我們的部位。
Mode1/Mode2僅為倍數的差別,所以我們直接看Mode2即可。所以接下來我們依序來看Mode 2/3/4。
以上是圖表A的準備工作,然後我們就可以再來開一個新圖表B(別忘了勾以分線組成)用以觀測DD管理後的結果,圖表開啟後直接掛上@QB_Strategy_PureTrend_GetDMM (請記得使用與圖表A相同的均線週期與相同的交易成本設置)
回到圖表A,將Mode 設定為 2 ,接著將圖表B我們剛剛掛上的@QB_Strategy_PureTrend_GetDMM 狀態選為啟動
即可看到DD管理Mode 2 的結果

透過DD管理的籌碼配置縮放,很明顯權益曲線已經比原始策略要更為穩定
再來回到圖表A,將Mode 設定為 3重新計算 ,接著回到圖表B我們剛剛掛上的@QB_Strategy_PureTrend_GetDMM 狀態先選為關閉,然後再重新選為啟動,重新載入資料,即可看到DD管理Mode 3 的結果
(Mode 3 為濾鏡模式,捨棄原始策略訊號)

Mode 3 (濾鏡模式)是捨棄原始策略的結果,可以用以觀測DD管理的有效性,或是用來決定DD_Weight該怎麼設置時使用。
亦可以單獨使用,通常如果操作商品品項非常多的人,就可以單獨使用Mode3,雖然訊號少(閥值式濾鏡的問題,雖然訊號品質高,卻容易放掉其實可以獲利的行情),但可以透過操作商品品項數量來解決,讓資金高效在多商品中流轉。
接著再來看重點 Mode 4,回到圖表A,將Mode 設定為 4重新計算 ,接著回到圖表B我們剛剛掛上的@QB_Strategy_PureTrend_GetDMM 狀態先選為關閉,然後再重新選為啟動,重新載入資料,即可看到DD管理Mode 4 的結果
(Mode 4 為DD函數式的寫法,不錯失任何訊號,但依據DD的分布位階來配置資金)


跟Mode 2 比起來更為smooth了,這就是用函數式寫法取代濾鏡式(閥值)寫法的特點,不放棄任何訊號又兼顧DD管理的優勢。源碼也就一行,同學自己看,我就不廢話了,當然你也可以改成你自己覺得更好更符合你心中想要的籌碼配置方法。
策略進出場位置完全沒有變,只是在籌碼的分配演算法上做部位變化(部位管理)就能夠有這麼多進化,並且能夠穿透到不同商品去,對未來未知盤勢的穩固性也比一直鑽牛角尖在多策略疊加要好多了,這就是管理。
同學們可以仿照套件,改成自己的策略或應用到不同的商品去,釣竿給你了,剩下的部分跟應用與延伸就是你自己的功課了
所以學交易到底難不難,老實說很難,難的點在如果沒有人告訴我們重點在哪,我們得撞得頭破血流學全一百樣功夫一百個策略一百種商品,然後滿身傷痕之後才知道哪九十九件該被丟棄,但最後留下來的東西又其實很簡單,江湖一點訣,說破也就這樣。
(延伸思考:同學可以思考一下如何仿照Mode 4的寫法,來實做一下我們之前討論區內有篇文章是關於如何判斷商品當下行情位置的風險位階,請試試看透過這個寫法來實作出一個主動式的濾鏡函數,實做出來後可以放入此@QB_Static_BackTest_Pass 中的 MyFilter 區塊中,同樣可進行回測,之後有空我再來討論區裡發那一篇的延伸,講講德國股神科斯托蘭尼的雞蛋理論遛狗理論到底在講什麼以及其資金配置函數該怎麼撰寫)
您好,想請教幾個問題
1. 即時的優勢與風險變化來靜態或動態分配我們的部位
[靜態]指的是只有處理進場時部位的分配?
[動態]指的是進場後隨著盤勢調整部位? 每一根 K 棒都會計算數值決定部位比例 (覺得這個太難 XD)
2. 閥式 vs 非閥式
閥式寫法容易會有錯失行情的時候,那是否非閥式的就是”不放棄任何訊號”,但需要調整部位比例。
追蹤您文章一段時間,有些心得想請教與交流。
若單策略單商品多口數的條件下 (ex : 2 ~ 4 口以上) ,做兩組對照。第一組閥式 0 全部出清 1 全部進場,第二組靜態分配。
最後可以應該可以預期以下結果的實驗才比較合理?
– 總獲利 : 第一組 > 第二組
– 勝率 : 第二組 > 第一組
– MDD : 第一組 > 第二組
– PF : 第二組 > 第一組
hi
1.
是的,靜態指的是只處理進場。動態則是 tick level,每個 tick 都會重新計算。不過實際上變動也沒有那麼頻繁就是了,動態的好處是比較可以追蹤一些即時數據的變化,讓操作更靈活(動態加減碼)。
其實也無謂難不難,只要先知道原來量化還可以跳脫MC框架做到更多就夠了,未來某一天突然心領神會有需要了就能馬上實作。
2.
是的,不放棄任何訊號,但會依據當下的條件來產生決定進場的部位大小。
我的經驗是剛好都相反,主要是閥值式的想法就是要求訊號要有一定的品質(其實也是要考量閥值的設定是鬆或嚴格),因為訊號有挑過,所以勝率、MDD、PF應該表現都會比較好(以這篇文裡的mode 3為例,我好像沒貼出來,但其實mode 3的PF可以高達 7以上,但訊號就是很少,所以雖然訊號精準品質高,但可交易次數並不多,獲利自然就少)
函數式(資金配置模式)的則是會處於一個比較”均衡”的狀態。
均衡的狀態比較適合做為一般的操作(尤其是多數人可能操作的商品項目並不多)。
閥值式的追求較好的訊號品質,但有可能捨棄掉過多的訊號(包括有利潤的),適合多商品操作或高槓桿操作(所以也沒有不能用,但配套就是多商品操作或高槓桿)
謝謝您迅速的回復。太感謝了
我第二的問題描述的不好…Orz,應該是原策略(全部下or全部出清) vs 資金配置模式 。這樣是否與上述的預期雷同?
PS: 看了您很多文章,很認同你的觀點,雖然周遭的朋友都是不斷開發新策略的導向(10支~20支策略…),很難有共鳴 T_T