floviq logo floviq
← 筆記 · 2026-05-23 · reference

TWSE BWIBBU_d 端點直取台股本益比與殖利率 — 官方 API 欄位機制、涵蓋範圍邊界與 DividendYear 民國年解讀

台股上市公司的本益比(PE)、股價淨值比(PB)、殖利率,多數散戶習慣從第三方財經網站查閱。TWSE(台灣證券交易所)官方開放資料 API 有一個端點 BWIBBU_d,每個交易日收盤後同步更新這三個估值指標,資料直接來自交易所,不經第三方轉載。本文整理 BWIBBU_d 的欄位機制、涵蓋範圍邊界、曆法混用陷阱,以及空值的真實原因。


① BWIBBU_d 是什麼

GET https://openapi.twse.com.tw/v1/exchangeReport/BWIBBU_d

回傳內容:全體上市公司當日本益比、殖利率、股價淨值比。資料來源為 TWSE 官方交易系統,每交易日收盤後更新。

此端點在 TWSE OpenAPI 體系中屬於 exchangeReport 路徑,與籌碼端點(如 T86 法人買賣超)平行,資料面向不同:T86 回答「法人在買什麼」,BWIBBU_d 回答「這支股票現在貴不貴、股利多少」。

對存股族而言,此端點可直接作為即時估值數據來源,不需倚賴第三方網站的資料轉載延遲。對工程師而言,這是建立估值監控自動化流程的權威資料來源。floviq 系列盤前自動化推播模板(portaly.cc/floviq)聚焦法人籌碼與大盤行情層;估值類端點屬不同維度的資料來源。


② 三個估值欄位

實際呼叫端點(快照日 2026-05-23,回傳 Date: "20260522" 為最後交易日)可確認三個估值欄位同時出現在每一筆 JSON 物件中:

Key 名稱含義計算基礎
PEratio本益比收盤價 ÷ 每股盈餘(EPS)
PBratio股價淨值比收盤價 ÷ 每股淨值
DividendYield殖利率年度股利 ÷ 收盤價(%)

三個欄位在同一筆回傳物件內提供,存股族常見的「估值全貌」——貴不貴(PE/PB)加上股利夠不夠高(殖利率)——單次 API 呼叫一次取得。

以下為欄位結構示意,數值以佔位符號呈現,非任何個股當日真實市場數字:

{
  "Date": "20260522",
  "Code": "XXXX",
  "Name": "[個股名稱]",
  "ClosePrice": "XX.XX",
  "DividendYield": "X.XX",
  "DividendYear": "114",
  "PEratio": "XX.XX",
  "PBratio": "X.XX",
  "FiscalYearQuarter": "2026Q1"
}

注意:所有欄位均為字串型別"type": "string"),包含 PEratioPBratioDividendYield。計算前需明確轉型,不可假設為數值。


③ 涵蓋範圍邊界

此端點的涵蓋範圍有明確邊界,與財經網站顯示的「全股市」不同。

涵蓋

  • TWSE 上市公司(集中市場主板)
  • 近期一次呼叫約 1,000 餘檔,筆數隨掛牌異動每日滾動

不涵蓋

  • ETF00* 系列如 0050、0056、00878 等,完全不在此端點的回傳內)
  • 上櫃股票(TPEx 櫃買市場,需另查櫃買中心端點)
  • 未上市 / 未掛牌公司

ETF 不在此端點,不是「ETF 在這裡但 PEratio 空值」。ETF 代號在此端點的回傳陣列中根本找不到對應的資料列。ETF 估值評估走折溢價(相對淨值的折價與溢價)邏輯,非 PE/PB 框架,需查 ETF 專屬端點。

上櫃股票的估值資料需查詢 TPEx(證券櫃買中心)自有端點,與此端點是不同資料源,不可混用。TWSE 與 TPEx 兩市場分工詳見 台股 = TWSE + TPEx 兩個獨立市場


④ DividendYear 民國年與同一筆回傳的曆法並存

BWIBBU_d 的曆法問題是工程師最容易踩到的解析陷阱。同一筆 JSON 物件內同時出現兩種曆法、三種日期表示:

欄位值(最後交易日 2026-05-22 資料)曆法 / 格式含義
Date"20260522"西元,8 碼 YYYYMMDD資料日期(最後交易日)
DividendYear"114"民國年,3 碼純數字股利對應財年(114 = 2025 AD)
FiscalYearQuarter"2026Q1"西元年 + 季度財報期間

