楼主: kuangee11
4916 3

[其他] t分布下的用蒙特卡洛模拟求VAR和CVAR [推广有奖]

  • 0关注
  • 1粉丝

本科生

68%

还不是VIP/贵宾

-

威望
0
论坛币
4044 个
通用积分
0
学术水平
1 点
热心指数
1 点
信用等级
1 点
经验
994 点
帖子
119
精华
0
在线时间
96 小时
注册时间
2011-9-10
最后登录
2019-6-2

300论坛币
最近在写论文,因为我导师不帮我看,我只能来这里求助了!!!现在突然发现t分布下的用蒙特卡洛模拟求VAR和CVAR求出来特别奇怪,呈现出上升的趋势……在正态分布下还好。我是用上证指数做的,下面是matlab代码(请不要嫌弃代码。。没学过。。。):
M=1708;    %%%模拟的天数
N=100000;   %%%模拟次数
T=1;
Y=index2(200:end,1);    %%%实际数据1908个,因为前面200个用来模拟第一天的
VARGARCH_T=zeros(M,1);
CVARGARCH_T=zeros(M,1);
sigma=zeros(M+1,1);
loss=zeros(M,1);
sigma(1)=std(yield2(1:200));
for i=1:1:M
V=trnd(4.45301);    %%%t分布的自由度根据拟合结果的来的
X=yield2(i:i+199,1);
mu=mean(X);
sigma(i+1)=sqrt(1.16991e-06+0.0242339*V.^2*sigma(i).^2+0.972129*sigma(i).^2);
S=Y(i)*exp(normrnd((mu-sigma(i+1)*sigma(i+1)/2)*T,sigma(i+1)*sqrt(T),1,N));
SS=sort(S);
CVARGARCH_T(i)=mean(index2(i+199)-SS(1:.01*N));
VARGARCH_T(i)=index2(i+199)-quantile(SS,.01);
loss(i)=index2(i+199)-index2(i+200);  %正数是损失,负数是收益,Loss是实际的损失
end

这个就是画出来的VAR和实际损失比较的图!!!这也太奇怪了把!!!



我看别人的论文的图都是这样!!!


都是和实际损失贴合的比较近啊!!!
然后这个是AR(3)GARCH(1,1)的结果图,本来是AR(4)的!!结果AR(1),AR(2),AR(4)的t都小!!不符合我就删掉了。。。。。


然后如果您已经看到这里了,我后天就要交论文了………………麻烦您啦~~~
解决出来我看怎么样再加钱吧 因为时间很紧怕来不及啊!

我会一直查看的!!QAQ 谢谢啦


附件: 你需要登录才可以下载或查看附件。没有帐号?我要注册

最佳答案

nc2100 查看完整内容

不知道你程序背后的数学推导是怎样的(最好先写数学推导,编程只是翻译而已),你这里的Y是收益率,而S是index(价格)对吗?所以应该有index(t+1)=index(t)*exp(Y*△t)? 那么Y是什么的收益率,年化收益率还是日收益率?如果是年化收益率,那么△t=1/365,如果是日收益率△t=1。 从图上看,现在最棘手的问题是量纲不对,如果不是△t的问题,你可以试试看在代码中设置breakpoint,然后run,程序会在breakpoint处停下,此时用鼠 ...
关键词:蒙特卡洛模拟 蒙特卡洛 CVAR VaR 蒙特卡 蒙特卡洛 正态分布 论文
沙发
nc2100 学生认证  发表于 2014-5-18 19:03:50 |只看作者 |坛友微信交流群
不知道你程序背后的数学推导是怎样的(最好先写数学推导,编程只是翻译而已),你这里的Y是收益率,而S是index(价格)对吗?所以应该有index(t+1)=index(t)*exp(Y*△t)? 那么Y是什么的收益率,年化收益率还是日收益率?如果是年化收益率,那么△t=1/365,如果是日收益率△t=1。  

从图上看,现在最棘手的问题是量纲不对,如果不是△t的问题,你可以试试看在代码中设置breakpoint,然后run,程序会在breakpoint处停下,此时用鼠标指向每一个变量,它会告诉你这个变量此时的具体的值,你看看哪个变量的量纲不合理,再一步步上溯,应该能找到原因

使用道具

藤椅
kuangee11 发表于 2014-5-18 22:53:41 |只看作者 |坛友微信交流群
QAQ顶一下!!

使用道具

板凳
kuangee11 发表于 2014-5-19 17:09:34 |只看作者 |坛友微信交流群
nc2100 发表于 2014-5-19 13:23
不知道你程序背后的数学推导是怎样的(最好先写数学推导,编程只是翻译而已),你这里的Y是收益率,而S是in ...
你好 谢谢你的回复
我是根据GBM模型来写的程序,Y是价格,只是从200号开始,因为要对第一个sigma和mu的值要用前200个数据进行运算。公式是S_t=S_0×exp[(μ-σ^2/2)t+σw_t ]   ,w_t是维纳过程,服从0,1正态分布。

我后面也排查了原因,是sigma出现了问题,然后sigma的程序也没有问题,但是在GARCH-T分布的时候,sigma呈现出随着时间急剧增加的情况。如图。然后排查发现是系数问题。就是sigma(i+1)=sqrt(1.16991e-06+0.0242339*V.^2*sigma(i).^2+0.972129*sigma(i).^2); 这里的系数有问题,但是我也不知道问题出在哪里………………



再次谢谢你的解答!!!!!!!!!!!!
附件: 你需要登录才可以下载或查看附件。没有帐号?我要注册

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加JingGuanBbs
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-1 19:32