滚动窗口,并通过杜和Escanciano的期望损失(ES)回测多模型

此示例示出了用于使用用于滚动窗口分析和测试多个风险值的都-Escanciano(DE)预期缺口(ES)backtests工作流/ ES模型。

本例中的滚动窗口的工作流程也用于值高危(VAR)backtests在varbacktest和用于在所述Acerbi-塞克利ES backtestsesbacktestesbacktestbysim类。

本例中的多模型的工作流程也可用于将esbacktestbysim类。对于esbacktestvarbacktest,您可以创建多个模型和多层次的VaR单个对象。

滚动窗口

在数据ESBacktestDistributionData.mat文件有回报,VaR和ES数据,和分布信息的三种模式:正常,Ť用5个自由度和Ť用10个自由度。将数据分成多个年份从1996年1月至2003年7月,共1966年的观测。

要通过滚动窗口,一个运行测试esbacktestbyde对象必须为每个感兴趣的一年(或时间段)创建。在这个例子中,每年从1996年至2002年分别进行测试。您可以测试所有的VaR水平在一起,但为了简化输出,这个例子中使用单一的VaR水平。您也可以拨打任何测试,或摘要处理循环内报告,但只有这个例子电话runtests功能。

加载ESBacktestDistributionData.matRNG('默认');%用于重现年= 1996:2002;TargetVaRLevel = 0.99;T =表;对于TargetYear =年工业=年(日期)== TargetYear;VaRInd = VaRLevel == TargetVaRLevel;ebtde = esbacktestbyde(返回(茚基),“T”...'自由程度'10,...'位置',0,...%始终为0在该数据组'规模',T10Scale(茚基),...'VaRLevel',VaRLevel(VaRInd),...'PortfolioID',strcat的(“S&P,”中,字符串(TargetYear)),...'VARID'“T(10)”);T = [T;runtests(ebtde)];结束DISP(t)的
PortfolioID VARID VaRLevel ConditionalDE UnconditionalDE ___________ _______ ________ _____________ _______________ “S&P,1996年”, “吨(10)” 0.99拒绝拒绝 “S&P,1997年”, “吨(10)” 0.99接受拒绝 “S&P,1998年”, “吨(10)” 0.99接受接受 “S&P,1999年”, “T(10)” 0.99拒绝接受 “S&P,2000”, “T(10)” 0.99接受接受 “S&P,2001年”, “T(10)” 0.99接受接受 “S&P,2002年”“吨(10)”拒绝0.99接受

对于更先进的方法,你可以使用数组esbacktestbyde对象,然后根据需要调用对应于不同年份的对象不同的功能。

RNG('默认');%用于重现NUMYEARS =长度(年);ebtdeArray(NUMYEARS)= esbacktestbyde;TargetVaRLevel = 0.99;对于YY = 1:NUMYEARS TargetYear =年(YY);IND =年(日期)== TargetYear;VaRInd = VaRLevel == TargetVaRLevel;ebtdeArray(YY)= esbacktestbyde(返回(茚基),“T”...'自由程度'10,...'位置',0,...%始终为0在该数据组'规模',T10Scale(茚基),...'VaRLevel',VaRLevel(VaRInd),...'PortfolioID',strcat的(“S&P,”中,字符串(TargetYear)),...'VARID'“T(10)”);结束DISP(ebtdeArray)
1X7 esbacktestbyde阵列属性:PortfolioData VARDATA ESData分布PortfolioID VARID VaRLevel

显示2002年的总结。

DISP(摘要(ebtdeArray(年== 2002)))
PortfolioID VARID VaRLevel ObservedLevel ExpectedSeverity ObservedSeverity观测故障预期比率缺少___________ _______ ________ _____________ ________________ ________________ ____________ ________ ______ _______ “S&P,2002年”, “吨(10)” 0.99 0.98467 1.2169 1.1481 261 4 2.61 1.5326 0

串连所有年份的条件测试。

condDEResults =表;对于YY = 1:NUMYEARS condDEResults = [condDEResults;conditionalDE(ebtdeArray(YY))];结束DISP(condDEResults)
PortfolioID VARID VaRLevel ConditionalDE p值TestStatistic CriticalValue自相关观测CriticalValueMethod NumLags方案TestLevel ___________ _______ ________ _____________ __________ _____________ _____________ _______________ ____________ ___________________ _______ _________ _________ “S&P,1996年”, “吨(10)” 0.99拒绝0.0084691 6.9315 3.8415 0.16265 262 “大样本” 1为NaN 0.95 “S&P,1997年”, “吨(10)” 0.99接受0.85691 0.032512 3.8415 -0.011161 261 “大样本” 1 NaN的0.95 “S&P,1998年”, “吨(10)” 0.99接受0.87949 0.022989 3.8415 -0.0093851 261“大-sample” 1 NaN的0.95 “S&P,1999年”, “吨(10)” 0.99拒绝2.1168e-50 222.89 3.8415 0.92412 261 “大样本” 1 NaN的0.95 “S&P,2000” “T(10)” 0.99接受0.89052 0.0189483.8415 -0.0085367 260 “大样本” 1 NaN的0.95 “S&P,2001年”, “吨(10)” 0.99接受0.92088 0.0098664 3.8415 -0.0061484 261 “大样本” 1 NaN的0.95 “S&P,2002年”, “吨(10)”0.99拒绝3.5974e-05 17.073 3.8415 0.25576 261 “大样本” 1 0.95的NaN

