此示例显示如何执行预期的短降模型的估计和次次估算。
风险价值(VaR)和预期不足(ES)必须一起估计,因为ES估计依赖于VaR估计。本例使用历史数据,在测试窗口上使用历史和参数VaR方法估计VaR和ES。参数VaR是在正态和的假设下计算的
的支持的ES回调测试万博1manbetxesbacktest
,esbacktestbysim
,esbacktestbyde
用于评估测试窗口中ES模型的性能的功能。
的esbacktest
对象不需要任何分发信息。像varbacktest
对象,esbacktest
对象仅接受测试数据作为输入。的输入esbacktest
包括投资组合数据,VaR数据和相应的VaR水平,还有ES数据,因为这是回测的。就像varbacktest
,esbacktest
运行单一投资组合的测试,但可以一次支持测试多个模型和多个VaR水平。的esbacktest
对象使用预先计算的临界值表来确定模型是否应该被拒绝。这些基于表格的测试可以作为任何VaR模型的近似测试应用。在这个例子中,它们被应用于回溯测试历史和参数VaR模型。它们可以用于其他VaR方法,如蒙特卡罗或极值模型。
相比之下,esbacktestbysim
和esbacktestbyde
对象需要的分布信息,即分布的域名(正常的
或esbacktestbysim
和esbacktestbyde
一次只能支持测试一个模型,因为它们与特定的分布相关联,尽管你仍然可以一次支持测试多个VaR级别。的esbacktestbysim
对象实现基于模拟的测试,并使用提供的分布信息运行模拟以确定临界值。的esbacktestbyde
对象实现从大样本近似或模拟(有限样本)中导出临界值的测试。的conditionalDE
测试的esbacktestbyde
对象测试的独立性随着时间的推移,以评估是否有证据表明在一系列尾部损失的自相关。所有其他测试都是严重测试,以评估尾部损失的大小是否与模型预测一致。这两个esbacktestbysim
和esbacktestbyde
对象支持普通和万博1manbetx
有关ES回溯方法的其他信息,请参阅esbacktest
,esbacktestbysim
,esbacktestbyde
,亦参见[1],[2],[3.]和[5参考文献中。
本例中使用的数据集包含标准普尔指数大约10年的历史数据,从1993年中期到2003年中期。估计窗口大小被定义为250天,因此使用全年的数据来估计历史VaR和波动率。本例中的测试窗口从1995年初运行到2002年底。
在本例中,按照交易账簿基本审查(FRTB)法规的要求,使用了97.5%的VaR置信水平;参见[4].
加载VaRExampleData.mat回报= tick2ret (sp);DateReturns =日期(2:结束);SampleSize =长度(回报);TestWindowStart =发现(1995年(DateReturns) = = 1);TestWindowEnd =发现(2002年(DateReturns) = = 1, “最后一次”);TestWindow = TestWindowStart: TestWindowEnd;EstimationWindowSize = 250;日期= DateReturns (TestWindow);ReturnsTest =回报(TestWindow);VaRLevel = 0.975;
历史VaR是一种非参数方法,通过一个估计窗口从历史数据估计VaR和ES。VaR是一个百分位数,基于有限样本有多种方法来估计分布的百分位数。一种常见的方法是使用prctile
函数。另一种方法是对数据进行排序,并根据样本大小和VaR置信水平确定切点。同样,也有基于有限样本估计ES的替代方法。
的hHistoricalVaRES
本例底部的局部函数使用有限样本方法估计VaR和ES,采用[7].在有限的样本中,低于VaR的观察数可能与对应于VaR水平的总尾概率不匹配。例如,对于100个观测值和97.5%的VaR水平,尾观测值为2,即样本的2%,然而期望尾概率为2.5%。它可能更糟和样品重复观测值,例如,如果第二个和第三个排序值是相同的,都等于VaR,只有最小的观测值样本值小于VaR, 1%的样本,不期望的2.5%。实现的方法hHistoricalVaRES
进行修正,使尾部概率始终与VaR水平一致;参见[7]有关详情。
VaR_Hist =零(长度(TestWindow),1);ES_Hist =零(长度(TestWindow),1);为了t = TestWindow i = t - TestWindowStart + 1;EstimationWindow = t-EstimationWindowSize: t - 1;[VaR_Hist(我),ES_Hist (i)) = hHistoricalVaRES(返回(EstimationWindow), VaRLevel); 结尾
下图显示了日收益,以及用历史方法估计的VaR和ES。
图;图(DatesTest,ReturnsTest,DatesTest,-VaR_Hist,DatesTest,-ES_Hist)传说('返回', 'var', 'ES', “位置”, '东南') 标题( '历史var和es'网格) 在
对于参数模型,必须计算收益的波动性。给定波动率,VaR和ES可以通过分析来计算。
零均值假定在该示例中,但可以以类似的方式来估计。
对于正常分布,估计的波动率直接用于获得VAR和ES。为了
的hnormalvares.
和hTVaRES
本地函数取作为输入分布参数(其可以作为阵列被传递),并返回VaR和ES。这些本地函数使用VaR和ES的解析表达式为正常,
估算测试窗口的波动率挥发性=零(长度(TestWindow),1);为了t = TestWindow i = t - TestWindowStart + 1;EstimationWindow = t-EstimationWindowSize: t - 1;波动(i) =性病(返回(EstimationWindow)); 结尾%穆在这个例子中= 0μ= 0; 正态分布的标准差参数=波动性SigmaNormal =波动; %标准差(t分布的尺度参数)=波动性*根号((DoF-2)/DoF)sigmat10 =波动率* sqrt((10-2)/ 10);sigmat5 =波动率* sqrt((5-2)/ 5); %估计VaR和ES,正常[VaR_Normal, ES_Normal] = hNormalVaRES(μ,SigmaNormal, VaRLevel); %用10和5自由度估计VaR和ES, t[var_t10,es_t10] = htvares(10,mu,sigmat10,varlevel);[var_t5,es_t5] = htvares(5,mu,sigmat5,varlevel);
以下图示出了日收益,以及VaR和ES估计与正常方法。
图;plot(Datestest,returnstest,datestest,-var_normal,datestest,-es_normal)图例('返回', 'var', 'ES', “位置”, '东南') 标题( “正常VaR和ES”网格) 在
对于参数化方法,同样的步骤可以用于估计备选方法的VaR和ES,如EWMA、delta-gamma近似和GARCH模型。在所有这些参数化方法中,波动性每天都被估计,要么来自EWMA的更新,要么来自delta-gamma近似,或者作为GARCH模型的条件波动性。波动性可以像上面一样得到VaR和ES估计值
的esbacktest
对象为ES模型提供了两个反向测试。两种检验都使用了Acerbi和Szekely在[1),由
在哪里
测试窗口中的时间段数。
是投资组合结果,即投资组合返回或投资组合利润和损失
为定义为1-VaR水平的VaR失败概率。
估计的预期短缺期间吗
是周期VaR的失效指示器
该检验统计量的期望值为0,当存在风险低估的证据时,它为负。为了确定拒绝模型的负面程度,需要临界值,为了确定临界值,需要对组合结果进行分布假设
无条件的测试统计结果在一系列分布假设方面变得稳定
的esbacktest
对象利用无条件测试统计的临界值的稳定性,并使用预先计算的关键值表来运行es背面测试。esbacktest
有两组临界值表。第一组关键值假设投资组合的结果unconditionalNormal
测试。第二组临界值使用最大可能的反面,它假设投资组合的结果unconditionalT
测试。
无条件测试统计量对相对于ES估计的VaR失败的严重程度和VaR失败的数量(违反VaR的次数)都是敏感的。因此,相对于ES的单个但非常大的VaR失效(或只有很少的大损失)可能会导致在特定时间窗内的模型被拒绝。当ES估计也很大时,较大损失对测试结果的影响可能不像ES较小时的较大损失那么大。在许多VaR失败的时期,模型也可以被拒绝,即使所有的VaR违规相对较小,仅略高于VaR。这两种情况都在本例中说明了。
的esbacktest
对象作为输入测试数据,但没有提供分发信息esbacktest
.您还可以为投资组合指定ID,并为每一个被回溯测试的VaR和ES模型指定ID。尽管本例中的模型ID有分布引用(例如,“正常”
或“t 10”
),这些只是用于报告目的的标签。测试没有使用第一个模型是历史VaR方法,或者其他模型是可选参数VaR模型的事实。前一节中用于估计VaR和ES的分布参数没有传递给esbacktest
,在本节中不得以任何方式使用。属性中支持的基于模拟的测试必须提供这些参数万博1manbetxesbacktestbysim
讨论的对象基于仿真的测试节中支持的测试万博1manbetxesbacktestbyde
讨论的对象大样本和全真模拟试卷部分。
ebt = esbacktest(ReturnsTest,[VaR_Hist VaR_Normal VaR_T10 VaR_T5],...[ES_Hist ES_Normal ES_T10 ES_T5], 'portfolioid', “标准普,1995-2002”, ...“VaRID”,[ “历史”“正常”, “T 10”, “T 5”], “VaRLevel”, VaRLevel);disp(光大通信)
esbacktest with properties: [2087x1 double] VaRData: [2087x4 double] ESData: [2087x4 double] portfolio: "S&P, 1995-2002" VaRID: ["Historical" "Normal" "T 10" "T 5"] VaRLevel: [0.9750 0.9750 0.9750 0.9750 0.9750]
通过运行总结
函数。
s =总结(光大通信);disp (s)
PortfolioID VARID VaRLevel ObservedLevel ExpectedSeverity ObservedSeverity观察故障预期比率缺少________________ ____________ ________ _____________ ________________ ________________ ____________ ________ ________ ______ ______ “S&P,1995-2002”, “历史” 0.975 0.96694 1.3711 1.4039 2087 69 52.175 1.3225 0 “S&P,1995-2002”,“正常“0.975 0.97077 1.1928 1.416 2087 61 52.175 1.1691 0 ”S&P,1995-2002“ ”T 10“ 0.975 0.97173 1.2652 1.4063 2087 59 52.175 1.1308 0 ”S&P,1995-2002“ ”T 5“ 0.975 0.97173 1.37 1.4075 2087 59 52.175 1.1308 0
的ObservedSeverity
列显示在违反VaR期间损失与VaR的平均比率。的ExpectedSeverity
列使用ES对VAR的平均比率为var违规时段。为了“历史”
和“T 5”
模型中,观测到的和预期的严重程度是可比较的。但是,对于“历史”
方法,则观察到的故障数(失败
列)远高于预期的故障数(预期
列),大约高出32%(见比率
列)。这两个“正常”
和“T 10”
模型所观察到的严重程度比预期的严重程度要高得多。
图;subplot(2,1,1) bar(categorical(s.VaRID),[s.ExpectedSeverity,s.ObservedSeverity]) ylim([1 1.5]) legend(“预期”, “观察”, “位置”, '东南') 标题( 的平均程度比)子图(2,1,2)条(分类(s.varid),[s.expected,s.failures])ylim([40 70])传奇( “预期”, “观察”, “位置”, '东南') 标题( “VaR失败次数”)
的runtests
函数运行所有测试并仅报告接受或拒绝结果。无条件正常测试更严格。对于8年的测试窗口,两个模型都没有通过测试(“历史”
和“正常”
),一种模型失败了无条件的正常测试,而是通过无条件T测试(“T 10”
),一个模型通过两个测试(“T 5”
).
t = runtests(光大通信);DISP(T)
PortfolioID VaRID VaRLevel UnconditionalNormal UnconditionalT ________________ ____________ ________ ___________________ ______________ " 标准普尔,1995 - 2002”“历史”0.975拒绝拒绝“标普,1995 - 2002”正常“0.975拒绝拒绝”标准普尔,1995 - 2002”“T 10“0.975拒绝接受“标普,1995 - 2002 T 5”0.975接受接受
有关测试的其他详细信息可以通过调用各个测试函数来获得。这是详细的unconditionalNormal
测试。
t =无条件(EBT);DISP(T)
TestLevel PortfolioID VaRID VaRLevel UnconditionalNormal PValue TestStatistic CriticalValue观察 ________________ ____________ ________ ___________________ _________ _____________ _____________ ____________ _________ " 标准普尔,1995 - 2002”“历史”拒绝2087 0.0047612 -0.37917 -0.23338 0.975 0.95”标普、标准普尔,1995-2002" "T 10" 0.975不合格0.037528 -0.2569 -0.23338 2087 0.95 "标准普尔,1995-2002" "T 5" 0.975接受0.13069 -0.16179 -0.23338 2087 0.95
这是详细的unconditionalT
测试。
T = unconditionalT(EBT);DISP(T)
TestLevel PortfolioID VaRID VaRLevel UnconditionalT PValue TestStatistic CriticalValue观察 ________________ ____________ ________ ______________ ________ _____________ _____________ ____________ _________ " 标准普尔,1995 - 2002”“历史”拒绝2087 0.017032 -0.37917 -0.27415 0.975 0.95”标普、标准普尔,1995-2002" "T 10" 0.975接受0.062835 -0.2569 -0.27415 2087 0.95 "标准普尔,1995-2002" "T 5" 0.975接受0.16414 -0.16179 -0.27415 2087 0.95
本节介绍如何使用esbacktest
对象运行用户定义的流量灯测试,以及如何在滚动测试窗口运行测试。
定义交通灯测试的一种方法是将无条件正常和无条件的结果结合起来
绿色:模型通过无条件正常和无条件
黄色:模型没有通过无条件正常测试,但通过了无条件正常测试
Red:模型被无条件的normal和无条件的拒绝
t = runtests(光大通信);TLValue = (t.UnconditionalNormal = =“拒绝”)+(t.unconditionAlt == “拒绝”);t.trafficlight =分类(tlvalue,0:2,{ “绿色”, “黄色”, “红色”}, “顺序”,真正的);DISP(T)
PortfolioID VARID VaRLevel UnconditionalNormal UnconditionalT交通灯________________ ____________ ________ ___________________ ______________ ____________ “S&P,1995-2002”, “历史” 0.975拒绝拒绝红色 “S&P,1995-2002”, “正常” 0.975拒绝拒绝红色 “S&P,1995-2002”“T 10“0.975拒绝接受黄色 ”S&P,1995-2002“ ”T 5“ 0.975接受接受绿色
一种替代用户定义交通灯测试可以使用一个单一的测试中,但是在不同的测试置信水平:
格林:结果是“接受
的测试水平为95%。
黄色:结果是“拒绝”
在95%的测试水平,但是“接受
“在99%。
瑞德:结果是“拒绝”
99%的测试水平。
在[1,检测水平为99.99%。
t95 = runtests(光大通信);% 95%是默认的测试级别值t99 = runtests(光大通信, “TestLevel”, 0.99);TLValue = (t95。UnconditionalNormal = = “拒绝”)+(t99.unconditiondalnormal == “拒绝”);恶意破坏= t95 (:, 1:3);恶意破坏。UnconditionalNormal95 = t95.UnconditionalNormal;恶意破坏。UnconditionalNormal99 = t99.UnconditionalNormal;trolling.Trafficlight =分类(Tlvalue,0:2,{ “绿色”, “黄色”, “红色”}, “顺序”,真正的);DISP(曳)
PortfolioID VaRID VaRLevel UnconditionalNormal95 UnconditionalNormal99 TrafficLight ________________ ____________ ________ _____________________ _____________________ ____________ " 标准普尔,1995 - 2002”“历史”0.975拒绝拒绝红”标准普尔,1995 - 2002”“正常“0.975拒绝拒绝红”标准普尔,1995 - 2002”“T 10“0.975拒绝接受黄色”标普,1995-2002" "T 5" 0.975接受接受绿色
在不同的测试窗口中,测试结果可能不同。在这里,一年滚动窗口用于在原始测试窗口所覆盖的8年内运行ES回退测试。将上述第一个用户定义的红绿灯添加到测试结果表中。的总结
函数也会在每一年调用,以查看风险价值失效的严重程度和数量的历史。
sRolling =表;恶意破坏=表;为了年份= 1995:2002 Ind =Year (DatesTest)==年份;PortID = [ 's&p,'num2str(年)];PortfolioData = ReturnsTest(印第安纳州);VaRData = [VaR_Hist(Ind) VaR_Normal(Ind) VaR_T10(Ind) VaR_T5(Ind)];ESData = [ES_Hist(Ind) ES_Normal(Ind) ES_T10(Ind) ES_T5(Ind)];光大通信= esbacktest (PortfolioData VaRData ESData, ...'portfolioid'PortID, “VaRID”,[ “历史”“正常”“T 10”“T 5”], ...“VaRLevel”, VaRLevel); 如果年份== 1995 sRolling = summary(ebt);恶意破坏= runtests(光大通信); 其他的sRolling = [sRolling;总结(光大通信)]; % #好< AGROW >恶意破坏=[恶意破坏;runtests(光大通信)]; % #好< AGROW >结尾结尾%可选:添加第一个上面描述的自定义红绿灯测试tlvalue =(trolling.unconditionAtrionalAlnormal == “拒绝”) +(恶意破坏。UnconditionalT = = “拒绝”);trolling.Trafficlight =分类(Tlvalue,0:2,{ “绿色”, “黄色”, “红色”}, “顺序”,真正的);
一次显示一个模型的结果。的“T 5”
模型在这些测试中表现最好(两次)“黄色”
),和“正常”
做最坏的模型(三个)“红
“和一个“黄
“)。
DISP(曳(tRolling.VaRID ==“历史”:))
PortfolioID VaRID VaRLevel UnconditionalNormal UnconditionalT TrafficLight ___________ ____________ ________ ___________________ ______________ ____________ " 标普1995”“历史”0.975接受接受绿色”标准普尔,1996年”“历史“0.975拒绝接受黄色”标普1997”“历史“0.975拒绝拒绝红”标普,1998年“历史”0.975接受接受绿色”标普,1999年“历史”0.975接受接受绿色”标普,2000年“历史”0.975接受接受绿色”标普,2001年“历史”0.975接受接受绿色”标普,2002年“历史”0.975拒绝接受红色
DISP(曳(tRolling.VaRID ==“正常”:))
portfolio VaRID VaRLevel UnconditionalNormal UnconditionalT TrafficLight ___________________ ________ ___________________ ______________ ____________ "标准普尔,1995" "正常" 0.975接受接受绿色"标准普尔,1996" "正常" 0.975拒绝拒绝红色"标准普尔,1997" "正常" 0.975拒绝拒绝红色"标准普尔,1998" "正常" 0.975拒绝接受黄色"1999" "正常" 0.975接受接受绿色"标准普尔,2000" "正常" 0.975接受接受绿色"标准普尔,2001" "正常" 0.975接受接受绿色"标准普尔,2002" "正常" 0.975拒绝拒绝红色
DISP(曳(tRolling.VaRID ==“T 10”:))
PortfolioID VaRID VaRLevel UnconditionalNormal UnconditionalT TrafficLight ___________ ______ ________ ___________________ ______________ ____________ " 标普1995”“T 10“0.975接受接受绿色”标准普尔,1996”“T 10“0.975拒绝拒绝红”标准普尔,1997”“T 10“0.975拒绝接受黄色”标准普尔,1998“T 10“0.975接受接受绿色”标普、1999" "T 10" 0.975 accept accept green "标准普尔,2000" "T 10" 0.975 accept accept green "标准普尔,2001" "T 10" 0.975 accept accept green "标准普尔,2002" "T 10" 0.975 reject reject red
DISP(曳(tRolling.VaRID ==“T 5”:))
PortfolioID VaRID VaRLevel UnconditionalNormal UnconditionalT TrafficLight ___________ _____ ________ ___________________ ______________ ____________ " 标普1995 T”“5”0.975接受接受绿色”标准普尔,1996“T”5“0.975拒绝接受黄”标准普尔,1997“T”5“0.975接受接受绿色”标准普尔,1998“T”5“0.975接受接受绿色”标普、1999" "T 5" 0.975 accept accept green "标普,2000" "T 5" 0.975 accept accept green "标普,2001" "T 5" 0.975 accept accept green "标普,2002" "T 5" 0.975 reject accept yellow
2002年是一个严重程度相对较小的年份,但也有许多风险价值失败的年份。尽管观测到的严重程度很低,但所有模型在2002年的表现都很差。然而,一些模型的VaR失败次数是预期VaR失败次数的两倍以上。
disp(总结(光大通信))
PortfolioID VaRID VaRLevel ObservedLevel ExpectedSeverity ObservedSeverity观察故障预计比失踪 ___________ ____________ ________ _____________ ________________ ________________ ____________ ________ ________ ______ _______ " 标普2002”“历史”14 6.525 - 2.1456 0.975 0.94636 1.2022 1.2 261 0”标普、标普,2002" "T 10" 0.975 0.95019 1.2652 1.2066 261 13 6.525 1.9923 0
下图显示了整个8年窗口的数据,以及逐年(预期和观察)的严重程度比“历史”
模型。损失的绝对尺寸与与ES相比的相对大小(或等效与VAR相比)不如相对尺寸一样重要。1997年和1998年的损失均有巨大的损失,其幅度相当。然而,1998年的预期严重程度要高得多(较大的ES估算)。总的来说,这“历史”
方法似乎对严重程度比似乎很好。
SH = sRolling(sRolling.VaRID ==“历史”:);图;subplot(2,1,1) FailureInd = ReturnsTest<-VaR_Hist;-VaR_Hist ReturnsTest情节(日期,日期,日期,-ES_Hist) 在情节(日期(FailureInd) ReturnsTest (FailureInd), “。”)举行 从传奇( '返回', 'var', 'ES', “位置”, “最佳”) 标题( '历史var和es'网格) 在subplot(2,1,2) bar(1995:2002,[sH.ExpectedSeverity,sH.ObservedSeverity]) ylim([1 1.8]) legend( “预期”, “观察”, “位置”, “最佳”) 标题( “年平均严重程度比率,历史VaR”)
然而,与观察到的VAR失败的预期类似的可视化表明了“历史”
方法往往被违反的次数比预期的多。例如,尽管在2002年预期的平均严重性比率与观察到的比率非常接近,但VaR失败的数量是预期数字的两倍多。这将导致无条件正常和无条件的测试失败
图;次要情节(2,1,1)情节(日期,日期,ReturnsTest -VaR_Hist,日期,-ES_Hist)在情节(日期(FailureInd) ReturnsTest (FailureInd), “。”)举行 从传奇( '返回', 'var', 'ES', “位置”, “最佳”) 标题( '历史var和es'网格) 在次要情节(2,1,2)栏(1995:2002,[sH.Expected sH.Failures])传说( “预期”, “观察”, “位置”, “最佳”) 标题( '年度var失败,历史var')
的esbacktestbysim
对象支持五种基万博1manbetx于模拟的ES反向测试。esbacktestbysim
需要对投资组合的结果,即分发名分布信息(“正常”
或“t”
)和测试窗口中每天的分布参数。esbacktestbysim
使用提供的分布信息运行模拟以确定临界值。中支持的测试万博1manbetxesbacktestbysim
是有条件的
,无条件的
,分位数
,minBiasAbsolute
,minBiasRelative
.这些是Acerbi和Szekely在[1], 和 [2],[3.用于2017和2019。
的esbacktestbysim
对象支持普通和万博1manbetx
ES后验必然是近似的,因为它们对预测的VaR的错误是敏感的。然而,最小偏差检验对VaR错误的敏感性很小,而且这种敏感性是谨慎的,因为VaR错误会导致更严厉的ES检验。看到Acerbi-Szekely ([2],[3.] 2017年和2019年)有关详细信息。当分发信息可用时,建议使用最小的偏见测试(参见minBiasAbsolute
,minBiasRelative
).
的“正常”
,“T 10”
,“T 5”
中的基于仿真的测试可以对模型进行回溯测试esbacktestbysim
.因为,仅作说明用途“T 5”
是,val。分布名称(“t”
)和参数(设置自由度,位置和标度)的时esbacktestbysim
创建对象。
RNG('默认'); %的再现性;esbacktestbysim构造函数运行一个模拟ebts = esbacktestbysim(returnstest,var_t5,es_t5, “t”, “DegreesOfFreedom”,5, ...“位置”,亩, “规模”,sigmat5, ...'portfolioid', “标普”, “VaRID”, “T 5”, “VaRLevel”, VaRLevel);
推荐的工作流是相同的:首先,运行总结
函数,然后运行runtests
函数,然后运行各个测试函数。
的总结
函数提供完全相同的信息总结
函数esbacktest
.
s =总结(于);disp (s)
PortfolioID VaRID VaRLevel ObservedLevel ExpectedSeverity ObservedSeverity观察故障预计比失踪 ___________ _____ ________ _____________ ________________ ________________ ____________ ________ ________ ______ _______ " 标普”“T 2087 59 52.175 - 1.1308 0.975 0.97173 1.37 1.4075 0
的runtests
功能显示最终的接受或拒绝结果。
t = runtests(于);DISP(T)
无条件PortfolioID VaRID VaRLevel条件分位数MinBiasAbsolute MinBiasRelative ___________ _____ ________ ___________ _____________ ________ _______________ _______________ " 标普”“接受接受接受接受接受0.975 T 5”
关于测试结果的附加细节可以通过调用单个测试函数获得。例如,调用minBiasAbsolute
测试。第一输出,T.
,包含测试结果和其他细节,如p值、测试统计信息等。第二个输出,S.
,包含假设分布假设的模拟测试统计值是正确的。例如,esbacktestbysim
在这种情况下生成了1000个投资组合结果场景,其中每个场景是一系列的2087个观察模拟S.
输出显示测试统计值的典型值如果分布假设是正确的。这些是用于确定测试的重要性的模拟统计数据,即报告的临界值和
(t, s) = minBiasAbsolute(于);DISP(T)
PortfolioID VaRID VaRLevel MinBiasAbsolute PValue TestStatistic CriticalValue TestLevel观察场景 ___________ _____ ________ _______________ ______ _____________ _____________ ____________ _________ _________ " 标准普尔5 T”接受0.299 -0.00080059 -0.0030373 0.975 0.95 2087 1000
谁S.
名称大小字节类属性小号1x1000的8000双
选择一个测试,显示测试结果和可视化测试的意义。直方图显示模拟检验统计量的分布,星号显示了检验统计量的实际投资组合回报的价值。
ESTestChoice =“minbiasabsolute”; 开关ESTestChoice 情况下“MinBiasAbsolute”(t, s) = minBiasAbsolute(于); 情况下“MinBiasRelative”(t, s) = minBiasRelative(于); 情况下“条件”(t, s) =条件(于); 情况下“无条件的”(t, s) =无条件(于); 情况下分位数的[T,S] =位数(EBTS); 结尾DISP(T)
PortfolioID VaRID VaRLevel MinBiasAbsolute PValue TestStatistic CriticalValue TestLevel观察场景 ___________ _____ ________ _______________ ______ _____________ _____________ ____________ _________ _________ " 标准普尔5 T”接受0.299 -0.00080059 -0.0030373 0.975 0.95 2087 1000
图;柱状图(s);持有在;情节(t。TestStatistic 0 '*');持有 从;标题= sprintf ( '%s: %s, p-value: %4.3f', t.VaRID ESTestChoice t.PValue);标题(标题)
无条件检验统计报告esbacktestbysim
是否与报告的无条件检验统计量完全相同esbacktest
.然而,报告的临界值esbacktestbysim
是基于一个模拟使用esbacktest
对象给出了近似的测试结果“T 5”
模型,而这里的结果是特定于所提供的分布信息的。同时,为有条件的
测试,这是独立条件测试(ConditionalOnly
结果在上面的表格)。最终条件测试结果(有条件的
列)也依赖于初步的VaR回溯测试(VaRTestResult
列)。
的“T 5”
模型由五个测试接受。
的esbacktestbysim
对象提供A.模拟
函数来运行一个新的模拟。例如,如果有一个边界测试结果,其中测试统计量接近临界值,则可以使用模拟
函数模拟新的场景。在需要更高精度的情况下,可以运行更大的模拟。
的esbacktestbysim
可以在滚动窗口上运行测试,方法与上面描述的相同esbacktest
.用户定义的红绿灯测试也可以定义,例如,使用两个不同的测试置信水平,类似于上面所做的esbacktest
.
的esbacktestbyde
对象支持用大样万博1manbetx本近似或模拟(有限样本)确定临界值的两个ES回测。esbacktestbyde
需要对投资组合的结果,即分发名分布信息(“正常”
或“t”
)和测试窗口中每天的分布参数。它不需要ES数据的风险价值。esbacktestbyde
使用提供的分发信息将投资组合结果映射到“排名”,即应用累积分布函数映射到单位间隔中的值,其中定义了测试统计信息。esbacktestbyde
可以通过使用大样本近似或有限样本模拟确定临界值。
中支持的测试万博1manbetxesbacktestbyde
是conditionalDE
和无条件
.这些是Du和Escanciano在[3.].的无条件
测试和本示例中先前讨论的所有测试都是严重测试,用于评估尾部损失的大小是否与模型预测一致。的conditionalDE
然而,测试是在一系列尾部损失中存在自相关的时间的独立性测试。
的esbacktestbyde
对象支持普通和万博1manbetx
的“正常”
,“T 10”
,“T 5”
模型可以用中的测试进行回溯测试esbacktestbyde
.因为,仅作说明用途“T 5”
是,val。分布名称(“t”
)及参数(自由程度
,位置
,规模
)被提供时esbacktestbyde
创建对象。
RNG('默认'); %的再现性;esbacktestbyde构造函数运行一个模拟ebtde = esbacktestbyde (ReturnsTest, “t”, “DegreesOfFreedom”,5, ...“位置”,亩, “规模”,sigmat5, ...'portfolioid', “标普”, “VaRID”, “T 5”, “VaRLevel”, VaRLevel);
推荐的工作流是相同的:首先,运行总结
函数,然后运行runtests
函数,然后运行各个测试函数。的总结
函数提供完全相同的信息总结
函数esbacktest
.
s =总结(ebtde);disp (s)
PortfolioID VaRID VaRLevel ObservedLevel ExpectedSeverity ObservedSeverity观察故障预计比失踪 ___________ _____ ________ _____________ ________________ ________________ ____________ ________ ________ ______ _______ " 标普”“T 2087 59 52.175 - 1.1308 0.975 0.97173 1.37 1.4075 0
的runtests
功能显示最终的接受或拒绝结果。
t = runtests (ebtde);DISP(T)
PortfolioID VaRID VaRLevel ConditionalDE UnconditionalDE ___________ _____ ________ _____________ _______________ " 标普”“0.975 T 5”拒绝接受
关于测试结果的附加细节可以通过调用单个测试函数获得。
t = conditionalDE (ebtde);DISP(T)
PortfolioID VaRID VaRLevel ConditionalDE PValue TestStatistic CriticalValue自相关观测CriticalValueMethod TestLevel NumLags场景 ___________ _____ ________ _____________ __________ _____________ _____________ _______________ ____________ ___________________ _______ _________ _________ " 标普”“0.00034769 0.975 T 5”拒绝12.794 3.8415 0.078297 2087“大样品”1 NaN 0.95
缺省情况下,临界值由大样本近似确定。使用使用模拟估计的有限样本分布的临界值“CriticalValueMethod”
可选的名称-值对参数。
[t,s] = conditionalde(EBTDE,“CriticalValueMethod”, “模拟”);DISP(T)
PortfolioID VaRID VaRLevel ConditionalDE PValue TestStatistic CriticalValue自相关观测CriticalValueMethod TestLevel NumLags场景 ___________ _____ ________ _____________ ______ _____________ _____________ _______________ ____________ ___________________ _______ _________ _________ " 标普”“拒绝0.01 12.794 3.7961 0.975 T 5”0.078297 2087“模拟”1 1000 0.95
第二个输出,S.
,包含模拟测试统计值。以下可视化对于比较模拟的有限样本分布与大样本近似值的匹配有用。该曲线表明,基于仿真(有限样本)分布的试验统计分布的尾部略重。这意味着基于模拟的测试版本更容易耐受,并且在大样本近似结果拒绝的某些情况下不会拒绝。大型样本和仿真分布匹配的匹配不仅取决于测试窗口中的观测数量,还取决于var置信水平(更高的变量水平导致有限样本分布中的较重尾部)。
xLS = 0:0.05:30;pdfLS = chi2pdf (xLS, t.NumLags);直方图(年代,“归一化”, “pdf”)举行 在绘图(XLS,PDFL)保持 从ylim(0.1[0])传说({ '模拟', “大样本”})标题=的sprintf( “条件测试分布\nVaR级别:%g%%,样本大小= %d”VaRLevel * 100, t.Observations);标题(标题)
可以使用类似的步骤查看详细信息无条件
测试,并比较大样本和基于仿真的结果。
的esbacktestbyde
对象提供A.模拟
函数来运行一个新的模拟。例如,如果有一个边界测试结果,其中测试统计量接近临界值,则可以使用模拟
函数模拟新的场景。此外,在默认情况下,模拟为条件测试存储最多5个延迟的结果,因此如果需要基于模拟的大量延迟的结果,则必须使用模拟
函数。
如果大样本近似测试是您唯一需要的测试,因为它们对于特定的样本大小和VaR水平是可靠的,那么您可以在创建一个esbacktestbyde
通过使用对象“模拟”
可选的输入。
的esbacktestbyde
可以在滚动窗口上运行测试,方法与上面描述的相同esbacktest
.您还可以定义红绿灯测试,例如,您可以使用两个不同的测试置信级别,类似于上面所做的esbacktest
.
对比三个ES回溯测试对象:
的esbacktest
对象用于广泛的分布假设:历史VaR、参数VaR、蒙特卡罗VaR或极值模型。然而,esbacktest
提供基于同一检验的两种变体的近似检验结果:具有两组预先计算的不同临界值的无条件检验统计量(unconditionalNormal
和unconditionalT
).
的esbacktestbysim
对象用于具有正常的参数方法和esbacktestbysim
提供五种不同的测试(有条件的
,无条件的
,分位数
,minBiasAbsolute
,minBiasRelative
这些测试的临界值是使用您提供的分布信息模拟的,因此更加准确。尽管所有的ES后测对VaR估计误差都很敏感,但最小偏差测试的敏感性很小,推荐使用(详见Acerbi-Szekely 2017和2019年[2],[3.])。
的esbacktestbyde
对象也被用于正常的和参数化的方法esbacktestbyde
包含严重程度(无条件
)和时间无关(conditionalDE
)的测试,它具有方便的大样本,快速版的测试。的conditionalDE
在这三个类中支持的所有测试中,test是ES模型随时间变化的独立性的唯一测试。万博1manbetx
如该示例中所示,所有三个ES回测对象提供的功能,以产生上严重性,VaR的故障,和测试结果信息的报告。三个ES回溯测试对象提供灵活的基础上加以发展。例如,您可以创建用户定义的交通灯测试和运行ES回测分析了滚动窗口。
[1] Acerbi, C.和B. Szekely。“val预期缺口。”MSCI Inc., 2014年12月。
[2] Acerbi,C.和B. Szekely。“可回收统计数据的一般属性。
[3] Acerbi, C.和B. Szekely。“ES的最小偏差Backtest。”
[4]巴塞尔银行监管委员会。《市场风险的最低资本要求》2016年1月,https://www.bis.org/bcbs/publ/d352.htm
[5]都,Z.,和J. C. Escanciano。“回溯测试的期望损失:会计尾部风险。”
[6]麦克尼尔,A.,R。弗雷和P. Embrechts。
[7] Rockafellar,R. T.和S. Uryasev。“有条件价值在-风险一般损失分布。”
函数(VaR, ES) = hHistoricalVaRES(样本,VaRLevel)%计算历史VaR和ES%技术细节见[7]折算成损失Sample = -Sample;n =长度(样本);K = CEIL(n * varlevel);z =排序(样本);var = z(k); 如果ķ 其他的es = z(k); 结尾结尾函数[var,ES] = hnormalvares(mu,sigma,varlevel) %compute var和正常分布的es%请参阅[6]技术细节VaR = 1 * (Mu-Sigma * norminv (VaRLevel));ES = 1 * (Mu-Sigma * normpdf (norminv (VaRLevel)。/ (1-VaRLevel)); 结尾函数(VaR, ES) = hTVaRES(景深,μ、σVaRLevel) %compute var和t个位置级分布的es%请参阅[6]技术细节VaR = 1 * (Mu-Sigma * tinv (VaRLevel景深));ES_StandardT = (tpdf (tinv VaRLevel,景深,景深)。*(景深+ tinv (VaRLevel,景深)。^ 2)。/ ((1-VaRLevel)。* (DoF-1)));ES = 1 * (Mu-Sigma * ES_StandardT); 结尾