股票量化交易中统计学如何提升策略胜率
摘要:
统计学是股票量化交易的基石,通过时间序列分析、假设检验和概率模型捕捉市场规律,提升策略胜率。

统计学在股票量化中的核心地位
股票量化交易依赖数据驱动决策,统计学提供从海量价格、成交量、财务指标中提取有效信号的方法。期货市场同样如此,高频数据、多品种价差、期限结构均需统计工具处理。没有统计学,量化模型只能停留在直觉层面,无法验证策略是否具有可持续的盈利概率。
描述性统计与市场特征提取
计算股票日收益率均值、标准差、偏度、峰度,可以判断收益分布是否偏离正态。期货主力合约的滚动收益率序列常呈现尖峰厚尾,直接使用正态假设会低估极端风险。通过滚动窗口计算波动率,能够识别市场状态切换。
import pandas as pd
import numpy as np
# 假设df包含股票或期货的收盘价序列
df['return'] = df['close'].pct_change()
rolling_mean = df['return'].rolling(20).mean()
rolling_std = df['return'].rolling(20).std()
sharpe = rolling_mean / rolling_std * np.sqrt(252)
假设检验与因子有效性
量化选股因子是否有效,需要统计检验。t检验判断因子收益率均值是否显著异于零,Mann-Whitney U检验比较不同组别收益分布差异。期货跨期套利中,协整检验确认价差是否长期均衡。缺少假设检验,容易将随机波动误认为稳定规律。
from scipy import stats
group_a = df[df['factor'] > df['factor'].median()]['return']
group_b = df[df['factor'] <= df['factor'].median()]['return']
t_stat, p_value = stats.ttest_ind(group_a, group_b)
if p_value < 0.05:
print('因子分组收益差异显著')
时间序列分析构建预测模型
股票价格和期货价格都是时间序列,自相关、偏自相关、单位根检验是建模前提。ARIMA模型捕捉线性依赖,GARCH模型刻画波动率聚集。协整关系用于配对交易,误差修正模型描述短期偏离与长期均衡的调整速度。

