VALYNOXSTRATEGY RESEARCH TECHNOLOGY
AlphaPrimeAlphaPrime
策略學院 / 市場

如何貼近實戰回測台指期策略

貼近實戰的台指期回測,要用你實際交易的商品、明確的轉倉規則、刻意選定的交易時段,每筆交易都計入完整的台灣交易成本,並且只以樣本外資料下結論。

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

目錄
  1. 貼近實戰的台指期回測需要什麼?
  2. 該測哪一種商品:TX、MTX 還是 TMF?
  3. 日盤與夜盤如何改變你的台指期資料?
  4. 如何處理轉倉並建立連續月序列?
  5. 在臺灣,每筆交易的手續費、稅與滑價是多少?
  6. 該如何檢驗台指期策略?
  7. 台指期回測有哪些是它無法告訴你的?
  8. 常見問題
  9. 參考文獻

貼近實戰的台指期回測需要什麼?

要貼近實戰地回測台指期,就要選定你實際會交易的商品,用明確的轉倉規則建立連續月價格序列,決定夜盤 K 棒要不要納入測試,每筆交易都計入手續費、0.002% 的期貨交易稅與滑價,並且只用沒有參與調參的資料來評斷策略。

台指期(台指期貨,常簡稱台指或台股期指)是以臺灣證券交易所發行量加權股價指數為標的的現金結算期貨,在臺灣期貨交易所(TAIFEX)交易。台指期回測的品質,取決於第一次執行前你做的五個決定:

  1. 結果以哪一種商品來衡量。
  2. K 棒包含哪些交易時段。
  3. 如何把到期月份接成一條價格歷史。
  4. 每筆交易的成本是多少。
  5. 歷史資料的哪一段要留作測試。

如果想在執行前用一份簡短的設定清單檢查,請見台指期回測檢查清單。

該測哪一種商品:TX、MTX 還是 TMF?

策略研究以指數價格為準,再以你實際交易的商品來衡量成本與部位大小,因為三種商品追蹤同一個指數,但合約大小與每點成本不同。

TAIFEX 掛牌三種規格的台指期。大台指(TX)是最早的商品。小台指(MTX)與微台指(TMF)則是同一商品的較小版本。

商品通稱一個指數點的價值上市時間對研究的意義
TX大台指 / 大台NT$2001998價格歷史最長;固定成本占每點的比例最小
MTX小台指 / 小台NT$502001為 TX 的四分之一;歷史長;部位大小可調得更細
TMF微台指NT$102024為 TX 的二十分之一;部位大小可調得非常細;自身歷史較短

三種商品的最小價格變動(跳動點)都是一個指數點。三者的價格幾乎同步變動,所以在尋找訊號時,TX 價格序列可以合理代表指數。差別出現在成本上。期貨商按每口收取手續費,而這筆費用不會隨合約縮小而等比例下降。因此以指數點計,TMF 一買一賣(來回)的成本通常比 TX 高。期貨合約與損益計算機內建 TX、MTX 和 TMF,輸入手續費後拿一筆範例交易,就能看到同樣的費用壓在每種合約上的差別。

日盤與夜盤如何改變你的台指期資料?

要刻意決定 K 棒是否包含夜盤,因為只用日盤與使用全時段的 K 棒,會產生不同的指標、不同的跳空與不同的交易。

台指期分兩個交易時段,以台北時間計:

  • 一般(日盤)交易時段:08:45 至 13:45,共 300 分鐘。
  • 盤後(夜盤)交易時段:15:00 至隔天清晨 05:00,共 840 分鐘。TAIFEX 於 2017 年新增。

資料準備時有三個細節要注意:

  • 夜盤交易歸屬下一個交易日。TAIFEX 把夜盤算作下一個交易日的一部分。如果你的日 K 是依日曆日期組成,日內最高、最低與收盤價就會和交易所公布的日資料對不上。
  • 2017 年以前的歷史沒有夜盤。更早開始的全時段測試會混入兩種不同的市場結構。要麼讓全時段測試從 2017 年開始,要麼在整段歷史上都用只含日盤的 K 棒執行策略。
  • 到期合約提早結束交易。最後交易日當天,到期月份只交易到 13:30。

只含日盤 K 棒上的 20 期移動平均,與全時段 K 棒上的同一條平均線,是兩個不同的指標。在只含日盤的 K 棒上,每天 08:45 開盤的價格跳空會讓平均線劇烈拉動。全時段版本則會在夜間持續移動,開盤時的跳空較小。期貨回測中的夜盤一文說明了如何在兩者之間選擇。

台北時間的台指期交易時段:夜盤從週一 15:00 到週二 05:00,休市至 08:45,日盤交易到 13:45,全部都算週二的交易日 夜盤算隔天 一個交易日,台北時間 交易日:週二 夜盤 日盤 15:00 00:00 05:00 08:45 13:45 週一 週二 週一夜盤的交易算週二。 因此:依交易日建立日 K 棒。
以台北時間表示的台指期交易時段。夜盤算作下一個交易日的一部分。

