跳至主要內容
台股研究 約 13 分鐘閱讀

Python 台股 API 比較:FinMind、yfinance、證交所 OpenAPI 怎麼選

Python 台股 API 怎麼選?本文比較 FinMind、yfinance 台股、證交所 OpenAPI stock_day_all、twstock、富果與 finlab,拆解歷史資料、除權息、財報公布日、爬蟲限制與台股資料庫下載。最後用 FinLab Skill 一行安裝,重現 13 年籌碼策略回測。

一行抓台股籌碼 CAGR 30.1% Sharpe 1.05

Python 一行抓台股籌碼資料:投信買超 × 月營收動能 13 年實測 CAGR 30.1%

Python 台股 API 怎麼選?資料品質比起始年更決定回測成敗

用 Python 做台股分析,大部分時間其實卡在「把資料弄到手」:爬蟲被擋、欄位零散、財報要對齊公布日、價格要自己調除權息。搜尋「python 台股 api」「python 台股套件」「台股資料庫下載」時,最常見的選項是證交所 OpenAPI、yfinance、FinMind、twstock、券商 API 與 finlab。我們在 2026 年 6 月逐一實測,結果如下。

方法 取得方式 股價起始年 涵蓋檔數 免費額度 已調除權息? 內建避前視偏差? 一句話定位
twstock pip 套件(爬證交所) 約 2010 上市為主 全免費 ❌ 要自己調 最輕量,但只有價量、易被擋
證交所 OpenAPI 官方 REST API 僅當日/近期 全市場 全免費 官方來源,STOCK_DAY_ALL 適合抓當日全市場,歷史要自己每天存
yfinance pip 套件(Yahoo 公開資料) 約 2000 含台股 全免費 ⚠️ 可取調整後價格,需檢查欄位 有歷史,但台股代號、欄位與缺漏要自己驗
FinMind 開源 API + Python SDK 1994 全市場 有免費分級 ✅ 有還原股價表 ❌(要自己對齊) 資料表廣、起始早,適合做資料倉儲與研究
富果 Fugle 券商 API 約 2010 全市場 開戶後免費 穩定、可下單,需開戶綁券商
finlab pip 套件 + API 2007 2,748 每月免費額度 ✅ 內建 etl:adj_close index_str_to_date() 股價+月營收+財報+籌碼一行同格式,回測即用

涵蓋檔數與起始年為 finlab 實測值(查詢於 2026-06,見文末可下載腳本);其餘來源為各官方文件公開資訊。FinMind 官方 PyPI 頁面列出 pip install FinMind、Python SDK、每日更新與 API 請求限制;yfinance 官方文件說明它是使用 Yahoo 公開 API 的開源工具,主要供研究與教育用途;證交所 OpenAPI 頁面列出 /exchangeReport/STOCK_DAY_ALL 為上市個股日成交資訊端點。

選資料源時,很多人只看「歷史最早到哪一年」,於是覺得 FinMind 從 1994、yfinance 從 2000 一定占優勢。但對回測來說,決定成敗的通常是另外兩件事:

  1. 除權息有沒有調:台股每年配息 3–5%,5 年累積報酬若不還原會被低估 15–25%,基準直接失真。
  2. 有沒有避開前視偏差:財報、月營收都有「公布日」,回測若用到當天還沒公布的數字,績效會虛高、實單卻做不出來。

finlab 的價格從 2007 才開始,比 FinMind 晚 13 年。代價換來的是:這兩件最容易出錯的事它預設處理好,而且股價、月營收、財報、籌碼用的是同一種表格、同一行 data.get()。對回測而言,這層差異往往比多 13 年歷史更重要。下表把搜尋意圖對到資料源:

搜尋問題 適合先看哪一段 快速答案
openapi.twse.com.tw/v1/exchangereport/stock_day_allstock_day_all 證交所 OpenAPI 這是官方當日上市個股日成交資訊端點,適合抓當日全市場,不是完整歷史資料庫
FinMindpip install finmindfinmind api 申請 FinMind vs finlab FinMind 適合資料表探索與自建資料倉儲;申請認證金鑰後額度較高
yfinance 台股yahoo finance api 台股 yfinance 適合快速拿歷史價量,但台股欄位、調整後價格與缺漏要檢查
python 台股 apipython 台股套件 6 種方法比較 若目標是回測,資料對齊與除權息比「能抓到」更重要
台股資料庫下載證交所api歷史資料 CSV / 本地資料庫 官方 OpenAPI 要每天存;finlab 可抓成 DataFrame 後存 CSV、parquet 或 SQLite

