http://cos.name/cn/topic/15520
看看上面的链接
对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:
####### xdata:原序列
####### VaRdata:VaR序列
####### N:失败次数
####### T:总次数
####### p:计算VaR值所对应的置信水平
####### con.level:VaR.back.test所对应的置信水平
VaR.back.test=function(xdata,VaRdata,p,con.level){
p=p;
con.level=con.level;
prob=1-p;
N=sum(xdata>VaRdata);
T=length(xdata);
LR_POF=-2*log((prob^N)*(1-prob)^(T-N))+2*log(((N/T)^N)*(1-N/T)^(T-N));
critical=qchisq(con.level,df=1);
P_value=pchisq(LR_POF,df=1,lower.tail=F);
list(LR_POF,P_value)
}