🤔歷史資料缺失問題
在做量化策略的時候,歷史資料一直是在回測上很重要的基礎,但當你爬了期交所公開資料下來準備寫選擇權交易策略時,會發現一個令人心碎的事實:歷史數據中很常都沒有價格!
選擇權價格受多種因素影響,包括履約價、到期日、市場波動性…等。
但在量化分析上最令人頭疼的是,並非所有的選擇權都像熱門股票那樣,時時刻刻都有買賣。
有些選擇權可能只有零星的交易,或者根本沒有交易。這就是為什麼,當你試圖撈取歷史數據時,會發現某些時段的數據是缺失的。
這樣的情況下,如何做選擇權的回測呢?在這篇文章中,我們會深入探討這一棘手的問題,並揭示我們是如何一步步解決它的。
選擇權策略案例
舉個實例: 假設你有一隻一分K月選策略想在2021/11/22 23:17:00 用履約價18400進場sell put,並且在2021/11/23 00:57:00出場
第一步就要去找歷史資料這兩個時間點的價格,會發現期交所原始資料18400 Put 11/12下午盤到11/23開盤這時間有的成交價格資料就只有藍色區塊這幾筆。
淺談補選擇權價格缺值方法:
用剛剛的策略例子,當你決定進場交易,突然發現沒有資料可供參考。
進場時間的原始資料
日期 | 時間 | 履約價 | PUT價格 |
---|---|---|---|
2021/11/22 | 23:17:00 | 18400 | 無 |
出場時間的原始資料
日期 | 時間 | 履約價 | PUT價格 |
---|---|---|---|
2021/11/23 | 00:57:00 | 18400 | 無 |
當發現都沒有put的價格資料,通常第一個直覺就是去內外插,或是往前找(ffill)或往後找(bfill)價格
假設我們採用往後的方式:
進場價格就是 : 570
出場價格就是 : 705
假設我們採用往前的方式:
進場價格就是 : 590
出場價格就是 : 570
報酬很明顯有很大的落差,一個賺錢另一個變成賠錢,因此怎麼回補缺值數據是一個需要仔細研究的事。
我們先看早盤靠近價平附近的原始價格,比如早盤履約價17700的Put原始價格
我們也把微笑曲線畫出來,隨便挑某一分鐘來看,會看到其實缺很多價格
如何修正這些缺口?答案可能要從隱含波動率和選擇權模型的方法著手
通常選擇權要模擬數據,會先使用沒有缺失的部分,也就是僅有的一些數據算出已知的隱含波動率。
接下來就是利用一些模型或是機器學習去Fit參數,想辦法作出可能的價格走勢。
如下圖所示,藍色實線是原始的歷史價格,而我用橘色虛線表示我們算出來的預估價格,我們把剛剛的履約價17700的Put缺失的價格部分填滿,而當我們建立出一個可以用的連續價格走勢,接下來就比較可以好好的開始寫策略進行回測。
不過建立的模型也有很多不同的方式,筆者試過多種不同方法,但每個方法推估出來的數字都會因為選擇的模型與輸入的模型參數跟訓練的方法而有不同,因此計算出來的價格也會不同。
對估計值的理解
因此要知道只要是有缺失的價格,算出來的估計價格其實並不精確,不同人算出來的也會不同,因為沒有價格資料的歷史就沒有辦法去對標準答案了。
不過因為回測需要這些價格,因此 價格有值參考總比沒有值參考好
在回測上,有值來參考至少還可以回測,不然也回測不了,只是要注意他只是估計的理論值。
回到剛剛的策略,履約價18400 整個滿滿都是缺失值,幾乎看不到原始歷史價格的藍線,我畫出來幾乎是完全空白,而透過前面訓練出來的模型,就可以去做出18400的估計價格
下圖是18400 put 夜盤的估計價格走勢圖:
雖然有時候我們也很難知道到底這樣算出來的價格到底誤差多少,
不過如果我們去對應相同時間期貨的走勢,正常來講put的圖形應該會跟台指期的漲跌呈現一種反向的關西
從上圖就可以看得出來,對應的時間確實有一種反向的關西。
所以剛剛那支進場sell put的策略,我們就可以有一點點依據,這邊剛好是put漲了一段,所以我們可以計算這筆交易可能會賺賠多少了。
實用工具-選擇權超人回測平台
當然處理複雜的資料是很惱人的,不過好消息是選擇權超人的回測平台有盡可能的把資料給整理起來,如果不想自己處理資料,可以參考使用這個工具,讓你簡單運用multicharts就可以讓你更快速的開發選擇權策略。
📌選擇權策略開發要點:
而因為很多缺失值,所以有幾個在開發策略上關於缺失值的部分跟大家分享。
第一個就是
1.避開下午剛開盤
這是未填入估計值的原始資料,下午三點剛開盤的前幾分鐘,我們隨便找一天的一分K,如圖,這一分鐘內幾乎都是沒有價格的狀態(NaN表示沒價格)。
2.不要使用太多深價內或深價外
價平附近因為資料點足夠多,所以大部分不同的預估方法算出來的價格比較不會差太多。
即使經過填補,仍建議在策略開發中避免使用沒有價格的區域,會有估計值比例比較高的問題。
比如出場獲利很大的一大段就會很容易用到很遠的履約價價格,或是進場用了很深價內或是價外的值做進場。
3.注意使用估計值的比例與完全缺失的比例
在選擇權超人回測績效報告上,我們有把所有交易的價格是使用理論預估值的比例列出來,
比如你有500筆進場跟500筆出場,而裡面有100筆價格不是真實的歷史價格而是理論的預估值,那這個比例就是10%
這樣你就知道你這支策略是不是用了太多的價格都是估計值,這個比例越高,回測出來的績效越不準確。
而同樣的,有些地方是真的沒有資料,並且非常難以補到的,我們也會列出來他占你交易的比例多少。
當抓不到價格,我們回測時會跳過計算這筆交易。
像下圖雖然我做出一隻風報比不錯的策略,但是估計值的比例高到82.2%,表示我進出場可能使用到非常多的深度價內或價外的價格,因此我會知道他回測出來的績效可能要打很大的折扣,這支策略可能不那麼穩定。
歷史回測的新理解-理論價格的藝術與科學
做策略的開發猶如從歷史資料中尋找智慧與寶藏。在這個過程中,像極了對過去考古題的解讀與探索,並且期待透過過往的歷史經驗,預測未知的未來。
在期貨或股票的回測中,量化開發者很習慣要求資料的完整性,不允許缺失或不確定性。
因為資料的準確性是量化分析成功的關鍵之一。然而,當我們深入選擇權的世界,這種想法卻受到了挑戰。在這裡,歷史一旦成為過去,某些資料的缺失是無法逆轉的事實。面對這樣的現實,我們得學會自己去設計與填補那些空白,創造一個完整的歷史理論資料。
理論價格,從本質上來看,就是一種估計值,它與實際價格之間存在著固有的誤差。這誤差的大小,也是可以深入研究的主題了。沒有絕對的答案,只有逼近真實的技巧。
在此,我們也誠摯地歡迎所有的高手,一同交流與指教有沒有更準確的作法,或者對我們計算出來的價格提出質疑,讓我們有更好的改進空間,也可以一起探討如何能更加接近那真實的價格之方法。
總結:
在進行選擇權策略的開發時,盡量注意估計值比例,避開剛開盤或是冷門交易時間的進出場,這樣回測起來會比較貼近真實歷史價格狀況。
如果你不想處理繁瑣的資料可以使用選擇權超人的回測工具,此工具已經為你解決了資料缺失的困擾,且巧妙地填補了各種缺失的價格,並且讓你輕鬆用multicharts原本開發台指期交易策略的方式,就可以回測多種選擇權策略
資料來源:期交所公開資料
免責申明:投資有賺有賠,僅分享量化研究與過去歷史統計數據,不保證資料或結果之正確性,量化策略也都很容易有時效性,內容和意見僅供參考,並不構成投資建議或勸誘,請勿直接串接下單。讀者應當自行進行完整的研究,並在做出任何投資決策前,理性評估,為自己負責。