VALYNOXSTRATEGY RESEARCH TECHNOLOGY
AlphaPrimeAlphaPrime
策略學院 / 回測與檢驗

選擇權回測:為什麼比期貨難,以及該怎麼做

選擇權回測比期貨回測難,因為每一口選擇權都會隨時間、履約價、隱含波動率與標的走勢路徑重新定價,所以測試需要完整的選擇權鏈報價、每一腳的價差成本,以及逐根 K 棒重新定價。最便宜又誠實的第一步,是先用標的期貨加上真實成本測試進出場時機的想法。

作者 · 發佈 · 更新於 · 編輯原則

目錄
  1. 為什麼選擇權回測比期貨回測難?
  2. 需要哪些選擇權鏈資料,為什麼這麼貴?
  3. Greeks、隱含波動率與路徑相依如何改變回測?
  4. 哪些成交與價差假設會毀掉大多數選擇權回測?
  5. 能不能先透過標的期貨測試選擇權策略?
  6. 選擇權回測軟體應該具備哪些功能?
  7. 如何讓選擇權回測保持誠實?
  8. 常見問題
  9. 參考資料

選擇權回測比期貨回測難,因為選擇權策略需要一整條選擇權鏈的合約,每根 K 棒都要依時間、履約價、隱含波動率與標的走過的路徑重新定價。要做出貼近實際的測試,需要歷史買價與賣價報價、每一腳的價差成本,以及到期處理。最便宜又誠實的起點,是先用標的期貨測試進出場時機的想法。

為什麼選擇權回測比期貨回測難?

一條價格序列對上一整條選擇權鏈,差別就在這裡,而且資料、成交與帳務會同時受到衝擊。回測一條期貨規則,就像在公路上盯著一輛車;回測一條選擇權規則,則像同時盯著四十輛車,而且每輛車都隨著時間流逝越跑越慢。

選擇權鏈是同一個標的上所有買權與賣權合約的完整清單,涵蓋所有掛牌的履約價與到期日,每一口都有報價。期貨回測每根 K 棒只問一個問題:價格是多少?選擇權回測每根 K 棒要問這個問題四十次以上,接著對每個未平倉部位再問第二個問題:考慮到剩餘時間與市場的緊張程度,它現在值多少?

回測的部分期貨策略選擇權策略
每根 K 棒的資料單一合約的開盤、最高、最低、收盤與成交量每個履約價與到期日的買價、賣價與隱含波動率
成交模型每邊一個跳動點的滑價是常見的起點每一腳半個買賣價差,開盤與快市時更寬
進場到出場之間的價值只隨標的價格變動隨價格、時間、隱含波動率與利率變動
出場事件你的出場規則或轉倉日你的出場規則、轉倉、到期、履約或被指派
部位帳務一個口數、一個每點價值多隻腳,履約價、到期日與保證金各不相同
一條期貨序列對比一小段選擇權鏈:期貨回測每根 K 棒追蹤一個價格,選擇權回測每根 K 棒追蹤約四十個合約價格 一個價格,還是四十個? 每根 K 棒的價格數,示意選擇權鏈 期貨 1 個價格 選擇權 40 個價格 選擇權每根 K 棒追蹤四十個價格。 所以:測試前先界定選擇權鏈範圍。
一條期貨序列對上一小段選擇權鏈:回測每根 K 棒必須追蹤約四十個價格,而不是一個。

如果你還在決定要交易哪種商品,新手的期貨與選擇權比較說明了為什麼期貨測試比較容易做對。

需要哪些選擇權鏈資料,為什麼這麼貴?

誠實的選擇權回測,需要你的規則可能碰到的每個履約價與到期日的買價與賣價報價,而且要涵蓋規則做決策的每個時間點;在下面這種中等規模的設定中,資料量大約是單一期貨序列的一百倍。這是廠商對選擇權歷史資料收費遠高於期貨歷史資料的原因之一,資料清理的工作量也更大。

決策時間點的影響比多數交易者預期的更大。每天收盤交易一次的策略,每天需要一份選擇權鏈快照。每 15 分鐘檢查一次的策略,則每 15 分鐘就需要一份快照,因為收盤時的報價無法告訴你 10:15 時你會付出多大的價差。快照必須與標的 K 棒取自同一時刻,否則回測會用過時的價格成交。

