This is machine translation

Translated by Microsoft
Mouseover text to see original. Click the button below to return to the English version of the page.

Note: This page has been translated by MathWorks. Please click here
To view all translated materials including this page, select Japan from the country navigator on the bottom of this page.


Unconditional expected shortfall backtest


TestResults = unconditional(ebts)
[TestResults,SimTestStatistic] = unconditional(ebts,Name,Value)



TestResults = unconditional(ebts) runs the unconditional expected shortfall (ES) backtest of Acerbi-Szekely (2014).


[TestResults,SimTestStatistic] = unconditional(ebts,Name,Value) adds an optional name-value pair argument for TestLevel.


collapse all

Create an esbacktestbysim object.

load ESBacktestBySimData
rng('default'); % for reproducibility
ebts = esbacktestbysim(Returns,VaR,ES,"t",...
       'VaRID',["t(10) 95%","t(10) 97.5%","t(10) 99%"],...

Generate the ES unconditional test report.

TestResults = unconditional(ebts)
TestResults =

  3×10 table

    PortfolioID        VaRID        VaRLevel    Unconditional    PValue    TestStatistic    CriticalValue    Observations    Scenarios    TestLevel
    ___________    _____________    ________    _____________    ______    _____________    _____________    ____________    _________    _________

    "S&P"          "t(10) 95%"       0.95       accept           0.093     -0.13342         -0.16252         1966            1000         0.95     
    "S&P"          "t(10) 97.5%"    0.975       reject           0.031     -0.25011          -0.2268         1966            1000         0.95     
    "S&P"          "t(10) 99%"       0.99       reject           0.008     -0.57396         -0.38264         1966            1000         0.95     

Input Arguments

collapse all

esbacktestbysim (ebts) object, 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 Pair Arguments

Specify optional comma-separated pairs of Name,Value arguments. Name is the argument name and Value is the corresponding value. Name must appear inside single quotes (' '). You can specify several name and value pair arguments in any order as Name1,Value1,...,NameN,ValueN.

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

collapse all

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

Data Types: double

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

  • 'Unconditional'— Categorical array with categories 'accept' and 'reject' that indicate the result of the unconditional test

  • 'PValue'— P-value of the unconditional test

  • 'TestStatistic'— Unconditional test statistic

  • 'CriticalValue'— Critical value for the unconditional test

  • 'Observations'— Number of observations

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

  • 'TestLevel'— Test confidence level

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

More About

collapse all

Unconditional Test

The unconditional test is also known as the second Acerbi-Szekely test.

The unconditional test is based on the unconditional relationship



Xt is the portfolio outcome, that is, the portfolio return or portfolio profit and loss for period t.

PVaR is the probability of VaR failure defined as 1-VaR level.

ESt is the estimated expected shortfall for period t.

It is the VaR failure indicator on period t with a value of 1 if Xt < -VaR, and 0 otherwise.

The unconditonal test statistic is defined as:

Significance of the Test

Under the assumption that the distributional assumptions are correct, the expected value of the test statistic Zuncond is 0.

This is expressed as


Negative values of the test statistic indicate risk underestimation. The unconditional test is a one-sided test that rejects when there is evidence that the model underestimates risk (for technical details on the null and alternative hypotheses, see Acerbi-Szekely, 2014). The unconditional test rejects the model when the p-value is less than 1 minus the test confidence level.

For more information on the steps to simulate the test statistics and the details for the computation of the p-values and critical values, see simulate.

Edge Cases

The unconditional test statistic takes a value of 1 when there are no VaR failures in the data or in a simulated scenario.

1 is also the maximum possible value for the test statistic. When the expected number of failures NpVaR is small, the distribution of the unconditional test statistic has a discrete probability jump at Zuncond = 1, and the probability that Zuncond1 is 1. The p-value is set to 1 in these cases, and the test result is to 'accept', because there is no evidence of risk underestimation. Scenarios with no failures are more likely as the expected number of failures NpVaR gets smaller.


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

Introduced in R2017b

Was this topic helpful?