📊
用计量经济学方法分析图表:GARCH、肥尾与波动集群
计量经济学GARCH自相关
为什么用计量经济学
“缺乏事实支撑的理论是单调乏味的,但没有理论支撑的事实是毫无意义的。”MQL 社区追求精确,而精确只能由数学与统计给出。本文不解决长期盈利,而是提供若干诊断工具,帮你判断一个价格序列究竟有多少“结构”、多少“噪声”。
时间序列的三大特性
价格序列是非线性对象,线性模型往往低估它的复杂性。计量经济学家关注三类只能用特定模型捕捉的特性:
- 肥尾(fat tails):极端收益出现概率高于正态假设,风险被低估。
- 波动集群(volatility clustering):高波动后更可能高波动,低波动后更可能低波动。
- 杠杆效应:利空带来的波动放大强于等量利好。
自相关与 LBQ 检验
自相关函数衡量序列在滞后 k 期的线性依赖。Ljung-Box Q 检验则整体判断“前 h 阶自相关是否显著不为 0”。复值类 Complex 支持 FFT 与复数运算,是自相关计算的基础。
// 复值类 Complex 支持 FFT / 自相关
void Complex::opPlus(const Complex &c) { re+=c.re; im+=c.im; }
// 滞后 lag 的自相关系数
double autocorr(double &x[], int lag)
{
double mx = Mean(x);
double num=0, den=0;
for(int i=lag;i<ArraySize(x);i++){ num+=(x[i]-mx)*(x[i-lag]-mx); }
for(int i=0;i<ArraySize(x);i++){ den+=(x[i]-mx)*(x[i]-mx); }
return num/den;
}
// Ljung-Box Q 检验
bool lbqtest(double &acf[], int n, int h, double &pval);
GARCH 条件异方差
GARCH(1,1) 用过去的冲击与过去的方差递归估计当前方差,天然刻画“波动集群”。它不预测方向,但能预测波动幅度,是风险定价与止损距离设计的利器。
// GARCH(1,1) 方差更新 sigma2 = omega + alpha*r[t-1]*r[t-1] + beta*sigma2[t-1]; // 波动率集群:高波动后大概率仍高波动 // 约束 alpha + beta < 1 保证平稳
肥尾与风险
⚠ 正态分布会骗你
正态假设下极端行情概率被严重低估。用峰度(kurtosis)判断肥尾程度,仓位管理必须为此预留缓冲——尾部事件虽稀有,却足以摧毁不设防的账户。
实战诊断流程
- 算收益率序列,去趋势后做 ADF 类平稳性判断。
- 画自相关图 + LBQ 检验,看是否存在可建模的线性依赖。
- 拟合 GARCH 看波动集群强度(alpha+beta 接近 1 表示长记忆)。
- 估峰度,确认肥尾,据此设尾部风险预算。
小结
✦ 诊断不是预测
计量经济学给你的是“市场现在处于什么状态”的尺子,而非“明天涨跌”的答案。把它当作策略的前置过滤器与风险校准器。
常见问题
波动率有记忆性,高波动期应缩小仓位、放宽止损;低波动期可适度加仓。
仅说明线性依赖弱,不等于无结构;需结合肥尾与非线性模型判断。
不能预测方向,但能预测波动幅度,用于止损距离与期权定价。