前視偏差(Look-ahead bias):回測時不小心用到當下還沒被市場知道的資訊(例如還沒公布的財報),會讓策略在歷史上看起來很神,實盤卻完全複製不出來。


先把資料接到回測:用 FinLab Skill 建第一個可執行環境

如果你的目標是「可回測的台股資料」而不只是下載 CSV,建議先把環境接起來,再回頭比較各 API 的細節。把下方提示詞交給 AI,它會安裝 FinLab Skill、引導 finlab.login(),並用本文的 data.get() 範例抓第一張收盤價表。

你現在卡在哪 下一步
只想看今天全市場行情 先看證交所 OpenAPI 的 STOCK_DAY_ALL
想比較 FinMind、yfinance、finlab 讀完本文六種資料源比較
想馬上跑一個策略 複製下方提示詞,讓 AI 重現本文籌碼 × 月營收回測
免費試用

用 AI 開始 FinLab

把這句話交給你的AI,它會帶你完成設定並做出第一個策略。

告訴你的AI:

幫我設定 FinLab Skill,用 Python 抓台股資料並重現這篇文章籌碼回測,請讀:https://finlab.finance/setup?relatedUrl=/blog/python-get-taiwan-stock-data

顯示程式碼
import finlab
finlab.login()
from finlab import data
 
close = data.get('price:收盤價')

免費方案有每月資料額度(以 MB 計),做選股、回測、學習都夠用;需要更高頻率更新或更大量下載再升級。整個流程不需要寫爬蟲、不必背 API 文件,之後所有資料都是同一行 data.get('資料表:欄位')。如果你想看 AI agent 的安裝方式與支援工具,也可以看 FinLab AI Agent 說明


2026 最新實測:6 種抓台股資料方法逐一示範

下面每種方法都附一段可複製的程式碼,讓你比較「拿一檔台積電(2330)收盤價要寫多少」。

方法一:twstock(最輕量,只有價量)

顯示程式碼
import twstock
stock = twstock.Stock('2330')
prices = stock.fetch_from(2024, 1)   # 從 2024/01 抓到現在
print(prices[-1].close)              # 最近一筆收盤價

優點是零成本、安裝即用;缺點是它本質是爬證交所,抓太頻繁會被擋,而且只有價量,沒有財報、籌碼,除權息也要自己處理。適合做最簡單的價格小工具。

方法二:證交所 OpenAPI(官方,但只留最新)

顯示程式碼
import requests, pandas as pd
 
url = "https://openapi.twse.com.tw/v1/exchangeReport/STOCK_DAY_ALL"
df = pd.DataFrame(requests.get(url).json())
print(df.head())   # 全市場「當日」收盤、開高低、成交量

這是證交所官方端點,資料正確、免費。你在 Google 看到的 openapi.twse.com.tw/v1/exchangereport/stock_day_all/v1/exchangereport/stock_day_allstock_day_all openapi.twse,多半都在找同一個資料集;實際文件頁面列出的路徑是 https://openapi.twse.com.tw/v1/exchangeReport/STOCK_DAY_ALL

它的定位很清楚:抓上市個股當日全市場行情,不是下載完整歷史股價。若要用它建立台股歷史資料庫,你需要每天收盤後排程:

需求 證交所 OpenAPI 能不能滿足 實務做法
抓今天所有上市股票收盤價 可以 每日呼叫 STOCK_DAY_ALL
回補 10 年歷史日資料 不適合 需改用歷史資料頁、其他資料源,或自行長期累積
建立本地台股資料庫 可以,但要自己維護 每天存成 CSV、parquet 或 SQLite
做含息回測 不夠 還要處理除權息、下市資料與交易成本

這正是 ARON HACK 用富果 API 那篇也點出的痛點:證交所只留最新,得自行備份。若你的目標是「今天行情表」,OpenAPI 很好;若你的目標是「可回測的 10 年台股資料庫」,資料清洗與保存成本要先算進去。

方法三:yfinance(有歷史,但台股偶爾不穩)

顯示程式碼
import yfinance as yf
 
df = yf.download("2330.TW", start="2010-01-01", auto_adjust=False)
print(df[["Close", "Adj Close"]].tail())