平稳性检验与差分
ADF检验判断序列是否平稳。非平稳序列直接回归会产生伪回归。期货连续合约价格通常一阶差分后平稳,股票对数价格也常需差分。
from statsmodels.tsa.stattools import adfuller
result = adfuller(df['close'])
print('ADF统计量:', result[0], 'p值:', result[1])
# 若p值大于0.05,进行一阶差分
df['diff'] = df['close'].diff().dropna()
result_diff = adfuller(df['diff'].dropna())
自回归与移动平均
ARIMA(p,d,q)中p由PACF截尾确定,q由ACF截尾确定。股票日内高频数据可用ARMA建模,期货夜盘与日盘衔接处需考虑交易时段效应。
from statsmodels.tsa.arima.model import ARIMA
model = ARIMA(df['diff'].dropna(), order=(2,0,2))
result = model.fit()
print(result.summary())
forecast = result.forecast(steps=5)
概率模型与风险控制
量化交易的核心是管理不确定性。凯利公式根据胜率和赔率确定下注比例,但需用历史数据估计胜率与赔率分布。VaR和CVaR度量期货组合的尾部风险。蒙特卡洛模拟生成大量价格路径,评估策略最大回撤概率。
凯利公式与仓位管理
win_rate = 0.55
win_loss_ratio = 1.5
kelly_fraction = win_rate - (1 - win_rate) / win_loss_ratio
position_size = max(0, kelly_fraction) * capital
实际交易中需用半凯利或分数凯利降低波动。期货杠杆放大盈亏,统计估计误差可能导致过度下注。
蒙特卡洛回撤模拟
import numpy as np
returns = df['return'].dropna().values
n_simulations = 10000
n_days = 252
max_drawdowns = []
for _ in range(n_simulations):
sample = np.random.choice(returns, size=n_days, replace=True)
cum = (1 + sample).cumprod()
peak = np.maximum.accumulate(cum)
drawdown = (cum - peak) / peak
max_drawdowns.append(drawdown.min())
print('95%置信度最大回撤:', np.percentile(max_drawdowns, 5))
统计套利与期货配对交易
期货配对交易利用两个相关合约价差的均值回归特性。计算价差Z-score,当Z-score超过阈值开仓,回归均值平仓。统计量包括价差均值、标准差、半衰期。股票市场中性策略同样依赖统计套利,做多低估组合、做空高估组合。
协整检验与价差构建
from statsmodels.tsa.stattools import coint
score, p_value, _ = coint(price_a, price_b)
if p_value < 0.05:
spread = price_a - beta * price_b
z_score = (spread - spread.mean()) / spread.std()
# z_score > 2 做空价差,z_score < -2 做多价差
半衰期计算
import statsmodels.api as sm
spread_lag = spread.shift(1).dropna()
spread_ret = spread.diff().dropna()
model = sm.OLS(spread_ret, spread_lag).fit()
half_life = -np.log(2) / model.params[0]
半衰期决定持仓周期,过短则交易成本吞噬利润,过长则暴露方向性风险。
过拟合防范与统计稳健性
量化策略在历史数据上表现优异,可能只是统计假象。多重比较校正、样本外测试、交叉验证是必要步骤。股票因子挖掘中,尝试数千个因子后,部分因子仅因偶然显著。Bonferroni校正或FDR控制降低假阳性。期货高频策略需考虑交易成本、滑点、市场冲击。
样本外滚动回测
from sklearn.model_selection import TimeSeriesSplit
tscv = TimeSeriesSplit(n_splits=5)
for train_index, test_index in tscv.split(X):
X_train, X_test = X[train_index], X[test_index]
y_train, y_test = y[train_index], y[test_index]
model.fit(X_train, y_train)
score = model.score(X_test, y_test)
统计显著性不等于经济显著性。夏普比率、信息比率、换手率综合评估。期货策略还需关注保证金占用、隔夜跳空风险。
贝叶斯统计与动态更新
贝叶斯方法将参数视为随机变量,先验分布结合新数据得到后验分布。股票收益预测中,贝叶斯收缩估计降低极端值影响。期货波动率建模中,贝叶斯GARCH动态更新参数。粒子滤波和马尔可夫链蒙特卡洛实现复杂后验推断。
贝叶斯线性回归
import pymc as pm
with pm.Model() as model:
alpha = pm.Normal('alpha', mu=0, sigma=10)
beta = pm.Normal('beta', mu=0, sigma=10)
sigma = pm.HalfNormal('sigma', sigma=1)
mu = alpha + beta * X
y_obs = pm.Normal('y_obs', mu=mu, sigma=sigma, observed=y)
trace = pm.sample(1000, tune=1000)
贝叶斯方法自然处理参数不确定性,适合小样本或结构突变场景。股票财报数据更新频率低,贝叶斯先验可融入行业知识。
统计学习与机器学习融合
统计学习提供正则化、偏差方差权衡、模型选择理论。Lasso回归筛选股票因子,岭回归处理多重共线性。随机森林和梯度提升树捕捉非线性关系,但需统计检验避免过拟合。期货订单流数据用逻辑回归预测短期方向,统计显著性指导特征工程。
Lasso因子筛选
from sklearn.linear_model import LassoCV
lasso = LassoCV(cv=5, random_state=0).fit(X_train, y_train)
selected = np.where(lasso.coef_ != 0)[0]
统计学习强调可解释性,深度学习黑箱模型在量化中需谨慎。股票量化追求稳定夏普比率,期货量化追求低回撤。统计学贯穿数据清洗、信号生成、风险控制、绩效评估全流程。没有扎实统计基础,量化策略如同沙上建塔。
声明
转载声明:欢迎分享本文,转载请注明出处!
点击复制: