Inputs: len(20),Entrylen(50),Exitlen(50),Money(200000);
Vars:NShare(1);
NShare=intportion(Money/(close*1000));
Condition1=close>Averagefc(close,len);
if Condition1 then buy NShare shares next bar at highest(High,Entrylen) stop;
if Marketposition>0 then sell next bar at lowest(Low,Exitlen) stop;
在回測上,期貨跟股票是不一樣的,期貨只要注意換月價差及滑價就可以了,而個股則會有現金增減資、除權息的跳空缺口,所以無法達到很精確的回測。但是其實我只要確保實際交易的績效會好過回測,我就可以接受,所以原則上我採用的方式是粗糙的回測,但會確保回測模式很保守。回測時我會做一些假設(目的是創造出保守的回測):
- 多單如果因為除權息或增資的缺口而停損出場,就當作是停損。(比實際交易保守)
- 雖然是交易台股前一百檔權值股,幾乎不會滑價,但還是設手續費及證交稅為來回0.7% ,現在券商給出的手續費普遍低於5折,來回也不用0.5%。
- 去除回測中因為減資而向上跳空產生較大停利的假象(例如2014年4月期間南亞科這檔股票減資所導致回測失真)。
- 只作多不做空,因為作空的難度比較高,券源也因券商有所不同。
- 台指權值股雖然每年都會有微幅調整,但基本上變動的商品低,所以回測就用目前台指權值股前100名進行回測,實際交易時建議每年跟著變動 。
利用MC進行投組測試(單策略 vs 台指前100) |
回測時間就設定為2005年1月到2016年,測試結果如下,首先我們可以看到一個現象,那就是只要是多頭,隨便買股票都有能力可以賺到,唯一的例外是2016年只漲台積電及台塑等重量牛皮股,賺的錢被很多假突破的股票脫累,即便如此,我回測到今年11月的結果,仍有小賺。
台指前100檔權值股回測 (單位:千元) |
年度損益分析(單位:千元) |
一定會有人會問為什麼我要測台灣100權值股,而不去測週轉率高且多頭排列的熱門股,原因有兩個,第一個原因是我想用最保守的方式進行回測,當投資組合裡面有一堆超級難漲的大型股票(例如第一金、彰銀、華南金等牛皮股)時,回測起來還能長期賺錢,那麼策略的可靠度可能會較高;第二個原因則是選股要花很多時間,所以乾脆減少變動,如果每年才增減幾檔股票的投資,我想對於不想花腦筋的人是個不錯的選擇。
有了基本策略之後,接下來再自己加一些非技術面的濾網,去縮小股票池,例如我剔除股本超過500億的個股,這些股票除非有大趨勢,不然連漲特性會很差,尤其是那些財報普通的官股銀行,公司派不敢炒股,金主也不會去碰,因為炒作成本太高。去除這些牛皮股後,回測如下,可以看到獲利大增40%,回檔也更小了。
台指前100權值股回測,股本<500億 (單位:千元) |
年度損益分析(單位:千元) |
後記:
1. 我是用很笨的策略去測試股票的厚尾,讀者可以自行修改成策,不管交易股票或是股票期貨都一樣適用。
2. 投資股票最重要的不是策略強不強,而是資金利用率,能想辦法把資金利用率調到最高,才是贏家。例如2008年股票有8個月的空頭,股票訊號完全沒有觸發,所以讓很多資金停在銀行中沒有利用到,雖然說當時沒有賺錢已經是市場上的贏家了,但是如果空頭切換做期貨、多頭回來做股票,也是提高資金利用率的方式。
7 留言:
原來有這個方法,學到了,謝謝WEN大
WEN大謝謝您的分享!請問要怎麼估算需要放多少資金去跑一個投資組合呢?像你的例子是20萬*100=2000萬,是這樣算嗎?
因為是現股,沒有槓桿,所以可以參考回測報表中"帳戶所需金額",除此之外,如果使用這種方式交易的話,你只會留比平均持倉資金再多一點的資金,因為股票交易是T+2,今天買進的股票,2天後才會扣款,所以只要確定有足夠的錢,超過帳戶資金,再進行補足即可。
我則會選數十支最爛或熊股作回測,如果結果跑贏或勝過買入待有的結果則視為好策略。
不用測也知道會勝過買入持有,因為你選的是最爛的熊股。因為有均線濾網,這些股票根本很少進場(自然會勝過買入持有熊股)。
那要看你用順勢還是波動策略了,即是用均線(順勢策略)也有機會差於買入持有。進出多少不衡量勝算的可能,只反映策略本質而已...
謝謝WEN大的分享。
用Cmoney回測同一個邏輯2008年的dd有到-50%,
實務上似乎不是可行。
張貼留言
如果有私人問題想請教,請透過網站右方『與站長聯絡』之表單,謝謝!