股票觀測站台指期 · 題材 · 美股 · 論文

MARKET RESEARCH

隔夜效應回測

外部說法的驗證 · 台指期 + 美股 + 跨國 · 可重現於 scripts/report_overnight.py

隔夜效應回測報告 報告日期 2026-08-26(49 天前 · 未重跑)

⚠️ 這是一份凍結的報告。裡面的成本假設、OOS 筆數、判準通過數都是2026-08-26 當時的值,之後沒有重跑——現況一律以 參數狀態 與 回測結果 為準。

隔夜效應回測報告 — 2026-08-26

⚠️ 這份報告測的是一個外部說法,不是本專案的預測模型。 本專案自己的回測在 /backtest(walk-forward OOS, 三個 horizon 各 3,811 筆,4 條事先判準 0 過 4 不過)。

受測的說法

每天收盤買、隔天開盤賣 → +138萬% 報酬(paper gain) 反過來,每天開盤買、收盤賣 → −99% 跨多國市場都看得到這個現象 結論:收盤買、開盤賣,統計上最可能賺錢

原文用美光(MU)實測。


一句話結論

現象是真的;「+138萬%」甚至低估了;但那個結論在近十年不成立。

隔夜報酬 > 日內報酬✅ 12 個市場全部成立
美光全期隔夜 vs 買進持有✅ 隔夜贏(3.86 億% vs 6.9 萬%)
近十年(2016+)隔夜 vs 買進持有❌ 0 / 5 檔贏,而且是毛報酬
台指期隔夜 vs 買進持有❌ 輸(毛 1,988% vs 2,128%)

edge 最大的年代交易不了,交易得了的年代 edge 沒了。


方法

隔夜_t = open(t) / close(t-1) − 1     ← 收盤買、開盤賣賺的
日內_t = close(t) / open(t) − 1        ← 開盤買、收盤賣賺的
(1 + 隔夜_t)(1 + 日內_t) − 1 ≡ 當日總報酬     ← 恆等式,程式強制檢查

兩個策略都是每天一次來回,一年約 250 次。

三個會把結論做出來的坑

坑為什麼致命防護
期貨轉倉跨合約相減的假跳空(平均 0.55%、最大 3.67%)全部落在隔夜那一腿在 px_ratio 空間拆(鐵律 8)
股票分割未調整的 2:1 分割 = 假的 −50% 隔夜報酬;只調 close 沒調 open 則變成 +100%auto_adjust=True + split_artifacts() 配分割日曆逐日掃
指數開盤價指數開盤是成分股第一筆成交價湊的,成分股開盤錯開,沒有人成交得到ETF 與指數分開列

三者都會讓誤差落在隔夜那一腿——也就是要量的那一腿。

🔴 更正:恆等式擋不住分割

這份報告的第一版寫了「恆等式檢查是唯一能同時擋掉前兩個坑的東西」。 那句話是錯的,寫測試的時候才發現:

[open(t)/close(t-1)] × [close(t)/open(t)] = close(t)/close(t-1)
                ↑ open 直接約掉了

只要 total 是用同一條 close 算的,恆等式就是代數上恆成立, 不管 open 與 close 的調整因子一不一致都會通過。 一個永遠通過的檢查不是檢查。

真正在擋分割假象的是 tx.overnight.split_artifacts(): 掃出隔夜報酬絕對值超過 25% 的日子,並比對常見分割比例。 真實的單日隔夜跳空極少超過 ±25%。


一、台指期(本專案的標的)

資料 2004-01-05 → 2026-08-25,5,570 個交易日。 恆等式最大誤差 2.22e-16(見下方更正:這個檢查是恆成立的)。 分割/轉倉假象掃描:0 筆超過 ±25% ✅ 乾淨。

策略每日平均毛累積毛年化SharpeSortino最大回檔Calmar勝率
隔夜(收盤買開盤賣)+5.88bp1,988%14.74%1.0171.187-40.0%0.370.563
日內(開盤買收盤賣)+0.58bp6.71%0.29%0.0960.125-43.3%0.010.515
買進持有(不交易)+6.46bp2,128%15.08%0.7730.969-55.5%0.270.547

隔夜腿毛累積 1,988%,買進持有 2,128%——隔夜輸。 隔夜腿確實吃掉絕大部分總報酬(年化 14.74% vs 日內 0.29%),但買進持有同時吃到兩腿,而且一次交易都不用做。

成本敏感度(每天一次來回)

策略損益平衡0bp1bp3bp5bp10bp
隔夜(收盤買開盤賣)5.88bp1,988%1,097%292.95%29.00%-92.04%
日內(開盤買收盤賣)0.58bp6.71%-38.87%-79.94%-93.42%-99.59%

本專案假設的來回成本 3.41bp(assumed-cost (參數未查證))。隔夜腿的損益平衡是它的 1.73 倍。

