Ucsd-MATLAB GARCH模型分析与预测工具箱
项目简介
本项目基于加州大学圣地亚哥分校(Ucsd)开发的专业GARCH工具箱理念,构建了一套在MATLAB环境下运行的金融时间序列波动率分析与预测系统。与网络上常见的版本不同,本项目修复了兼容性问题,提供了一个自包含、可直接运行的模拟演示环境。
该工具箱通过main主程序,完整展示了从数据生成、基础统计分析、模型参数估计(GARCH & GJR-GARCH)、模型诊断到样本外波动率预测的全流程计量经济学分析框架。
主要功能特性
- GARCH过程模拟:内置数据生成器,能够模拟具有已知参数的金融收益率序列,用于验证模型的准确性。
- 基础统计分析:自动计算收益率序列的均值、标准差、偏度、峰度,并绘制时间序列图。
- 多模型估计:
*
标准 GARCH(1,1):捕捉波动率聚集效应。
*
GJR-GARCH(1,1):非对称GARCH模型,用于捕捉金融市场中的杠杆效应(坏消息对波动率的影响大于好消息)。
- 高精度极大似然估计:采用SQP(序列二次规划)算法进行参数寻优,包含严格的参数约束处理。
- 模型诊断系统:
* 波动率拟合曲线对比。
* 标准化残差正态性检验(QQ图)。
* ARCH效应检验(残差平方自相关分析)。
- 波动率预测:基于估计参数进行多步向前的样本外波动率预测,并与真实波动率过程进行对比。
系统运行流程与逻辑详解
主程序严格按照量化分析的标准流程设计,具体步骤如下:
1. 数据生成机制
程序首先设定固定的随机种子以保证结果可复现。设置样本长度为2000,定义了真实的GARCH(1,1)参数(Omega, Alpha, Beta)。通过迭代生成条件方差序列和模拟收益率数据,并将数据划分为
样本内(前1800个数据)用于模型估计,
样本外(后200个数据)用于预测验证。
2. 描述性统计
程序计算并输出样本内数据的四大统计量:均值、标准差、偏度(衡量分布不对称性)和峰度(衡量尾部肥厚程度)。同时绘制原始收益率序列图表,直观展示波动率聚集现象。
3. GARCH(1,1) 模型估计
核心算法使用 MATLAB 的
fmincon 函数进行约束非线性优化。
- 目标函数:负对数似然函数(Gaussian Log-Likelihood)。
- 约束条件:确保参数为正,且 Alpha + Beta < 1 以保证过程的平稳性。
- 结果输出:计算参数估计值、近似标准误以及 t 统计量,并评估波动率的持续性。
4. GJR-GARCH(1,1) 模型估计
程序进一步估计了非对称的 GJR-GARCH 模型。
- 模型结构:引入杠杆项 Gamma 和指示函数,当上期残差为负时,波动率增加幅度更大。
- 优化细节:同样使用 MLE 方法,增加了对 Gamma 参数的约束,用于识别市场下跌时的剧烈波动特征。
5. 模型诊断与残差分析
程序基于估计出的最佳参数重构条件方差,并进行多维度的图形化诊断:
- 拟合图:将估计的条件波动率与收益率绝对值重叠绘制。
- QQ图:检测标准化残差是否服从标准正态分布。
- ACF分析:自定义计算残差平方的自相关函数,并绘制带有置信区间的条形图,用于判断是否成功消除了原序列中的ARCH效应。
6. 样本外预测
采用递归迭代法进行未来波动率的预测。
- 程序利用样本内最后一期的条件方差和残差平方作为起点。
- 根据 GARCH 的方差方程,计算未来 k 步的预期方差。随着预测步长的增加,预测值会逐渐收敛至无条件方差(长期均值)。
- 最终将预测路径与模拟生成的“真实”样本外波动率在同一张图中进行对比,直观展示预测效果。
关键算法与技术实现
- 似然函数构建:代码底部定义了
garch_likelihood 和 gjr_garch_likelihood 两个辅助函数。它们通过循环递归计算每个时间点的条件方差 $h_t$,并根据正态分布假设计算对数似然值。为了数值稳定性,对 $h_t$ 设定了下限阈值。 - 自相关计算:内置了
autocorr_compute 函数,不依赖高版本工具箱即可计算自相关系数,用于残差分析。 - 优化器配置:
fmincon 被配置为使用 sqp 算法,这是处理此类非线性约束优化问题的稳健选择。
使用方法
- 确保 MATLAB 环境已安装。
- 将包含主程序代码的文件保存为
.m 文件(建议文件名不含特殊字符)。 - 在 MATLAB 命令行窗口输入主函数名并回车,或直接点击编辑器中的“运行”按钮。
- 程序将自动执行所有步骤,在控制台输出参数估计结果,并弹出一个包含6个子图的综合分析窗口。
系统要求
- MATLAB 版本:推荐 R2014a 及以上版本(代码兼容性较好,适配新旧版本)。
- 工具箱依赖:
* Optimization Toolbox(
必需,用于
fmincon 函数)。
* Statistics and Machine Learning Toolbox(用于
skewness,
kurtosis,
qqplot 等统计函数)。