聊天視窗

數據駕駛:從零開始的量化投資實戰 - 第 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)的核心,可幫助預測預期報酬並檢測共線性與異方差。 將這些統計工具融入日常量化流程,可以提升模型的 **可信度**、降低 **過度擬合** 的風險,進一步提升策略在真實市場中的穩健性。