yfinance 使用 Yahoo Finance 公開資料,安裝簡單、歷史也夠長。台股代號要加 .TW.TWO,例如上市台積電是 2330.TW,上櫃股票通常用 .TWO。這個工具很適合快速看價量,但正式回測前要做三件檢查:

檢查項目 為什麼重要
CloseAdj Close 是否都在 yfinance 版本與 auto_adjust 參數會影響調整後價格欄位
是否有缺日或整段缺漏 台股資料維護不如美股穩定,長回測要補交易日
ETF、上櫃股、下市股是否齊全 台股策略常需要完整股票池,單檔下載容易有生存者偏誤

方法四:FinMind(開源、起始最早、資料表最廣)

顯示程式碼
pip install FinMind
顯示程式碼
from FinMind.data import DataLoader
 
api = DataLoader()
df = api.taiwan_stock_daily(stock_id="2330", start_date="1994-01-01")
print(df.tail())

FinMind 是值得尊敬的開源專案,官方說明涵蓋台股技術面、基本面、籌碼面、衍生性商品與海外資料,資料每日更新;PyPI 頁面也列出 pip install FinMind、Python SDK 與 API request 上限。若要提高額度,可到 FinMind 會員頁取得認證金鑰,再依官方文件登入。它最適合做「資料倉儲」與資料表探索。做嚴謹回測時,仍要自己處理幾件事:

題目 FinMind 的優勢 回測時要自己補的工作
股價歷史 起始早,適合長期資料研究 還原價、下市股、股票池口徑要固定
資料表探索 資料表廣,技術面、基本面、籌碼面都有 不同資料表欄位格式要自己合併
API 認證 可註冊取得金鑰,提高請求額度 需要管理金鑰、額度與批次下載
月營收、財報 有基本面資料 公布日要對齊交易日,避免前視偏差

FinMind vs finlab:資料倉儲和回測環境的差別

FinMind 和 finlab 不該簡化成誰比較好;它們服務的工作不一樣。

比較項目 FinMind finlab
主要定位 開源金融資料平台與 API 台股量化研究、資料、回測與選股流程
安裝方式 pip install FinMind pip install finlab,也可用 FinLab Skill 讓 AI 安裝
資料取得 DataLoader().taiwan_stock_daily(...) 等方法 data.get('資料表:欄位') 統一取得整個市場
適合情境 自建資料庫、探索資料表、做自訂資料工程 快速回測、因子研究、AI 對話改策略
最大優勢 起始年早、資料表多、開源生態 同格式資料、回測引擎、除權息與公布日對齊
主要成本 要自己清洗、合併、對齊資料 歷史起始年較晚,進階資料有額度與方案限制

如果你的目標是「把台股資料下載下來做自己的資料庫」,FinMind 很適合;如果你的目標是「用台股資料快速做選股回測」,finlab 的 data.get()sim() 與 FinLab Skill 會少掉很多資料工程。

方法五:富果 Fugle(穩定、可下單,需開戶)

顯示程式碼
from fugle_marketdata import RestClient
client = RestClient(api_key="YOUR_KEY")
data = client.stock.historical.candles(symbol="2330", from_="2024-01-01")
print(data["data"][:3])

富果是券商級 API,穩定、可同時下單,適合要把回測接到實盤的人。代價是要開戶綁券商、申請金鑰。資料品質好,但歷史約從 2010 起。

方法六:finlab(一行抓,且回測即用)⭐

前面五種有個共同問題:每換一種資料(價格、營收、籌碼),就要換一套 API、換一種欄位格式、自己對齊日期。finlab 把整個市場整理成統一的「日期 × 股票」表格,任何資料都用同一行指令:

顯示程式碼
from finlab import data
 
close = data.get('price:收盤價')   # 一張表:列=日期,欄=股票代號,整個市場一次到手
print(close['2330'].tail())        # 看台積電最近幾天收盤價

實際印出(查詢於 2026-06):

顯示程式碼
date
2026-06-01    2355.0
2026-06-02    2380.0
2026-06-03    2425.0
2026-06-04    2385.0
2026-06-05    2365.0
Name: 2330, dtype: float64

要哪一檔就 close['2330']代號用字串),不必一檔一檔抓。下一節我們把月營收、財報、籌碼也用同一行拿到。


一行抓多種資料:股價、月營收、財報、籌碼

finlab 與其他來源最大的差異在於換資料不換寫法。下表覆蓋數字為 2026-06 實測:

資料 一行指令 涵蓋檔數 起始
日收盤價 data.get('price:收盤價') 2,748 檔 2007(近 20 年)
除權息還原價(基準用) data.get('etl:adj_close') 2,748 檔 2007
月營收年增率 data.get('monthly_revenue:去年同月增減(%)') 2,289 檔 2005(21 年)
財報 ROE data.get('fundamental_features:ROE稅後') 2,832 檔 2013-Q1
投信買賣超 data.get('institutional_investors_trading_summary:投信買賣超股數') 2,668 檔 2012-05
外資買賣超 data.get('institutional_investors_trading_summary:外陸資買賣超股數(不含外資自營商)') 2,668 檔 2012-05

依資料類型,往下看對應策略

每一種資料都對應到一套可重現的台股策略實作。抓到資料後,依你想做的方向往下接:

資料類型 想做什麼 接著看哪一篇
月營收 用營收成長動能選股 月營收動能策略月營收選股三種方法
財報 ROE 用獲利品質拆解選股 杜邦分析選股
籌碼(法人買賣超) 跟著法人資金動向 法人籌碼選股
美股 把同一套寫法搬到美股 美股資料庫使用指南

把台積電的股價、月營收 YoY、財報 ROE、籌碼一次印出來,你會看到它們長得「一模一樣」(都是同一種序列):

顯示程式碼
print(data.get('monthly_revenue:去年同月增減(%)')['2330'].tail())
# 2026-01-12    20.43
# 2026-02-10    36.81
# 2026-03-10    22.17
# 2026-04-10    45.19   ← 月營收年增 +45.19%
# 2026-05-11    17.49
 
print(data.get('fundamental_features:ROE稅後')['2330'].tail())
# 2025-Q1     8.08
# 2025-Q2     8.62
# 2025-Q3     9.36
# 2025-Q4     9.63
# 2026-Q1    10.06     ← 單季 ROE 逐季回升
 
print(data.get('institutional_investors_trading_summary:投信買賣超股數')['2330'].tail())
# 2026-06-03     647975
# 2026-06-04     537838
# 2026-06-05    2900428  ← 投信單日買超近 2,900 張(2026-06-05,來源:finlab)

下面這張圖就是一行 data.get() 拿到的東西:台積電近 120 個交易日的股價,疊上投信(藍)、外資(綠)的單日買賣超。

一行 data.get() 拿到的資料長這樣:台積電股價疊三大法人籌碼

籌碼(法人買賣超):投信、外資、自營商三大法人每天買進與賣出的差額(淨買賣超)。市場常把法人連續買超視為認同訊號,但這個直覺禁不禁得起回測,下一節用兩組對照來驗證。


用一個籌碼策略檢驗:這份資料能接上回測流程

資料乾不乾淨,跑一次回測就知道。我們用一個跨多種資料的籌碼策略實跑,順帶展示 finlab 的廣度:同一份程式碼裡同時用到籌碼(投信)、基本面(月營收)與價量(流動性),差別只是多打幾行 data.get()

「跟著聰明錢」這個想法在學術上有根據,但效果好壞取決於怎麼用:

論文 一句話白話
Grinblatt, Titman & Wermers (1995) 共同基金普遍採取動能交易,基金買超的持股後續表現較佳。
Jegadeesh & Titman (1993) 過去 3–12 個月的贏家會續強(動能效應),法人連買常與價格動能同向。
Barber, Lee, Liu & Odean (2009) 用台灣完整成交資料證明:散戶交易長期承受顯著成本,法人交易相對占優。
Cohen, Gompers & Vuolteenaho (2002) 機構傾向在「現金流好消息」上加碼;籌碼若搭配基本面改善訊號更可靠。

這幾篇放在一起,指向一個可檢驗的假設:籌碼訊號搭配基本面把關時較可靠,只看籌碼則容易追在高點。下面用兩組對照回測這個假設。

對照組:投信連買 5 天就追,13 年只有 4.76% CAGR

常見的第一直覺是投信連續買超就跟。我們照這個直覺寫(連買 5 日、選買超最多的 20 檔、週頻換股):

顯示程式碼
trust = data.get('institutional_investors_trading_summary:投信買賣超股數')
vol   = data.get('price:成交股數')
streak = (trust > 0).rolling(5).sum() >= 5          # 連續 5 日買超
liq    = vol.average(20) > 500*1000                 # 流動性過濾
pos    = trust.rolling(5).sum()[streak & liq].is_largest(20)
from finlab.backtest import sim
report = sim(pos.loc['2013':], resample='W')        # 週頻換股

