顯示具有 Backtest 標籤的文章。 顯示所有文章
顯示具有 Backtest 標籤的文章。 顯示所有文章

2017年11月9日 星期四

Backtect Report 回測報告

今天我們繼續看看在回測報告上可以看到甚麼有用的數據。

除了昨天我們看到的總回報、贏輸次數、平均每次交易回報等等統計外,我們還可以在圖表上看到策略的表現。

第一個圖是組合的資金曲線,我們看到原來這策略在2007年時曾升到25,000以上(本金10,000),但之後無以為繼,表現平平。

第二個圖是Maximum Drawdown,即最大回撤。它告訴我們組合從高位至低位最多回落了多少。這個策略從高位最多回落了60%以上,在風險管理上,絕對是不合格。









































然後,第三個圖是策略在每年及每月的回報統計,可以幫助我們分析策略會不會在甚麼月份做得較好,或哪個年份做得較差,或是有沒有以前做得好,但最近變差了的情況。一般來說,大家都希望一個策略的回報能平均分佈就最好了,表示回報在不同市況都能穩定。







































這裡我們看到除了2008年大跌之外,2012 - 2014年連續三年都是負數。到底是什麼原因呢?找出原因就可以幫助我們優化策略,或最起碼對策略在甚麼市況會做得不好有個心理準備。由於2012 - 2014都是上落市,對於跟勢交易比較不利,容易左一巴右一巴。

第四個圖是每單交易回報的分佈圖,也就是可以一眼看到上次說過的,趨勢策略的回報,是由很多次「小敗」,和少量的「大勝」組成。

之後Trade這裡就是每單交易的明細,沒什麼特別。







































Formula也就是這個策略的程式碼。感覺這些都是Reference,就是告訴你前面報告中的回報表現是怎麼做出來的。



Settings:這裡我們看到有很多設定可以調教,比如說佣金,這裡我們忽略了不計,但它對真實交易回報的影響其實很大,算上佣金的話,相信這個策略的表現會很不理想。

另外,也可以設定買入、和賣出的價錢,現在策略是用收市價交易,也是合理的。但假如是一些較短線的策略,則變得不合理了。



Symbols:就是在哪個(哪些)產品上交易。這次我們只在HSI上測試。



最後是Monte Carlo分析,這裡是比較複雜的概念,還是留待以後再討論吧。






































總結一下,Amibroker 的 backtest 可以很方便地讓我們知道一個策略的績效是怎樣,以及它的盈虧分佈等等的風險特性。我們常常會想到一些交易策略,但到底實際上是否行得通?贏錢還是輸錢?是靠很多次小勝來獲得回報?還是靠一兩次的大勝?做Backtest,跟科學課做實驗十分相似。

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天...