跳至主要內容
台股研究 約 9 分鐘閱讀

期貨結算日效應回測:台指期結算週空手或只抱 0050,
18 組參數全輸

期貨結算日是每月第三個星期三,台指期結算週真的比較弱嗎?用 finlab 回測 1999 到 2026 年 333 次結算:結算日前兩天加權指數平均跌 0.21%,結算日當天反而平均上漲。結算週空手、只抱結算週兩種 0050 策略,18 組參數全輸買進持有,附可重跑程式。

免安裝,用 AI 重跑這篇的策略

在瀏覽器開啟 FinLab Studio,AI 依本文的條件重跑回測,接著可以改條件再測。

在 Studio 重跑
18 組參數全輸 0050

台指期結算日前後每個交易日的加權指數與 0050 平均日報酬與 95% 信賴區間,結算週星期一平均下跌、結算日當天平均上漲

依本文重跑

執行這個策略

複製提示詞,讓 AI 依照上方證據的資料、條件與風險檢查重跑一次。

告訴你的AI:

幫我設定 FinLab,重跑台指期結算週空手、只在結算週持有 0050 的回測,並和 0050 含息比較,請讀:https://finlab.finance/setup?relatedUrl=/blog/taiwan-futures-settlement-day-backtest

免安裝,開啟 FinLab Studio

台指期的結算日是每個月第三個星期三,遇到休市就順延。我們從 finlab 的期貨日行情取出 1998 年 9 月以來全部 338 個結算日,看結算前後的加權指數與 0050,再把「結算週偏弱」做成兩個方向相反的策略。結果兩個都輸給一直抱著 0050:結算週的星期一到星期三空手,2007 年 4 月到 2026 年 11 月年化 4.7%、日夏普 0.34;只在這 3 天持有,年化 -5.9%;同期 0050 含息年化 13.5%、日夏普 0.72。兩個策略各換 9 組參數,18 組沒有一組贏。

結算前後確實有一天特別弱。1999 年以來 333 次結算,結算日前 2 個交易日(通常是結算週的星期一)加權指數平均跌 0.21%,95% 信賴區間 -0.36% 到 -0.05%,是圖上唯一沒有跨過 0 的一格;結算日當天平均反而漲 0.09%,上漲機率 52.6%。可是這一天的弱勢集中在 2012 年以前,0050 自 2007 年起也只有 -0.08%、不顯著。把整個結算週 3 天和其他日子比,差異的 t 值只有 -1.06。結算週空手一年要進出 12 次,sim() 預設的手續費加證交稅一年就吃掉約 7%;連成本都不算,日夏普 0.71 也沒有贏 0050 的 0.72。

結算日關鍵數字

設計(原參數) 在場比例 年化報酬 日夏普 最大回撤 前/後半段日夏普 9 組參數贏 0050
T1 結算週空手:結算日前 2 個交易日到結算日空手,其餘持有 0050 85% 4.7% 0.34 -50.2% 0.06/0.64 0 組
T2 只在結算週持有:只在同樣 3 天持有 0050 15% -5.9% -0.77 -71.4% -0.91/-0.61 0 組
0050 含息買進持有 100% 13.5% 0.72 -55.8% 0.37/1.10 基準

回測期間 2007-04-24 至 2026-11-06,0050 含息用 etl:adj_close 還原價,和策略同一段日期、不扣成本。前後兩段在 2017 年 1 月底切開。T1 和 法說會、股東會等 9 個台股說法回測 裡的「避開結算週」是同一個條件,那篇資料到 2026-10-30,年化 5.6%、日夏普 0.38;本文多了 11 月初台股連續大跌的 5 個交易日,所以策略與 0050 的數字都低一些。

期貨結算日是哪一天

