2017年11月7日 星期二

Backtest 回溯測試

今天要來試試Backtest的功能怎麼用,而且也來順便測試一下一些傳統的策略到底有沒有用吧!

我們依舊使用上次的策略,收市價升穿250天線時買入,跌穿250天線時賣出。這是簡單的跟隨趨勢策略,以250天線作為長線趨勢的方向,並以收市價升/跌穿作為轉勢的觸發信號。當然我們不會預期這麼簡單的方法會有效,但作為測試,它勝在夠簡單易明。

這次我們也是先在一隻產品上測試,之後再試一籃子的股票。一開始我決定選最有代表性的恆生指數來做測試



這一次測試時段長一點,由2000年開始至今。



開始回測!



沒有結果,出了點問題......






看來回測還需要寫下沽空和平倉的條件,如果我們不作沽空,則要到回測設定裡調整。既然如此,我們就把沽空和平倉的條件都寫吧。

沒有加新的條件,賣出時同時反手沽空,平倉時同時後手買入。即是在任何時間中,都有倉位,不是正在Long,就是正在Short。



這次結果出來了,一大堆買賣的交易紀錄。



每一行是一次完整買賣的盈虧統計,以第一行為例,是一筆Short的交易,10/5/2000沽,兩日後平倉,輸了4%。

第二筆是Long的交易,又輸了5%。

細看一下,原來本金是10,000,第一次交易輸了後,第二次只剩9572去交易。所以說這個回測中,每次交易都是訓身把全部資金投進去的。我想這些本金,或是每次投入資金多少,應該是可以設定的。以後再慢慢找出來逐一測試。

那到底這個策略的表現如何呢?可以在Report這裡看到。



我們看到,在這期間的回報是49%,如果單純 Buy and hold的回報是65%,可說是唔做好過做,出出入入效果更差。但睇真D,原來主要是Short trade的部份輸錢,單計Long Trade係贏97%,比Buy and Hold 好得多。






































這個Report中還有很多不同的數據,比如說它把交易分成兩組,Winner 和 Loser。

我們可以看到這個策略中Loser比Winner多很多。比如在Long trade中,只有12次獲利交易,另外43次都是輸的。可是總括來說回報還是正數,為什麼呢?

原來是因為每次贏的時候都贏得比較多,平均有7.81%,而輸的時候都輸得比較少,平均有1.57%。結果,拉上補下,就贏得了97.5%。

這種輸多贏少(次數),但贏的時候贏得多,輸的時候輸得少(百份比)的表現,是很典型的趨勢策略特徵。之前都是從書中看到的結論,今天終於自己親手驗證了。

這個Report還有很長的部份,我們明天再續。






沒有留言:

張貼留言

200天EMA (二)

上次我指出恆指在明年第一季將會回落至200天EMA水平,理據是什麼? 其實主要是運用中值回歸(Mean Reversion)的概念。由1990年至今,恆指未曾試過有一年,指數是完全沒有掂到200天EMA的。換句話說,不論是牛市或熊市,每個日曆年,恆指都會至少一次回到200天...