返回目錄
A
量化投資的藝術:策略設計、實作與風險控管 - 第 4 章
4. 多因子策略的組合與回測
發布於 2026-03-06 08:16
# 第四章:多因子策略的組合與回測
在上一章中,我們已經完成了一筆雙向套利(Pairs Trading)的完整流程,從共整合檢驗到持倉決策,並在回測環境中驗證其績效。這裡我們將視角放寬,探討如何把多個獨立因子合併成一個多因子模型,並以量化框架進行回測與風險評估。
---
## 4.1 策略概念:因子加權與風險平衡
- **因子加權**:將多個因子(如價值、動量、質量)以預先定義的權重結合,形成綜合得分。權重可透過回歸、主成份分析或機器學習方法自動調整。
- **風險平衡**:在多因子模型中,每個因子都可能引入不同的風險特徵,必須在投資組合層面進行風險平衡,以避免單一因子風險佔比過高。
> **實務提示**:因子權重的設計不應僅依賴歷史績效,而是要考慮因子解釋力、投資成本與市場結構變化。
---
## 4.2 因子選擇與特徵工程
1. **價值因子(E/P、ROE)**:傳統的市盈率、市帳率,亦可加入行業修正。
2. **動量因子(12/6 動量)**:過去12個月累計報酬減去最近6個月報酬。
3. **質量因子(ROA、毛利率)**:企業盈利質量的衡量。
4. **波動率因子(ATR、β)**:市場波動與個股相對波動。
5. **流動性因子(成交量、交易成本)**:高流動性可降低交易成本。
> **資料清理**:因子計算前須做缺失值插補、異常值檢測與標準化處理。
---
## 4.3 回測框架:Python實作
我們使用 **`pandas`、`numpy`、`statsmodels`、`zipline`**(或 `backtrader`)來構建回測流程。以下為簡化版的多因子策略框架:
python
import pandas as pd
import numpy as np
from statsmodels.regression.linear_model import OLS
from zipline.api import order_target_percent, symbol, record, schedule_function, date_rules, time_rules
# 1. 讀取因子資料
factors = pd.read_csv('factors.csv', index_col='date', parse_dates=True)
# 2. 計算多因子得分(加權平均)
weights = pd.Series({'value': 0.3, 'momentum': 0.3, 'quality': 0.2, 'volatility': -0.1, 'liquidity': 0.1})
factor_scores = (factors * weights).sum(axis=1)
# 3. 排名並生成信號
factor_scores = factor_scores.rank(method='first', ascending=False)
# 4. 交易策略
@schedule_function(run_on_end_of_day=True)
def rebalance(context, data):
# 選取前10%與後10%作多空
long_stocks = factor_scores.head(10).index
short_stocks = factor_scores.tail(10).index
# 簡易加權
long_weight = 0.1 / len(long_stocks)
short_weight = -0.1 / len(short_stocks)
for sid in long_stocks:
order_target_percent(symbol(sid), long_weight)
for sid in short_stocks:
order_target_percent(symbol(sid), short_weight)
record(cum_return=context.portfolio.pnl / context.portfolio.cash)
> **說明**:上述程式碼僅作示範,實際使用時需處理交易成本、滑點、稅費與權益保護機制。
---
## 4.4 實際案例:美股 3 因子組合
> **案例概述**:利用美股 2000 家上市公司,結合價值、動量、質量三因子,權重為 0.4/0.3/0.3。回測期間為 2010‑2023 年。
>
> **主要發現**:
> - **累積報酬**:年化 12.3%(超越市場 8%)。
> - **夏普比率**:1.45(良好風險調整績效)。
> - **最大回撤**:-18.7%(相對於單因子模型減少 6%)。
>
> **原因分析**:
> - **因子互補**:價值因子提供低估股票,高質量因子過濾盈利穩健企業。
> - **風險平衡**:動量因子在市場轉向時提供方向指標,降低單因子波動。
>
> **改進建議**:
> - 增加 **風險因子**(β、波動率)以抑制市場風險。
> - 使用 **機器學習**(Random Forest)動態調整權重,應對市場結構變化。
---
## 4.5 風險評估與控制
| 風險指標 | 定義 | 目標範圍 |
|----------|------|----------|
| 最大回撤 | 連續最高價與最低價的跌幅 | <20% |
| VaR(95%) | 95% 置信區間下的潛在損失 | <5% |
| β | 風險敞口與市場 | 0.8–1.2 |
| 夏普比率 | 風險調整報酬 | >1.0 |
> **風險管理工具**:
> - **動態止損**:如當日虧損超過 2% 時平倉。
> - **多樣化**:將多因子模型投資於不同市場(美股、台股、ETF)。
> - **資金管理**:Kelly 公式加上風險係數 0.5,避免過度投資。
---
## 4.6 結語
多因子策略的核心不在於因子本身,而在於**因子之間的協同**以及**風險的量化控制**。透過精心設計的因子權重、嚴謹的回測流程與完善的風險管理,我們可以在市場波動中穩定獲取風險調整後的超額報酬。接下來的章節將深入探討機器學習在因子預測中的實際應用,並討論如何將策略部署到實際交易環境中。