本專案使用 TEJ Pro(台灣經濟新報)資料,依 Fama & French (2015) 原始方法論,建構台灣股票市場的 Fama-French 五因子模型(FF5),並在全市場因子的基礎上,進一步檢驗因子表現是否隨產業而異。
FF5 模型以五個投資組合報酬的線性因子解釋股票橫斷面報酬,五個因子分別為:
| 因子 | 全名 | 建構方式 | 經濟意義 |
|---|---|---|---|
| Mkt-RF | 市場超額報酬 | 全市場價值加權報酬 − 無風險利率 | 承擔市場系統性風險的溢酬 |
| SMB | Small Minus Big | 小市值投組報酬 − 大市值投組報酬 | 規模溢酬:小型股是否優於大型股 |
| HML | High Minus Low | 高 B/M(價值股)投組報酬 − 低 B/M(成長股)投組報酬 | 價值溢酬:便宜股是否優於昂貴股 |
| RMW | Robust Minus Weak | 高獲利能力投組報酬 − 低獲利能力投組報酬 | 獲利溢酬:高獲利公司是否優於低獲利公司 |
| CMA | Conservative Minus Aggressive | 低投資(保守)投組報酬 − 高投資(激進)投組報酬 | 投資溢酬:保守擴張的公司是否優於激進擴張的公司 |
實務上,SMB / HML / RMW / CMA 皆透過「市值(Size)× 排序變數」的 2×3 投資組合,取價值加權(VW)報酬後合成:
HML = 0.5 × (S_H + B_H) − 0.5 × (S_L + B_L) (依 B/M 排序)
RMW = 0.5 × (S_R + B_R) − 0.5 × (S_W + B_W) (依 OP 排序)
CMA = 0.5 × (S_C + B_C) − 0.5 × (S_A + B_A) (依 INV 排序,方向為低減高)
SMB = 三組排序(B/M、OP、INV)各自得到的 Small−Big 分量之平均
其中 S/B 代表 Small/Big(依 6 月底市值中位數分組),H/N/L 或 R/N/W 或 C/N/A 代表依對應變數 30/70 百分位分成的三組。詳細公式與變數定義見文末〈方法論附錄〉。
- 資料來源:TEJ Pro 台灣經濟新報,涵蓋月頻股價/報酬/市值資料,以及年頻財務資料(股東權益、資產總額、營收、營業成本、營業費用、利息支出)。
- 市場範圍:TSE(上市)+ OTC(上櫃),排除全額交割(REG)、TIB、PSB 等特殊交易類別。
- 產業範圍:排除金融股(銀行、保險、金控、證券),因其財報結構與一般產業不同,TEJ 下載財務檔時已預先排除。
- 樣本對齊:只保留同時出現在股價檔與所有財務檔的公司,任何變數缺值一律刪除、不做填補。價格宇宙與財務宇宙取交集後,最終有效樣本為 921 家公司。
- 因子期間:2015/07 ~ 2025/12,共 126 個月。之所以從 2015 年(而非資料起始的 2000 年)開始,是因為 INV(投資變數)需要連續兩年的資產總額,財務資料最早僅到 2013/12,故首個可計算 INV 的排序年度為 2015 年。
- 每年排序樣本數:746 ~ 893 家公司(依年度而異)。
- 產業分類:
data/raw/sector.xlsx提供 962 家公司的 TSE 產業別(32 種粗分類)與 TEJ 產業別(87 種細分類),本專案延伸分析採用 TSE 32 種分類。
本研究分兩個層次進行:
- 全市場分析:把整個台股市場當作單一母體,依標準 FF5 方法做排序與因子計算,得到一組適用於全市場的五因子。
- 產業層分析:檢視全市場因子是否過度簡化、掩蓋了產業間的差異,採兩種互補做法:
- 產業時序迴歸:用全市場五因子當解釋變數,對各產業的投組報酬做時序迴歸,檢視是否存在全市場因子解釋不到的異常報酬(α)。
- 產業內部因子建構:在公司數夠多的產業內部重新做一次排序,建構「該產業專屬」的五因子,再與全市場因子比較。
ff5/
├── README.md
├── CLAUDE.md
├── src/
│ ├── step1_load.py # 讀取清理
│ ├── step2_factors.py # 時間對齊、排序、FF5 因子計算
│ ├── step3_analysis.py # 描述統計、t 檢定、相關、走勢
│ ├── step4_industry_B.py # 產業時序迴歸
│ └── step5_industry_A.py # 產業內部因子建構
├── data/raw/ # TEJ Pro 原始下載檔(xlsx)
└── output/
├── step1/ step2/ step3/ # 全市場分析
├── step4/ # 產業時序迴歸
└── step5/ # 產業內部因子建構
# 全市場分析
python src/step1_load.py
python src/step2_factors.py
python src/step3_analysis.py
# 產業層分析
python src/step4_industry_B.py # 產業時序迴歸
python src/step5_industry_A.py # 產業內部因子建構每個因子的虛無假設都是:
H₀:該因子月均值 = 0(也就是「這個因子在 2015–2025 年的台灣市場沒有溢酬」)
判斷標準:
|t| > 1.96約在 5% 顯著水準下拒絕 H₀(因子「顯著」存在)***p<0.01;**p<0.05;*p<0.10- 「不顯著」不等於「因子=0」,只代表「沒有足夠證據說它不為零」
| 因子 | 月均值 | t-stat | p-value | 顯著性 | 年化報酬 | 年化 Sharpe |
|---|---|---|---|---|---|---|
| Mkt-RF | 1.17% | 2.744 | 0.007 | *** | 14.10% | 0.85 |
| SMB | 0.02% | 0.090 | 0.928 | — | 0.27% | 0.03 |
| HML | 0.15% | 0.579 | 0.564 | — | 1.86% | 0.18 |
| RMW | 0.17% | 0.600 | 0.550 | — | 2.04% | 0.19 |
| CMA | -0.14% | -0.638 | 0.524 | — | -1.71% | -0.20 |
Mkt-RF(市場溢酬)— 顯著:月均 1.17%、年化 14.1%、Sharpe 0.85,p=0.007,在統計上可以肯定 2015–2025 台股存在真實的市場溢酬。這段期間是強多頭格局(後 QE、COVID 反彈、2023–2025 AI 行情),市場 beta 是主要報酬來源。
SMB(小型股−大型股)— 不顯著:月均 0.02%,幾乎等於零。這段期間小型股並未跑贏大型股,反映台股由少數權值股(台積電、聯發科、鴻海等)主導、市值集中度極高的行情特徵,也呼應許多市場自 2000 年後規模溢酬減弱的全球現象。
HML(價值股−成長股)— 不顯著:月均 0.15%,方向為價值股略勝但統計上不顯著。在科技與 AI 主導的行情下,低 B/M 的成長股(多為半導體、電子業)並未被便宜的價值股打敗,FF 原版於美國 1963–1990 觀察到的價值溢酬,在當代台股樣本期間不成立。
RMW(高獲利−低獲利)— 不顯著:月均 0.17%,方向為高獲利公司略勝但不顯著。台股「高獲利」與「大型科技股」高度重疊,其超額報酬多已反映在市場 beta 中,因此獨立的獲利溢酬效果被稀釋。
CMA(保守−激進投資)— 方向與 FF 原版相反,且不顯著:月均 -0.14%(FF 美國原版為正)。這段期間資本支出、資產快速擴張的公司(如台積電、聯電擴建晶圓廠、AI 伺服器供應鏈擴產)表現反而較好,使得「激進投資」公司優於「保守投資」公司。
Mkt-RF 在樣本期間累積報酬達 +278%,遠遠拋離其餘四個因子(SMB -2%、HML +15%、RMW +16%、CMA -20%)。下方月報酬長條圖亦顯示,市場超額報酬的主要波動集中在 2020 年(COVID 反彈)與 2022 年底、2024–2025 年(AI 行情)幾個區間。
| MKT-RF | SMB | HML | RMW | CMA | |
|---|---|---|---|---|---|
| MKT-RF | 1.00 | -0.31 | -0.24 | 0.08 | -0.46 |
| SMB | 1.00 | 0.30 | -0.53 | 0.32 | |
| HML | 1.00 | -0.66 | 0.56 | ||
| RMW | 1.00 | -0.56 | |||
| CMA | 1.00 |
三個關鍵的高相關:
- HML 與 RMW = -0.66:價值股(多為傳產、老產業)獲利能力普遍偏弱,成長股(多為半導體)獲利能力普遍偏強。
- HML 與 CMA = +0.56:價值股多屬成熟保守型(資產不擴張),成長股多屬激進擴張型。
- RMW 與 CMA = -0.56:高獲利公司往往再投資率也高(賺錢就擴產)。
這代表台股的四個非市場因子並非相互獨立的訊息,而是同一個「科技成長股 vs 老經濟價值股」二分維度的不同切法:HML/RMW/CMA 高度共線,本質上都在描述「買科技股還是傳產股」。因此 FF5 在台灣的解釋力,比較接近「1 個市場因子 + 1 個產業集中因子」,而非 5 個獨立的解釋面向。
此外 Mkt-RF 與 CMA 相關為 -0.46:多頭時激進投資的公司表現領先(CMA 為負值),因此市場走強與擴張型企業走強高度同步。
全市場 FF5 把所有產業放在同一組排序裡,本節檢視因子表現是否因產業而異,分兩種互補做法進行。
方法:以全市場算出的 FF5 五因子為解釋變數,對 31 個 TSE 產業的價值加權超額報酬分別做時序迴歸,取得各產業的 α(截距)、五個因子 loadings(β)與調整後 R²。若某產業 α 顯著不為零,代表全市場 FF5 無法完全解釋該產業的報酬,該產業存在因子模型外的系統性溢酬或折價。
樣本:104,083 筆月度觀察值,涵蓋 921 家公司、31 個 TSE 產業,期間與全市場因子一致(2015/07–2025/12,126 個月)。每月平均公司數最多的產業為電子零組件(89.3 家)、半導體業(69.0 家);最少的為數位雲端(3.7 家)、玻璃陶瓷(5.0 家)。
結果:31 個產業中有 8 個 α 在 p<0.1 顯著:
| 產業 | 月均 α | t 值 | 顯著性 | 調整 R² |
|---|---|---|---|---|
| M2324 半導體業 | +0.563% | 3.045 | *** | 0.923 |
| M1721 化學工業 | -0.446% | -1.920 | * | 0.729 |
| M9900 其他 | -0.496% | -2.220 | ** | 0.652 |
| M2200 汽車工業 | -0.643% | -1.662 | * | 0.483 |
| M1400 紡織纖維 | -0.880% | -2.953 | *** | 0.572 |
| M3700 運動休閒 | -0.932% | -2.292 | ** | 0.427 |
| M2326 光電業 | -1.176% | -2.552 | ** | 0.557 |
| M2100 橡膠工業 | -1.284% | -3.419 | *** | 0.498 |
半導體業是唯一 α 顯著為正的產業:全市場 FF5 系統性低估其報酬,代表半導體業有全市場因子無法解釋的額外溢酬。其餘七個顯著產業 α 皆為負,代表全市場 FF5 反而高估了這些傳產業別的應有報酬。
從 β heatmap 可觀察到產業間 loadings 差異很大:市場 β 從貿易百貨(0.32)到航運業(1.36)不等;RMW、CMA 的 loadings 在部分產業出現極端值(如玻璃陶瓷 RMW = -2.15、數位雲端 CMA = -1.12),顯示單一全市場因子難以捕捉個別產業的風險特徵。
方法:篩選出每年公司數 ≥ 40 家的大產業,在該產業「內部」重新做一次 2×3 排序,建構產業專屬的 FF5 因子,與全市場因子做同窗期比較。
篩選結果:31 個 TSE 產業中,僅 5 個 通過門檻——電子零組件、半導體業、電腦及週邊設備業、建材營造、光電業(電腦及週邊設備業因樣本略薄,實際僅 114 個有效月)。
顯著結果(8 組產業-因子組合,p<0.1):
| 產業 | 因子 | 月均值 | t-stat | 顯著性 |
|---|---|---|---|---|
| M2324 半導體業 | MKT-RF | 1.959% | 3.122 | *** |
| M2328 電子零組件 | MKT-RF | 1.688% | 2.701 | *** |
| M2325 電腦及週邊設備業 | MKT-RF | 1.220% | 2.283 | ** |
| M2500 建材營造 | MKT-RF | 0.848% | 1.880 | * |
| M2328 電子零組件 | HML | 0.786% | 2.575 | ** |
| M2326 光電業 | SMB | 0.944% | 2.362 | ** |
| M2324 半導體業 | RMW | -0.920% | -1.798 | * |
| M2500 建材營造 | CMA | -0.672% | -2.362 | ** |
與全市場因子(同窗期)對照,最明顯的差異在 Mkt-RF:半導體業內部的市場溢酬(月均 1.96%)遠高於同期全市場(1.18%),電子零組件(1.69%)與電腦及週邊設備業(1.22%)亦同樣高於全市場水準。換言之,「產業內」市場溢酬在科技相關產業被顯著放大,而全市場單一 Mkt-RF 無法反映這種產業間差異。
半導體業產業內因子的累積報酬圖顯示,其 MKT-RF 因子在樣本期間累積超過 700%,遠高於全市場 Mkt-RF 的 278%,顯示產業內排序放大了半導體股票彼此之間的報酬離散度。
Fama-French 五因子模型在台灣 2015–2025 年的解釋力集中於市場因子。 全市場層級的 SMB、HML、RMW、CMA 統計上都無法拒絕「無溢酬」的虛無假設;但把樣本切到產業層級後,半導體業存在 FF5 無法解釋的顯著正 α,且其產業內市場溢酬遠高於全市場平均,顯示因子表現在產業間並不均質。
主要原因:
- 樣本期偏多頭、且科技主導:2015–2025 涵蓋 COVID 反彈與 AI 行情,市場結構高度集中於少數權值股,使規模、價值、獲利、投資的橫斷面差異被市場 beta 淹沒。
- 因子間高共線性:HML、RMW、CMA 三者高度相關,反映台灣產業結構集中(半導體業獨大),不像美國市場有多元產業可分散。
- CMA 方向反轉:受惠於 AI/晶圓廠擴建週期,激進投資的公司在此樣本期表現優於保守投資的公司,與 FF 美國原版方向相反。
- 產業層級存在異質性:半導體業無論在產業時序迴歸(顯著正 α)或產業內部因子建構(產業內市場溢酬顯著高於全市場)都展現出全市場模型無法完全捕捉的特徵;多個傳產業別(橡膠、紡織、運動休閒、光電)則呈現顯著負 α,代表全市場因子對這些產業存在系統性高估。
投資意涵:
- 台股單純持有大盤(Beta)即可取得樣本期間主要報酬,主動因子策略在此期間沒有顯著的全市場超額報酬。
- 若要做多因子配置,需留意 HML/RMW/CMA 之間分散效益有限;若鎖定半導體或特定產業,全市場 FF5 可能低估其應有報酬。
- 在台股尋找 alpha,可能需要跳出全市場 FF5 框架,改以產業層模型(如本專案的產業時序迴歸/產業內部因子建構)、或納入動量、品質等其他因子維度。
| 限制 | 說明 |
|---|---|
| 樣本期短 | 126 個月、僅 11 個排序年度,統計檢定力有限 |
| 期間特殊 | 多頭且科技主導,未必能代表「正常」期間 |
| 存活者偏誤 | 中途下市公司在後續月份自動消失,可能略微高估報酬 |
| 報酬定義 | TEJ 月報酬是否含現金股利尚未驗證;若不含,所有數值會略低估 |
| 因子定義 | 採 FF (2015) 原始定義,未嘗試 q-factor、Carhart 四因子等替代模型 |
| 產業樣本規模 | 僅 5 個產業公司數足以支撐產業內部因子建構,其餘產業僅能用產業時序迴歸檢視 |
| 變數 | 公式 | 來源 |
|---|---|---|
| BE(Book Equity) | 股東權益總額 | TEJ 財報(千元) |
| AT(Total Assets) | 資產總額 | TEJ 財報(千元) |
| OP(Operating Profitability) | (Revenue − OpCost − OpExpense − Interest) / BE | TEJ 財報 |
| INV(Investment) | (AT_t − AT_t-1) / AT_t-1 | TEJ 財報 |
| BM(Book-to-Market) | (BE / 1000) / Dec ME | TEJ 財報 + 月股價 |
| Size | June ME(6 月底市值) | 月股價(百萬元) |
| Rf | 初級 CP 90 天期年率 ÷ 12 | TEJ 貨幣市場 |
- Size 排序:每年 6 月底市值中位數 → S/B 兩組
- B/M、OP、INV 排序:30/70 分位 → L/N/H(或 R/N/W、C/N/A)三組,三因子各自獨立做 tercile 排序
- 2×3 投組:每個排序變數各自產生 6 個 Size × 因子格子,以 June ME 加權(鎖定持有 12 個月)
- 因子合成:
- HML = 0.5(S_H + B_H) − 0.5(S_L + B_L)
- RMW = 0.5(S_R + B_R) − 0.5(S_W + B_W)(依 OP 排序)
- CMA = 0.5(S_C + B_C) − 0.5(S_A + B_A)(依 INV 排序,方向為低減高)
- SMB = 三組排序(B/M、OP、INV)各自得到的 Small−Big 分量之平均
- Mkt-RF = 全市場 VW 月報酬(以前月底市值 lag ME 加權)− 月化無風險利率
- 每年 7 月換股,使用 6 月底市值做 Size 分組
- 財務變數取前一會計年度(t-1 年 12 月)數字,避免前視偏誤
- 組合持有期為 7 月(t 年)~ 6 月(t+1 年)
- 首個有效 portfolio_year 為 2015(INV 需要 AT_2013 與 AT_2014)
資料來源:TEJ Pro 台灣經濟新報





