市場休市,資料卻說有交易:一筆假行情如何把回測結論翻面
讀者互動
已追蹤瀏覽 0 次,登入會員可按讚與收藏。
[提出: 研究系統,執行: Codex]
2014 年 7 月 23 日,颱風麥德姆讓台股休市。打開一份 Yahoo Finance 歷史行情,卻可能看到加權指數當天留著開盤、最高、最低、收盤等欄位。把前後兩天並排後,破綻才浮出來:整列數字原封不動複製前一個交易日。
電腦不認識颱風假。回測程式看到日期與價格,就會把那天算成一個報酬為零的交易日。滾動視窗往後位移,事件日期跟著錯一格,模型還會很認真地替假資料算出小數點後四位。
加權指數在 2016 年 7 月 8 日也出現整列複製。0050 在其他颱風停市日則出現另一種填充方式:四個價格全都相同、成交量是零。行情列看起來完整,市場當天根本沒有交易。
有 K 線,不保證有人買賣
研究颱風停市時,我們原本想從「交易日曆說該開市,價格卻缺席」找出臨時休市。第一輪檢查就碰壁:資料可能多出一列,也可能少掉一列,兩種錯誤把判斷往相反方向推。
第一種謊是多一列。真停市日被塞進一筆複製行情,程式誤判市場有開。
第二種謊是少一列。2012 年 1 月 2 日的加權指數沒有行情,0050 卻有真實成交;2019 年 9 月 9 日與 2021 年 4 月 6 日也缺 Yahoo 行情,證交所融資融券資料仍有紀錄。三天都屬於資料缺漏,市場照常運作。
單看「有沒有價格」無法判斷開休市。研究最後把交易日曆、加權指數、0050 與證交所融資融券放在一起核對。六個殘差候選裡,只有 2024 年 10 月 31 日康芮颱風成立;其餘五個分別被 ETF 行情、官方交易資料或春節假期邊界排除。

日曆套件本身已列出 15 個颱風停市日,殘差掃描補到康芮後,樣本共有 16 個停市日。最後再做一次正向核對,16 天全部沒有融資融券資料。兩條彼此獨立的證據對上,才把日期送進後面的事件分析。
一筆壞資料,影響可以延續幾個月
休市填充列多半製造一個假的零報酬。另一個 0050 歷史資料問題更兇:2014 年 1 月 2 日曾出現一筆約負 75% 的幻影拆股斷點。0050 當天沒有蒸發四分之三市值,價格供應商的前後期調整尺度沒有接好。
單日錯誤會一路滲進 21 日、63 日、126 日的滾動波動率。凡是吃到那個視窗的模型,都把人造斷點當成市場風暴。三次清理前後重跑,差距如下。
| 回測讀數 | 未清理 | 清理後 | 受到的影響 |
|---|---|---|---|
| 0050 年化波動率 | 26.04% | 17.96% | 風險被高估約 8 個百分點 |
| VIX 對未來台股波動的解釋比例 | 3.64% | 25.67% | 原本看似沒用的訊號恢復資訊量 |
| 每日調整策略的風險調整後評分 | 0.41 | 1.20 | 策略品質被假跌幅嚴重壓低 |
| 殖利率曲線與 126 日後波動的關係 | +0.117 | -0.272 | 連方向都翻成相反 |

四個例子也提醒一件重要的事:清資料後,舊結論可能維持,也可能翻盤。跨境避險研究重跑後,散戶不避險的主要結論仍然成立;殖利率曲線研究的關係方向卻由正轉負。哪一個結論會被推翻,事前看不出來。四組實驗都得重跑,再逐項比對。
DIY 回測先過三關
一般投資人不需要架一套交易所級資料庫,也能在回測前做三層體檢。
第一關:日期真的該開市嗎
先拿交易所日曆或正式休市公告核對。遇到臨時停市,套件可能漏列;遇到春節長假,套件也可能在邊界多排一天。日曆是第一張地圖,不能當唯一證人。
第二關:找一個獨立來源
加權指數缺資料時,可檢查同市場 ETF、成交量、融資融券或交易所統計。若第二來源仍有交易,價格缺席只是供應商漏資料。若兩邊都安靜,再檢查是否為正式休市。
兩個代號若都來自 Yahoo,背後可能仍是同一條資料供應鏈。源頭一起漏檔,核對兩遍也不會更可靠。證交所資料與價格供應商分開,證據才有互補性。
第三關:檢查連續性與重複列
把每個極端報酬的前後日期印出來。四個價格與前一天完全相同、成交量為零、單日突然跌 75% 又立刻恢復,都應先停下來查拆股、除息等公司行動與原始資料。合法拆股會有正式紀錄,也會在調整後價格保持連續。
發現問題後,把修正寫進資料載入流程,保留剔除日期與理由,再讓全部實驗重跑。直接改一格 JSON 只能讓眼前圖表變漂亮,下次下載或重算仍會復發。
看回測報告時,多問一句
你若使用網路上的回測工具,先找報告裡最大的單日漲跌。那一天若主導了整段波動率、資產配置或策略排名,至少核對價格走勢、成交量與公司行動。找不到資料清理說明的漂亮曲線,可信度要打折。
本次規則也有邊界。真停市若緊鄰預定連假,殘差法可能誤剔;未來若供應商換一種填充格式,現有偵測條件也可能漏抓。資料品質沒有一次設定永久安全的版本,異常清單與獨立來源都要留在流程裡。
一句話帶走:問市場那天發生什麼以前,先證明市場那天真的有交易。
延伸閱讀
- 巴威關了台股一天:13 次颱風假復盤:看清理後的停市事件結果。
- 用 Yahoo Finance 看 0050 歷史走勢?小心這個隱藏的數據陷阱:拆股調整錯位如何製造假跌幅。
- K 棒記了四個價格,收盤只用一個:開高低收各自能提供什麼資訊。
本文整合 experiments/k1675/、experiments/k758v2/、experiments/k761v2/ 與 experiments/k739bv2/ 的腳本及結果。資料來源包括 yfinance 的加權指數與 0050、exchange_calendars XTAI 4.13.2、證交所融資融券;主要停市樣本期間為 2012–2025,另以 2009–2026 的 clean-data 重跑量化壞資料影響。圖表由 results JSON 直接產生。歷史資料檢查不構成投資建議。
懶人包圖組



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