返回目錄
A
數據駕駛:從零開始的量化投資實戰 - 第 3 章
第 3 章 統計學基礎
發布於 2026-02-20 21:26
# 第 3 章 統計學基礎
量化投資的核心在於**數據**,而統計學則是把數據轉化為可操作資訊的工具。本章將以實務角度,回顧機率分布、假設檢定與回歸分析三大統計基礎,並示範如何將這些概念應用於股票、期貨或因子投資策略的建構。
---
## 3.1 機率分布
### 3.1.1 基本概念
機率分布描述隨機變數可能取值與其出現頻率之關係。對於投資者而言,最常關注的是**報酬率**、**波動率**與**風險指標**的分布特性。
| 分布 | 主要參數 | 典型用途 | 範例圖 |
|------|----------|----------|-------|
| 正態 (Normal) | μ(平均值),σ(標準差) | 把報酬率近似為正態,進行 VaR 計算 |
| t-分布 | df(自由度) | 低頻資料尾部比正態更厚,常用於期權定價 |
| 指數 (Exponential) | λ(衰減率) | 風險敞口、延遲時間 |
| 伯努利 (Bernoulli) | p(成功機率) | 兩極化事件(如大跌/大漲) |
| 卡方 (Chi‑Square) | k(自由度) | 變異數比率檢定 |
| F-分布 | dfn, dfd | 比較兩個變異數 |
| 均勻 (Uniform) | a, b | 模擬隨機事件 |
| 伽馬 (Gamma) | k, θ | 模擬持續時間、收益累積 |
> **實務提示**:大多數金融市場的日報酬率雖近似正態,但在極端事件(如 2008 年金融危機)中,尾部分佈往往比正態更厚。此時使用 t-分布或重尾分布(如柯西、學生 t)可更合理估計風險。
### 3.1.2 參數估計
最常用的方法是**最大似然估計(Maximum Likelihood Estimation, MLE)**,其思路是找到使觀測資料似然最大化的參數值。以正態分布為例:
```python
import numpy as np
from scipy import stats
# 假設為日報酬率
returns = np.random.normal(loc=0.0005, scale=0.02, size=252)
mu, sigma = stats.norm.fit(returns) # MLE 估計
print(f"Estimated μ: {mu:.6f}, σ: {sigma:.6f}")
```
> **小技巧**:在實務中,若資料偏態很大,直接使用 `scipy.stats.t.fit` 來估計 t-分布參數,能顯著改善尾部擬合。
### 3.1.3 分布檢定
為了確定某資料是否符合特定分布,可以使用**Kolmogorov‑Smirnov (KS)**、**Anderson‑Darling** 或 **Shapiro‑Wilk** 等檢定方法。
```python
# KS 檢定:判斷日報酬率是否符合正態分布
ks_stat, p_value = stats.kstest(returns, 'norm', args=(mu, sigma))
print(f"KS 統計量: {ks_stat:.4f}, p‑value: {p_value:.4f}")
```
> **實務提醒**:若檢定 p‑value < 0.05,表示拒絕「符合正態分布」的假設,需考慮使用更重尾分布或做分位數風險估計。
---
## 3.2 假設檢定
假設檢定是判斷兩組或多組資料之間是否存在統計顯著差異的工具。在量化投資中,常見用途包括:
- 兩支股票平均報酬差異檢定
- 交易策略的盈虧統計檢定
- 因子有效性測試
### 3.2.1 基本框架
| 步驟 | 說明 |
|------|------|
| 1. 設定零假設 H₀ | 無差異(例如兩個平均報酬相同) |
| 2. 設定對立假設 H₁ | 存在差異 |
| 3. 選擇檢定統計量 | 例如 t‑檢定、Z‑檢定、Wilcoxon |
| 4. 計算 p‑value | p‑value ≤ α 判定拒絕 H₀ |
| 5. 結論 | 判斷策略有效性或因子重要性 |
> **α 水平**:常用 0.05 或 0.01,但在多重比較情況下應做 Bonferroni 或 Benjamini‑Hochberg 調整。
### 3.2.2 常見檢定方法
| 檢定 | 適用情況 | 公式 |
|------|----------|------|
| Z‑檢定 | 大樣本、已知σ |
\( Z = \frac{\bar{x}_1 - \bar{x}_2}{\sqrt{\frac{σ_1^2}{n_1}+\frac{σ_2^2}{n_2}}} \) |
| t‑檢定 | 小樣本、未知σ |
\( t = \frac{\bar{x}_1 - \bar{x}_2}{s_p\sqrt{\frac{1}{n_1}+\frac{1}{n_2}}} \),\(s_p\) 為合併標準差 |
| 卡方檢定 | 分類資料 |
\( χ^2 = \sum \frac{(O_i - E_i)^2}{E_i} \) |
| Anderson‑Darling | 分布擬合 | |
### 3.2.3 實例:兩支股票平均報酬差異
```python
import pandas as pd
from scipy import stats
# 兩支股票日報酬率(隨機生成)
stock_a = np.random.normal(0.001, 0.02, 252)
stock_b = np.random.normal(0.0008, 0.025, 252)
# 兩尾 t‑檢定
t_stat, p_val = stats.ttest_ind(stock_a, stock_b, equal_var=False)
print(f"t‑統計量: {t_stat:.4f}, p‑value: {p_val:.4f}")
```
> **解讀**:若 p‑value < 0.05,說明兩支股票的平均報酬存在統計差異;若 > 0.05,則無法證實平均報酬差異,可能是因子無效或策略失效。
---
## 3.3 回歸分析
回歸分析是預測或解釋**報酬率**的一種基礎模型。最簡單的是線性回歸,將報酬率作為**因變量**,因子作為**自變量**。
### 3.3.1 線性回歸基礎
簡單線性回歸(SLS):
\( y = \beta_0 + \beta_1 x + ε \)
- **y**:目標報酬率
- **x**:單一因子(如市場報酬)
- **β₀, β₁**:回歸係數
- **ε**:誤差項,假設 \(ε \sim N(0,σ^2)\)
> **最小二乘(Ordinary Least Squares, OLS)** 估計:
\( \hat{β} = (X^T X)^{-1} X^T y \)
### 3.3.2 多元回歸
對於因子模型(CAPM、Fama‑French 3‑因子、Carhart 4‑因子等),可將報酬率作為因變量,因子組合作為自變量。
```python
import statsmodels.api as sm
# 生成模擬因子資料(市場、市場風險溢酬、SMB、HML)
factor_data = pd.DataFrame({
'Mkt': np.random.normal(0.001, 0.015, 252),
'SMB': np.random.normal(0.0003, 0.01, 252),
'HML': np.random.normal(0.0002, 0.012, 252)
})
# 個股報酬
stock_ret = factor_data['Mkt'] * 1.2 + factor_data['SMB'] * 0.8 + factor_data['HML'] * 0.5 + np.random.normal(0, 0.01, 252)
# 加入截距
X = sm.add_constant(factor_data)
model = sm.OLS(stock_ret, X).fit()
print(model.summary())
```
> **診斷指標**:
> - **R²**:解釋變異比例,>0.5 通常視為「中等」解釋力。
> - **F‑檢定**:整體模型是否顯著。
> - **t‑檢定**:各係數是否顯著。
> - **多重共線性**:檢查 VIF (Variance Inflation Factor),VIF > 5 表示可能存在共線性問題。
### 3.3.3 異常診斷
| 異常 | 原因 | 檢查方法 |
|------|------|----------|
| 多重共線性 | 自變量高度相關 | VIF, 相關係數矩陣 |
| 異方差 | 準則誤差隨 x 變動 | Breusch‑Pagan、White 檢定 |
| 自相關 | 時間序列誤差相關 | Durbin‑Watson, Ljung‑Box |
> **解決策略**:
> - 重新選擇因子或使用主成分分析(PCA)降維。
> - 進行 **Robust OLS**(Huber、WLS)以減少異方差影響。
> - 對於自相關,可採用 **Newey‑West** 或 **GLS** 估計。
---
## 3.4 量化投資中的實務應用
| 觀念 | 實務範例 |
|------|-----------|
| **尾部風險** | 用 t‑分布或極端分位數估計 1% VaR |
| **因子有效性** | 兩支股票平均報酬差異檢定;多重比較調整 |
| **預期報酬估算** | 用多元回歸預測個股報酬率;回測因子模型 |
### 3.4.1 風險度量:重尾分布擬合
```python
# 使用 student t 分布擬合日報酬率尾部
mu, sigma, df = stats.t.fit(returns)
print(f"t‑分布 df: {df:.2f}")
# 以 1% 分位數計算 VaR
var_1pct = stats.t.ppf(0.01, df, loc=mu, scale=sigma)
print(f"1% VaR (t‑分布): {var_1pct:.4f}")
```
### 3.4.2 因子有效性測試
```python
# 以 CAPM 為例:測試市場因子是否解釋個股報酬
beta, std_err, t_val, p_val = model.params['Mkt'], model.bse['Mkt'], model.tvalues['Mkt'], model.pvalues['Mkt']
print(f"Beta: {beta:.4f}, t‑值: {t_val:.2f}, p‑值: {p_val:.4f}")
```
> **解讀**:若 p‑值 < 0.05,表示市場因子對個股報酬的影響統計顯著;若 > 0.05,市場因子可能不具備預測力,需考慮加入其他因子或調整模型。
---
## 3.5 小結
- 機率分布:理解報酬率的尾部行為,是 VaR、ES 及高頻策略風險評估的基礎。
- 假設檢定:用於驗證策略有效性、因子重要性及多重策略間的顯著差異。
- 回歸分析:是因子模型(CAPM、A‑模型、Fama‑French)的核心,可幫助預測預期報酬並檢測共線性與異方差。
將這些統計工具融入日常量化流程,可以提升模型的 **可信度**、降低 **過度擬合** 的風險,進一步提升策略在真實市場中的穩健性。