台指期(TX)、小型台指與台指選擇權的月契約,最後交易日都是交割月份的第三個星期三,遇到休市順延到下一個營業日;最後交易日就是最後結算日。根據 期交所臺股期貨契約規格,最後結算價是結算日當天證交所收盤前 30 分鐘內加權指數的簡單算術平均,以現金交割。所以「結算行情」真正影響價格的,是結算日下午 1 點到 1 點半這段時間的現貨。

我們沒有手寫日期。finlab 的 台指期日行情(futures_price)每天記錄 TX一般 的近月合約月份,這個欄位在結算日當天就換成下個月,所以結算日=某個月份合約最後出現那天的下一個交易日。1998 年 9 月到 2026 年 10 月共 338 個結算日,跟「第三個星期三、遇休市順延」逐月比對,338 次全部相同。其中 9 次順延:7 次碰到春節(例如 2023 年 1 月延到 1 月 30 日),另外 2 次是 2010 年 6 月的端午節與 2013 年 8 月的颱風休市。

依同一條規則,接下來的月結算日如下,實際日期以期交所公告為準:

年份 月結算日(第三個星期三)
2026 11/18、12/16
2027 1/20、2/17、3/17、4/21、5/19、6/16、7/21、8/18、9/15、10/20、11/17、12/15

選擇權還有週契約:週三到期的週選擇權在月結算週以外的每個星期三結算,2025 年 6 月 27 日起再加上週五到期的臺指選擇權。本文研究的是月結算,週三本身的報酬放在 星期幾效應回測。

怎樣才算過關

「贏 0050」在本文只有一個意思:同一段交易日上,日夏普高於 0050 含息買進持有。日夏普是日報酬平均除以標準差、乘上 √252,不扣無風險利率,算法見 夏普比率計算工具。條件在看任何結果之前就寫在案件裡,之後沒有改:

  1. 鄰近參數。兩個參數各取原值與前後一格:從結算日前 k 個交易日開始(k=1、2、3),到結算日+e 為止(e=-1、0、1),9 組至少 7 組要贏。原設定 k=2、e=0,就是結算週的星期一到星期三。
  2. 前後兩段。回測期間從日期中點切開,原設定在兩段都要各自贏。
  3. 交易成本。用 finlab sim() 台股預設成本:手續費 0.1425%(買賣各一次,未打折)、證交稅 0.3%(賣出)。0050 實際的證交稅是 0.1%,和零成本一起只當對照。

T2 平均只有 15% 的日子在場,另外要贏「同平均權重固定持有」:每天固定 15% 放 0050、85% 現金。三項都過,才再看拿掉相對 0050 最好的那一年。FinLab 的台灣公債殖利率資料 2026 年 9 月才開始,所以台股設計沒有扣無風險利率,空手的現金也不計利息。

兩個設計:避開結算週,或只做結算週

市場上說結算週偏弱的理由,多半是結算前有大戶在現貨與期貨之間調整部位,或是外資在結算前後轉倉。學術上,Stoll & Whaley(1987)發現美國 S&P 500 期貨到期日的最後一小時與隔天開盤後半小時,股價波動都明顯放大;Hsieh(2009)研究在新加坡掛牌的摩台指期貨,到期日台股的成交量與波動明顯升高、指數有輕微反轉,效果集中在收盤前 5 分鐘。這兩篇講的都是到期當天的成交量與波動,沒有說結算前幾天會跌,所以「結算週偏弱」在本文是待驗證的俗諺,不是論文結論。

T1 結算週空手照俗諺做:結算日前 3 個交易日(多為上週五)收盤賣出 0050,結算日收盤買回,避開結算週星期一到星期三的報酬,一年進出 12 次,其他日子都持有。這是在場時間長的方向,先前的日曆研究發現,只在少數日子持有的規則幾乎不可能贏指數(見 美股 5 個日曆效應回測),所以每題都先測「避開那幾天、其餘都持有」。

T2 只在結算週持有是反方向:如果結算週其實是好日子,只持有這 3 天就該賺。兩個設計用同一組窗口與參數。

結果一:兩個方向都輸 0050