⚠️ 但淨 Sharpe 只有 0.428,買進持有是 0.773——交易 5,570 次換來一半的風險調整報酬。

夜盤上線前後(台灣資料才做得到的檢定)

台指期 15:00 收盤後夜盤跑到隔天 05:00(2017-05-16 起)。 「隔夜」對台指期不是休市。如果隔夜溢酬來自「休市期間承擔風險的 補償」,夜盤上線後應該變弱。

期間天數隔夜平均日內平均隔夜勝率
夜盤前3,306+4.38bp+0.47bp0.548
夜盤後2,264+8.07bp+0.75bp0.584

效應反而變強。 所以「休市期間風險溢酬」這個解釋不成立。 比較可能是:夜盤與美股時段才是價格形成的地方,日盤只是把結果印出來。

🔎 那 8bp 到底發生在哪裡

台指期的「隔夜」可以再拆三段,其中一段是在市場裡、可以交易的。 (2,034 天,已排除轉倉日前後與夜盤合約非前月的日子——否則就是拿不同合約相減。)

區段平均佔隔夜勝率進得去嗎
① 15:00 日盤收 → 夜盤開盤+0.90bp11%0.510❌ 跳空
② 夜盤盤中 17:00–05:00+5.97bp73%0.576✅ 在市場裡
③ 05:00 夜盤收 → 08:45 日盤開+1.33bp16%0.542❌ 跳空
合計 = 隔夜報酬+8.20bp100%

73% 發生在夜盤盤中,不是在跳空裡。

這推翻了「隔夜溢酬 = 承擔休市風險的補償」——台指期根本沒有休市, 而錢是在開著的市場裡賺到的。比較合理的解釋是: 夜盤(與美股時段重疊)才是台指期價格形成的地方,日盤只是把結果印出來。

實務上的意義不是「可以照著做」(前面已經證明打不贏買進持有),而是:

  • 日盤幾乎不貢獻報酬(+0.75bp/日)。要降曝險的話,降在日盤的預期成本最低。
  • 本專案的模型預測的是日盤收盤到收盤的報酬。既然七成以上的價格變動發生在夜盤,夜盤特徵就是資訊量最高的那一群——而它們當期可用、不需延遲(見 CLAUDE.md)。

⚠️ 另外,漲跌停鎖死日 4 天成交量只有平常的 3%(中位數 3,054 口 vs 87,444 口),掛單成交不了——而策略假設每天都成交得到。


二、美股與跨國市場

資料品質:9 筆極端隔夜報酬,其中 0 筆是分割假象

標的日期隔夜報酬判定
AAPL1996-07-18+27.4%極端行情
AAPL1997-08-06+27.8%極端行情
AAPL2000-09-29-47.3%極端行情(分割日曆上沒有分割)
NVDA2000-03-07+28.2%極端行情
NVDA2002-07-31-27.1%極端行情
NVDA2004-08-06-30.6%極端行情
NVDA2008-07-03-28.0%極端行情
NVDA2023-05-25+26.1%極端行情
^HSI1987-10-26-25.1%極端行情

⚠️ 光看數字會誤判。 AAPL 2000-09-29 的隔夜 −47.3% 很接近 2:1 分割的 −50%,但那天是蘋果獲利預警,股價真的跌了將近一半。 所以 split_artifacts() 一定要傳 yfinance 的分割日曆—— 只有分割日曆上真的有分割的日子才判成假象,其餘一律標「極端行情」。

標的類別期間天數隔夜bp日內bp隔夜毛累積買進持有隔夜贏?隔夜Sharpe持有Sharpe
MU個股1984-06-04→2026-08-2510,639+15.85-2.52386,070,462%68,971%✅1.4120.559
AAPL個股1980-12-15→2026-08-2511,516+10.52+0.383,793,409%315,730%✅1.0310.626
NVDA個股1999-01-25→2026-08-256,939+15.59+3.951,111,602%567,140%✅1.1980.824
SPYETF1993-02-01→2026-08-258,449+4.03+0.742,395%3,076%❌0.9600.649
QQQETF1999-03-11→2026-08-256,907+5.60-0.083,504%1,552%✅0.9870.514
^N225指數1965-01-06→2026-08-2615,153+4.64-1.3072,785%5,135%✅0.9730.425
^GDAXI指數1988-01-04→2026-08-259,773+4.37-0.125,340%2,513%✅0.9270.497
^FTSE指數1984-01-04→2026-08-2510,772+0.81+1.95130.95%991.35%❌0.4830.415
^HSI指數1987-01-02→2026-08-269,784+4.66-1.105,521%904.34%✅0.7200.362

隔夜策略毛報酬贏過買進持有:7 / 9。

美光(原始說法的標的)

原文實測
隔夜累積+138 萬%386,070,462%
日內累積−99%-99.98%
買進持有(對照,原文沒提)—68,971%

