← 研究動態
研究2026/04/02 上午09:03

Sharpe 3.5 到 -0.17:一個報酬計算選擇讓跨市場策略崩潰

0050.TW方法論跨市場lead-lag台股open-to-close代碼審查

讀者互動

登入會員可按讚與收藏。

分享到:LINEFacebookX / Twitter

持續追蹤這項研究

收藏、追蹤與明日提醒只保存必要識別資料,可在會員中心檢視或刪除。

研究資訊不構成個人投資建議;提醒僅代表研究更新,不代表交易訊號。

訂閱研究摘要

研究摘要與新文章,不轉售、不寄廣告,隨時可退訂。

摘要

K812 用「昨收→今收」報酬計算跨市場策略,Smooth 策略的全樣本 Sharpe 是 3.400,代碼審查發現三個 HIGH 嚴重度 bug。K812v2 在修正後的面板上,把同一個策略的報酬改成「開盤→收盤」,Sharpe 從昨收→今收的 3.514 跌至 -0.168,差距高達  +3.68 。方向準確度從看似顯著的 63.9% 跌回 50.2%(硬幣翻轉)。教訓:美股收盤要到今早才看得到,用它去交易從台灣前一個交易日收盤起算的報酬,捕捉到的是不可交易的隔夜 gap;跨時區策略的報酬必須從訊號形成之後才開始算,例如  open-to-close return 。

C2C 與 OtC 的 Sharpe 差距:被動投資 BH 0050.TW 相差 0.84,主動策略相差 3.68

方向準確度:C2C 顯示 63.9%(看似有信號),OtC 僅剩 50.2%(等同隨機猜測)


第一幕:一個「看起來很完美」的突破

2026 年 4 月,我們設計了 K812 實驗,測試一個核心問題: 美股(SPY)的隔日走勢,能否預測台灣 0050.TW 當日方向? 

這個假說有實證基礎。我們的研究記錄(T32/T33)早已確認 SPY→台股的 lead-lag 相關係數約 0.40,統計顯著(Harvey t=3.75,遠超 t>3.0 門檻)。問題是,這個信號能否轉化為可執行的交易策略?

K812 的結果令人震驚:

策略Sharpe(全樣本)Sharpe(OOS 2023-24)MDD
BH 0050.TW(被動持有)0.9081.743-33.8%
Smooth tanh(SPY) 策略 3.400  5.053 -9.8%
SPY Return Signal(二元)2.1773.541-19.8%

OOS Sharpe 5.05。Cross-OOS 5 個時期全部勝出。DM test Harvey PASS。方向準確度 64.1%。

表中 SPY Return Signal(二元)的 2.177 與 3.541,持有區間從台灣前一個交易日的收盤開始,但它用的美股報酬要到台灣當天凌晨才收盤,比持有起點晚。同一個面板、同一個策略,把訊號限制在持有起點之前已經收盤的美股資料,全樣本 Sharpe 是 0.755,OOS 2023-24 是 1.315。上表的數字是舊對齊下的結果。

這是我們見過最「完美」的結果,每一個指標都指向同一個結論:突破性發現。

然後,我們審查了代碼。


第二幕:三個 HIGH 嚴重度 Bug

代碼審查識別出三個 HIGH 嚴重度問題,位置在代碼結構層面,不在結果層面:

Bug 1:日曆對齊錯誤

原始代碼用 ffill + shift(1) 處理兩個市場的混合日曆(美股與台股的非交易日不同)。這種做法在邊界條件下會錯誤對齊日期,讓信號和報酬之間的時序關係出現偏移。

 修正 :改用顯式的 merge-on-date + 獨立 shift,在各自的交易日曆上處理後合併。

Bug 2:Sanity Check 硬編碼

K812 的「隨機基準 Sharpe 0.777」和「Lookahead 驗證」是硬編碼在代碼裡的數值,不是即時計算的。這意味著這些「驗證」其實沒有驗證任何東西,它們只是顯示了預設的數字。

 修正 :K812v2 的所有 sanity check 都是實時計算(computed_not_hardcoded: true)。

Bug 3:報酬計算方式(最關鍵)

 K812 用 close-to-close return(收→收),K812v2 改為 open-to-close return(開→收)。 

這是三個 bug 裡影響最大的一個,以下詳細說明。


第三幕:C2C 與 OtC 的根本差異

跨時區策略的時序如下:

美東時間 16:00  台北時間 04:00(夏令,隔天)/05:00(冬令,隔天)
美股收盤 ──────────────────────────────►
                                        台股開盤 09:00(隔天)
                                        台股收盤 13:30

 C2C(昨收→今收)包含兩段時間 :

  1.  隔夜 gap :台股昨天 13:30 收盤 → 今天 09:00 開盤(約 20 小時)
  2.  盤中走勢 :今天 09:00 開盤 → 13:30 收盤

問題在於: 美股信號絕大部分反映在隔夜 gap 中 ,而不是在盤中走勢。

為什麼?因為台灣投資人在美股收盤後就知道 SPY 漲跌了。他們隔天開盤前就會下單,開盤價已經「消化」了這個信號。等你用這個信號交易時(09:00 開盤進場),信息早就沒有了。

如果你今早才看到美股收盤、再用它去交易 C2C 報酬,你「捕捉」到的是隔夜 gap 的報酬,但那是你 進場前 已經發生的價格變動,你根本無法賺到。

指標C2C(含隔夜 gap)OtC(僅盤中,可交易)
 年化平均報酬 18.1%5.1%
 滾動相關係數(SPY→台股) 0.410 0.009 
 Smooth tanh(SPY) Sharpe  3.514  -0.168 
 方向準確度 63.9% 50.2%(硬幣) 
 Granger β\beta(SPY→台股 OtC) 0.432(t=28.4) -0.004(t=-0.25) 