假設性範例

一檔指數期貨的中等規模選擇權鏈:4 個到期日、價平附近 20 個履約價、每個履約價一個買權與一個賣權,每口合約三個欄位(買價、賣價、隱含波動率)。也就是每根標的 K 棒有 4 × 20 × 2 × 3 = 480 個數值。期貨 K 棒本身只有 5 個數值:開盤、最高、最低、收盤與成交量。對一個跑好幾年的 15 分鐘策略而言,選擇權檔案在尚未清理之前,大小就約為期貨檔案的一百倍。

選擇權鏈資料成長極快:期貨每根 K 棒有 5 個數值,而示意的選擇權鏈(4 個到期月、20 個履約價、買權與賣權,含買價、賣價與隱含波動率)每根 K 棒有 480 個數值 選擇權鏈資料暴增 每根 K 棒的數值數,示意設定 期貨 5 選擇權 480 4 個到期月 × 20 個履約價 × 2 × 3 資料量約為期貨的 100 倍。 所以:只買用得到的履約價。
選擇權鏈資料如何倍增:K 棒數 × 到期日 × 履約價 × (買權與賣權)× (買價、賣價、隱含波動率)。示意性設定。

清理是第二項成本。深度價外的履約價常常買價為零、賣價遠高於合理價值,所以在這些履約價以中間價成交的回測,是在從未存在過的價格上交易。當某個履約價好幾個小時沒有成交,報價也會過時。第一次執行之前,先決定你的規則可以使用哪些履約價與到期日,把其餘的移除。這樣你保留了需要的資料,也去掉了大部分雜訊。

Greeks、隱含波動率與路徑相依如何改變回測?

選擇權部位可能在標的恰好收在交易者預期的位置時仍然虧損,因為它的價值還取決於時間流逝、隱含波動率變動,以及價格走過的路徑,所以回測必須逐根 K 棒為部位重新定價,而不是只在進場與出場時定價。期貨部位是一條直線:獲利等於變動點數乘以每點價值。選擇權部位則是一個曲面,回測必須在上面走過一遍。

隱含波動率是目前的選擇權價格所隱含的未來價格波動程度,以年化百分比表示。Greeks 是選擇權價格對單一輸入因素的敏感度:delta 對應標的價格,theta 對應一天的時間流逝,vega 對應隱含波動率變動一點,gamma 對應 delta 本身變化的速度。路徑相依是指結果取決於標的走過的路徑,而不只是它最後停在哪裡。

為什麼這會迫使回測逐根 K 棒重新定價?因為讓交易提前結束的事件發生在路徑中間:停損被觸發、保證金追繳來臨,或是某條規則寫著「虧損達到 X 就平倉」。只在進場與出場時重新定價的回測,永遠看不到這些事件,報出的是真實帳戶根本撐不到的回升。

假設性範例

一位交易者在到期前 20 天、標的為 100 時賣出一個賣權,打算持有到期。路徑 A:標的維持在 98 到 102 之間,收在 100。賣權每天因時間價值衰減而損失價值,交易以小幅獲利結束。路徑 B:標的在第 8 天跌到 92,之後回升,同樣收在 100。第 8 天時,賣權的價值是賣出價格的數倍,隱含波動率大幅跳升,保證金要求也提高了。停損規則或券商會在深度虧損時把交易平掉。兩條路徑都收在 100,但只有一條讓交易者能收下權利金。

路徑相依:兩條示意的標的價格路徑最終都收在 100;路徑 A 的賣出賣權小幅獲利,路徑 B 的價格在第 8 天跌到 92,交易在回升前就被停損出場 終點相同,命運不同 賣出賣權示意,兩條路徑 路徑 A:獲利 路徑 B:停損 100 收盤相同,結果相反。 所以:逐根 K 棒重新計價,別只看終點。
路徑相依:兩條標的路徑收在同一個價格,但賣出賣權只能熬過其中一條。示意性。

