聊天視窗

數據駕駛:從零開始的量化投資實戰 - 第 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」相關報告與香港交易所的《高頻交易法規指引》以確保合規。*