Share Notes

chundev

View the Project on GitHub latteouka/share-notes

回測大虧交易的事件復盤 — 策略的弱點是可命名的

日期:2026-04-20 情境:期貨策略 8 年回測的虧損交易分析


TL;DR

對歷史前 10 大虧損交易逐筆對照市場事件,發現 10/10 都對應到可辨識的宏觀衝擊(貿易戰、疫情、銀行危機、Carry Unwind 等),沒有一筆是「純統計意外」。這不是策略 bug,而是 P/C Ratio 類型的 timing 策略的結構性特性:進場當下 P/C 仍高(大戶剛買 Put 避險)、MA 仍向上,所有濾網全部通過;但事件爆發後的 regime shift 需要時間才會反映到指標上,策略只能承受完整衝擊。既然無法事前完全避開,唯一的解法是用倉位管理吸收衝擊(合理 leverage + maxHoldDays),不是試圖預測事件。


背景

一個期貨 timing 策略(進場條件:P/C Ratio ≥ 130 + 價 > MA60 + MA60 向上 + 距結算日 > 2)回測 2018-2026 共 88 筆交易,勝率 70%,年化 83%。看起來很漂亮,但每筆大虧都是 10+ 口(動態 sizing)× 幾個百分點跌幅的放大結果。

問題:這些大虧是「隨機意外」還是「有模式可循」?如果後者,能不能設計濾網避開?


Top 10 大虧的事件對照

按 return rate 排序:

# 日期 跌幅 進場 PC 出場原因 當時市場事件
1 2019-05-16 ~ 05-30 -8.58% 126 maxHoldDays 貿易戰升級、華為禁令、Google 斷供、人民幣貶值
2 2018-03-22 ~ 04-18 -6.51% 138 結算日 貿易戰第一次開打、Facebook 劍橋分析醜聞
3 2021-02-23 ~ 03-10 -6.09% 140 maxHoldDays 美債殖利率飆升、ARKK 崩盤、科技股修正
4 2025-08-08 ~ 08-20 -4.22% 115 結算日 日圓 carry trade 清算、全球市場閃崩
5 2019-04-25 ~ 05-10 -4.10% 139 maxHoldDays 同 #1,貿易戰升級前夕
6 2020-02-20 ~ 03-06 -2.89% 163 maxHoldDays COVID-19 全球擴散、油價戰
7 2020-01-16 ~ 02-19 -2.83% 152 結算日 COVID-19 武漢爆發
8 2021-04-15 ~ 04-21 -2.78% 152 結算日 ARKK 修正後段
9 2023-03-24 ~ 04-12 -2.78% 139 maxHoldDays SVB 矽谷銀行倒閉、Credit Suisse 危機
10 2026-03-05 ~ 03-18 -2.06% 129 結算日 Trump 2.0 關稅戰不確定性

10/10 都有明確的宏觀事件對應


逐日復盤:2019-05(最慘的單筆)

以跌幅最深的 2019-05 為例,還原當時的日常:

日期 近月價 日漲跌% P/C 浮動 P&L(萬) 事件
05-15 250.5 +0.60% 134 Trump 簽署 EO 禁止威脅國安通訊設備 → 華為入黑名單
🟢 05-16 247.5 -1.20% 126 -17 【策略進場】
05-17 242.0 -2.22% 112 -48 半導體關稅傳言升級
05-20 238.5 -1.45% 113 -67 Google 暫停華為 Android 授權
05-21 235.0 -1.47% 118 -87 商務部給 90 天緩衝期(短暫反彈)
05-22 238.0 +1.28% 116 -70 華為再遭 ARM、Panasonic、SD 斷供
05-23 231.0 -2.94% 104 -109 全球股市再跌
05-24 233.0 +0.87% 110 -98 人民幣貶破 6.94
05-27 232.0 -0.43% 107 -104 美 10Y 殖利率跌破 2.3%(衰退訊號)
05-28 231.5 -0.22% 107 -106 MSCI 新興市場指數跌至三個月低
05-29 229.0 -1.08% 106 -120
🔴 05-30 231.0 +0.87% 109 -109 【maxHoldDays 出場】虧 -8.58%