1 元成長:結算週空手、只在結算週持有與 0050 含息,2007 到 2026 年,對數軸

1 元放在 0050 含息,2007 年 4 月到 2026 年 11 月變成 11.9 元。結算週空手變成 2.5 元,只在結算週持有剩 0.31 元。T1 的回撤 -50.2%,比 0050 的 -55.8% 淺一點,因為它每個月有 3 天不在場。它在 2007 到 2009 年曾小幅領先,最多多出約 7.7%,2009 年 9 月以後就一路落後。

T2 的虧損大部分是成本:一年 12 次一買一賣、每次約 0.585%,一年約 7%;同樣 3 天的報酬不扣成本是年化 1.0%。同平均權重固定持有(每天 15% 的 0050)年化 2.1%,T2 輸給它。

結果二:18 組參數沒有一組贏

結算週空手與只在結算週持有兩個設計 18 組參數的日夏普熱圖,全部低於同期 0050 含息的 0.72

每格是一組參數的日夏普,顏色是和 0050 的差距。T1 的 9 組落在 0.27 到 0.37,T2 落在 -1.22 到 -0.47。T1 最好的一組是從結算日前 2 天空手到結算日前 1 天(k=2、e=-1),日夏普 0.37,表示結算日當天的報酬留在手上比較好,跟圖一結算日當天平均上漲一致。前後兩段也一樣:0050 前半段(2007 年 4 月到 2017 年 1 月)日夏普 0.37,T1 是 0.06;後半段 0050 是 1.10,T1 是 0.64。

結果三:證交稅、ETF 稅率與零成本

三種交易成本下結算週空手與只在結算週持有的日夏普,零成本也沒有超過 0050 含息

把成本換掉,看規則本身有沒有用:

T1 結算週空手 年化報酬 日夏普
sim() 預設(手續費 0.1425%、證交稅 0.3%) 4.7% 0.34
證交稅改成 0050 實際的 0.1% 7.3% 0.47
零成本 12.4% 0.71
0050 含息買進持有 13.5% 0.72

零成本的 T1 年化 12.4%,還是比一直持有少 1.2 個百分點,日夏普 0.71 對 0.72。避開的那 3 天在 2007 年以後的 0050 上平均每天漲 0.036%,比其他日子的 0.065% 少,但仍是正的;放掉正報酬的日子、又沒有換來夠多的低波動,夏普就上不去。

結算日前後,加權指數平均怎麼走

圖一是每個相對位置的平均日報酬與 95% 信賴區間。加權指數用 taiex_total_index 的價格指數,1999 年 1 月起 333 次;0050 用含息還原價,2007 年 5 月起 234 次。

相對結算日 加權指數平均 95% 信賴區間 上漲比例 0050 平均
結算日前 2 日(多為星期一) -0.21% -0.36% ~ -0.05% 47.1% -0.08%
結算日前 1 日 +0.10% -0.05% ~ +0.24% 54.4% +0.13%
結算日 +0.09% -0.05% ~ +0.23% 52.6% +0.06%
結算日後 1 日 +0.04% -0.11% ~ +0.18% 52.9% +0.04%
所有交易日 +0.04% — — +0.06%

結算日前 2 天的 -0.21% 要小心解讀。圖上有 22 個信賴區間(11 個位置 × 2 個標的),每個用 5% 顯著水準,就算完全沒有效應,平均也會有 1 個左右碰巧不跨 0。這一天也剛好多是星期一,加權指數 1999 年以來的星期一本來就是一週最弱的一天(平均 -0.04%,見 星期幾效應回測),結算週的星期一比一般星期一再弱一些。

結算週 3 天與其他交易日的加權指數、0050 平均日報酬,前後兩段比較

