对VaR的有效性进行检验,最著名的方法是Kupiec提出的LR方法。

它首先建立一个统计量LR=-2*log(((1-alpha)^(T-N))*(alpha^N))+2*log(((1-N/T)^(T-N))*((N/T)^N));

式中1-alpha为置信水平;T为算出的VaR值的个数;N为VaR失效的个数,即实际损失值大于VaR值的个数。

Kupiec推导出LR服从自由度为1卡方分布。如果计算出的LR大于卡方统计量的临界值,就拒绝VaR有效的原假设。

同时,也可以根据LR计算出VaR失败次数的置信区间。

其在R中的实现如下:

编写一个函数Kupiec.test:

<br />
#######    xdata:原序列<br />
#######    VaRdata:VaR序列<br />
#######    N:失败次数<br />
#######    T:总次数<br />
#######    p:计算VaR值所对应的置信水平<br />
#######    con.level:VaR.back.test所对应的置信水平<br />
VaR.back.test=function(xdata,VaRdata,p,con.level){<br />
p=p;<br />
con.level=con.level;<br />
prob=1-p;<br />
N=sum(xdata>VaRdata);<br />
T=length(xdata);<br />
LR_POF=-2*log((prob^N)*(1-prob)^(T-N))+2*log(((N/T)^N)*(1-N/T)^(T-N));<br />
critical=qchisq(con.level,df=1);<br />
P_value=pchisq(LR_POF,df=1,lower.tail=F);<br />
list(LR_POF,P_value)<br />
}<br />
</p>
看来没有做金融统计的,版主把帖子撤了吧。
不要沮丧嘛,我等目前还没有机会接触呢。
虽然不是做金融统计的,但一定要支持一下。

版上的 abel 应该比较懂  [s:11]
1 个月 后
楼主是金融高手哈,刚才还看到楼主计算VALUE AT RISK 的帖子,以后多多请教。
3 个月 后
7 个月 后

强烈建议楼主继续坚持爆料!各种R在金融中的应用的cases。就算没有人研究但是有很多人用!

我刚才把上面的程序跑了下,为什么得到的结果不一致?

[[1]]:

[1] 119.8266

[[2]]:

[1] 0.5620756 0.5283553

[[3]]:

[1] 0 0

那个函数变量有点混乱,我重新发了一个简洁的,你试一下吧。

5 个月 后

回复 第1楼 的 dengyishuo:谢谢楼主,正好用上了

回复 第11楼 的 dengyishuo:楼主,请问xdate、VaRdate在R怎么载入,

另外,正在接触VaR的内容,需要做分析方法,和蒙特卡洛模拟相关的事情,但是无从下手,楼主能给指导一下吗?

5 个月 后
7 天 后

回复 第13楼 的 yushansara:xdate是股票实际风险,VaRdate是你用算法估计的VaR数据

1 年 后
2 个月 后

回复 第1楼 的 dengyishuo:楼主你好我跑了你的程序结果如下:

[[1]]

[1] 0.02010067

[[2]]

[1] 0.8872563

想问你,这个结果怎么看呢?N是多少?刚接触R软件,见笑了~~

回复 第17楼 的 cr7madrid:

1.第二个输出结果是P值,根据P值判断是否拒绝原假设就行了。

2.N=sum(xdata>VaRdata)

回复 第18楼 的 dengyishuo:先谢谢楼主了,还有个问题:我看有的文章写了“95%置信度下VaR的非拒绝区间为[6,21]”这个区间是怎么得到的?直接查卡方表不对啊?

回复 第19楼 的 cr7madrid:“有的论文”?这是个“神秘论文”。