主要内容

varbacktest

创建varbacktest对象运行风险值(VaR)回测套件

描述

一般工作流程为:

  1. 加载或生成VaR回测分析的数据。

  2. 创建一个varbacktest对象。有关更多信息,请参见创建varbacktest

  3. 使用总结函数为给定的数据生成关于观察数和故障数的摘要报告。

  4. 使用runtests函数一次运行所有测试。

  5. 有关其他测试详细信息,请运行以下单独测试:

    • tl-红绿灯测试

    • 箱子-二项式检验

    • pof-故障比例

    • 凝灰岩-时间到第一次失败

    • cc-条件覆盖混合

    • cci-条件覆盖独立性

    • tbf-故障间隔时间混合

    • tbfi-失败之间的时间独立

    有关更多信息,请参见VaR回测流程

创建

描述

例子

vbt= varbacktest (PortfolioDataVaRData创建一个varbacktestvbt)对象使用投资组合结果数据和相应的风险价值(VaR)数据。的vbt对象具有以下属性:

  • PortfolioData- - - - - -NumRows——- - - - - -1控件的副本PortfolioData

  • VaRData- - - - - -NumRows——- - - - - -NumVaRs控件的副本VaRData

  • PortfolioID-包含PortfolioID

  • VaRID- - - - - -1——- - - - - -NumVaRs字符串向量,包含VaRIDS对应的列VaRData

  • VaRLevel- - - - - -1——- - - - - -NumVaRs包含VaRLevelS对应的列VaRData

请注意

  • 所需的输入参数PortfolioData而且VaRData肯定都在同一个单位。这些论点可以用回报或盈亏来表示。中没有验证varbacktest对象关于这些参数的单位。

  • 如果有缺失值(S)的数据PortfolioDataVaRData,则在应用测试之前丢弃数据行。因此,对于缺失值数量不同的模型,报告的观测值数量也不同。报告的观察数等于原始行数减去缺失值的数。要确定是否有丢弃的行,请使用“失踪”的列总结报告。

例子