結果是 CAGR 4.76%、最大回撤 −51.8%、Sharpe 0.24。不但跑輸含息 0050(CAGR 19.86%),回撤也接近腰斬。這與 Barber et al. 的觀察一致:單純跟著法人短線進出的那一方,長期報酬並不理想。

優化組:籌碼強度 × 月營收動能,13 年 CAGR 30.1%

對照組的問題有兩個:用「買超股數」會偏向大型股,而且完全沒有基本面把關。優化組改成這樣:

  • 投信買超強度 = 20 日投信淨買超 ÷ 20 日成交量(用占比而非絕對股數,降低大型股偏誤);
  • 疊上月營收年增 > 0、且月營收創 12 個月新高(基本面把關);
  • rank 把兩個訊號做複合排序選 15 檔,月頻換股,並用 resample_offset='14D' 對齊月營收公布日(避前視偏差、捕捉公布後的營收動能):
顯示程式碼
trust_intensity = (trust.rolling(20).sum() / vol.rolling(20).sum())  # 籌碼強度
rev     = data.get('monthly_revenue:當月營收')
rev_yoy = data.get('monthly_revenue:去年同月增減(%)')
rev_high = rev.average(3) == rev.average(3).rolling(12).max()        # 營收創高
 
score = trust_intensity.rank(axis=1, pct=True) + rev_yoy.rank(axis=1, pct=True)
cond  = (vol.average(20) > 500*1000) & rev_high & (rev_yoy > 0)
position = score[cond].is_largest(15)
 
report = sim(position.loc['2013':], resample='M', resample_offset='14D')

績效對照(2013-01 ~ 2026-06,基準 0050 用含息 etl:adj_close):

指標 對照組(天真追投信) 優化組 ⭐(籌碼強度×營收) 0050(含息)
年化報酬(CAGR) 4.76% 30.15% 19.86%
月報酬 Sharpe 0.23 1.05
月報酬 Sortino 0.43 2.18
日報酬 Sortino 0.37 1.71
最大回撤(MDD) −51.8% −41.7%
月勝率 47.5% 49.9%

數字來源:finlab sim() 回測,基準 0050 採 etl:adj_close(已調除權息)。月報酬 Sortino 2.18 通過風險調整門檻(≥1.5)。完整可重現腳本見文末下載。

把兩條曲線和大盤畫在一起。藍色是優化組,橘色是天真追籌碼的對照組,灰色虛線是含息 0050:

籌碼策略 13 年權益曲線:優化組 vs 天真追籌碼 vs 0050

逐年來看,優化組在多數年份贏過 0050,且在 2018、2022 的空頭年回撤可控:

逐年報酬:籌碼策略 vs 0050

下面是完整互動式回測報告:月報酬熱力圖、權益曲線、年度績效、持股明細全在裡面,可直接在文章中操作:

回測方法與限制(這些數字怎麼算出來的)

漂亮的數字要先交代口徑才有意義。本策略的回測設定與已知限制如下:

項目 本文設定
回測區間 2013-01 ~ 2026-06,全段 in-sample;未做樣本外/滾動測試
交易成本 手續費以 0.1425% × 1/3(打三折)計;sim() 預設於賣出扣證交稅 0.3%
滑價 未額外假設;實際衝擊取決於資金規模與個股成交量,本文未估算策略容量
股票池 全上市櫃,加 20 日均量 > 500 張的流動性過濾(避免回測買得到、實單買不到)
排除類別 未特別排除金融股/KY 股/全額交割股;結果可能含此類偏誤
前視偏差 月營收用 resample_offset='14D' 對齊公布日;籌碼、價量為當日可得資料
權重與持股 等權,持股 15 檔,月頻換股

把這幾項攤開講,目的是讓你能判斷哪些數字可信、哪些要打折看。例如全段 in-sample 意味著參數可能對這 13 年的市況有後見之明,實單前值得自己再跑一次樣本外。

可以在這十幾行內把籌碼、月營收、流動性組成策略並回測,關鍵在於這些資料一行就拿到、格式統一、除權息與公布日都對齊好了。換成爬蟲方案,光把這三種資料對齊到同一張交易日表格,就要寫上百行清洗碼。想看更多因子組合,可參考 四因子選股實戰:複合因子贏過 0050法人籌碼跟單術