隱含波動率還多了一條路徑。它可能在價格幾乎不動時上升,這在預定公布前常常發生,公布後又急速下降。用固定波動率輸入來重新定價選擇權的回測,會完全錯過這件事。到期時的損益圖只是故事的一部分;如何計算選擇權獲利與損益圖的限制說明了這張圖遺漏了什麼。

哪些成交與價差假設會毀掉大多數選擇權回測?

以中間價成交、忽略多腳交易的買賣價差,以及假設轉倉或到期不用成本,這三個假設會把虧錢的選擇權策略變成看起來賺錢的回測。每一項在單筆交易上都很小,加在一起卻常常比策略的平均每筆損益還大。

  1. 中間價成交。中間價是買價與賣價的平均。用市價單沒有人能在那裡成交。買方付的價格接近賣價,賣方收到的價格接近買價,所以貼近實際的成交價,每一腳在進場與出場時都至少距離中間價半個價差。
  2. 多腳交易的價差。垂直價差有兩腳,鐵禿鷹有四腳。每一腳各付自己的半個價差,所以四腳交易在整個持有期間要付八個半價差。有些券商會把複合單當成一個整體,以較好的淨價成交,但回測無法得知這種情況發生的頻率,所以要把各腳分開建模,把較好的成交視為額外的好處。
  3. 免費轉倉與到期。轉倉是指平掉一個到期日、再開下一個,等於完整付一輪價差與手續費。到期也不是免費的:收盤時在價平附近的選擇權可能被指派,讓一筆風險有限的交易在週末變成標的部位。

假設性範例

一個兩腳價差,在進場與出場兩腳都以中間價成交時,結果為 +$40。進場時每腳的半個價差成本 $10,所以是 −$20。出場同樣是 −$20。整筆交易中每腳一個跳動點的滑價,合計 −$10。每腳手續費 $2、四次成交,共 −$8。淨結果為 −$18。想法沒有變,只是成交模型變了。

一筆假設的兩段式交易:中間價損益為正40美元,進出場價差扣除40美元,滑價扣除10美元,手續費扣除8美元,最終淨損益為負18美元 成交使+$40 變成 −$18 一筆兩段式交易,假設情境 中間價成交 +$40 價差 −$40 滑價 −$10 手續費 −$8 淨損益 −$18 成交模型翻轉了結果。 因此:每段都以買價或賣價計算。
價差、滑價與手續費,把一筆兩腳交易以中間價計算的 +$40 變成 −$18。假設性範例。

能抓出這個問題的測試,與期貨用的相同:把未計成本的平均每筆損益,與所有腳的完整一買一賣(來回)成本相比。回測中的交易成本用整數示範了這個比較。對選擇權而言,要再加上轉倉成本,並乘以腳數。

能不能先透過標的期貨測試選擇權策略?

多數選擇權策略,本質上是把進出場時機或方向的想法包上一層損益形狀,所以最便宜又誠實的第一步,是先用標的期貨加上真實成本測試時機想法,之後才決定選擇權結構是否有加分。如果時機想法在期貨上沒有優勢,選擇權的包裝只是把價差成本加在擲硬幣上。

看看規則實際上說了什麼。「連跌三天後賣出賣權」是一個持有時間很短的做多想法。「價格突破 20 日高點時買進買權」是突破想法。「隱含波動率高時賣出勒式」則有一部分是標的區間的均值回歸想法。這些都能寫成期貨規則:何時進場、哪個方向、何時出場、停損放多遠。這條規則只需要一條價格序列與一般的期貨成本模型。像這樣寫成進出場條件、再加上參數範圍的規則,就是 AlphaPrime(Valynox) 策略生成在期貨這一側處理的內容。

  1. 寫下時機規則。用白話寫出進場條件、出場條件與停損,不要提到履約價或到期日。
  2. 在標的期貨上回測,加入手續費、滑價與下一根 K 棒成交。AlphaPrime的核心工作就是這類測試:回測會用你自己的 K 棒資料,以手續費、滑價與下一根 K 棒成交來評估每一個候選策略。
  3. 用樣本外與推進分析檢驗。保留規則從未見過的資料,檢查結果在那裡是否成立。
  4. 只有成立時,才把規則對應到選擇權結構。決定方向、持有時間,以及你想付權利金(買進選擇權)還是收權利金(賣出選擇權)。期貨測試得出的持有時間,會告訴你哪個到期日合適。
  5. 用選擇權鏈報價重新測試,加入每一腳的價差與轉倉成本,讓選擇權這一層建立在已經有效的時機想法之上。
