This answer is currently available in Chinese only; an English version is coming soon.

怎麼用 API 抓台股財報三表?

打 GET /v2/datasets/income-statement,帶 symbol(必填)。每列帶 fiscal_year、fiscal_quarter、period_end_date(期末日)與 report_date(公告日),數字欄位是 revenue、gross_profit、operating_income、pretax_income、net_income、eps。做回測請對 report_date,不是 period_end_date——2024 Q1 的 EPS 不是 3/31 就存在。

財報三表

損益表、資產負債表、現金流量表;台股由公開資訊觀測站公告,每季一次。

可以直接跑的 Python

import requests

r = requests.get(
"https://api.twmarketdata.com/v2/datasets/income-statement",
headers={"X-API-Key": "sk_live_你的金鑰"},
params={"symbol": "2330", "limit": 5},
timeout=20,
)
r.raise_for_status()

for row in r.json()["rows"]:
print(row["fiscal_year"], row["fiscal_quarter"], row["report_date"], row["eps"])

回應裡真正有的欄位

  • fiscal_year、fiscal_quarter、fiscal_period、period_type、frequency — 這筆屬於哪一期、什麼頻率。
  • period_end_date — 會計期間的結束日。
  • report_date — 這份財報實際被公告的日期。
  • revenue、gross_profit、operating_income、pretax_income、net_income、eps — 損益表主要數字。
  • source、updated_at、fundamentals_context — 來源、更新時間與脈絡欄位。

雷:回測要對公告日,不是期末日

一家公司 2024 Q1 的 EPS 不是 3/31 就存在,是等它公告才被市場知道。把 EPS 對到 period_end_date 等於用了當時還沒公布的資訊,這是前視偏差,會讓回測績效虛高。用 report_date 對齊,或用 as-of 查詢讓系統只回你指定日「當下已知」的版本。

季報與累計數要看清楚

台股財報有單季與累計兩種口徑,period_type 與 fiscal_period 會告訴你這列是哪一種。把累計數當成單季數去算年增率,得到的數字沒有意義——先確認口徑再計算。

Common questions

1資產負債表和現金流量表也有嗎?
有,是各自獨立的資料集:資產負債表與現金流量表在型錄裡分開列出,欄位與這裡的損益表不同。
2什麼是 as-of 查詢?
回到某一天,只看那天當下已經知道的資料,避免用到事後修訂或尚未公告的數字。詞彙表的 point-in-time 那條有完整說明。
3財報會被追溯修正嗎?
會。這正是回測要用 as-of 而不是「現在的最終值」的原因,否則等於拿今天的答案去評價過去的決策。

Want to query this data yourself? Create a free account.

Related articles