《精選部落客》拿分K資料做當沖策略回測,你累了嗎?

2015/08/09 10:07



 ;

下圖是一個當沖策略從2010年以後的的損益累積圖,總損益為3342點,總交易次數1043次,平均毎;筆獲利3.2點,最大連續虧損509點,這樣的結果你滿意嗎?

 ;

 ;

 ;

看損益累計圖似乎還不錯,獲利不斷的創新高(紅X),連續虧損也在一個合理範圍內 (下面綠色區域)。但注意到,平均毎;筆交易只獲利3.2點 (已扣5點滑價手續費),似乎覺得有點少。
 ;
真是如此嗎? 我們計算一下,平均每次賺3.2點,也就是640元。假設一口期貨保證金10萬元 (事實上應該小於10萬),每天可獲利0.64%
 ;
當然,我們不可能單純用一口保證金去做。最大連續虧損509點告訴你用10萬做一口會遭遇到相當大的破產風險。保守計算,假設用50萬做一口大台 (如此槓桿也接近4倍),按照每天賺3.2點的績效,一年約250個交易日可賺16萬,年化報酬率約32%,

 ;

這樣的績效,我想沒人會否認不優異!
 ;
然而,你有沒有想過,台指期每天指數波動大約100點上下,每秒的波動大約在1~2點上下,快市時每秒波動甚至可到5點甚至10點以上。
 ;
如果你是用手動下單,不管你下單手法多麼敏捷,你如何能夠在訊號發生後,瞬間( <; 0.2秒) 完成下單動作,而不經歷1~2點的波動? (也許快速鍵可以,但還是容易有誤差)

如果你無法完成上述瞬間的下單動作,而每秒的波動又在上下1~2點間,偏偏你圖的又是每次交易平均3.2點的獲利,你不覺得這個策略是一個風險極高的當沖策略嗎?
 ;
好在是這個策略先扣掉5點的滑價跟手續費了。也就是每次交易雖然平均只賺3.2點,事實上是賺了3.2+5=8.2點:包括1點的手續費,新倉平倉上下2點的滑價 (有時高估有時低估)。
 ;
這也是為何當沖策略最好用程式交易的原因,讓電腦自動下單,完整確實的執行觸價後";瞬間成交";這件事。 然而,你以為這樣就萬事太平了嗎? 當我們辛辛苦苦地做完回測,發現確實能夠獲利拿來使用時,可能還有一件讓事情讓你崩潰。
 ;
有沒有想過你的回測結果可能是錯誤的?
 ;
下圖是統計2010年~ 2015年3月每分鐘波動統計圖。可以發現,這段時間每分鐘的 ";高點-低點"; 大約在1~5點之間,最常發生是在2、3、4點,其次是1點、5點。
 ;
而我們通常用來回測的歷史資料是正是分K資料,也就是我們有歷史行情每分鐘的開高收低,這會造成回測上一個很大的問題。
 ;
舉例來說,用分K策略點執行30點的固定停損,這樣的設定屬於";觸價停損";,也就是一旦盤中有觸碰到停損價位,程式就自動執行下單,也許成交在下一個tick;若是發生快市滑價,也許成交在下2~3個價位以後。
 ;
可惜的是,用分K資料回測,當第 I 分鐘X秒 (0<;X<;60) 發生觸價,你該用第I分鐘的什麼價位去執行停損,記得你的分K資料只有第I分鐘的 ";開";、";高";、";收";、";低";,你只有這四個數字可以使用。
 ;
兩種方式你可以選擇,一種是用第I分鐘的最差價位去計算,所謂最差價位,可能是用最低價(多單停損)去計算,可能是用最高價(空單停損)去計算。
 ;
另一種方式,你可以用下一分鐘的開盤價去計算,也就是第I+1分鐘的開盤價。總之,邏輯都是在 ";實際可執行策略"; 或是 ";保守預估績效"; 的的情況下去回測。
 ;
當然,你無法用第 I分鐘的";最佳價位";去執行停損,那樣會佔去探多便宜。不要以為這小小的 ";1分鐘內的誤差"; 微不足道,下面我們來做個實驗:
 ;
上述的策略,如果我們在第I分鐘觸價停損,我們用第I分鐘的最差價位去執行停損。損益累計圖如下。

 ;

 ;
 ;
總損益: -3105 ;
總交易次數: 1043 ;
平均每筆損益: -2.976989 ;
獲利次數: 433 ;
勝率: 41.51486 % ;
平均賺: 38.03002 ;
平均賠: -32.08525 ;
最大連續虧損: 3416 ;
 ;
有沒有很誇張? 損益績效圖從一個穩定向上看似很棒的策略,變成一路賠到底的損益績效圖,爛到連綠色的最大虧損我都不敢畫出來。
 ;
如果我們改成 ";第I分鐘觸價停損,在第I+1分鐘的開盤價執行平倉";,則結果稍微好一點,但還是慘兮兮。
 ;
 ;
總損益: -900
總交易次數: 1043
平均每筆損益: -0.8628955
獲利次數: 433
勝率: 41.51486 %
平均賺: 38.03002
平均賠: -28.47049
最大連續虧損: 1677 ;
 ;
 ;
如果將程式回策動個";小手腳";:在第I分鐘觸價停損,我們卻提早一點點就 ";預知"; 這件事,在第I分鐘的開盤就先行平倉 (也就是提早知道X秒)。則績效如下:
 ;
 ;
 ;
 ;

總損益: 3342
總交易次數: 1043
平均每筆損益: 3.204219
獲利次數: 437
勝率: 41.89837 %
平均賺: 37.71854
平均賠: -21.68482
最大連續虧損: 509

ㄟ~ 有沒有發現,這就是本文一開始呈現的策略績效。換句話說,這個策略本身回測成果並非如此,別以為預知不到1分鐘 (X秒) 影響不大,事實證明,預知越多時間,影響越大。也就是績效會愈好,下面是提早整整1分鐘的結果:

假設我們可預測下一分鐘會觸價停損,也就是我們在第I-1分鐘的開盤就直接執平倉,則績效如下:
 ;


總損益: 5339
總交易次數: 1043
平均每筆損益: 5.118888
獲利次數: 448
勝率: 42.95302 %
平均賺: 37
平均賠: -18.88571
最大連續虧損: 350

看到沒有,我們偷到的";預知1分鐘";,足以撼動整體策略績效,現在你還敢用分K做當沖策略回測嗎?

用分K資料如何做當沖回測?

當然一個可行的方法,是你就直接用觸發價當作進場價,停損(利)價當做出場平倉價,但記得要扣掉手續費與滑價5點。也就是你若設定固定停損30點,直接用停損價位扣掉滑價5點。換句話說,每次交易停損後,都是賠35點。下圖是損益圖與績效。
 ;


 ;總損益: -454
 ;總交易次數: 1205
 ;平均每筆損益: -0.3767635
 ;獲利次數: 495
 ;勝率: 41.07884 %
 ;平均賺: 40.83434
 ;平均賠: -29.10845
 ;最大連續虧損: 1592

這樣做的結果會比較符合實際交易的結果,但誤差仍然是存在。畢竟不是每次都剛好滑價5點(時高時低),這點用分K做回測,任憑你再神通廣大也難以預估。

 ;

 ;

http://www.bituzi.com/2015/08/minKFalsebacktesting.html

個股K線圖-
熱門推薦