五個步驟:撰寫時機規則、以期貨回測、推進分析、對應到選擇權,最後才用選擇權鏈資料重新檢驗;步驟一到四只用期貨資料 先用期貨檢驗 最後一步才用選擇權鏈資料 1 撰寫時機規則 2 以期貨回測 3 推進分析 4 對應到選擇權 期貨 5 以選擇權鏈重測 選擇權鏈 弱想法在用到選擇權鏈資料前就淘汰。 所以:通過後才購買選擇權鏈資料。
先用標的期貨測試時機想法。選擇權鏈資料只有在最後一步才需要,而且只用於通過測試的想法。

期貨代理測試有兩件事測不到:隱含波動率的變化,以及損益的形狀。賣出權利金的策略特徵是許多小額獲利與罕見的大額虧損,而帶停損的期貨測試無法重現這一點。把代理測試當成想法的測試,把選擇權鏈測試當成結構的測試。純粹的波動率想法,例如在公布前買進跨式,對應起來沒那麼乾淨,但即使如此,期貨測試仍能回答一個有用的問題:觸發之後,標的的波動是否比平常日更大?

選擇權回測軟體應該具備哪些功能?

選擇權回測軟體必須能依歷史選擇權鏈報價重新定價、為每一腳建立價差與滑價模型、處理到期、被指派與轉倉,並報告回撤與保證金;Greeks 圖表之類的顯示功能很有用,但屬於選填。比較選擇權回測軟體時,先檢查必備清單,因為缺少任何一項必備功能,這個工具產出的每個結果都不可靠。

功能必備或選填為什麼重要
每個履約價與到期日的歷史買價與賣價必備沒有真實報價,成交只是猜測,價差也看不見
每根 K 棒為未平倉部位重新定價必備停損、保證金追繳與回撤都發生在進場與出場之間
每一腳的價差與滑價必備多腳交易每一買一賣(來回)要付好幾次價差
到期與被指派處理必備到期時在價平附近的選擇權會變成標的部位
含成本的轉倉邏輯必備轉倉是一次完整的平倉與開倉,不是免費的延續
保證金與回撤報告必備賣出權利金的策略往往先在保證金上失敗,才在損益上失敗
Greeks 顯示選填有助於理解;回測結果並不依賴它
波動率曲面圖表選填對研究有用,計算結果並不需要
情境假設分析工具選填探索單一部位;回測本身已經走過真實路徑
連結即時模擬交易選填回測通過之後才有用,回測期間用不到
選擇權回測軟體:六項必備功能(買賣報價、每根 K 棒重新計價、每腿價差、到期與指派、轉倉成本、保證金與回撤)及四項選用功能(希臘字母、波動率圖表、情境分析、模擬交易連結) 先檢查必備清單 缺一項,所有結果都失真 必備 買賣報價 每根 K 棒重新計價 每腿價差 到期、指派 轉倉成本 保證金、回撤 選用 希臘字母 波動率圖 情境分析 模擬連結
選擇權回測軟體的必備與選填功能。先檢查必備欄位,其他之後再說。

對任何工具再多問一個問題:你能自己設定成交假設,並且修改後重跑嗎?只能以中間價成交、又沒有設定可改的工具,給你的結果是無法壓力測試的。

如何讓選擇權回測保持誠實?

適用與期貨相同的檢驗習慣:保留樣本外資料、做推進分析、對價差與滑價假設做壓力測試,並剔除只在一組成交假設下才存活的策略。選擇權比期貨多了更多自由選擇,例如履約價距離、到期天數與轉倉時機,每多一個選擇,就多一種意外擬合過去的方式。

