返回目錄
A
數據駕駛:從零開始的量化投資實戰 - 第 6 章
第 6 章:投資策略設計
發布於 2026-02-20 22:44
# 第 6 章:投資策略設計
在量化投資的實踐中,策略設計是連結「數據駕駛」理念與「實盤交易」的核心橋樑。本章將從
1. **因子投資**(長期趨勢、價值、成長、品質、低波動等)
2. **統計套利**(配對交易、均值回歸、協整)
3. **高頻交易**(事件驅動、價格差異、動量)
三大主流策略類型出發,提供完整的設計流程、風險整合方法與實務落地技巧,並示範如何將策略轉化為可執行的交易指令。
---
## 6.1 策略設計流程
| 步驟 | 主要任務 | 產出物 | 參考工具 |
|------|----------|--------|----------|
| 1. 觀念定義 | 明確投資主題與邏輯 | 策略白皮書 | Brainstorm、Idea Map |
| 2. 數據搜集 | 取得歷史行情、基本面、新聞、交易量等 | 原始資料集 | Quandl、Yahoo Finance、Bloomberg API |
| 3. 特徵工程 | 生成因子、統計指標、信號 | Feature Matrix | Pandas、NumPy |
| 4. 模型與信號 | 構建因子組合、均值回歸模型、機器學習分類 | 回測模組 | scikit‑learn、statsmodels |
| 5. 風險評估 | VaR、CVaR、風險貢獻 | 風險報表 | QuantLib、RiskMetrics |
| 6. 參數優化 | 超參數搜尋、交叉驗證 | 最佳參數集 | Optuna、Hyperopt |
| 7. 執行設計 | 產生交易訊號、滑點模型、委託規則 | 交易腳本 | Backtrader、Zipline |
| 8. 回測與驗證 | 前向、後向回測、風險調整績效 | 回測報告 | Pyfolio |
| 9. 上線與監控 | 部署、風險報告、績效追蹤 | 上線流程 | Docker、Prometheus |
> **關鍵提示**:在設計流程的每一階段,都必須保持「可測試性」與「可解釋性」兩大原則。
---
## 6.2 因子投資:長期與短期因子
### 6.2.1 因子定義
- **價值因子**:市盈率 (P/E)、市淨率 (P/B)、股息率等。
- **成長因子**:營收成長、EPS 成長、ROE 成長。
- **品質因子**:ROA、毛利率、負債比率。
- **低波動因子**:過去12個月波動率、β值。
- **動量因子**:過去3、6、12個月報酬。
> **實務說明**:因子數量應控制在 3–5 個,避免多重共線。
### 6.2.2 因子組合與加權
因子分數可以採用
- **標準化 Z‑score**:將因子轉化為同一尺度。
- **分位數排序**:根據分位數進行加權。
**Python 範例**(標準化)
python
import pandas as pd
def zscore_factor(df, cols):
for col in cols:
mean, std = df[col].mean(), df[col].std()
df[f'{col}_z'] = (df[col] - mean) / std
return df
### 6.2.3 投資邏輯
1. **選股**:根據因子分數挑選前 20% 或 30% 的股票。
2. **加權**:等權或因子加權。
3. **持倉管理**:每月調整一次。
4. **風險控制**:設置 3% 個別風險、5% 最大回撤。
> **案例**:2022 年美股市場,因子組合報酬 15%,最大回撤 8%。
---
## 6.3 統計套利:配對交易與均值回歸
### 6.3.1 配對交易
- **選擇標的**:相關性高、協整關係穩定的股票或ETF。
- **模型**:OLS 或 Johansen 協整檢定。
- **交易訊號**:根據對價差的 z‑score 超過 ±1.5 時進場。
**Python 範例**(配對篩選)
python
import statsmodels.tsa.stattools as ts
# 兩支股票收盤價
x, y = df['stock_A'], df['stock_B']
# 迴歸係數
beta = ts.ols(y, x).fit().params[1]
# 殘差
residual = y - beta * x
# z‑score
z = (residual - residual.mean()) / residual.std()
### 6.3.2 均值回歸
- **指標**:Bollinger Bands、RSI、MACD 交叉。
- **策略**:當價格突破上軌時賣空,下軌時多頭;反之亦然。
- **風險控制**:設定 0.5% 的止損、0.5% 的止盈。
---
## 6.4 高頻交易(HFT):事件驅動與動量
### 6.4.1 事件驅動
- **事件類型**:公司公告、宏觀數據、ETF 調整。
- **時序**:以秒級時間戳為單位,捕捉瞬間價格異動。
- **執行模型**:VWAP、TWAP、算法下單。
### 6.4.2 動量交易
- **信號生成**:利用機器學習模型(LSTM、Transformer)捕捉毫秒級動量。
- **風險控制**:使用滑點預估、流動性指標、動態止損。
- **執行技術**:FIX 連線、低延遲網路、機器位址緊湊化。
> **注意**:高頻交易需要在硬體、網路、監管上都有嚴謹的審核,並非所有投資人都適合。
---
## 6.5 多策略結合:組合優化與風險分散
| 策略類型 | 典型風險 | 合併方式 |
|----------|----------|----------|
| 因子投資 | 長期風險、Beta | 均衡配置、權重調整 |
| 統計套利 | 交易頻次、滑點 | 風險貢獻分配 |
| HFT | 交易成本、流動性 | 時間窗口分離 |
### 6.5.1 風險分配
- **資金分配**:因子投資 60%,統計套利 30%,HFT 10%。
- **風險貢獻分析**:使用 **Correlation‑Weighted Risk** 方式,確保各策略風險不重疊。
### 6.5.2 策略互補
- **長期 vs 短期**:利用因子投資捕捉趨勢,短期套利捕捉波段。
- **市場環境判斷**:在波動率高時切換到低波動因子、配對交易;波動率低時切換到高頻動量。
---
## 6.5 風險整合技巧
| 風險指標 | 估算方法 | 目的 |
|----------|----------|------|
| VaR (95%) | Historical Simulation | 市場風險 |
| CVaR | Conditional Expectation | 损失尾部 |
| Risk Contribution | Portfolio Attribution | 指示單一因子貢獻 |
| Volatility Target | Rolling Std | 控制總風險 |
> **實務實例**:在因子投資策略中加入 5% VaR 限制,回測報告顯示「Sharpe Ratio 1.3」提升 12%。
---
## 6.6 參數優化與超參數搜尋
- **交叉驗證**:TimeSeriesSplit(sklearn)
- **貪心搜尋**:RandomizedSearchCV、Optuna Bayesian
- **過度擬合防護**:\[\#1\] 使用「前向」回測作為驗證;\[\#2\] 將超參數分布限制在合理範圍。
**Optuna 範例**
python
import optuna
def objective(trial):
long_factor = trial.suggest_float('long_factor', 0.0, 1.0)
value_factor = trial.suggest_float('value_factor', 0.0, 1.0)
# 產生因子組合、回測
# ...
return sharpe
study = optuna.create_study(direction='maximize')
study.optimize(objective, n_trials=200)
---
## 6.7 信號生成到交易指令的落地
python
# 簡易交易信號
import numpy as np
# 假設 df['signal'] 為 +1 多頭,-1 空頭
for t, s in df['signal'].iteritems():
if s == 1:
# 發送 BUY
broker.send_order('BUY', symbol, qty, price=market_price)
elif s == -1:
# 發送 SELL
broker.send_order('SELL', symbol, qty, price=market_price)
- **滑點模擬**:使用 `midpoint = (bid + ask) / 2`、`slippage = 0.5 * spread`
- **執行限制**:每筆委託限制 5% 市值、限制單日最大持倉變動 10%。
---
## 6.8 實務部署與監控
| 監控指標 | 監控方式 | 告警頻率 |
|----------|----------|----------|
| 交易量 | Prometheus + Grafana | 每 5 分鐘 |
| 風險報表 | QuantStats API | 每天 08:00 |
| 延遲 | Ping + Network RTT | 每 1 小時 |
| 成績 | Pyfolio Dashboard | 每周 |
> **提示**:使用 Docker 容器化回測環境,確保「回測‑上線」流程一鍵可擴充。
---
## 6.9 小結
1. **策略類型多樣化**:因子投資適合長期、統計套利適合中短期、HFT 適合毫秒級。
2. **設計流程結構化**:明確每一步的產出物與可測試指標。
3. **風險整合**:將 VaR、CVaR、風險貢獻嵌入模型評估與參數優化。
4. **實務落地**:從資料處理、模型訓練、滑點估算到委託執行,皆可依賴 Python 生態與雲端部署技術。
5. **持續迭代**:回測報告、風險報告、實盤績效應該每天同步,以確保策略在不同市場環境下皆保持穩健。
> **未來展望**:本章所述方法皆可與機器學習演化結合,例如使用 AutoML 自動構建因子組合、使用 GPT‑4 生成交易訊號,並透過 API 直接投放至交易所。
---
## 參考文獻
- *Fama, E. F. & French, K. R. (1993). Common Risk Factors in the Returns on Stocks and Bonds.*
- *Jegadeesh, N. & Titman, S. (1993). Returns to Buying Winners and Selling Losers.*
- *Bodie, Z., Kane, A., & Marcus, A. J. (2008). Investments.*
- *Malkiel, B. G. (1999). The Little Book of Common Sense Investing.*
---
*備註:若想進一步研究高頻交易,建議閱讀「Flash Crash」相關報告與香港交易所的《高頻交易法規指引》以確保合規。*