日曆也需要留意。臺灣市場會因農曆春節長假休市,也可能因颱風天休市。請確認這些休市日在你的資料中呈現為空缺,而不是用平坦的填充 K 棒代替。

如何處理轉倉並建立連續月序列?

用固定且寫下來的轉倉規則來接合各合約月份,因為看過結果之後才選定的規則,等於一個隱藏的參數。

連續月是把到期的期貨月份首尾相接而成的單一價格序列,讓策略可以跨越多年進行測試。台指期在合約月份的第三個星期三到期,交易集中在最近月份。多數交易者會在到期前幾天轉倉到下一個月份,或在結算日當天轉倉。

兩個月份很少以相同價格交易。在臺灣,價差常在夏季除息旺季前後最大,此時次月通常明顯低於近月。如果不經調整就接合月份,序列會出現一個在任何單一合約中都不曾發生的跳動。策略可能把這個跳動當成真實行情而做出反應。

假設範例

在轉倉日,近月收在 20,000,次月收在 19,850。未調整的連續月序列在隔夜就下跌 150 點。突破做空規則因這個下跌而觸發並記下獲利,但任何持有真實合約的帳戶都沒有經歷過這段走勢。向後調整的序列則把所有較舊的價格下移 150 點,消除了這個跳動。

未調整就串接各月合約,轉倉日會出現任何真實合約都不存在的150點跌幅,而回溯調整後的序列則連續延伸、沒有跳空 轉倉會造成假跌幅 轉倉日,假設價格 未調整 回溯調整 −150 點 無跳空 真實合約沒有這個跌幅。 所以:用回溯調整價產生訊號。
不經調整就接合月份,會產生沒有任何交易者經歷過的價格跳動。向後調整可以消除它。

向後調整會改變舊資料的價格水準,而稅額與部分指標取決於價格水準。實務上的步驟順序如下:

  1. 選定交易時段(只含日盤或全時段)與 K 棒週期。
  2. 寫下轉倉規則,例如「在到期前兩個交易日的收盤轉倉」。
  3. 為訊號建立向後調整的序列。
  4. 保留未調整的價格來計算稅額,因為稅額取決於真實的合約價值。
  5. 檢查轉倉日前後的交易。如果測試結果取決於少數幾筆轉倉日交易,通常就是取決於接合方式。

在臺灣,每筆交易的手續費、稅與滑價是多少?

每筆交易的進場與出場都要付手續費、期貨交易稅與滑價,你應該把三者都換算成指數點,才能和策略的平均每筆損益比較。

期貨交易稅是臺灣對每筆期貨交易的每一邊課徵的稅。股價指數期貨的稅率是合約價值的 0.002%,合約價值即價格乘以每一點的價值。手續費由你的期貨商依每口訂定。滑價是回測假設的價格與你實際成交價格之間的差異。通常在 08:45 開盤、消息公布前後,以及夜盤的清淡時段最大。

一個公式就能把三者合在一起:

以點數計的來回成本 = 2 × (C ÷ M) + 2 × (0.00002 × P) + S

其中 C 是你每口每邊的手續費,單位為 NT$。M 是一個指數點的 NT$ 價值(200、50 或 10)。P 是指數價格。S 是進場加出場合計的滑價,單位為點。第一項說明了為什麼小型合約的點數成本較高:同樣的費用被較小的 M 除。

假設範例

指數位於 20,000。此時不論合約大小,每邊的稅都是 0.4 點。假設每邊手續費為 TX 的 NT$50、MTX 的 NT$25、TMF 的 NT$15,且每邊滑價為一點。

商品手續費(兩邊)稅(兩邊)滑價(兩邊)來回合計
TX0.5 點0.8 點2 點3.3 點
MTX1.0 點0.8 點2 點3.8 點
TMF3.0 點0.8 點2 點5.8 點

毛平均每筆損益為 6 點的策略,在 TX 上能留下 2.7 點,在 TMF 上則幾乎什麼都留不下。

假設平均每筆損益為 6 點,拆分為手續費、稅金加滑價,以及實際留下的部分:TX 留下 2.7 點,MTX 留下 2.2 點,TMF 因手續費占比較大,只留下 0.2 點 合約越小,留下越少 一筆 6 點的交易(假設) 手續費 稅金、滑價 留下 TX +2.7 MTX +2.2 TMF +0.2 TMF 的成本幾乎吃光獲利。 所以:用實際交易的合約回測。
以指數點計的假設來回成本。不論合約大小,稅的點數都相同,但合約越小,手續費所占的比例越大。

把你自己期貨商的手續費代入公式,並把滑價加倍後重跑測試。如果結果崩潰,就表示策略仰賴便宜的成交。回測中的交易成本與平均每筆損益一文更詳細地介紹了這種壓力測試。

該如何檢驗台指期策略?

