我們差點親手推翻自己的發現:一個對錯一天的錯誤,怎麼被抓出來又被救回
讀者互動
0 次瀏覽,登入會員可按讚與收藏。
我們差點親手推翻自己的發現:一個對錯一天的錯誤,怎麼被抓出來又被救回
一年前我們得出一個結論:市場愈恐慌,突發利空造成的當日震盪反而愈被「吸收」。後來自己回頭查程式,發現當初的關鍵檢定把時間對錯了一天。修正之後,主檢定的說服力一度歸零。這篇文章講的就是這段從得意到冒冷汗、再到重新站穩的過程。
先講那個發現是什麼
先解釋兩個詞。
VIX ,是美股的「恐慌指數」,數字愈高代表市場預期未來波動愈劇烈。平靜時大概 12 到 15,金融海嘯那種時候會衝上 60、80。
衝擊放大比 ,我們自己給的名字,衡量「一個突發大波動日的股價震盪,比一個平常日大幾倍」。平常日震盪是分母,突發衝擊日是分子。倍數愈大,代表市場對衝擊反應愈激烈。
原始發現是這樣:市場平靜(VIX 低於 15)的時候,衝擊放大比大約 2.4 倍;市場已經很恐慌(VIX 在 25 到 30)的時候,這個倍數反而掉下來。從平靜到恐慌的落差,我們算出 0.8165 。白話說,當大家已經嚇壞了,再來一個利空,當天的額外震盪反而沒那麼誇張。像是驚弓之鳥,第一聲槍響跳得最高,後面反而麻木。
問題是:這會不會只是統計的錯覺?股價波動本來就有慣性(高波動之後容易接著高波動),會不會這個「落差」只是慣性製造出來的假象,跟市場心理沒關係?
怎麼證明它是真的:造一個假世界
要回答這個問題,我們用了一種叫 對照模擬 的方法(統計上叫 null,可以想成一個「假世界」)。
我們用一種描述波動慣性的標準統計模型,生出一萬條假的股價路徑。這個假世界裡只有機械式的波動慣性,沒有任何市場心理。如果在這個沒有心理的假世界裡,也能輕鬆生出 0.8165 這麼大的落差,那我們原本的發現就沒價值,因為純慣性就能解釋。反過來,如果假世界幾乎生不出這麼大的落差,那真實市場裡的落差就是慣性以外的東西。
一年前的結論很漂亮:假世界的落差平均只有 0.1734,一萬條路徑裡幾乎沒有一條達到 0.8165。這個結果的 p 值(純屬巧合的機率)只有 0.0006。我們判定:吸收現象是真的。
被自己抓到的錯誤
幾個月後回頭複查程式,發現一件讓人背脊發涼的事。
假世界裡標記「衝擊日」的方式,用的是模型「前一天收盤就能算出來」的波動預測值。等於把衝擊標在了大跌的 隔天 。
但真實資料裡的 VIX 是 當天 收盤價,崩盤當天 VIX 就同步暴衝。也就是說,真實世界的衝擊日是大跌 當天 ,假世界的衝擊日卻是大跌 隔天 。兩邊差了一天。
這一天差很多。真實資料的衝擊日,因為 VIX 跟股價當天一起跳,分子被機械性地墊高;假世界的衝擊日沒有這個同步效應,分子沒被墊高。這樣比出來的「真實遠大於假世界」,很可能只是時間對齊錯誤製造的假象。這是整篇研究的生死關卡:如果把時間對齊修正後落差就消失,核心發現就得作廢。
修正後重跑:主檢定一度失守
我們把時間對齊改對,其餘一律不動。模型參數、隨機種子、一萬條路徑、放大比公式、VIX 分組切點,全部維持原樣,讓任何差異都百分之百來自這個修正。樣本是 2006 年 1 月 5 日到 2026 年 4 月 2 日,共 5,092 個交易日。
結果如下表。
| 檢定版本 | 衝擊日對齊到 | 真實落差 | 假世界落差(均值) | p 值 | 判定 |
|---|---|---|---|---|---|
| 舊版模擬 | 大跌隔天(錯) | 0.8165 | 0.1734 | 0.0006 | 落差是真的 |
| 修正後主檢定 | 大跌當天(對) | 0.8165 | 0.6190 | 0.41 | 無法拒絕假世界 |
修正之後,假世界的落差平均從 0.1734 跳到 0.6190,跟真實的 0.8165 已經很接近。p 值從 0.0006 惡化到 0.41 。這個數字的意思是:純慣性的假世界,有四成機率就能生出這麼大的落差。按照我們事前寫死、不容事後更改的判定規則,這一關等於沒過。核心識別一度被自己關掉。

