[前言]
所謂週選擇權樂透策略,是當你對未來行情有看法,花小錢買一個週選擇權放到到期,賭他可以一次漲個好幾倍的策略,因為以小搏大的性質跟樂透很像,所以才會有買樂透不如買週選的說法。選擇權策略的回測用Multicharts不容易完成,如果搭配C#做一些檔案處理,會發現容易許多,本文即教大家實作好用的回測輔助文件。
[程式使用]
1. 將「2015_4_opt.csv」放進D槽,這個文件是由期貨交易所「選擇權每日行情下載」下載之2015年第四季檔案。下載位置:https://drive.google.com/open?id=0BwqcpF06v4J4dEpBZVhVY01XRkE
原始資料位置:https://www.taifex.com.tw/chinese/3/3_2_3.asp
2. 將「結算價.txt」放進D槽,這個文件是由期貨交易所抓取。
下載位置:https://drive.google.com/open?id=0BwqcpF06v4J4TW45ZmQwVGtUUFU
原始資料位置:https://www.taifex.com.tw/chinese/5/FutIndxFSP.asp
3. 執行下方程式
4. 結果「Result.txt」輸出至D槽
[觀念解釋]
<樂透策略開發>
本策略只做選擇權買方,所以不會有價格被拉出去大賠問題,頂多就是選擇權價值歸零,所以在回測的時候可以想像成,我要在某個日期買進某履約價的選擇權,接下來就不再管他放至到期結算,並比較買進價格跟結算價格即是最終損益數字。基於上述觀念,我如果有一個文件,裡面有日期、買進價格、結算價格,那我就可以知道我在那天進場買進這個樂透放至到期損益到底是多少(我們這次產生的Result.txt就是這個文件)。至於實際上那天有沒有進場,則可以用Multicharts寫一個策略,產生應該有進場的日期,兩個文件對照就可以產生樂透策略回測結果。
<Dictionary物件>
Dictionary是一個「字典」物件,可以把值加進這個字典,並在加進去的時候給他一個索引方便取出Dictionary<string, int> result = new Dictionary<string, int>();
這行是建立一個叫做「result」的字典
result.Add(ary[1], Convert.ToInt16(ary[2]));
這行把「契約月份」當索引;「結算價」當值,
這樣以後我要取得某一個契約月份的結算價,我不用一個一個找,可以使用如result["2015W2"]的方式取出。
<選擇權買進價格>
QT選擇期交所提供的「最後最佳賣價」當作買進價格而不是選擇「收盤價」<選擇權結算價值>
還記得選擇權結算價值怎麼算嗎?忘記快Google「選擇權內含價值」,除了這個地方以外其他就是一些瑣碎的處理了。
[衍生提示]
在這個策略中,Multicharts的功用在於產生買賣訊號文字檔,下次會介紹如何搭配使用。當有個這兩個文字檔,建立一個小程式讀取這兩個檔案,即可以計算回測結果,如果對C#不熟,用EXCEL的「VLOOKUP」等函數也可以辦到。
如果不太明白程式運作,Visual Studio有好用的Debug功能,可以一步一步看變數的變化,GOOGLE一下怎麼設斷點跟逐步執行吧,千萬要知道這個功能如何使用。
[工商時間]
QT會盡量在網站上寫上大部分程式碼及觀念,如果還是有不懂,可以參考實體課程http://quanttrade168.blogspot.tw/2016/12/cmulticharts.html
沒有留言:
張貼留言