不離開這頁,直接跑一次真實回測

資料接上回測流程長什麼樣,用下面的回測器直接體驗:選一組因子、按執行,就會在瀏覽器裡用真實台股資料跑出淨值曲線與績效指標,不需要安裝任何環境。

台股策略回測器

回測區間 2020-01 ~ 2026-06
多因子複合 vs 0050 含息(累積淨值,對數軸)
1x2x3x5x2020-022021-032022-042023-052024-062025-072026-06
多因子複合(穩健)0050 含息
指標(2020–2026)多因子複合0050 含息
年化報酬(CAGR)36.8%35.2%
日夏普比率1.261.46
索提諾比率1.962.5
最大回撤-47%-34%
平均持股數40 檔1(ETF)

因子:營收成長、ROE 品質、價格動能、低波動。數字為 finlab sim() 實跑、已扣手續費與證交稅;過去績效不代表未來。

想用最新台股資料、自己改因子組合與持股數即時重算?登入 FinLab 後,整個回測會在你的瀏覽器跑真實 finlab 引擎(資料截至今日)。

把資料存成 CSV / 本地資料庫(離線重用)

抓下來的是標準 pandas DataFrame,要存檔、離線重用都很直覺:

顯示程式碼
close = data.get('price:收盤價')
close.to_csv('tw_close.csv')                 # 存成 CSV
close.to_parquet('tw_close.parquet')         # 大檔建議 parquet,讀寫更快
 
# 存進 SQLite 本地資料庫
import sqlite3
con = sqlite3.connect('tw_stock.db')
close['2330'].to_frame('close').to_sql('tsmc_close', con, if_exists='replace')

finlab 本身也會把抓過的資料快取在本地,同一個資料表第二次 data.get() 幾乎瞬間回應,不會重複消耗額度。


反爬蟲被擋怎麼辦?

如果你執意自己爬證交所/Yahoo,常見會踩到:

症狀 原因 實務解法
抓幾次後回 HTTP 403 / 429 同一 IP 請求過快被限流 time.sleep() 隨機延遲、降頻;嚴重時換 IP
回傳空白或亂碼 沒帶 User-Agent、編碼錯 補 headers、用 big5/utf-8 正確解碼
抓到一半欄位變了 網站改版 寫防呆、定期維護解析器
歷史資料抓不到 證交所只留最新 自己每天排程存檔累積

爬蟲的維護成本是長期的:網站一改版,你的解析程式就跟著壞。這也是正式量化研究多半改用整理好的資料源的原因,把時間花在策略上,而不是跟反爬蟲機制周旋。finlab 走 API,不會被擋,資料表也由團隊維護更新。延伸閱讀:程式交易是什麼?從零開始的自動化交易用 Python 計算 158 種技術指標Python 選股與回測教學


延伸閱讀:從台股資料到程式交易

這篇是 程式交易 裡「用 Python / 工具取得資料」的入門頁。延伸學習路徑:


常見問題(FAQ)