為什麼主檢定不是終局
如果就此收手,故事會停在「我們錯了」。但修正後的結果攤開來看,各種檢定版本結論分裂,而且我們挖到一個更深的問題。
修正後主檢定的假世界之所以能生出 0.6190 的落差,是因為它作弊。那個固定的門檻套在高波動區時,光是波動自然回落一天就跨過門檻,於是假世界在最恐慌的分組裡把 82% 的日子都標成「衝擊日」,真實資料只有 54%。假世界靠這個資料裡不存在的機制,憑空刷出一個落差。所以主檢定的「無法拒絕」,是兩個假象互相抵消,不是乾淨的證據。
更關鍵的是模型參數裡有一個 α 等於 0。翻成白話:在這個假世界裡,上漲的日子對隔天波動零貢獻,只有下跌會推高波動。這帶來一個硬約束。我們把數字解出來:只要 VIX 在大約 28.8 這個年化波動點以下,這個假世界 根本不可能 產生「波動當天下降 2 點」的衝擊日。
而真實資料裡,那個 0.8165 的落差,幾乎全部由「波動下降型」的衝擊日撐起來。假世界在中低波動區連這種日子都生不出來。換句話說,在下跌這一側,假世界跟真實資料量的根本不是同一件事。拿一把量不到的尺去比,比出什麼都不算數。
換對規格:現象活下來
問題找到了,就得換一個能問對問題的規格。
前面的分組,是用衝擊 當天 的 VIX 去分平靜還是恐慌。但大跌本身會把當天 VIX 推高,等於用結果去分組,邏輯上是倒果為因。正確做法是用衝擊 前一天 的 VIX(衝擊前市場已經有的恐懼水位)來分組,再看恐慌衝擊打下來的反應。這也更貼近我們一開始的假說:既有的恐懼水位,會調節市場對新衝擊的反應。
用這個「衝擊前恐懼水位 × 恐慌衝擊」的規格,真實資料的落差是 1.0465 。
這個數字有兩道獨立的檢驗撐著。
第一道, 區塊自助法 (一種把真實資料切段後反覆重抽、估計不確定範圍的方法)。以 20 個交易日為一個區塊,重抽一萬次,落差的 95% 信心水準的合理範圍是 [0.3286, 1.7625] 。整段區間嚴格為正,不碰 0。我們另外用 10、40、63 天的區塊各跑一次,四組區間全部排除 0,方向一致。
第二道,回到同一個假世界對照,但這次用對齊好的規格。真實落差 1.0465,假世界落差平均只有 0.2917,假世界的 95% 區間是 [−0.6554, 0.9887]。真實值落在區間外,p 值 0.0327 。純慣性的假世界,只有大約 3% 機率能刷出這麼大的落差。
兩道檢驗都指向同一個方向:吸收現象撐過了更嚴格的關卡。裁決是這句話: 吸收現象通過「衝擊前恐懼水位」的關卡存活。
整段故事濃縮成一張圖:同一個問題換三種問法,看真實落差(圓點)落在假世界 95% 區間(灰帶)裡面還是外面。舊版在外、修正後主檢定被拉回區間內、換對規格後又落到區間外。

誠實標註的三個限制
這篇不是勝利宣言,有幾件事必須講清楚。
第一,純粹用「上漲衝擊 × 當期分組」算出來的落差是 −0.1192,方向甚至相反。這個數字來自倒果為因的內生分組,樣本又薄,它自己單獨不能定案,只能當作分解過程的紀錄。
第二,前面那個 α 等於 0 造成的不對稱還在。修正後的時間對齊,其實只在下跌日真正做到同步,上漲日仍然對不上。同步性只做到一半,必須明講。
第三,假世界用的是一個特定的波動模型設定,它對利空的反應方式是被寫死的函數。真實 VIX 的反應更陡、更凸,還有「跌完反彈、波動回落」這條假世界沒有的通道。要對下跌側真正下定論,得先做出一個用真實 VIX 彈性校準的對照模型。在那之前,任何對照檢定對下跌側都沒有發言權。
這件事的價值在哪
一個結論從 高度顯著(顯著性 0.0006) 一路掉到 未達顯著水準(顯著性 0.41),再靠更嚴格的規格站回 達顯著水準(顯著性 0.0327),這段過程不好看,但它就是研究該有的樣子。舊版的漂亮結論退休了,換來的是一個更站得住、也更清楚知道自己邊界在哪的發現。
願意公開自己差點翻船的那一段,比端出一個永遠正確的結論更難,也更值得信。
資料與方法說明
- 樣本:SPY 與 VIX 日頻,2006 年 1 月 5 日至 2026 年 4 月 2 日,共 5,092 個交易日,使用固定快照資料以確保可重現
- 對照模擬:一種對利空反應較大、且允許極端值較常出現的非對稱波動模型,10,000 條路徑,隨機種子與參數全部沿用舊版,唯一改動是波動代理的時間對齊
- 主檢定(事前登記):修正後真實落差 0.8165 落在假世界 95% 區間 [0.0824, 1.0596] 內,未達顯著水準(顯著性 0.41),識別關閉
- 存活規格:衝擊前 VIX 分組 × 恐慌衝擊,落差 1.0465,20 日區塊自助法 95% 區間 [0.3286, 1.7625],同種子假世界對照 達顯著水準(顯著性 0.0327)
- 所有數字對應實驗結果檔,未經湊整
以上分析僅供研究參考,不構成投資建議。
懶人包圖組



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