全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
6654 7
2011-04-30
请教高人VaR(Value at Risk)值方差-协方差法R编程问题
先拟合金融资产序列,如用GARCH族模型拟合金融资产价值序列,可以得到其在各期的条件标准差序列,设计算所得条件标准差为h:
h=c(0.0630,0.0036 ,0.1621 ,0.0076 ,-0.0486, -0.0938 ,0.0535 ,0.0254 ,0.2659, -0.0911)
代码:

x=c(189.9390,206.5707,186.4814,210.9900,195.1849,200.6311,182.0851,200.5738,202.8953 ,210.8375);
h=c(0.0630,0.0036 ,0.1621 ,0.0076 ,-0.0486, -0.0938 ,0.0535 ,0.0254 ,0.2659, -0.0911);
alpha=0.05;
fun2=function(x,h,alpha){
n=length(x);
r=rep(0,times=n-1);
for( i in 2:n){
r[i-1]=log(x)-log(x[i-1]);
r;
}
VaR=rep(0,time=n-1);
for(i in 2:n){
VaR[i-1]=qnorm(1-alpha)*x[i-1]*h-x[i-1]*mean(r);
}
VaR
}
fun2(x,h,alpha)



请教高人 代码中的错误在哪里?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2012-12-10 17:22:24
准确的说网上的参考语言没有问题。我也一直在做这个。我的数据带入之后就会出错。楼主如果找到解决的办法,恳请指点
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-12-10 20:20:18
> x=c(189.9390,206.5707,186.4814,210.9900,195.1849,200.6311,182.0851,200.5738,202.8953 ,210.8375);
> h=c(0.0630,0.0036 ,0.1621 ,0.0076 ,-0.0486, -0.0938 ,0.0535 ,0.0254 ,0.2659, -0.0911);
> alpha=0.05;
> fun2=function(x,h,alpha){
+ n=length(x);
+ r=rep(0,times=n-1);
+ for( i in 2:n){
+ r[i-1]=log(x)-log(x[i-1]);
+ r;
+ }
+ VaR=rep(0,time=n-1);
+ for(i in 2:n){
+ VaR[i-1]=qnorm(1-alpha)*x[i-1]*h-x[i-1]*mean(r);
+ }
+ VaR
+ }
> value=fun2(x,h,alpha);
共有18个警告 (用warnings()来显示)
> value
[1] 26.66648 29.00149 26.18106 29.62194 27.40298 28.16760 25.56384 28.15956
[9] 28.48548
> warnings()
警告信息:
1: In r[i - 1] = log(x) - log(x[i - 1]) : 被替换的项目不是替换值长度的倍数
2: In r[i - 1] = log(x) - log(x[i - 1]) : 被替换的项目不是替换值长度的倍数
3: In r[i - 1] = log(x) - log(x[i - 1]) : 被替换的项目不是替换值长度的倍数
4: In r[i - 1] = log(x) - log(x[i - 1]) : 被替换的项目不是替换值长度的倍数
5: In r[i - 1] = log(x) - log(x[i - 1]) : 被替换的项目不是替换值长度的倍数
6: In r[i - 1] = log(x) - log(x[i - 1]) : 被替换的项目不是替换值长度的倍数
7: In r[i - 1] = log(x) - log(x[i - 1]) : 被替换的项目不是替换值长度的倍数
8: In r[i - 1] = log(x) - log(x[i - 1]) : 被替换的项目不是替换值长度的倍数
9: In r[i - 1] = log(x) - log(x[i - 1]) : 被替换的项目不是替换值长度的倍数
10: In VaR[i - 1] = qnorm(1 - alpha) * x[i - 1] * h - x[i -  ... :
  被替换的项目不是替换值长度的倍数
11: In VaR[i - 1] = qnorm(1 - alpha) * x[i - 1] * h - x[i -  ... :
  被替换的项目不是替换值长度的倍数
12: In VaR[i - 1] = qnorm(1 - alpha) * x[i - 1] * h - x[i -  ... :
  被替换的项目不是替换值长度的倍数
13: In VaR[i - 1] = qnorm(1 - alpha) * x[i - 1] * h - x[i -  ... :
  被替换的项目不是替换值长度的倍数
14: In VaR[i - 1] = qnorm(1 - alpha) * x[i - 1] * h - x[i -  ... :
  被替换的项目不是替换值长度的倍数
15: In VaR[i - 1] = qnorm(1 - alpha) * x[i - 1] * h - x[i -  ... :
  被替换的项目不是替换值长度的倍数
16: In VaR[i - 1] = qnorm(1 - alpha) * x[i - 1] * h - x[i -  ... :
  被替换的项目不是替换值长度的倍数
17: In VaR[i - 1] = qnorm(1 - alpha) * x[i - 1] * h - x[i -  ... :
  被替换的项目不是替换值长度的倍数
18: In VaR[i - 1] = qnorm(1 - alpha) * x[i - 1] * h - x[i -  ... :
  被替换的项目不是替换值长度的倍数
>

本文来自: 人大经济论坛 S-Plus&R专版 版,详细出处参考: https://bbs.pinggu.org/forum.php? ... 1&from^^uid=11232
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-12-10 20:46:58
还不懂var
但从程序上看, 循环不循环, 向量化不向量化。
改下看看,
x=c(189.9390,206.5707,186.4814,210.9900,195.1849,200.6311,182.0851,200.5738,202.8953 ,210.8375);
h=c(0.0630,0.0036 ,0.1621 ,0.0076 ,-0.0486, -0.0938 ,0.0535 ,0.0254 ,0.2659, -0.0911);
alpha=0.05;
fun2=function(x,h,alpha){
  n=length(x);
  r=rep(0,times=n-1);
  for( i in 2:n){
    r[i-1]=log(x)-log(x[i-1]);  #x 改为x[ i  ]
    r;
  }
  VaR=rep(0,time=n-1);
  for(i in 2:n){
    VaR[i-1]=qnorm(1-alpha)*x[i-1]*
h-x[i-1]*mean(r);  #h 改为 h[ i  ]
  }
  VaR
}
fun2(x,h,alpha)

[1]  -1.0782514  52.6822358   0.1683152 -19.3136425 -32.3783590[6]  15.3284901   5.4955066  85.3979611 -32.7563238 也不知道红色部分改的对不对,是不是var的计算方式
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-12-10 20:57:51
发现 不是 大家的程序出现错误了
是 论坛出现错误了 x/[/i/] 连在一起打的时候只会 出现 x
x
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-9-5 22:09:02
有意思。。。。。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群