# 想自己抓台股日資料？FinMind 實測：讀回的數字跟證交所一樣嗎

- 網址：https://blog.valenvan.uk/posts/finmind-finmind.html
- 發布日期：2026-11-05
- 測試設備：Mac mini M4 Pro（12 核、64GB）
- 專案：FinMind/FinMind（https://github.com/FinMind/FinMind），Apache-2.0 授權
- 測試版本：2.1.0（PyPI）
- 實測影片：https://www.youtube.com/shorts/Svs4AFdNJT0
- 分類：金融工具區（https://blog.valenvan.uk/finance.html）

> 📌 數據僅限本工具現階段參考用。本文只示範工具怎麼安裝、設定、執行，不是投資建議，也不推薦任何股票。

## 重點摘要

- 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 秒。

```bash
python3 -m venv v && v/bin/pip install FinMind
```

## 設定

免費版不需要帳號與金鑰，直接建立 DataLoader 就能用。日資料來源是 FinMind 提供的資料服務；為了確認它跟證交所一致，我另外用證交所的公開日成交資訊（STOCK_DAY）取得同一段資料來比對。示範代號 2330 只是輸入示範。

## 跑起來

指定代號與日期，讀回日資料：

```python
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))
```

![讀回 2330 日資料](https://blog.valenvan.uk/img/finmind-finmind-article_1.png)

實測讀回 42 列，最後一天是 2026-11-04。接著我向證交所直接取得 2330 九、十、十一月三個月的日成交資訊，逐筆比對開盤、最高、最低、收盤與成交量：

| 項目 | FinMind | 證交所直接取得 |
|---|---|---|
| 筆數（9/1～11/4） | 42 | 42 |
| 開高低收、成交量逐筆相符 | 42 筆 | — |
| 不相符 | 0 筆 | — |

![逐筆比對結果](https://blog.valenvan.uk/img/finmind-finmind-article_2.png)

同一個 DataLoader 還有其他資料集。我另外試了本益比、股價淨值比（`taiwan_stock_per_pbr`）與月營收（`taiwan_stock_month_revenue`），都能各用一行讀回；這裡只列出它回傳的欄位，不解讀數字。

### 怎麼自己比對

比對不需要複雜工具。證交所的日成交資訊一次回傳一個月，所以三個月要取三次，每次之間我停了幾秒，避免請求太密。取回後用日期當索引，逐筆拿開盤、最高、最低、收盤和成交量跟 FinMind 讀回的欄位相比；欄位值完全相同才算相符。

```bash
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
