Main Content

conditional

Conditional expected shortfall (ES) backtest by Acerbi and Szekely

Description

TestResults = conditional(ebts) runs the conditional ES backtest of Acerbi-Szekely (2014). The conditional test has two underlying tests, a preliminary Value-at-Risk (VaR) backtest that is specified using the name-value pair argument VaRTest, and the standalone conditional ES backtest. A 'reject' result on either underlying test produces a 'reject' result on the conditional test.

example

[TestResults,SimTestStatistic] = conditional(ebts,Name,Value) adds optional name-value pair arguments for TestLevel and VaRTest.

example

Examples

collapse all

Create an esbacktestbysim object.

load ESBacktestBySimData
rng('default'); % for reproducibility
ebts = esbacktestbysim(Returns,VaR,ES,"t",...
       'DegreesOfFreedom',10,...
       'Location',Mu,...
       'Scale',Sigma,...
       'PortfolioID',"S&P",...
       'VaRID',["t(10) 95%","t(10) 97.5%","t(10) 99%"],...
       'VaRLevel',VaRLevel);

Generate the ES conditional test report.

TestResults = conditional(ebts)
TestResults=3×14 table
    PortfolioID        VaRID        VaRLevel    Conditional    ConditionalOnly    PValue    TestStatistic    CriticalValue    VaRTest    VaRTestResult    VaRTestPValue    Observations    Scenarios    TestLevel
    ___________    _____________    ________    ___________    _______________    ______    _____________    _____________    _______    _____________    _____________    ____________    _________    _________

       "S&P"       "t(10) 95%"        0.95        reject           reject             0       -0.092302        -0.043941       "pof"        accept           0.70347           1966          1000         0.95   
       "S&P"       "t(10) 97.5%"     0.975        reject           reject         0.001        -0.11714        -0.052575       "pof"        accept           0.40682           1966          1000         0.95   
       "S&P"       "t(10) 99%"        0.99        reject           reject         0.003        -0.14608        -0.085433       "pof"        accept           0.11536           1966          1000         0.95   

Input Arguments

collapse all

esbacktestbysim (ebts) object, which contains a copy of the given data (the PortfolioData, VarData, ESData, and Distribution properties) and all combinations of portfolio ID, VaR ID, and VaR levels to be tested. For more information on creating an esbacktestbysim object, see esbacktestbysim.

Name-Value Arguments

collapse all

Specify optional pairs of arguments as Name1=Value1,...,NameN=ValueN, where Name is the argument name and Value is the corresponding value. Name-value arguments must appear after other arguments, but the order of the pairs does not matter.

Before R2021a, use commas to separate each name and value, and enclose Name in quotes.

Example: [TestResults,SimTestStatistic] = conditional(ebts,'TestLevel',0.99)

Test confidence level, specified as the comma-separated pair consisting of 'TestLevel' and a numeric value between 0 and 1.

Data Types: double

Indicator for VaR back test, specified as the comma-separated pair consisting of 'VaRTest' and a character vector or string array with a value of 'tl', 'bin', 'pof', 'tuff', 'cc', 'cci', 'tbf', or 'tbfi'. For more information on these VaR backtests, see varbacktest.

Note

The specified VaRTest is run using the same TestLevel value that is specified with the TestLevel name-value pair argument in the conditional function.

Data Types: char | string

Output Arguments

collapse all

Results, returned as a table where the rows correspond to all combinations of portfolio ID, VaR ID, and VaR levels to be tested. The columns correspond to the following information:

  • 'PortfolioID' — Portfolio ID for the given data.

  • 'VaRID' — VaR ID for each of the VaR data columns provided.

  • 'VaRLevel' — VaR level for the corresponding VaR data column.

  • 'Conditional'— Categorical array with categories 'accept' and 'reject' indicating the result of the conditional test. This result combines the outcome of the 'ConditionalOnly' column and the VaR test.

  • 'ConditionalOnly'— Categorical array with categories 'accept' and 'reject' indicating the result of the standalone conditional test, independent of the VaR test outcome.

  • 'PValue'P-value of the standalone conditional test (for the'ConditionalOnly' column).

  • 'TestStatistic'— Conditional test statistic (for the'ConditionalOnly' column).

  • 'CriticalValue'— Critical value for the conditional test.

  • 'VaRTest'— String array indicating the selected VaR test as specified by the VaRTest argument.

  • 'VaRTestResult'— Categorical array with categories 'accept' and 'reject' indicating the result of the VaR test selected with the 'VaRTest' argument.

  • 'VaRTestPValue'— P-value for the VaR backtest. If the traffic-light test (tl) is used, this is 1 minus the traffic-light test's 'Probability' column value.

  • 'Observations'— Number of observations.

  • 'Scenarios'— Number of scenarios simulated to get the p-values.

  • 'TestLevel'— Test confidence level.

Note

For the test results, the terms 'accept' and 'reject' are used for convenience. Technically, a test does not accept a model; rather, a test fails to reject it.

Simulated values of the test statistic, returned as a NumVaRs-by-NumScenarios numeric array.

More About

collapse all

References

[1] Acerbi, C. and Szekely, B. Backtesting Expected Shortfall. MSCI Inc. December, 2014.

Version History

Introduced in R2017b