問題 回答
Python 台股 API 要選哪個? 若只是抓當日上市行情,證交所 OpenAPI 的 STOCK_DAY_ALL 夠用;若要快速抓歷史價量,yfinance 或 FinMind 上手快;若要做含息回測、月營收、財報與籌碼策略,finlab 的資料格式與回測流程比較完整。
Python 股價怎麼抓? 看需求選工具:只抓單檔最輕量用 twstock,twstock.Stock('2330')fetch_from() 幾行就拿到 2330 的價量;要含歷史價量用 yfinance 的 yf.download("2330.TW"),上櫃股票通常用 .TWO;要一次拿整個市場,用 finlab 的 data.get('price:收盤價') 一行取得 2,748 檔(2007 起),單檔用 close['2330'] 取出,代號要用字串。
openapi.twse.com.tw/v1/exchangeReport/STOCK_DAY_ALL 是什麼? 這是證交所 OpenAPI 的上市個股日成交資訊端點,常被搜尋成小寫 stock_day_all。它適合抓當日全市場行情,不是完整歷史資料庫;要做歷史回測,需要每天排程保存,或改用已整理好的歷史資料源。
證交所 API 有歷史資料嗎? STOCK_DAY_ALL 主要提供當日全市場行情。證交所另有月報、個股日成交等歷史查詢頁,但格式、頻率、欄位與批次下載都要自己整理。若你要長期台股資料庫,重點是保存排程、除權息、下市股與交易日對齊。
FinMind 和 finlab 差在哪? FinMind 是開源金融資料平台,資料表多、起始年早,適合探索資料與自建資料庫;finlab 是台股量化研究與回測環境,強項是同一種表格格式、data.get()sim()、除權息與公布日對齊。資料工程能力強的人可用 FinMind;想把時間放在策略驗證的人通常會偏向 finlab。
pip install finmind 要怎麼用? 官方套件名稱在 PyPI 上是 FinMind,常見安裝指令是 pip install FinMind。安裝後可用 from FinMind.data import DataLoader,再呼叫 taiwan_stock_daily() 抓股價。若有認證金鑰,可依官方文件登入以提高請求額度。
FinMind API 要申請嗎? 不一定。FinMind 可不登入使用,但官方文件列出未登入與登入後的 request 上限不同;註冊並取得認證金鑰後,適合較大量或較穩定的批次下載。金鑰建議放環境變數,不要寫在程式碼或筆記裡。
yfinance 可以抓台股嗎? 可以,上市股票通常用 .TW,上櫃股票通常用 .TWO,例如 2330.TW。但 yfinance 官方定位是使用 Yahoo 公開 API 的研究工具,台股長回測要檢查缺日、欄位、auto_adjustAdj Close,不要只下載一次就拿去做正式策略。
台股歷史資料最早到哪一年? 看來源:FinMind 約 1994、yfinance 約 2000、finlab 股價 2007、月營收 2005;但對回測而言,除權息有沒有調、財報公布日有沒有對齊比起始年更關鍵。finlab 這兩點預設做好。
台股歷史資料下載有哪些管道? 證交所 OpenAPI 只提供當日行情,要自己每天排程保存才能累積歷史;FinMind 約 1994 起、yfinance 約 2000 起、finlab 股價 2007 起且一次涵蓋 2,748 檔,可直接抓成 DataFrame,再用本文的 to_csv()to_parquet() 或 SQLite 範例存成本地歷史資料庫。回測前先確認除權息已還原,finlab 直接用 etl:adj_close 即可。
台股資料庫下載後要存什麼格式? 小型研究可存 CSV;中大型資料建議 parquet,比 CSV 更快更省空間;若要用 SQL 查詢單檔或多檔資料,可放 SQLite。本文示範 to_csv()to_parquet() 與 SQLite。
證交所爬蟲限制怎麼處理? 降低頻率、加入隨機延遲、補 User-Agent、處理編碼與欄位變動都必要。長期維護成本不低,尤其網站改版或限流時。若你的目標是策略研究,使用整理好的 API 通常比維護爬蟲省時間。
要先開戶嗎? 不用。finlab、twstock、yfinance、FinMind 都只要註冊或直接 pip 安裝;只有富果 Fugle 這類券商 API 需要開戶綁券商。
免費版能抓多少? finlab 免費方案有每月資料額度(以 MB 計),做選股與回測足夠;twstock、yfinance、證交所 OpenAPI 全免費但功能單一;FinMind 有免費分級。
盤中即時報價怎麼辦? 本文資料以日頻為主,適合選股與回測。要盤中即時/逐筆,需用券商級即時 API(如富果),或 finlab 的即時資料方案。
有美股資料嗎? finlab 有美股,指令格式相同;yfinance 對美股支援最完整;FinMind 也有海外資料表。
不會寫 Python 可以用 FinLab Skill 嗎? 可以。把上方 FinLab Skill 安裝元件產生的提示詞交給 AI,它會協助安裝、抓資料並重現本文回測。你仍然可以看見 Python 程式碼,但主要操作可以用自然語言描述條件。
這些資料能拿去實單嗎? 回測通過不代表實單一定賺。要考慮滑價、手續費、流動性與資金控管,且過去績效不代表未來,務必小額驗證。

📎 可下載資源


作者:FinLab 量化研究團隊,專注台股因子研究與回測工程,所有數字皆由 finlab 套件實跑,可用文末腳本自行重現。最後更新:2026-06。資料覆蓋數字查詢於 2026-06。投資有風險,過去績效不代表未來表現,本內容僅供教學參考,不構成投資建議,請依個人風險承受度審慎評估。

FinLab AI

想建立自己的策略?

用自然語言描述你的選股想法,AI 自動驗證、回測、給你答案

免費開始

更多技術指標研究

查看全部