三個欄位命名都帶有「日期」語意,但格式互不相同。Date 是西元 8 碼,DividendYear 是民國 3 碼純年份,FiscalYearQuarter 是西元年加季度字串。若用同一個 parseDate() 函式處理,"114" 會被誤解為西元 114 年,"2026Q1" 直接丟進 new Date() 會回傳 Invalid Date,過程不報錯但結果是錯的。

民國年轉西元只需加 1911:

// DividendYear: "114" → 2025 AD
const dividendYearAD = parseInt(data.DividendYear) + 1911;  // = 2025

曆法並存的根源在於 BWIBBU_d 的資料由多個底層系統拼接:Date 欄位走交易系統的西元格式,DividendYear 沿用公司財務申報的民國年格式,FiscalYearQuarter 對齊國際財報準則的年度與季度標示。三個系統的曆法在同一筆回傳合併輸出,沒有統一轉換。

此曆法並存現象在 TWSE OpenAPI 體系中不只此端點,五端點的日期格式差異整體分析見 TWSE OpenAPI 日期格式陷阱


⑤ 空值 PEratio 的真實原因

每次呼叫的回傳裡,都有相當比例(近期一次約兩成多)的資料列其 PEratio 為空字串 "",實際筆數每日滾動。

空值有多重成因,不可一律推定為虧損股。最常見的原因是該公司近四季每股參考稅後純益為 0 或負數(虧損股,本益比失去判讀意義);此外,未申報格式化財務報告或資料不完整者(如剛掛牌、延遲申報之公司),TWSE 同樣不計算本益比而回傳空字串。

這些空值資料列均為 TWSE 上市公司,不是 ETF(ETF 根本不在此端點)。本益比的計算前提是正的每股參考稅後純益,當該值為 0 或負即失去判讀意義。實務上空值的資料列中部分公司仍有配息紀錄,可見空值並非單一成因。

處理建議:

// 空值檢查 · 避免空字串除法
const pe = data.PEratio;
if (!pe || pe === "") {
  // 虧損股 · 無有效 PE · 略過或標記
  return null;
}
const peValue = parseFloat(pe);

DividendYieldDividendYear 也可能為空字串,對應的情況是當年度無股利配發紀錄。


⑥ DividendYear 的正確解讀

存股族使用殖利率欄位時,DividendYear 提供了判讀殖利率的時間維度,有一個容易誤讀的地方。

DividendYear: "114"(= 2025 AD)代表的是股利所對應的盈餘年度(114 = 2025 年盈餘),不是本年度預測。依 TWSE 官方定義,股利年度即「該公司以該年度之盈餘分派股利」,該股利通常於次年(此例 115 / 2026 年)實際發放。殖利率計算使用的分子是此已確定的歷史股利,分母是當前收盤價。因此:

  • DividendYield 反映的是「以現在的股價,買進並領取該筆已確定歷史股利所能得到的報酬率」
  • 不代表今年一定會配同樣的股利
  • 須注意 DividendYear 標示的是盈餘所屬年度,與股利實際發放年度可能差一年,判讀時間軸時不可混為一談

確認 DividendYear 的值,可以判斷殖利率數字對應的是哪一年度的股利,避免誤讀為即時或預測資料。

對需要在盤前自動化流程中標注殖利率時間維度的使用者,DividendYear 的民國年值在進入流程前需轉成西元年再標注,避免使用者讀到 "114" 誤解為西元世紀初。盤前自動化推播類模板入口見 portaly.cc/floviq


⑦ See also


修正紀錄

先前版本有以下更正(2026-05-31):

  • §⑤:空值 PEratio 唯一原因為虧損股 → 空值有多重成因,不限虧損股。
  • §⑥:DividendYear 為上一財年配息紀錄 → 為股利所對應的盈餘年度,通常於次年發放。
  • §②:JSON 範例改為佔位符號,不附具體個股數值。

※ 本文描述 TWSE BWIBBU_d 端點欄位機制、涵蓋範圍邊界與曆法格式實況 · 不構成投資建議,投資請自行評估風險。

資料來源:TWSE BWIBBU_d(資料快照 2026-05-23,最後交易日 Date=20260522)