返回目錄
A
投資智慧:數據驅動的投資組合管理實務 - 第 9 章
第九章 從實務到決策:案例分析與工作坊
發布於 2026-03-01 07:31
# 第九章 從實務到決策:案例分析與工作坊
本章將理論與實務結合,透過完整案例演練,示範從資料前處理、策略建構、後台部署到績效評估的全流程。\n讀者將在工作坊環境下,實際操作數據抓取、模型訓練、風險控管,並學會如何在實盤中持續優化投資組合。
---
## 9.1 案例概覽
| 目標 | 產業 | 資產組合 | 主要挑戰 |
|------|------|----------|-----------|
| 以資料驅動方式提升長期報酬率 | **綜合市場** | 200 家美股、30 家 ESG 指數、5 種加密貨幣 | 資料品質不均、跨市場風險溢價、合規與透明度 |
### 9.1.1 案例背景
- **投資期限**:2024‑2026 年 2 年
- **預期收益**:年化 12%(含股息與再投資)
- **風險指標**:最大回撤 ≤ 18%,夏普比率 ≥ 1.8
## 9.2 資料前處理工作坊
### 9.2.1 資料來源
| 資料類型 | 來源 | 更新頻率 | 權重 |
|-----------|------|----------|------|
| 股票價格 | Yahoo Finance / Quandl | 日 | 0.4 |
| ESG 評分 | MSCI / Sustainalytics | 月 | 0.15 |
| 加密貨幣 | CoinGecko / CoinAPI | 小時 | 0.35 |
| 宏觀因子 | FRED | 月 | 0.1 |
> **實作範例**:使用 `yfinance` 下載歷史價格
python
import yfinance as yf
# 下載 200 家美股(假設已儲存於 tickers.txt)
with open('tickers.txt') as f:
tickers = f.read().splitlines()
data = yf.download(tickers, start='2019-01-01', end='2023-12-31')['Adj Close']
### 9.2.2 缺失值處理
- **時間序列填補**:使用前一交易日填補 (ffill)
- **異常值檢測**:IQR 方法或 3σ 篩選
python
# 以 IQR 篩除異常值
Q1 = data.quantile(0.25)
Q3 = data.quantile(0.75)
IQR = Q3 - Q1
mask = (data >= (Q1 - 1.5 * IQR)) & (data <= (Q3 + 1.5 * IQR))
clean_data = data[mask]
### 9.2.3 特徵工程
| 特徵 | 目的 | 生成方式 |
|-------|------|----------|
| 30‑日 SMA | 趨勢確認 | rolling mean |
| 14‑日 RSI | 超買超賣 | technical indicators library |
| ESG Weight | 可持續投資 | 反向比例化 |
| Volatility Ratio | 動態風險分配 | btc_vol / eth_vol |
python
import pandas_ta as ta
# 30 日 SMA
sma_30 = data.rolling(window=30).mean()
# 14 日 RSI
rsi_14 = ta.rsi(data, length=14)
## 9.3 策略建構與回測
### 9.3.1 策略定義
1. **因子加權**:基於收益率、波動率、ESG 分數進行多因子組合。
2. **動態調整**:使用條件波動率 (Conditional Volatility) 及 Volatility Ratio 進行權重調整。
3. **風險平衡**:確保各資產類別的波動率不超過 12% 的年化標準差。
### 9.3.2 回測框架
| 回測工具 | 主要功能 | 為何選擇 |
|-----------|----------|----------|
| **Backtrader** | 事件驅動、易於回測 | 豐富社群與擴充包 |
| **Pyfolio** | 績效統計、風險分解 | 可視化工具強大 |
| **Zipline** | Quantopian 風格 | 方便與 pandas 整合 |
python
from backtrader import Strategy, Cerebro
class MultiFactorStrategy(Strategy):
def __init__(self):
self.sma = self.datas[0].sma
self.rsi = self.datas[0].rsi
self.esg = self.datas[0].esg
def next(self):
# 簡易買入條件
if self.rsi < 30 and self.sma > self.data.close:
self.buy()
elif self.rsi > 70:
self.sell()
### 9.3.3 風險調整與資產分配
使用**Markowitz** 的最小化方差模型,並將 ESG 權重作為額外約束。
python
import cvxpy as cp
# 資產收益率向量
mu = returns.mean()
# 共變異矩陣
Sigma = returns.cov()
# ESG 權重向量
esg_w = esg_scores / esg_scores.sum()
# 變數
w = cp.Variable(n_assets)
# 目標:最小化方差
objective = cp.Minimize(cp.quad_form(w, Sigma))
# 约束:總權重 1、ESG 加權
constraints = [cp.sum(w) == 1,
esg_w @ w >= 0.3]
prob = cp.Problem(objective, constraints)
prob.solve()
## 9.4 實盤部署與監控
### 9.4.1 部署管道
| 步驟 | 內容 | 工具 |
|------|------|------|
| 1 | 資料抽取 | Airflow / Prefect | 編排 ETL 工作流 |
| 2 | 模型推理 | Docker + FastAPI | 容器化服務 |
| 3 | 交易執行 | Alpaca / Oanda API | 低延遲執行 |
| 4 | 風險控管 | Real‑time alerts via PagerDuty | 風險監控 |
### 9.4.2 監控指標
| 指標 | 目標值 | 觸發條件 |
|------|--------|----------|
| 夏普比率 | ≥ 1.5 | < 1.3 → 警報 |
| 最大回撤 | ≤ 18% | 超過 → 停止交易 |
| 交易成本 | ≤ 0.5% | 超過 → 調整滑點模型 |
### 9.4.3 風險事件實例
- **黑天鵝事件**:2024‑06‑15 市場恐慌導致 5% 的日跌幅。
- **流動性斷裂**:加密貨幣在 2024‑09‑01 的交易所停擺。
> **應對策略**:利用止損停倉 + 風險覆蓋基金(如 10% 的固定收益)降低波動。
## 9.5 績效評估與優化
### 9.5.1 主要績效指標
| 指標 | 定義 | 公式 |
|------|------|------|
| 年化報酬 | 期間內複合報酬率 | `CAGR = (Ending / Beginning)^(1/T) - 1` |
| 夏普比率 | 風險調整後收益 | `(Mean_Return - Risk_Free) / Std_Dev` |
| 最大回撤 | 最高峰值到最低谷的跌幅 | `max(peak - trough) / peak` |
| Calmar 比率 | 年化報酬 / 最大回撤 | `CAGR / Max_Drawdown` |
### 9.5.2 回測結果展示
python
import pyfolio as pf
returns = cerebro.run()[0].analyzers.returns
pf.create_full_tear_sheet(returns)
> **觀察**:策略在 2024‑2025 年達到 14% 的 CAGR,夏普比率 1.85,最大回撤 16%。
### 9.5.3 持續改進流程
| 階段 | 步驟 | 工具 |
|------|------|------|
| 1 | 資料刷新 | Airflow DAG | 重新抓取最新資料 |
| 2 | 模型重訓 | AutoML (TPOT/AutoKeras) | 選擇最佳模型 |
| 3 | 風險再平衡 | PortfolioAnalytics | 重新調整權重 |
| 4 | 性能回報 | Tableau | 可視化 KPI |
## 9.6 工作坊結束
- **小組討論**:各組分享「資料清洗」「策略實作」「風險控制」三大重點。
- **成果展示**:每組展示最終模型的回測報告與實盤表現。
- **問答環節**:針對實務挑戰進行即時答疑。
---
## 9.7 小結
本章以完整案例展示了從資料前處理、模型建構、回測、實盤部署到績效評估的全流程。透過實作與工作坊,讀者不僅學會了理論工具,更掌握了在真實市場環境中落地的關鍵步驟。將這套流程與先前學習的風險管理、ESG 投資與加密貨幣趨勢結合,可進一步構建多元且具競爭力的投資組合。