實測期間 1984-06-04 → 2026-08-25(10,639 天)。 兩個數字方向都對,而且隔夜那個量級原文還低估了。

隔夜買進持有
毛年化43.22%16.75%
Sharpe1.4120.559
最大回檔-53.7%-98.2%
損益平衡成本15.85bp—

這是本報告裡唯一隔夜大勝買進持有的個股,而且 Sharpe(1.412 vs 0.559)與回檔(-54% vs -98%)都更好。 但下一節會看到,這幾乎全部發生在 2016 年以前。

🔴 依市場微結構切開,結論翻轉

美股 2001-04-09 才十進位化。在那之前最小報價單位是 1/8 或 1/16 美元。

標的期間天數隔夜bp隔夜累積買進持有隔夜贏?
MU十進位化前4,257+14.9934,604%2,558%✅
MU十進位化後3,706+15.6518,355%-61.54%✅
MU近十年2,676+17.495,928%6,657%❌
AAPL十進位化前5,134+13.9646,813%213.81%✅
AAPL十進位化後3,706+12.667,454%7,587%❌
AAPL近十年2,676+0.957.05%1,209%❌
NVDA十進位化前557+34.50428.31%536.82%❌
NVDA十進位化後3,706+10.902,547%235.73%✅
NVDA近十年2,676+18.157,849%26,432%❌
SPY十進位化前2,067+7.99406.54%198.32%✅
SPY十進位化後3,706+1.9286.18%138.93%❌
SPY近十年2,676+3.90164.55%345.62%❌
QQQ十進位化前525+19.90169.79%-29.60%✅
QQQ十進位化後3,706+3.93276.78%242.64%✅
QQQ近十年2,676+5.10254.56%584.73%❌
近十年隔夜策略贏過買進持有的:0 / 5——而且這是毛報酬,還沒扣任何成本。

AAPL 的隔夜 edge:13.96bp → 12.66bp → 0.95bp,幾乎消失。

而 edge 最大的年代,正好交易不了

用真實股價(把分割因子乘回去)算的最小價差:

標的期間真實中位股價1/16 價差同期隔夜 edge
MU1984–1996$16.1439bp11.16bp❌ 價差吃光
MU1997–2001/04$40.4715bp26.32bp✅ 有空間
AAPL1984–1996$30.4121bp13.99bp❌ 價差吃光
SPY1984–1996$27.1423bp4.75bp❌ 價差吃光

⚠️ 這張表我算錯過一次:yfinance 的 auto_adjust=False 仍然做分割調整, 我誤以為那是未調整價,把 1990 年代的 MU 算成 $1.69(真實約 $16), 價差 bp 灌水四倍。已用分割因子乘回去重算。


三、結論

原文對的部分

1. 隔夜報酬 > 日內報酬——12 個市場全部成立,這是穩健的現象(文獻上叫 overnight drift)。 2. 美光的日內累積確實接近 −100%。 3. 「+138萬%」不但沒有誇大,還低估了(實測 3.86 億%)。

原文錯的部分

1. 「收盤買、開盤賣統計上最可能賺錢」——這句話少了比較對象。 它比日內策略好,但在台指期輸給買進持有,在近十年的美股五檔全輸。 2. 「跨多國市場都看得到」只對一半。 隔夜>日內是普遍的;但「日內 −99%」是美光這種高波動個股的特性,美股指數的日內報酬是正的。 3. 全期複利掩蓋了時代差異。 效應集中在 2001 年十進位化之前,而那個年代 1/16 價差就是 21–39bp,遠高於同期 4.75–14bp 的 edge。

什麼會讓我改變看法

  • 近十年任何一檔的隔夜策略毛報酬贏過買進持有(目前 0/5)
  • 有辦法證明開盤集合競價的實際成交價貼近印出來的開盤價
  • 台指期的夜盤結構被複製到別的市場,而效應仍然存在

什麼不會

  • 再找一檔漲很多的個股重跑(那是選股,不是策略)
  • 把期間拉長(全期複利正是問題所在)
  • 換一個沒有買進持有對照的呈現方式

附錄:可重現

python3 scripts/probe_overnight_effect.py   # 台指期
python3 scripts/probe_overnight_us.py       # 美股 + 跨國
python3 scripts/report_overnight.py         # 這份報告

分析邏輯單一定義於 src/tx/overnight.py。研究登記簿:reports/research_ledger.jsonl 的 overnight-effect、overnight-effect-us、overnight-leverage-idea。

成本標註:assumed-cost (參數未查證)。台指期成本參數 9 項未查證;美股部分不假設單一成本,直接報損益平衡與敏感度。

版本 5f92ccf(第 163 次提交,2026-10-14) | 資料建置於 2026-10-14 10:30 UTC | 行情與研究結果供查看;會員可管理觀察清單並要求更新個股分析