切成前後兩段,結算週偏弱只出現在前段。單看結算日前 2 天,加權指數 2012 年 12 月以前平均 -0.34%(信賴區間 -0.61% 到 -0.07%),之後只有 -0.07%(-0.22% 到 +0.07%)。整個 3 天窗口也一樣:加權指數 1999 到 2012 年,結算週 3 天平均每天 -0.064%、其他日子 +0.032%(t=-1.22);2012 年 12 月以後是 +0.053% 對 +0.055%,幾乎一樣(t=-0.05)。0050 也一樣,2017 年以前 -0.008% 對 +0.039%,2017 年以後 +0.080% 對 +0.092%。如果真的有過「結算週偏弱」,最近十幾年已經看不到了。

程式碼

下面是 T1 的核心:從期貨日行情找出結算日,標出要空手的 3 天,交給 sim(),再和 0050 比日夏普。

顯示程式碼
import numpy as np
import pandas as pd
import finlab
from finlab import data
from finlab.backtest import sim
 
finlab.login()  # finlab 會自動引導登入
END = "2026-11-06"
 
# 1. 0050 含息還原價與交易日
close = data.get("etl:adj_close")["0050"].dropna().loc[:END]
days = close.index
 
# 2. 結算日:TX 近月合約最後出現那天的下一個交易日
month = data.get("futures_price:到期月份(週別)")["TX一般"].dropna().astype(str).loc[:END]
last_seen = month.groupby(month, sort=False).apply(lambda s: s.index[-1])
futures_days = month.index
settle = [futures_days[futures_days.get_loc(day) + 1] for day in last_seen.iloc[:-1]]
 
# 3. 結算日前 2 個交易日到結算日空手(結算週的星期一到星期三)
hold = np.ones(len(days), dtype=bool)
for day in settle:
    if day in days:
        p = days.get_loc(day)
        hold[max(p - 2, 0):p + 1] = False
 
# 4. sim() 在訊號隔一個交易日收盤成交,所以訊號提前兩天
signal = pd.Series(hold, index=days).shift(-2, fill_value=True)
report = sim(signal.to_frame("0050"), resample=None, trade_at_price="close", upload=False)
 
# 5. 同一段日期比較日夏普
equity = report.creturn.reindex(days).ffill().loc[days[1]:]
for name, curve in [("結算週空手", equity), ("0050 含息", close.loc[days[1]:])]:
    daily = curve.pct_change().dropna()
    print(name, round(daily.mean() / daily.std() * 252 ** 0.5, 2))

資料到 2026-11-06 時,這段程式印出 0.34 與 0.72。訊號提前兩天沒有用到未來資料:結算日是事先公告的日曆。完整的 research.py 還有 T2、18 組參數、前後兩段、三種成本、結算前後的事件統計,以及結算日規則的逐月核對。不想自己寫程式,完成 AI 輔助安裝 後跟 AI 說「幫我測結算日前 3 天空手 0050,再做鄰近參數、前後兩段與成本檢查」,也能跑出同樣的研究。

回測方法與限制

項目 做法
回測期間 0050 從 2007-04-24 到 2026-11-06(etl:adj_close 的 0050 從 2007-04-23 起,第一天收盤才能買進)。事件統計的加權指數從 1999-01-05 起。
結算日 futures_price:到期月份(週別) 的 TX一般,每個月份合約最後出現那天的下一個交易日。1998-09-16 到 2026-10-21 共 338 個,0050 期間內 234 個,跟第三個星期三規則逐月相同。
標的與權重 只用 0050,在場 100%、空手 0%。沒有槓桿、沒有放空、沒有用期貨。
空手的現金 不計利息。FinLab 的台灣公債殖利率 2026-09 才開始,沒有扣無風險利率。
訊號時點 結算日事先知道。sim() 在訊號隔一個交易日收盤成交,所以訊號提前兩個交易日:結算日前 3 個交易日收盤賣出,結算日收盤買回。見 前視偏差。
交易成本 sim() 台股預設:手續費 0.1425%、證交稅 0.3%,一買一賣約 0.585%。0050 實際證交稅 0.1% 與零成本只當對照。
滑價 未另外假設,以收盤價成交,參見 滑價。0050 是台股成交量最大的 ETF 之一,一般資金規模的衝擊小,但本文沒有估算容量。
周轉 T1、T2 一年都是 12 次進出(周轉率)。
基準 0050 含息買進持有,不經 sim、不扣成本,跟策略同一段日期。
樣本 全段樣本內,前後兩段只是穩定度檢查,不是樣本外驗證。

這個結果說明什麼

它說明:2007 到 2026 年,照台指期月結算日進出 0050,不管是避開結算週還是只做結算週,在我們試的 18 組參數下都輸給一直持有,扣不扣成本都一樣。結算週星期一的平均跌幅是看得到的,但它集中在 2012 年以前,單一一天的平均也還在多重比較會碰巧出現的範圍內。

它沒有說結算日對期貨交易人沒有意義。結算日當天收盤前 30 分鐘決定最後結算價,期貨與選擇權的部位在這段時間會被平倉或轉倉,成交量與盤中波動通常比較大;做當沖、價差或選擇權賣方的人,要處理的是這天的流動性與定價,跟「要不要在結算週避開大盤」是不同的問題。想看期貨籌碼對大盤的訊號,可以參考 選擇權未平倉 Put/Call 比避險回測 與 散戶多空比;更多台股擇時訊號整理在 台股擇時訊號回測。

常見問題

期貨結算日是每個月的哪一天?

台指期、小台與台指選擇權的月契約,結算日是交割月份的第三個星期三,遇到休市順延到下一個營業日。2026 年 11 月是 18 日、12 月是 16 日。

台指期結算價怎麼算?

最後結算價是結算日當天證交所收盤前 30 分鐘內,加權指數的簡單算術平均,以現金交割。所以結算日下午 1 點到 1 點半的現貨走勢最重要。

結算日當天股市容易跌嗎?

1999 年以來 333 次結算,加權指數在結算日當天平均上漲 0.09%,上漲機率 52.6%,和一般交易日差不多。比較弱的是結算日前 2 個交易日,平均跌 0.21%,但這個現象集中在 2012 年以前。

結算週要不要先賣股票避開?

在 0050 上不划算。結算週 3 天空手、其餘持有,年化 4.7%,一直持有是 13.5%;就算交易成本是零,也只有 12.4%。

選擇權結算日跟期貨結算日一樣嗎?

台指選擇權的月契約和台指期同一天結算。另外還有週契約:週三到期的週選擇權在其他每個星期三結算,2025 年 6 月起再加上週五到期的契約。

美股的結算日是哪天?四巫日跟台指期結算日有關嗎?

美股的股票與指數選擇權月契約在第三個星期五到期,3、6、9、12 月的那一天叫四巫日(現在多稱三巫日)。它和台指期結算日是不同市場的不同日子,詳見 四巫日回測。

這份研究可以自己重跑嗎?

可以。完成 AI 輔助安裝,下載下面的 research.py,執行 python research.py,會輸出本文所有的數字。

延伸閱讀

下載資源

檔案 內容
research.py 完整研究:結算日核對、兩個設計、18 組參數、前後兩段、三種成本與事件統計
data.csv 結算週空手、只在結算週持有與 0050 含息的每日淨值
metrics.json 本文引用的全部統計,包含每組參數與每個相對位置的平均報酬

投資警語:本文僅供教學參考,不構成投資建議。過去績效不代表未來表現,投資有風險。本文所有回測都是全段樣本內結果,前後兩段只是穩定度檢查,未經樣本外驗證。

最後更新:2026-11|回測區間:2007-04~2026-11(事件統計 1999-01 起)|基準:0050 含息|作者:FinLab 量化研究團隊(經量化研究員審閱)

FinLab AI

想建立自己的策略?

用自然語言描述你的選股想法,AI 自動驗證、回測、給你答案

免費開始

更多總經與市場研究

查看全部