多模型

类似于esbacktestbysim对象时,esbacktestbyde对象接受在一个时间只有一个分布。如果您并排需要测试不同型号的一面,那么你必须创建一个类的不同实例。

在这个例子中,你跑了正态分布假设的考验,Ť分布具有5首10个自由度。然后您连接测试结果生成一个报告。

在数据ESBacktestDistributionData.mat文件有回报,VaR和ES数据,以及用于三种模式分发信息:正常,并且t具有5首10个自由度。将数据分成多个年份从1996年1月至2003年7月,共1966年的观测。为了简单起见,这个例子中从1998仅使用数据。

加载ESBacktestDistributionData.matTargetYear = 1998;IND =年(日期)== TargetYear;RNG('默认');%用于重现

创建一个实例esbacktestbyde对象为正态分布。

ebtdeNormal = esbacktestbyde(返回(茚基),“正常”...'意思',0,...'StandardDeviation',NormalStd(茚基),...'VaRLevel',VaRLevel,...'PortfolioID',strcat的(“S&P,”中,字符串(TargetYear)),...'VARID'“正常”);DISP(ebtdeNormal)
esbacktestbyde与属性:PortfolioData:[261x1双] VARDATA:[261x3双] ESData:[261x3双]分布:[1x1的结构] PortfolioID: “S&P,1998” VARID:[ “正常”, “正常”, “正常”] VaRLevel:[0.9500 0.9750 0.9900]
DISP(ebtdeNormal.Distribution)
名称: “正常” 的平均:0 StandardDeviation:261x1双]

创建一个实例esbacktestbyde对象为Ť分布10点的自由度。

ebtdeT10 = esbacktestbyde(返回(茚基),“T”...'自由程度'10,...'位置',0,...'规模',T10Scale(茚基),...'VaRLevel',VaRLevel,...'PortfolioID',strcat的(“S&P,”中,字符串(TargetYear)),...'VARID'“T(10)”);DISP(ebtdeT10)
esbacktestbyde与属性:PortfolioData:[261x1双] VARDATA:[261x3双] ESData:[261x3双]分布:[1x1的结构] PortfolioID: “S&P,1998” VARID:[ “T(10)” “T(10)”“T(10)”] VaRLevel:[0.9500 0.9750 0.9900]
DISP(ebtdeT10.Distribution)
名称: “T” DegreesOfFreedom:10位置:0比例:[261x1双]

创建一个实例esbacktestbyde对象为Ť分布与5个自由度。

ebtdeT5 = esbacktestbyde(返回(茚基),“T”...'自由程度'5,...'位置',0,...'规模',T5Scale(茚基),...'VaRLevel',VaRLevel,...'PortfolioID',strcat的(“S&P,”中,字符串(TargetYear)),...'VARID'“T(5)”);DISP(ebtdeT5)
esbacktestbyde与属性:PortfolioData:[261x1双] VARDATA:[261x3双] ESData:[261x3双]分布:[1x1的结构] PortfolioID: “S&P,1998” VARID:[ “吨(5)”, “吨(5)”“T(5)”] VaRLevel:[0.9500 0.9750 0.9900]
DISP(ebtdeT5.Distribution)
名称: “T” DegreesOfFreedom:5位置:0比例:[261x1双]

运行测试,然后将结果连接。

testResults = [runtests(ebtdeNormal);runtests(ebtdeT10);runtests(ebtdeT5)];DISP(testResults)
PortfolioID VARID VaRLevel ConditionalDE UnconditionalDE ___________ ________ _____________ _______________ “S&P,1998年”, “正常” 0.95接受接受 “S&P,1998年”, “正常” 0.975接受接受 “S&P,1998年”, “正常” 0.99接受拒绝 “S&P,1998年”,“吨(10) “0.95接受接受 ”S&P,1998年“, ”吨(10)“ 0.975接受接受 ”S&P,1998年“, ”吨(10)“ 0.99接受接受 ”S&P,1998年“, ”吨(5)“ 0.95接受接受”S&P,1998" 年, “吨(5)” 0.975接受接受 “S&P,1998年”, “吨(5)” 0.99接受接受

显示的风险价值水平的结果0.99

TargetVaRLevel = 0.99;DISP(testResults(testResults.VaRLevel == TargetVaRLevel,:))
PortfolioID VARID VaRLevel ConditionalDE UnconditionalDE ___________ ________ _____________ _______________ “S&P,1998年”, “正常” 0.99接受拒绝 “S&P,1998年”, “吨(10)” 0.99接受接受 “S&P,1998年”, “吨(5)” 0.99接受接受