返回目錄
A
量化投資的藝術:策略設計、實作與風險控管 - 第 1 章
第二章:量化投資策略的基礎構建
發布於 2026-03-06 06:25
# 第二章:量化投資策略的基礎構建
在前一章,我們簡述了量化投資的核心理念與整體架構。如今,我們將進一步探討實際的策略設計與實作步驟,為後續的機器學習與風險管理奠定堅實基礎。
## 1. 策略思維的三大核心
1. **資訊選取(Information Acquisition)**:挑選對市場波動有解釋力的因子。常見的如價格、成交量、基本面指標、甚至社群情緒。
2. **訊號生成(Signal Generation)**:將資訊轉化為可執行的交易訊號。方法包括統計指標、機器學習模型或簡單的均值回歸。
3. **風險管理(Risk Management)**:控制單一持倉與組合風險,確保在極端情況下不會被毀。
> **小結**:一個成熟的量化策略不是單純的「賺錢公式」,而是由資訊、訊號、風險三者互相呼應的閉環系統。
## 2. 資料收集與前處理
### 2.1 來源與格式
| 來源 | 常見格式 | 取得方式 |
|------|----------|----------|
| Yahoo Finance | CSV/JSON | yfinance、pandas‑datareader |
| Bloomberg | Bloomberg Terminal | Bloomberg API |
| 期貨交易所 | HDF5/Parquet | 官方網站下載 |
### 2.2 清洗流程
1. **缺失值處理**:使用前向填補或插值。
2. **異常值檢測**:Z‑score、箱型圖法。
3. **時間對齊**:確保所有指標在同一時間格點上。
4. **回測環境切割**:訓練集、驗證集、測試集的合理分佈。
> **實務提示**:在處理高頻資料時,務必先做時間戳去重與毫秒級同步。
## 3. 策略設計範例:簡單移動平均交叉
### 3.1 理論基礎
* **短期均線**:捕捉市場即時趨勢。
* **長期均線**:過濾噪音,辨識長期方向。
* **交叉訊號**:短期上穿長期視為買進,下穿視為賣出。
### 3.2 Python 實作
python
import pandas as pd
import yfinance as yf
import matplotlib.pyplot as plt
# 下載資料
ticker = "AAPL"
start_date = "2015-01-01"
end_date = "2023-12-31"
price = yf.download(ticker, start=start_date, end=end_date)
# 計算移動平均
price['MA20'] = price['Adj Close'].rolling(window=20).mean()
price['MA200'] = price['Adj Close'].rolling(window=200).mean()
# 產生訊號
price['Signal'] = 0
price.loc[price['MA20'] > price['MA200'], 'Signal'] = 1
price.loc[price['MA20'] < price['MA200'], 'Signal'] = -1
price['Position'] = price['Signal'].shift(1)
# 簡易回測
price['Return'] = price['Adj Close'].pct_change()
price['Strategy'] = price['Return'] * price['Position']
price['Cumulative'] = (1 + price['Strategy']).cumprod()
# 畫圖
plt.figure(figsize=(12,6))
plt.plot(price['Cumulative'], label='Strategy')
plt.plot((1+price['Return']).cumprod(), label='Buy & Hold')
plt.title(f"{ticker} MA Crossover Strategy")
plt.legend()
plt.show()
> **備註**:此範例僅作示範,實務中須加入交易成本、滑點、持倉上限等條件。
## 4. 策略驗證:過度擬合的警戒
1. **交叉驗證**:k‑fold 或時序拆分。
2. **Walk‑Forward Analysis**:動態更新模型,測試未見資料。
3. **統計檢定**:t‑檢定、p‑值、信賴區間。
4. **情報漏損(Information Leakage)**:確認未使用未來資訊。
> **結論**:僅靠一次回測結果不能代表策略實際表現,必須多角度驗證。
## 5. 風險管理基礎:風險度量與止損
| 風險指標 | 定義 |
|----------|------|
| VaR(Value at Risk) | 在給定置信區間下,最大可能虧損 |
| 夏普比率 | 超額報酬與波動率的比值 |
| 最大回撤 | 最高峰值至最低谷的跌幅 |
### 5.1 止損策略示例
python
# 假設持倉 1 股
entry_price = price['Adj Close'].iloc[0]
stop_loss_pct = 0.05 # 5% 止損
stop_price = entry_price * (1 - stop_loss_pct)
price['StopHit'] = price['Adj Close'] <= stop_price
if price['StopHit'].any():
exit_date = price[price['StopHit']].index[0]
print(f"止損觸發於 {exit_date.date()},止損價:{stop_price:.2f}")
else:
print("未觸發止損")
> **實務提醒**:止損設定要考慮到波動性與交易成本,過度頻繁止損會侵蝕報酬。
## 小結
本章我們從策略設計的理念、資料前處理、實際編碼,到驗證與風險控制,逐步建立了量化投資的基礎框架。接下來的章節將深入探討機器學習模型與高頻交易策略的實作,並引入更精細的風險控管工具。