只用完全沒有參與策略選擇的資料上的結果來評斷策略,並且跨多個推進分析視窗測試,而不是只做一次切分。

樣本外資料是在你建立與調整策略期間留下來的那一段歷史,只用於最後的測試。推進分析是這個概念的重複版本:在一個視窗上調參,在下一個未見過的視窗上測試,往前推進,再把這些未見過的片段接成一個結果。推進分析與視窗選擇一文說明了設定方式。

測試很多變體時,這一點最重要。從大量回測中挑出最好的一個,就像從許多擲硬幣的人當中挑出最幸運的那位:贏家看起來很有本事,但結果有很大一部分是運氣。關於回測過度最佳化與資料窺探的研究顯示,最佳的樣本內結果,預期會比它未來的表現看起來更好(White, 2000;Bailey et al., 2014;Bailey & López de Prado, 2014)。

檢查項目可以採用的結果應該捨棄的結果
扣除成本後的樣本外為正,且樣本內結果有明顯一部分得以保留只有樣本內為正
推進分析視窗多數視窗為正,且最差的視窗仍可承受一兩個視窗貢獻了全部獲利
交易筆數每個測試視窗有數十筆交易只有寥寥幾筆交易
鄰近參數相近的數值給出相似的結果只有某一個精確數值有效
市場狀況能撐過如 2020 年 3 月的快速下殺,也能應付平靜的盤整只在一種市場中有效
交易時段與商品在你要交易的交易時段與商品上成立只在只含日盤的 TX K 棒上有效,而你打算在夜間交易 TMF

在 AlphaPrime(Valynox)中,策略檢驗提供基礎、標準與完整三個檢驗等級、推進分析,以及由你自行設定的門檻。策略只要有一項檢查未通過,就會跳過後面的檢查。

台指期回測有哪些是它無法告訴你的?

回測描述的是,在你的假設下,規則在過去資料上會有怎樣的表現,所以把它當作篩選想法的過濾器,而不是預測。

用下面這些重點來判斷一個結果值得多大的分量:

  • 市場結構會改變。夜盤始於 2017 年,TMF 始於 2024 年。主要來自這類變化之前那些年份的結果,可能描述的是另一個市場。
  • 成交價是估計值。以 K 棒進行的回測並不知道委託簿。把你最初實單交易的成交價與回測假設的價格比較,並更新滑價數字。
  • 跳空會越過停損。設在 13:44 的停損,可能在 15:00 開盤後或長假之後在很遠的價位成交。K 棒資料能顯示跳空,卻無法顯示你在跳空區間內會在哪裡成交。
  • 你的搜尋本身就是結果的一部分。寫下你測試了多少個變體。試得越多,就越應該對最好的那一個打折。

如果你使用 AlphaPrime,這代表:在第一次搜尋之前,先在 GPU 回測中設定好台指期的交易時段、手續費與滑價(回測一律以下一根 K 棒成交),讓每個候選策略都是在計入臺灣成本之後才排名。接著留出一段樣本外期間,讓策略檢驗剔除無法通過的候選策略。

常見問題

我該回測大台指(TX)還是小台指(MTX)?

用最長且乾淨的價格歷史來尋找訊號,通常就是 TX,然後再針對你要交易的商品計算成本。TX 與 MTX 追蹤同一個指數,所以訊號幾乎相同。由於手續費按每口收取,MTX 以點數計的成本通常較高。

做台指期回測需要夜盤資料嗎?

如果你打算在台北時間 15:00 至 05:00 之間持倉或交易,就需要。若是只做日盤的策略,只含日盤的 K 棒更乾淨,也涵蓋 2017 年夜盤出現之前的歷史。不要在同一次測試中混用兩者。

台指期的期貨交易稅是多少?

對股價指數期貨,臺灣在每筆交易的每一邊課徵合約價值的 0.002%。合約價值即指數價格乘以每一點的價值。在相同價格下,以指數點計,TX、MTX 與 TMF 的稅是相同的。

用 TX 資料建立的策略可以拿去交易 TMF 嗎?

價格訊號可以沿用,因為兩種商品追蹤同一個指數。成本則無法沿用:在 TMF 上,手續費占每一點的比例大得多。決定之前,請用 TMF 的手續費重跑回測。

台指期回測該用幾年的資料?

要用足夠的歷史來涵蓋數種市場型態,包括快速下殺與平靜的盤整,並讓每個測試視窗都有足夠的交易筆數。交易時段結構要保持一致:全時段測試從 2017 年開始,只含日盤的測試則可以往前追溯更久。

參考文獻

  • White, H. (2000). A Reality Check for Data Snooping. Econometrica, 68(5), 1097–1126.
  • 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.
  • Bailey, D. H., & López de Prado, M. (2014). The Deflated Sharpe Ratio: Correcting for Selection Bias, Backtest Overfitting and Non-Normality. The Journal of Portfolio Management, 40(5), 94–107.