推進分析是這樣的測試:在一段資料窗口上調整策略,再把選出的設定原封不動地拿去交易接下來的窗口,然後向前推移並重複。對選擇權策略而言,調整的設定包括像「賣出低於市價 5% 的履約價,到期日 30 天」這類內容。推進分析說明如何選擇窗口,以及如何解讀串接後的結果。

  1. 在第一次執行前固定成交與成本假設。每一腳半個價差、每一腳一個跳動點滑價、每一腳手續費、轉倉成本。把它們寫下來,之後就無法偷偷放寬。
  2. 保留樣本外資料。在規則定案之前,不要動歷史中最近的那一段。
  3. 按你真的會遵循的時程做推進分析。重新調整的頻率與實單帳戶一樣,不要更頻繁。
  4. 壓力測試。把價差與滑價加倍後重跑。只保留平均每筆損益仍為正的策略;在這裡失敗的策略,原本就是靠便宜的成交撐著。
選擇權與期貨的檢驗流程相同:固定成本、保留近期資料、推進分析、將價差加倍以測試成交壓力,然後重複 同一套流程,選擇權或期貨 四個步驟,然後重複 固定成本 先寫下來 保留資料 留下近期資料 推進分析 如實單般重調 成交壓力測試 價差加倍
選擇權與期貨的檢驗迴圈相同:固定成本、保留資料、做推進分析、對成交做壓力測試,然後重複。

數一數你試了多少種變化。如果你測試了二十種履約價距離與六個到期日,再留下最佳組合,那麼最好的回測有一部分只是運氣最好;關於回測過度最佳化的研究顯示,測試的變化越多,勝出者的結果就被灌水得越多(Bailey, Borwein, López de Prado & Zhu, 2014)。在相鄰的履約價與到期日都站得住的結果,比單一最佳格子更有價值。

如果你使用 AlphaPrime,這代表:你在第 1 步固定的成本與滑價設定只需輸入一次,就會套用到每個候選策略,而策略資料庫會把結果整理好供你檢視,所以在評判最佳變化時,你也能看到自己試過多少個相鄰設定。

常見問題

我可以只用標的價格與定價模型來回測選擇權嗎?

你可以由標的算出模型價格,但模型每根 K 棒都需要一個隱含波動率輸入,而這個輸入正是選擇權鏈資料所提供的。固定的波動率數字,會忽略價格方向之外最大的選擇權損益來源。模型價格也沒有買賣價差,所以除非你手動加入價差假設,否則成交會不切實際。

為什麼我的選擇權回測看起來比實單結果好得多?

常見原因是以中間價成交、每一腳沒有價差成本、轉倉免費,以及進場與出場之間沒有重新定價。每一項都在每筆交易上對你多加一點有利的金額,而交易次數很多的賣出權利金策略,會把這個優勢累積很多次。改用買價與賣價成交、每次轉倉計入完整成本、逐根 K 棒重新定價,重跑測試後再比較。

回測需要多少選擇權鏈資料?

你需要規則可能碰到的履約價與到期日的報價,涵蓋規則做決策的每個時間點,並有足夠長的歷史以包含平靜與波動的時期。日線策略每天需要一份快照;日內策略則每根 K 棒需要一份。離價平很遠、規則從未碰到的履約價可以不要,這樣能降低成本與清理工作。

選擇權想法值得先用期貨測試嗎?

值得,因為多數選擇權策略是在時機或方向想法上加了一層損益形狀,而時機想法可以用一條期貨序列與一般成本來測試。如果在那裡就失敗,選擇權結構也救不了它,而你省下了選擇權鏈資料的成本。如果通過,你接下來只需要在已經有效的想法上測試結構。

選擇權回測軟體中最重要的單一功能是什麼?

每個履約價與到期日的歷史買價與賣價報價,並以每一腳為單位建立成交模型。其餘功能,包括 Greeks 與波動率圖表,都是次要的,因為沒有真實價差,結果就是猜測。第二重要的是為未平倉部位逐根 K 棒重新定價,這樣停損、保證金與回撤才是沿著路徑衡量,而不只是在結束時衡量。

參考資料

  • Bailey, D. H., Borwein, J., López de Prado, M., & Zhu, Q. J. (2014). Pseudo-Mathematics and Financial Charlatanism: The Effects of Backtest Overfitting on Out-of-Sample Performance. Notices of the American Mathematical Society, 61(5), 458–471.