一個 NULL 標籤底下藏著三種證據等級:PM2.5 與 SPY 波動率的 n=1、n=5、n=209
讀者互動
登入會員可按讚與收藏。
持續追蹤這項研究
收藏、追蹤與明日提醒只保存必要識別資料,可在會員中心檢視或刪除。
研究資訊不構成個人投資建議;提醒僅代表研究更新,不代表交易訊號。
K1587 把 EPA 的紐約 PM2.5 日資料接到 SPY 的波動率預測上,最後判定 NULL,verdict.reason 寫的是「PM2.5 不改善 OOS 波動率預測,且污染分組證據薄弱」。同一個 K 已經有兩篇一般讀者版的報導,講的是「市場外訊號預測不了波動率」與「野火煙霧那天紐約空氣髒了很多倍、股市卻很安靜」。
這篇要提出那兩篇沒有提出的主張 :那句「污染分組證據薄弱」把三個證據等級完全不同的分組併成一句話。其中一組有 209 天、兩個期間的信賴區間都不含 0、方向與假說相反且穩定。把它跟一個只有 1 天、連統計量都算不出來的分組放在同一個形容詞底下,等於把一個有方向的發現丟掉。
另外一件事也值得單獨講:加進 PM2.5 之後,模型不是沒有變好,是變差了,而且期間拉長變得更差。
一、資料與判定門檻
數字全部從 experiments/k1587/K1587_results.json 程式化讀出。
| 欄位 | 值 |
|---|---|
| 面板期間 | 2018-01-02 至 2025-12-31 |
| 面板天數 | 2011 |
| 回歸樣本 | h=1 為 1755、h=5 為 1753 |
| 污染訊號 | EPA daily_88101(PM2.5),紐約五個郡,前一日 shift |
| PM2.5 訊號平均/標準差 | 7.59/6.54 |
| AQI 訊號最大值 | 155.0 |
| 正式門檻 | 需 OOS QLIKE 改善且 DM t 小於 -3,並有 PM2.5 的 HAC 項 |t| 大於 3 |
| 判定 | NULL |
門檻是雙邊的:要同時看得到 OOS 改善與 in-sample 的顯著係數。兩邊都沒有達到。
二、In-sample:五個污染通道全部安靜,控制項全部有反應
h=1 的 HAC 回歸裡,五個污染相關項的 t 值分別是 0.138(pm25_z)、-0.370(pm25_3d_z)、-0.879(pm25_x_vix)、0.778(high_aqi100_signal)、0.456(high_aqi100_3d_signal)。門檻要的是 |t| 大於 3,而離門檻最近的一個是 -0.879。
同一條回歸裡的波動率控制項則全部有反應:vix_log_signal 的 t 是 5.462,log_parkinson22_lag 的 t 是 4.594,log_rv22_lag 是 -3.299,ret5_lag 是 -5.171。
這個對照很重要。它說明回歸本身有解析力,同一個設定下,該顯著的東西都顯著了。所以污染項的安靜不能推給「模型不敏感」或「樣本太吵」,這一格的 NULL 是有資訊量的。
三、OOS:不是沒有幫助,是有反效果,而且拉長期間更明顯

| 期間 | OOS 樣本 | QLIKE 改善率 | DM t |
|---|---|---|---|
| h=1 | 754 | -0.5049% | +1.073 |
| h=5 | 748 | -1.5329% | +1.480 |
兩個數字都是負的,代表加了 PM2.5 之後 QLIKE 變差。DM t 是正的,代表基準模型(HAR 加 VIX)比擴充模型好,而門檻要的是 DM t 小於 -3,實際值往反方向走。
真正值得記下來的是那個單調性:h=1 掉 0.5049%,h=5 掉 1.5329%,惡化幅度大約三倍,而 DM t 也從 1.073 走到 1.480。這是把五個沒有資訊量的參數塞進一個本來就設定得不錯的基準模型會付的代價,而且期間越長、基準模型的優勢累積得越明顯。K1587 因此不只是「污染沒有用」的紀錄,它同時是一份雜訊變數成本的量測。
四、三個 arm,三種證據等級

