我想用AR-GARCH模型来拟合股票收益率,但需要修改innovation的分布的密度函数,在各种编程语言中的garch包没有可选的参数,只能自己编写设定,但又没有完整的garch拟合程序来参考借鉴,苦恼,请大家不吝赐教或者指条明路
我能学和懂python、r、Matlab
我可以向您提供一个基本的AR-GARCH模型的程序,但需要您根据自己的需求进行修改,并添加自定义的innovation分布的密度函数。
首先,需要用MATLAB获取股票收益率的数据,并对其进行平稳性检验,确保数据符合AR-GARCH模型的要求。接着,使用Yule-Walker方程或Burg法确定AR模型的参数,利用最大似然估计确定GARCH模型的参数。最后,可以使用所得到的参数和innovation分布的密度函数编写一个用于拟合股票收益率的AR-GARCH模型的程序。
以下是一个基本的AR-GARCH模型的程序:
%获取股票收益率数据,这里以AAPL为例
data = readtable('AAPL.csv');
returns = diff(log(data.AdjClose)); %计算对数收益率
%平稳性检验
[h, pValue, stat] = lbqtest(returns, [20:20:220]); %Q检验,检验20,40,...,220阶自相关项
if h
disp('存在自相关');
else
disp('不存在自相关');
end
[residuals, conditionalVolatility, stdErrors] = garch(returns,1,1);
%确定AR模型的参数
arCoeffs = aryule(returns, p); %p为预先设定的AR模型阶数
%确定GARCH模型的参数
options = optimset('Display','off'); %采用最大似然估计方法
startParams = [0.01 0.9 0.03]; %预设初始参数
[estimatedParams,~,~,~,~,Hessian] = fminunc(@garchobj,startParams,options,returns);
需要注意的是,以上代码中的garchobj函数需要根据自定义的innovation分布的密度函数进行修改。我的建议是使用标准的t分布,因为它是常用的偏态重尾分布,经过广泛的检验和应用。
另外,建议阅读一下《金融时间序列分析》一书,其中详细介绍了AR-GARCH模型的原理和实现方法,可以作为参考资料来完善程序。