Sharpe 膨脹: +3.68 。方向準確度:63.9% → 50.2%。

用 OtC return 後,SPY 對台股盤中走勢的 beta 是 -0.004,t 值 -0.25——完全不顯著。Lead-lag 信號在開盤時就已被市場定價完畢。


數據對比圖

方向準確度的差距更能說明問題:


代碼審查的救贖

這次案例是  代碼審查防止假突破 的典型例子:

  • K812 結果出來時,所有表面指標(Sharpe 3.5、OOS Sharpe 5.0、Cross-OOS 5/5 win)都指向「突破」
  •  如果沒有代碼審查 ,這個結果可能直接被記錄進知識庫、寫成文章、甚至用來設計新策略
  •  審查在代碼層面發現  bug,不是在「結果看起來太好」才懷疑

這個流程的設計初衷正是如此: 寫代碼 → 審代碼 → 修正 → 才跑 ,不是跑完出結果才審查。

K812 是迄今為止我們遇到的 最大幅度假突破 (Sharpe 膨脹 +3.68),也是代碼審查流程正確性的最強證據。


方法論建議:跨時區策略研究 Checklist

基於 K812/K812v2 的教訓,跨時區策略研究應遵循以下規則:

 ✅ 必須做 

  • 報酬要從訊號形成之後才開始算:訊號是今早才看到的美股收盤時, 使用 open-to-close return  作為策略回測的 target
  • 確認信號日期與報酬日期的對齊:信號 t-1,報酬從 t 的開盤計到 t 的收盤
  • Sanity check 必須 即時計算 ,不可硬編碼
  • 對混合交易日曆做顯式 merge,不用 ffill 遮蓋 missing data
  • 報告 C2C 和 OtC 兩種計算的結果,讓讀者看到差距

 ❌ 禁止做 

  • 用持有起點早於訊號形成的 C2C return 設計跨時區策略(除非明確研究隔夜 gap 本身)
  • 把隔夜 gap 報酬當作「可交易利潤」
  • 在代碼裡硬編碼驗證數字
  • Sharpe > 2x baseline 時直接記錄結論(先審代碼)

 先例記錄 

  • K502(2024):舊對齊下,lead-lag alpha 有 77-93% 落在隔夜 gap(TX 58.5bp);這個比例描述的是舊對齊的報酬組成
  • K812v2(2026-04-01):C2C vs OtC Sharpe 差距 +3.68,方向準確度從 63.9% → 50.2%
  • I8:SPY Momentum on OtC → FAIL(與 K812v2 結論一致)

Null Result 報告

K812v2 的最終結論: NULL 。

在正確的 open-to-close return 框架下,US→Taiwan lead-lag 策略 無法 在 Harvey t>3.0 門檻下打敗被動持有。最佳策略(Smooth tanh(SPY))全樣本 Sharpe -0.168,OOS Sharpe 1.563,Cross-OOS 5 個時期只贏 2 個。

這與 K502 同向:報酬集中在不可交易的隔夜 gap 裡,開盤後信號已被定價消除。

一個 Null Result,加上一個清晰的方法論教訓,價值遠高於一個建立在錯誤計算上的「突破性發現」。


實驗腳本: experiments/k812_us_taiwan_leadlag.py / experiments/k812v2_us_taiwan_leadlag_otc.py 結果數據: experiments/k812_us_taiwan_leadlag_results.json / experiments/k812v2_us_taiwan_leadlag_otc_results.json 數據來源:yfinance,0050.TW + SPY + VIX,2006-2026

相關文章

先讀正式關聯,若無則使用標籤與主題相似度補齊

📄
K2007:連假前報酬與連假後報酬平方的預註冊檢驗,台股與道瓊四個假說均未達支持門檻
K2007 檢驗兩個關於交易所休市日的老說法:連假前最後一個交易日(PRE)的平均報酬高於一般日,連假後第一個交易日(POST)的報酬平方(原始二階動差)高於一般日。主檢定以 ^TWII 為主、^DJI 為對照,報酬日期 2003-01-02 至 2026-09-30,依未修改的預註冊 r2 執行。四個假說經 Holm 校正後,H1(TW 報酬)、H2(US 報酬)、H4(US 報酬平方)不支持;…
→
📄
天然氣月度波動的季節項放進自我迴歸之後:冬季係數隨價格序列與落後期變號,夏季在四個設定下都為負
為天然氣部位估月度波動的人,常在前一個月的實現波動之外再放一組季節虛擬變數。理由來自基本面:冬季的取暖需求與庫存消耗讓天然氣價格在冬天起伏較大(Mu 2007)。本文用同一組資料回答建模時的兩個問題:月份差異在無條件下是否存在;放進前一個月的波動之後,季節項還剩多少,係數又該怎麼讀。 先寫結論。 第一,無條件的月份差異在兩條序列都存在。天然氣連續近月期貨與 UNG 都在 1 月最高,冬季平均分別是…
→
📄
K2006:每月依殖利率曲線預測調整公債存續期間,平均報酬、回撤與下行尾部能與槓鈴、階梯分開嗎?
這組資料分不開。四項預先設定的檢定在 Holm 逐步校正(家族大小為四、水準 5%)後全部沒有拒絕。證據最接近門檻的是下行尾部,方向卻不利於動態規則:一年視窗最差 5% 的平均終值比,動態規則(Dyn)為 0.9203,槓鈴(B)為 0.9378,差 -0.0175,未調整 p 值 0.04998,Holm 調整後 0.1999。這組資料沒有給出「依曲線預測切換存續期間能降低尾部風險」的證據,也不…
→
Sharpe 3.5 到 -0.17:一個報酬計算選擇讓跨市場策略崩潰 | VolPred