对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>