資料
我們用的是什麼資料
回測的結論最多只能和底下的資料一樣可靠。這一頁把我們手上有什麼、 涵蓋多久、以及哪些地方會靜默地給出錯誤數字全部攤開。
來源
| 每日價量 | 開高低收、成交量、成交金額、成交均價、市值、本益比、股價淨值比、 買賣價差、漲跌停價、注意股與處置股旗標。每個交易日一筆。 |
|---|---|
| 中文股名與產業 | 臺灣證券交易所 ISIN 對照表(免費公開資料)。 目前對上 1,987 檔、35 個產業別。 |
| 季度財報 | 公開資訊觀測站的綜合損益表、資產負債表、現金流量表(免費公開資料)。 目前 994,299 個數值、1,975 檔、 19 個欄位。 |
你可以拿來組因子的欄位
共 31 個,分成 6 群。 在「自由組合」裡任意勾選,系統就會把它們排列成因子。
每個欄位都帶著單位。系統只會把單位相同的欄位配成比值—— 「收盤價 ÷ 成交量」是價格除以股數,沒有意義,所以不會被產生出來。
可交易範圍
我們不在全部 2,693 檔裡選股,只在 1,125 檔裡選(2026-07-31 的數字)。 排除規則如下,每一條都有實測理由:
| 日均成交額 < 1,000 萬 | 台股流動性差距超過 700 倍(最低一成 69 萬、最高一成 5.23 億)。 不設門檻會選出一堆買不到的股票。 |
|---|---|
| ETF、ETN、興櫃 | ETN 中位日成交額只有 4.7 萬;興櫃沒有漲跌幅限制且報價稀疏。 |
| 處置股 | 處置期間改為分盤集合競價(5–20 分鐘才撮合一次)並要求全額圈存, 日內成交路徑和平常完全不同,不能當成正常可交易。 |
| 上市未滿一年、股價 < 5 元 | 歷史不足無法計算長週期因子;雞蛋水餃股的報酬分佈會扭曲整體統計。 |
| TEST 這個代號 | 資料源裡的測試用假標的,價格與成交量看起來都像真的,必須硬性排除。 |
財報怎麼對齊時間——這一段決定回測是真是假
如果把 Q1 的數字對齊到 3 月 31 日,回測就會在 4 月拿著「當時還沒有人看得到」 的財報去選股。這一個錯誤就足以憑空製造出巨大的假績效。
我們把每一筆財報標上法定申報截止日,並取各產業中最晚的那個:
| Q1 | 5 / 31 |
|---|---|
| Q2 | 8 / 31 |
| Q3 | 11 / 30 |
| Q4(年報) | 次年 3 / 31 |
實際公布通常比截止日更早,所以這個做法是偏保守的—— 它可能讓我們晚一點才用到資料,但永遠不會提早。
財報是「累計數」,不是單季數
公開資訊觀測站的損益與現金流是年度累計。以台積電營收為例:
所以在「自由組合」裡選到這類欄位時,介面會跳出提醒,並建議改用比值 (例如淨利÷權益)而不是變化率。
價格是還原過的,成交量與市值不是
這是這份資料最大的坑,而且它不會報錯,只會給你錯的數字。 價格經過還原(把除權息的影響抹平),但成交量、成交金額、市值都是原始值。
| 市值 ÷ 收盤價 | 不是股數。2019 年會高估 22%,而且偏誤大小和該檔的 殖利率成正比——拿去做規模因子等於偷偷混進一個股利因子。 |
|---|---|
| 成交金額 ÷ 成交量 | 不是均價。69.2% 的資料算出來會落在當天最高最低價之外。 |
我們在匯入階段就把兩個空間分開,並提供正確的還原因子。 你在平台上看到的每個數字都已經處理過,這裡寫出來是為了讓你知道我們檢查過。
沒有存活者偏差
資料裡包含期間內下市的公司。如果只留下「今天還活著」的公司, 任何回測都會系統性高估——因為你事先就把失敗者拿掉了。 我們的 2,962 檔裡包含這些已經消失的標的。