vbt= varbacktest (___名称,值属性使用名称-值对和前面语法中的任何参数。例如,vbt = varbacktest(PortfolioData,VaRData,'PortfolioID','Equity100','VaRID','TotalVaR','VaRLevel',.99).您可以指定多个名称-值对作为可选的名称-值对参数。

输入参数

全部展开

投资组合结果数据,指定为aNumRows——- - - - - -1数字数组,NumRows——- - - - - -1表,或NumRows——- - - - - -1包含投资组合结果数据的数字列时间表。PortfolioData输入设置PortfolioData财产。

请注意

所需的输入参数PortfolioData而且VaRData肯定都在同一个单位。这些论点可以用回报或盈亏来表示。中没有验证varbacktest对象关于这些参数的单位。

数据类型:|表格|时间表

风险值(VaR)数据,使用NumRows——- - - - - -NumVaRs数字数组,NumRows——- - - - - -NumVaRs表,或NumRows——- - - - - -NumVaRs列有数字的时间表。VaRData输入设置VaRData财产。

如果VaRData有多个列(NumVaRs>1),PortfolioData对中的每一列进行测试VaRData.缺省情况下,0.95VaR置信水平用于中的所有列VaRData.(使用VaRLevel以指定不同的VaR置信水平。)

惯例是VaR是一个正数。因此,当损失(投资组合数据的负数)超过VaR时,即当

-PortfolioData > VaRData

例如,当结果比损失1,000,000更糟糕时(投资组合结果的负值或损失大于VaR),就违反了1,000,000(正)的VaR。

VaRData值是允许的,但是负的VaR值表示在给定的VaR置信水平下,高利润的投资组合不会亏损。也就是说,在给定的置信水平下,最坏的情况仍然是盈利的。

请注意

所需的输入参数PortfolioData而且VaRData肯定都在同一个单位。这些论点可以用回报或盈亏来表示。中没有验证varbacktest对象关于这些参数的单位。

数据类型:|表格|时间表

名称-值参数

指定可选参数对为Name1 = Value1,…,以=家,在那里的名字参数名称和价值对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。

在R2021a之前,使用逗号分隔每个名称和值,并将其括起来的名字在报价。

例子:vbt = varbacktest(PortfolioData,VaRData,'PortfolioID','Equity100','VaRID','TotalVaR','VaRLevel',.99)

用户自定义IDPortfolioData输入,指定为逗号分隔的对,由“PortfolioID”和字符向量或字符串。的PortfolioID名称-值对参数设置PortfolioID财产。

如果PortfolioData的默认值是数值数组吗PortfolioID“投资组合”.如果PortfolioData是一张桌子,PortfolioID默认情况下设置为表中相应的变量名。

数据类型:字符|字符串

VaR标识符VaRData列,指定为逗号分隔的对,由“VaRID”和字符向量或字符串。多个VaRIDS使用a指定1——- - - - - -NumVaRs(或NumVaRs——- - - - - -1元素的字符向量或字符串向量的单元格数组VaRData列。的VaRID名称-值对参数设置VaRID财产。

如果NumVaRs1的默认值VaRID“VaR”.如果NumVaRs>1,默认值为“VaR1”“VaR2”等等。如果VaRData是一张桌子,“VaRID”默认情况下设置为表中相应的变量名。

数据类型:字符|细胞|字符串

VaR置信水平,指定为由逗号分隔的对组成“VaRLevel”和一个数字之间0而且1或者一个1——- - - - - -NumVaRs值介于之间的数值数组0而且1中的对应列VaRData.的VaRLevel名称-值对参数设置VaRLevel财产。

数据类型:

属性

全部展开

用于VaR回测分析的投资组合数据,指定为NumRows——- - - - - -1包含投资组合数据副本的数字数组。

数据类型:

VaR数据用于VaR回测分析,指定为aNumRows——- - - - - -NumVaRs包含VaR数据副本的数值数组。

数据类型:

投资组合标识符,指定为字符串。

数据类型:字符串

VaR标识符,指定为1——- - - - - -NumVaRs中对应列的VaR idVaRData

数据类型:字符串

VaR级别,指定为a1——- - - - - -NumVaRs中对应列的VaR级别的数值数组VaRData

数据类型:

varbacktest财产 从“命令行使用”中设置或修改属性varbacktest 使用点符号修改属性
PortfolioData 是的 没有
VaRData 是的 没有
PortfolioID 是的 是的
VaRID 是的 是的
VaRLevel 是的 是的

对象的功能

tl 风险值(VaR)回测红绿灯测试
箱子 风险价值(VaR)的二项检验
pof 风险值(VaR)回测的失败测试比例
凝灰岩 距离风险值(VaR)回测的第一次失败测试的时间
cc 风险价值(VaR)回测的条件覆盖混合检验
cci 风险价值(VaR)回测的条件覆盖独立性检验
tbf 风险值(VaR)回测的故障间隔时间混合测试
tbfi 用于风险价值(VaR)回测的故障间隔时间独立测试
总结 varbacktest数据报告
runtests 运行所有测试varbacktest

例子

全部折叠

varbacktest采用投资组合结果数据和相应的风险价值(VaR)数据,并返回一个varbacktest对象。

创建一个varbacktest对象。

负载VaRBacktestDatavbt = varbacktest(股票指数,Normal95)
vbt = varbacktest with properties: PortfolioData: [1043x1 double] VaRData: [1043x1 double] PortfolioID: "Portfolio" VaRID: "VaR" VaRLevel: 0.9500

vbt,varbacktest对象,包含给定投资组合数据的副本(PortfolioData属性),给定的VaR数据(VaRData属性)和要测试的投资组合ID、VaR ID和VaR级别的所有组合(PortfolioIDVaRID,VaRLevel属性)。

运行测试vbt对象。

runtests (vbt)
ans =表1×11转发PortfolioID VaRID VaRLevel TL本POF凝灰岩CC CCI延长TBFI  ___________ _____ ________ _____ ______ ______ ______ ______ ______ ______ ______ " 投资组合”“VaR”0.95绿色接受接受接受接受接受拒绝拒绝

改变PortfolfioID而且VaRID使用点表示法的属性。

vbt。PortfolioID =“标普”
vbt = varbacktest与属性:PortfolioData: [1043x1 double] VaRData: [1043x1 double] PortfolioID:“标准普尔”VaRID:“VaR”VaRLevel: 0.9500
vbt。VaRID =“95%正常”
vbt = varbacktest与属性:PortfolioData: [1043x1 double] VaRData: [1043x1 double] PortfolioID:“标准普尔”variid:“正常在95%”VaRLevel: 0.9500

运行已更新的所有测试varbacktest对象。

runtests (vbt)
ans =表1×11转发PortfolioID VaRID VaRLevel TL本POF凝灰岩CC CCI延长TBFI  ___________ _______________ ________ _____ ______ ______ ______ ______ ______ ______ ______ " 标普”“正常的0.95 95%”绿色接受接受接受接受接受拒绝拒绝

创建一个varbacktest对象。

负载VaRBacktestDatavbt = varbacktest(股票指数,Normal95)
vbt = varbacktest with properties: PortfolioData: [1043x1 double] VaRData: [1043x1 double] PortfolioID: "Portfolio" VaRID: "VaR" VaRLevel: 0.9500

vbt,varbacktest对象,包含给定投资组合数据的副本(PortfolioData属性),给定的VaR数据(VaRData属性)和要测试的投资组合ID、VaR ID和VaR级别的所有组合(PortfolioIDVaRID,VaRLevel属性)。

运行测试varbacktest对象。

runtests (vbt)
ans =表1×11转发PortfolioID VaRID VaRLevel TL本POF凝灰岩CC CCI延长TBFI  ___________ _____ ________ _____ ______ ______ ______ ______ ______ ______ ______ " 投资组合”“VaR”0.95绿色接受接受接受接受接受拒绝拒绝

改变PortfolfioID而且VaRID使用点表示法的属性。

vbt。PortfolioID =“标普”
vbt = varbacktest与属性:PortfolioData: [1043x1 double] VaRData: [1043x1 double] PortfolioID:“标准普尔”VaRID:“VaR”VaRLevel: 0.9500
vbt。VaRID =“95%正常”
vbt = varbacktest与属性:PortfolioData: [1043x1 double] VaRData: [1043x1 double] PortfolioID:“标准普尔”variid:“正常在95%”VaRLevel: 0.9500

运行已更新的所有测试varbacktest对象。

runtests (vbt)
ans =表1×11转发PortfolioID VaRID VaRLevel TL本POF凝灰岩CC CCI延长TBFI  ___________ _______________ ________ _____ ______ ______ ______ ______ ______ ______ ______ " 标普”“正常的0.95 95%”绿色接受接受接受接受接受拒绝拒绝

创建一个varbacktest对象具有多个具有不同置信度的VaR标识符。

负载VaRBacktestDatavbt = varbacktest(股票指数,...[Normal95 Normal99历史95历史99 EWMA95 EWMA99],...“PortfolioID”“股票”...“VaRID”, {“Normal95”“Normal99”“Historical95”“Historical99”“EWMA95”“EWMA99”},...“VaRLevel”,[0.95 0.99 0.95 0.99 0.99 0.99]);

的摘要报告varbacktest对象。

总结(vbt)
ans =6×10表PortfolioID VaRID VaRLevel observvedlevel Observations Failures Expected Ratio FirstFailure Missing ___________ ______________ ________ _____________ ____________ ________ ______________ ____________ _______ "Equity" "Normal95" 0.95 0.94535 1043 57 52.15 1.093 58 0 "Equity" "Normal99" 0.99 0.9837 1043 17 10.43 1.6299 173 0 "Equity" "Historical95" 0.95 0.94343 1043 59 52.15 1.1314 55 0 "Equity" "Historical99" 0.99 0.98849 1043 12 10.43 1.1505 173 0 "Equity" "EWMA95" 0.95 0.94343 1043 59 52.151.1314 28 0“权益”“EWMA99”0.99 0.97891 1043 22 10.43 2.1093 143 0

运行所有测试varbacktest对象。

runtests (vbt)
ans =6×11表PortfolioID VaRID VaRLevel TL Bin POF TUFF CC CCI TBF TBFI ___________ ______________ ______________ ____________ ____________ ____________ ______“权益”“Normal95”0.95绿色接受接受接受接受接受接受拒绝拒绝“权益”“Normal99”0.99黄色拒绝接受接受接受接受接受接受接受接受接受接受接受接受“权益”“Historical95”0.95绿色接受接受接受接受接受接受接受拒绝“权益”“Historical99”0.99绿色接受接受接受接受接受接受接受“权益”“EWMA95”0.95绿色接受接受接受接受接受接受接受“权益”“EWMA99”0.99黄色拒绝接受接受拒绝接受接受接受接受接受

进行红绿灯测试(tl)使用varbacktest对象。

tl (vbt)
ans =6×9表PortfolioID VaRID VaRLevel TL Probability TypeI Increase Observations Failures ___________ ______________ ______________ ___________ _________ ________ ____________ ________“Equity”“Normal95”0.95绿色0.77913 0.26396 0 1043 57“Equity”“Normal99”0.99黄色0.97991 0.03686 0.26582 1043 17“Equity”“Historical95”0.95绿色0.85155 0.18232 0 1043 59“Equity”“Historical99”0.99绿色0.74996 0.35269 0 1043 12“Equity”“EWMA95”0.95绿色0.85155 0.18232 0 1043 59“Equity”“EWMA99”0.99黄色0.99952 0.0011122 0.43511 1043 22

使用varbacktest使用表输入和名值对参数来创建两个varbacktest对象,并运行连接的摘要报告。varbacktest将表输入中的变量名使用为PortfolioID而且VaRID

负载VaRBacktestDatavbtE = varbacktest(DataTable(:,2),DataTable(:,3:4),“VaRLevel”[0.95 - 0.99]);vbtD = varbacktest(DataTable(:,5),DataTable(:,6:7),“VaRLevel”[0.95 - 0.99]);(总结(vbtE);总结(vbtD)]
ans =表4×10PortfolioID VaRID VaRLevel obvedlevel Observations Failures Expected Ratio FirstFailure Missing _____________ __________________ ________ _____________ ____________ ________________ _______ ____________ _______ "Equity" "VaREquity95" 0.95 0.94343 1043 59 52.15 1.1314 28 0 "Equity" "VaREquity99" 0.99 0.97891 1043 22 10.43 2.1093 143 0 "Derivatives" " varderivatives " " varderivatives " " 0.95 0.95014 1043 52 52.15 0.99712 9 0 "Derivatives" " varderivatives " " 0.99 0.97028 1043 31 10.43 2.9722 28 0

运行所有测试并连接结果。

[runtests (vbtE);runtests (vbtD)]
ans =4×11表PortfolioID VaRID VaRLevel TL Bin POF TUFF CC CCI TBF TBFI _____________ __________________ ______________ __________________ __________________ ______“权益”“VaREquity95”0.95绿色接受接受接受接受接受接受接受接受接受接受接受接受接受接受接受接受接受接受“权益”“VaREquity99”0.99黄色拒绝拒绝接受接受接受接受接受接受接受拒绝接受“衍生品”“varderiatives95”0.95绿色接受接受接受接受接受接受拒绝拒绝“衍生品”“varderiatives99”0.99红色拒绝拒绝接受接受接受接受接受拒绝reject

运行pof测试并连接结果。

(pof (vbtE);pof (vbtD)]
ans =4×9表PortfolioID VaRID VaRLevel POF LRatioPOF PValuePOF观察失败TestLevel _____________ __________________ ______________ __________ __________ ____________ _________________ "Equity" "VaREquity95" 0.95接受0.91023 0.34005 1043 59 0.95 "Equity" "VaREquity99" 0.99拒绝9.8298 0.0017171 1043 22 0.95 "Derivatives" " varderivatives " 0.95接受0.00045457 0.98299 1043 52 0.95 "Derivatives" " varderivatives " 0.99拒绝26.809 2.2457e-07 1043 31 0.95

参考文献

巴塞尔银行监管委员会,结合市场风险资本要求的内部模型方法使用“回溯测试”的监督框架。1996年1月,https://www.bis.org/publ/bcbs22.htm

[2]克里斯托弗森,P。“评估区间预测”《国际经济评论》。Vol. 39, 1998,第841 - 862页。

[3] Ph.干邑白兰地“回溯风险价值:模型有多好?”智能风险,PRMIA, 2015年7月。

[4]哈斯,M。“回溯测试的新方法。”金融工程,凯撒研究中心,波恩,2001。

[5]博士约里昂《金融风险管理手册》。第六版。威利金融,2011。

[6] Kupiec, P。验证风险管理模型准确性的技术衍生品杂志。第3卷,1995年,第73 - 84页。

[7]麦克尼尔A,弗雷R,埃姆布雷希茨P。定量风险管理。普林斯顿大学出版社,2005年。

[8] Nieppola, O.“回溯风险价值模型”。赫尔辛基经济学院,2009。

版本历史

在R2016b中引入