關鍵觀察:

  1. 進場當日 5/16 其實已經是華為禁令次日(5/15 發布)。市場還沒完全消化,P/C 依然 126、價格還在 MA60 之上 → engine 沒理由不進場。
  2. 進場後 10 天出現 10 次重大事件,全部是負向的。沒有任何「利多穩定期」讓策略喘息。
  3. 沒有單日閃崩超過 -5%。都是 -1 ~ -3% 的累積下跌。這代表:
    • stopLoss 5% 救不了(每天都沒觸到)
    • stopLoss 3% 會在 5/17 就砍在 -2.2% 但後續還是跌到 -8%,一樣虧
  4. 出場是 maxHoldDays 到期,不是 engine 主動偵測反轉。如果沒有 maxHoldDays 限制,持有到 6/10 才反彈回 239.5,還是虧 -4.4%。

十筆共同模式

統整 10 筆的 T+3, T+5, T+10 跌幅軌跡:

# T+3 T+5 T+10 最深浮虧 是否 V 反轉
1 -6.0% -7.6% -8.0% -8.0%
2 -1.2% -4.1% -2.8% -6.1% 部分(後段回升又再跌)
3 -7.7% -5.2% -8.9% -9.4%
4 +0.4% -0.4% -3.4% 部分
5 -2.8% -1.1% -4.3% -4.3%
6 -2.0% -3.6% -4.0% -5.0%
7 -5.7% -5.8% -2.2% -5.8% 部分(尾段反彈)
8 -3.3% -4.7%
9 -1.7% -0.6% -3.3% -3.3%
10 -2.1% +0.5% -3.9% 部分

模式:

  1. 沒有任何一筆是「進場就反彈」。每一筆 T+3 都已經在虧損中(除 #4 剛進場前 3 天還正)。
  2. 7/10 是持續下跌沒反彈(到 T+10 仍在最深點附近)。
  3. 3/10 有部分 V 反彈但都沒救回全部(#2、#7、#10 尾段略有回升)。

為什麼濾網救不了

P/C Ratio timing 策略的 edge 在「熱市 + 避險過度 → 趨勢延續」的結構。大虧發生在:

  1. 熱市還沒結束(P/C 依然在高位)
  2. 但外部事件打破趨勢
  3. 指標延遲反映(P/C、MA 都是滯後指標)

具體檢視每個可能的濾網:

stopLoss(已驗證否決)

累積下跌 -1~-3%/day 不會觸發 5% 停損。降低到 3% 會砍在每個小跌,長期勝率反而大減(回測證實否決)。

事件感應器(VIX、殖利率飆升)

事後容易辨識,事前難。以 2019-05 為例,5/15 華為禁令當晚 VIX 從 16 跳到 19,但:

換句話說:事件爆發時機剛好卡在策略進場的隔天,事前感應器來不及反應。

P/C 動態出場(已驗證否決)

先前探索「P/C 從進場高點回落 X% 就出場」。統計顯著但實務否決:P/C 回落是虧損的伴隨現象,不是可操作的前兆。用 P/C 回落砍倉會同時砍掉「P/C 暫時回落後又回升的獲利交易」。

maxHoldDays 縮短(例如從 10 降到 5)

確實會減少大虧的持有深度,但同時會砍掉許多「持有 6-10 天獲利」的成功交易。Walk-Forward 驗證過,maxHoldDays=10 是甜蜜點。


這個現象的一般性

把 10 筆的事件類型聚類:

事件類型 筆數 占比
地緣政治 / 貿易戰 4 40%
央行政策 / 利率衝擊 3 30%
疫情 / 銀行危機 3 30%

共同性質:

  1. 突發性:事件爆發前 1-3 天市場還在正常運行
  2. 連續性:事件引發連鎖反應,持續 5-15 天才消化
  3. 方向明確:全部是負面衝擊,沒有「正向衝擊但策略做錯邊」的案例

這說明 P/C timing 策略天然在「結構衝擊」環境下會虧。它的 edge 在正常市場的微觀失衡,不在黑天鵝期間的宏觀反轉。


正確的應對思路

1. 接受「事件級虧損」是策略的必要成本

策略的年化 83% 包含了這些事件衝擊。試圖完全避開它們會同時毀掉賺錢的 edge。

2. 用倉位管理吸收衝擊

這是唯一可控的變數:

3. 心態準備:每年都會有 1-2 次大虧

8 年 10 筆大虧 → 平均每年 1.25 筆事件級虧損。這是結構性期望,不是意外。

4. 有意識地監控宏觀警示

不是要完全避開事件,而是要有自知之明

不是「不進場」,而是「進場時知道風險上限在哪」


學到的事


參考資料