想自己抓台股日資料?FinMind 實測:讀回的數字跟證交所一樣嗎
📌 數據僅限本工具現階段參考用。本文只示範工具怎麼安裝、設定、執行,不是投資建議,也不推薦任何股票。
重點摘要
- FinMind 2.1.0 在全新虛擬環境用 pip 安裝約 11 秒。
- 指定 2330、2026-09-01 到 2026-11-04,讀回 42 列日資料。
- 與證交所直接取得的同一段日成交資料逐筆比對,開高低收與成交量 42 筆全部相符、0 筆不相符。
- 免費版呼叫即時快照會回「Your level is free」,代號 9999 則讀回 0 列、不報錯。
- 結論: 想自己抓台股日資料的人,這是省事的起點,但要注意免費版限制。
- 適合: 想用 Python 讀台股日資料、不想手動複製證交所網頁的人
- 不適合: 需要即時報價、分鐘線或付費資料集的人(本次未測)
| 實測項目 | 結果 |
|---|---|
| 安裝時間 | 約 11 秒 |
| 讀回列數(2330,9/1~11/4) | 42 |
| 與證交所逐筆比對 | 42 筆相符、0 筆不相符 |
| 打錯代號 9999 | 0 列、不報錯 |
| 即時快照(免費版) | 需升級會員 |
如果你想看台積電最近兩個月每天的開高低收,最直接的做法是開證交所網頁,一個月一個月複製貼上。資料多一點,就會想問:有沒有一段 Python 就能把日資料讀進來的工具?讀回來的數字,跟證交所公布的又一不一樣?這篇用 FinMind 實際跑一遍。測試設備:Mac mini M4 Pro(12 核、64GB)。本文示範資料是證交所公開資料,資料日期到 2026-11-04(最近一個交易日)。
下載
FinMind 是開源的台灣與國際金融資料套件(Apache-2.0),需要 Python 3.9 以上。我測的是 PyPI 上的 2.1.0,在全新的虛擬環境裡安裝約 11 秒。
python3 -m venv v && v/bin/pip install FinMind
設定
免費版不需要帳號與金鑰,直接建立 DataLoader 就能用。日資料來源是 FinMind 提供的資料服務;為了確認它跟證交所一致,我另外用證交所的公開日成交資訊(STOCK_DAY)取得同一段資料來比對。示範代號 2330 只是輸入示範。
跑起來
指定代號與日期,讀回日資料:
from FinMind.data import DataLoader
dl = DataLoader()
df = dl.taiwan_stock_daily(stock_id='2330', start_date='2026-09-01', end_date='2026-11-04')
print(len(df), 'rows, last day', df['date'].iloc[-1])
print(df[['date','open','max','min','close','Trading_Volume']].tail(5).to_string(index=False))

實測讀回 42 列,最後一天是 2026-11-04。接著我向證交所直接取得 2330 九、十、十一月三個月的日成交資訊,逐筆比對開盤、最高、最低、收盤與成交量:
| 項目 | FinMind | 證交所直接取得 |
|---|---|---|
| 筆數(9/1~11/4) | 42 | 42 |
| 開高低收、成交量逐筆相符 | 42 筆 | — |
| 不相符 | 0 筆 | — |

同一個 DataLoader 還有其他資料集。我另外試了本益比、股價淨值比(taiwan_stock_per_pbr)與月營收(taiwan_stock_month_revenue),都能各用一行讀回;這裡只列出它回傳的欄位,不解讀數字。
怎麼自己比對
比對不需要複雜工具。證交所的日成交資訊一次回傳一個月,所以三個月要取三次,每次之間我停了幾秒,避免請求太密。取回後用日期當索引,逐筆拿開盤、最高、最低、收盤和成交量跟 FinMind 讀回的欄位相比;欄位值完全相同才算相符。
curl -s "https://www.twse.com.tw/exchangeReport/STOCK_DAY?response=json&date=20261101&stockNo=2330"
要注意兩件事。第一,證交所的日期是民國年(例如 115/11/04),要先換成西元才對得上;第二,證交所的數字帶千分位逗號,成交量要先去掉逗號再比。這兩步沒做,比對一定全部不相符,並不是資料真的不同。
另外,這次只比對了日資料這一種,比對的是 2330 一檔;其他代號、其他資料集我沒有逐筆驗證,使用前建議照同樣方式抽查。
常見問題
- 代號打錯會怎樣? 我用 9999 試,它不報錯,只讀回 0 列。程式裡最好檢查
len(df)。 - 有些資料集讀不到? 免費版呼叫即時快照(
taiwan_stock_tick_snapshot)時,會回「Your level is free. Please update your user level.」,這類資料需要升級會員。 - 我沒測的部分: 分鐘線、財報、籌碼、付費資料,這次都沒有測,不在上面的結論內。
結論
想自己抓台股日資料、又不想一個月一個月複製網頁,FinMind 是省事的起點:安裝約 11 秒,日資料與證交所 42 筆逐筆相符。限制是免費版有些資料集要升級,打錯代號也不會提醒。
- 專案:https://github.com/FinMind/FinMind
- 授權:Apache-2.0