| 分組 | 處理組天數 | h=1 比值 | h=5 比值 | 95% 信賴區間 |
|---|---|---|---|---|
| AQI 大於 150 | 1 | 無法計算 | 無法計算 | 欄位是 null |
| AQI 大於 100 | 5 | 0.2837 | 0.3034 | 兩個期間都不含 0 |
| PM2.5 前十分位 | 209 | 0.4580 | 0.5972 | 兩個期間都不含 0 |
比值是「污染日的前瞻已實現變異數 ÷ 對照日」。三組都小於 1,也就是污染重的日子,SPY 之後的已實現波動反而比較低。
三組的證據等級差距很大:
AQI 大於 150 那組只有 1 天。 diff、ci95_low、ci95_high、p_one_sided_treated_greater 四個欄位全部是 null。這是正確的處理方式,一天算不出離散度,程式沒有硬印一個數字出來。但它同時代表這一組對任何主張都沒有貢獻。
AQI 大於 100 那組只有 5 天。 這一組印得出信賴區間,而且不含 0。可是把結論放在五天上面,換掉其中一天結果就可能翻轉,這種區間的穩定性跟樣本數是同一件事。
PM2.5 前十分位那組有 209 天。 這一組才是有重量的:兩個期間的信賴區間都不含 0,比值 0.458 與 0.597,方向一致。p_one_sided_treated_greater 在 h=1 是 1.0、h=5 是 0.998——「污染日波動更大」這個單邊假設被決定性地拒絕。
所以「污染分組證據薄弱」這句話,對前兩組是準確的,對第三組不準確。第三組給的是相當清楚的證據,只是方向跟原假說相反。
五、我怎麼知道這把尺沒有壞
判斷「信賴區間含不含 0」的程式如果寫壞了、永遠回「不含 0」,上面整張表就沒有意義。所以我對它做了負對照:把所有分組的信賴區間改成 [-1, 1](必定跨 0),重跑同一支程式。
結果三個可計算的分組全部從「CI 不含 0」翻成「CI 跨 0」,而 AQI 大於 150 那格仍然是「無法計算」,它沒有被負對照汙染成 False,因為它的區間本來就是 null。這代表這支程式能區分三種狀態(不含 0/跨 0/算不出來),不是一個只會回同一個答案的裝置。
六、這份結果能與不能支持什麼
能支持的 :以 NYC 的 PM2.5 日均值當訊號、以 SPY 日頻收盤對收盤已實現變異數當目標,污染對波動率預測沒有增量價值;把它加進 HAR 加 VIX 的基準會讓 OOS QLIKE 變差,且期間越長越差。
能支持但被原判定低估的 :污染最重的 209 天,SPY 的前瞻已實現變異數只有其餘日子的 0.458 倍(h=1),兩個期間、兩種分組門檻方向一致。這是一個方向性結果,不該被「證據薄弱」帶過。
不能支持的 :不能說「空氣污染與市場行為無關」。原論文(Heyes、Neidell 與 Saberian)談的是同日情緒對報酬的影響,這裡測的是隔日起算的波動率預測,兩者的目標變數與時間對齊都不同。results 檔自己的 limitation 欄位也寫明了:用的是日頻 SPY 代理而非日內已實現波動或價差,且這是紐約單城試點而非 47 城複製。
特別不能支持的 :不能拿 AQI 大於 150 那一格說任何話。一天就是一天。
七、下一步該問什麼
那個反向的比值值得追。最自然的競爭解釋是季節與天氣:紐約 PM2.5 高的日子有明顯的季節聚集,而波動率本身有季節性,兩者可能只是共同被第三個變數帶著走。現有的 results 檔沒有做這個分解,所以本文只把它列為待檢驗的觀察,不宣稱因果。
要把它變成可檢定的,最低成本的一步是在前十分位分組裡加入月份固定效果與天氣控制,看那個 0.458 還剩下多少。這比擴充到 47 城便宜得多,而且能直接回答「這是污染,還是只是冬天」。
證據來源 :experiments/k1587/K1587_results.json(canonical)。分組整理、信賴區間判定與負對照由 storage/drafts/K1587_research_analysis.py 從該檔程式化推導,圖表由同一支腳本產生。
與既有文章的關係 :同一個 K 的兩篇一般讀者版(mile_e1ed7c5d 市場外訊號總覽、mile_7c894f46 野火煙霧當天)報導的是「污染預測不了波動率」與單日故事。本篇不重述那個結論,而是拆解 verdict.reason 裡「證據薄弱」這個描述,指出三個分組的證據等級不同,並把其中 209 天那組的反向結果單獨提出來。