matlab - 为金融时间序列实施 Garch 1,1 模型时遇到问题
问题描述
我想在 MATLAB 中使用 Garch 1,1 模型估计调整波动率加权时间序列的回报。然而,当我使用标准 MATLAB 函数运行代码时,我在生成正确的返回向量时遇到了困难,我正在寻找进一步构建它的方法。
有没有人有一个 Garch 1,1 模型可以在函数内运行并将调整后的波动率系列输出为向量?
解决方案
这是模型
function [vols] = modelGarchVol(omega, beta, alpha, returns)
variance_vec = zeros(length(returns), 1);
variance_vec(2) = returns(1)^2;
for i=3:length(variance_vec)
variance_vec(i) = omega + alpha*returns(i-1)*returns(i-1) + beta*variance_vec(i-1);
end
variance_vec;
mean(variance_vec);
vols = variance_vec(2:end).^(1/2);
和 garch 卷
function [params,fval] = garchVol(initial_params, returns)
A = [0 1 1];
b = [1];
[params, fval] = fmincon(@maxGarchParams, initial_params, A, b, [], [], [0 0 0]);
function [logLikelihood] = maxGarchParams(params_vec)
omega = params_vec(1);
beta = params_vec(2);
alpha = params_vec(3);
variance_vec = zeros(length(returns), 1);
variance_vec(2) = returns(1)^2;
logLikelihood = 0;
for i=3:length(variance_vec)
variance_vec(i) = omega + alpha*returns(i-1)*returns(i-1) + beta*variance_vec(i-1);
logLikelihood = logLikelihood + (-log(variance_vec(i)) - ((returns(i)*returns(i))/variance_vec(i)));
end
logLikelihood = logLikelihood*-1;
end
end
推荐阅读
- kubernetes - 一些 Windows 容器 Pod 在 AKS 上重新启动并从 60 个 Pod 中引发 RabbitMq 连接失败,并且在几次重新启动后进入运行状态
- java - 升级到 Tomcat 8.5.51 时出现空指针异常
- ios - 如何在 iWatch 和 iPhone 应用程序之间同步数据
- r - R:如何显示具有百分比值的热图类型表示的表格
- c# - 继续代码 (ContinueWith) 未执行
- bash - 如何使用 awk 从两个制表符分隔的文件中获取相同行数?
- sql - 如何在 SQL SERVER 中生成范围 X 次的随机数
- reactjs - 在 React.js 中跟踪 Google AdWords 中的转化时,如何使用“gtag_report_conversion”?
- azure - 使用 ADF 将数据从 CSV 文件加载到 SQL DB
- react-native - 在 React-native 中异步调用后,屏幕重定向需要时间来执行