Main Content

runtests

Run all expected shortfall (ES) backtests for esbacktestbyde object

Description

TestResults = runtests(ebtde) runs all the tests for the esbacktestbyde object. runtests reports only the final test result. For test details such as p-values, run the individual tests:

example

TestResults = runtests(___,Name,Value) specifies options using one or more name-value pair arguments in addition to the input argument in the previous syntax.

example

Examples

collapse all

Create an esbacktestbyde object for a t model with 10 degrees of freedom, and then run ES backtests.

load ESBacktestDistributionData.mat
    rng('default'); % For reproducibility
    ebtde = esbacktestbyde(Returns,"t",...
       'DegreesOfFreedom',T10DoF,...
       'Location',T10Location,...
       'Scale',T10Scale,...
       'PortfolioID',"S&P",...
       'VaRID',["t(10) 95%","t(10) 97.5%","t(10) 99%"],...
       'VaRLevel',VaRLevel);
    runtests(ebtde)
ans=3×5 table
    PortfolioID        VaRID        VaRLevel    ConditionalDE    UnconditionalDE
    ___________    _____________    ________    _____________    _______________

       "S&P"       "t(10) 95%"        0.95         reject            accept     
       "S&P"       "t(10) 97.5%"     0.975         reject            accept     
       "S&P"       "t(10) 99%"        0.99         reject            reject     

To view complete details for the tests, use the name-value pair argument 'ShowDetails'.

runtests(ebtde,'ShowDetails',true)
ans=3×8 table
    PortfolioID        VaRID        VaRLevel    ConditionalDE    UnconditionalDE    CriticalValueMethod    NumLags    TestLevel
    ___________    _____________    ________    _____________    _______________    ___________________    _______    _________

       "S&P"       "t(10) 95%"        0.95         reject            accept           "large-sample"          1         0.95   
       "S&P"       "t(10) 97.5%"     0.975         reject            accept           "large-sample"          1         0.95   
       "S&P"       "t(10) 99%"        0.99         reject            reject           "large-sample"          1         0.95   

Input Arguments

collapse all

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

Name-Value Arguments

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 = runtests(ebtde,'CriticalValueMethod','simulation','TestLevel',0.99,'ShowDetails',true)

Method to compute critical values, confidence intervals, and p-values, specified as the comma-separated pair consisting of 'CriticalValueMethod' and character vector or string with a value of 'large-sample' or 'simulation'.

Data Types: char | string

Number of lags in the conditionalDE test, specified as the comma-separated pair consisting of 'NumLags' and a positive integer.

Data Types: double

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

Data Types: double

Flag to display all details in output including the columns for critical-value method, number of lags tested, and test confidence level, specified as the comma-separated pair consisting of 'ShowDetails' and a scalar logical value.

Data Types: logical

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:

  • 'PortfolioID' — Portfolio ID for the given data

  • 'VaRID' — VaR ID for each of the VaR levels

  • 'VaRLevel' — VaR level

  • 'ConditionalDE' — Categorical array with the categories'accept' and 'reject', which indicate the result of the conditionalDE test

  • 'UnconditionalDE'— Categorical array with the categories'accept' and 'reject', which indicate the result of the unconditionalDE test

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.

If you set the ShowDetails optional name-value argument to true, the TestResults table also includes 'CriticalValueMethod', 'NumLags', and 'TestLevel' columns.

References

[1] Du, Z., and J. C. Escanciano. "Backtesting Expected Shortfall: Accounting for Tail Risk." Management Science. Vol. 63, Issue 4, April 2017.

[2] Basel Committee on Banking Supervision. "Minimum Capital Requirements for Market Risk". January 2016 (https://www.bis.org/bcbs/publ/d352.pdf).

Version History

Introduced in R2019b