懶惰之最|GitHub 實測

三檔台股收盤價一次抓成表:yfinance 實測,以及表裡多出來的那一天

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

重點摘要

  • yfinance 1.7.0 在 Python 3.12 以 pip install -e . 安裝約 11 秒,不需要金鑰。
  • 一次下載 2330.TW、2317.TW、2454.TW 在 2026 年 10 月的日資料,得到 20 列表格,可存成 close.csv。
  • 與證交所公開資料對照:收盤價 57 筆全部相同,但表比證交所多出 10 月 23 日一列,三檔成交量皆為 0、價格與前一天相同。
  • 成交量 57 筆與證交所公布的數字都不同,收盤價可用,成交量不直接引用。
  • 結論: 抓日收盤價很省事,但抓完要先對交易日、刪掉零成交量的列,成交量不直接引用。
  • 適合: 要把幾檔公開價格整理進報告、願意跑 Python 的人
  • 不適合: 需要逐筆精確成交量,或完全不想寫程式的人
實測項目 結果
安裝時間 約 11 秒
下載列數 20 列(三檔、2026 年 10 月)
證交所交易日數 19 天
收盤價對照 57 筆全部相同
成交量對照 57 筆皆不同
多出的一列 10/23,三檔成交量皆為 0

月底要交一份報告,裡面得放三檔股票這個月的收盤價。一檔一檔打開網頁複製很花時間,換個月又得重來。yfinance 是 GitHub 上很多人用的開源 Python 套件,輸入股票代號和日期,就能一次把價格抓成表格。這篇照順序記錄我怎麼裝、怎麼設定、跑出什麼,並把結果拿去跟證交所公開資料對照。

測試設備:Mac mini M4 Pro(12 核、64GB)。測試版本:yfinance 1.7.0(Apache-2.0 授權),Python 3.12。示範代號 2330、2317、2454 只是輸入示範,不代表任何建議。本文示範資料是證交所公開資料,資料日期為 2026-10-30 收盤後。

下載

需要 Python 3.10 以上(我用 3.12)。從原始碼安裝:

git clone https://github.com/ranaroussi/yfinance
cd yfinance
pip install -e .

安裝約 11 秒,會一併裝好 pandas、numpy、requests 等相依套件。想直接用 PyPI 版本,也可以 pip install yfinance。

設定

不需要註冊或金鑰。台股代號在後面加 .TW(上市)就能用,例如台積電是 2330.TW。日期用 start、end,其中 end 不含當天,所以要抓到 10 月 30 日,end 要寫 10 月 31 日。

為了跟證交所對照,我還用 requests 抓證交所公開的個股日成交資訊(STOCK_DAY),這段是我自己寫的比對腳本,不是 yfinance 的功能。

跑起來

先一次抓三檔,只取收盤價並存成 CSV:

import yfinance as yf
df = yf.download(['2330.TW','2317.TW','2454.TW'],
                 start='2026-10-01', end='2026-10-31',
                 auto_adjust=False, progress=False)
close = df['Close']
close.to_csv('close.csv')
print(len(close))

輸出是 20 列、三個欄位的表格,close.csv 可以直接貼進報告或試算表。

一次抓三檔,表有 20 列

接著把同一份資料跟證交所 10 月的個股日成交資訊逐筆對照:

項目 證交所 yfinance
10 月交易日數 19 20
10/23 無資料 有一列
10/23 成交量 — 0(三檔都是)
收盤價對照 57 筆 全部相同

對照結果:多出一天,收盤價 57/57 相符

收盤價三檔、十九個交易日共 57 筆,一筆都沒有差。但表裡多了 10 月 23 日這一列:三檔成交量都是 0,收盤價跟 10 月 22 日完全一樣。

常見問題

表為什麼比證交所多一天? 我只確認到:yfinance 回傳的表有 10/23,證交所公開資料沒有這天,且三檔成交量都是 0、價格照抄前一天。我沒有查出原因,所以不下結論。

多出來的一列會怎樣? 如果拿去做圖或算平均,這一天會被多算一次。我的做法是抓完先對一次交易日,把成交量為 0 的列刪掉再存檔:

close = close[(df['Volume'] > 0).all(axis=1)]

成交量能直接用嗎? 這次對照的 57 筆成交量跟證交所公布的數字沒有一筆相同。收盤價我放心用,成交量我不直接引用;需要成交量時,建議用證交所公開資料。

終端機跳出一堆 Pandas4Warning? 這是 pandas 3.x 對套件內部寫法的棄用警告,不影響結果。範例中用 python3 -W ignore 隱藏。

沒測的部分: 只測了三個示範代號、一個月的日資料;沒測分鐘線、上櫃(.TWO)、配息調整價、財報資料,也沒測長期穩定性。

結論

這個工具抓日收盤價很省事:幾行就把三檔變成一張表、存成 CSV。但抓下來的表不要直接當成標準答案:先跟交易日對一次、刪掉零成交量的列,成交量也不直接引用。適合要把幾檔公開價格整理進報告、願意跑 Python 的人;不適合要逐筆精確成交量、或完全不想寫程式的人。

專案:https://github.com/ranaroussi/yfinance(Apache-2.0)

測試設備:Mac mini M4 Pro(12 核、64GB)。內容依實際執行結果撰寫,數據為撰寫當時的實測值。

← 金融工具區|所有實測