Quantile expected shortfall (ES) backtest by Acerbi and Szekely
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 quantile test report.
TestResults = quantile(ebts)
TestResults=3×10 table PortfolioID VaRID VaRLevel Quantile PValue TestStatistic CriticalValue Observations Scenarios TestLevel ___________ _____________ ________ ________ ______ _____________ _____________ ____________ _________ _________ "S&P" "t(10) 95%" 0.95 reject 0.002 -0.10602 -0.055798 1966 1000 0.95 "S&P" "t(10) 97.5%" 0.975 reject 0 -0.15697 -0.073513 1966 1000 0.95 "S&P" "t(10) 99%" 0.99 reject 0 -0.26561 -0.10117 1966 1000 0.95
which contains a copy of the given data (the
properties) and all combinations of portfolio ID, VaR ID, and VaR levels
to be tested. For more information on creating an
esbacktestbysim object, see
comma-separated pairs of
the argument name and
Value is the corresponding value.
Name must appear inside quotes. You can specify several name and value
pair arguments in any order as
[TestResults,SimTestStatistic] = quantile(ebts,'TestLevel',0.99)
'TestLevel'— Test confidence level
0.95(default) | numeric with values between
Test confidence level, specified as the comma-separated pair
'TestLevel' and a numeric value
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
'Quantile'— Categorical array
with categories 'accept' and 'reject' indicating the result
of the quantile test
P-value of the quantile test
'TestStatistic'— Quantile test
'CriticalValue'— Critical value
for the quantile test
'Observations'— Number of
'Scenarios'— Number of scenarios
simulated to get the p-values
'TestLevel'— Test confidence
SimTestStatistic— Simulated values of test statistic
Simulated values of the test statistic, returned as a
The quantile test (also known as the third Acerbi-Szekely test) uses a sample estimator of the expected shortfall.
The expected shortfall for a sample
N is the number of periods in the test window
PVaR is the probability of VaR
failure defined as 1-VaR level.
are the sorted sample values (from smallest to largest), and is the largest integer less than or equal to
To compute the quantile test statistic, a sample of size
is created at each time t as follows. First, convert the
portfolio outcomes to
Xt to ranks using the cumulative distribution function
Pt. If the distribution
assumptions are correct, the rank values
are uniformly distributed in the interval (0,1). Then at each time
Invert the ranks U =
N quantiles .
Compute the sample estimator .
Compute the expected value of the sample estimator
is a sample of
N independent uniform random
variables in the interval (0,1). This value can be computed
Define the quantile test statistic as
The denominator inside the sum can be computed analytically as
is the regularized incomplete beta function. For more information, see
Assuming that the distributional assumptions are correct, the
expected value of the test statistic
This is expressed as:
Negative values of the test statistic indicate risk underestimation. The
quantile test is a one-sided test that rejects the model when there is evidence
that the model underestimates risk. (For technical details on the null and
alternative hypotheses, see Acerbi-Szekely, 2014). The quantile test rejects the
model when the p-value is less than
minus the test confidence level.
For more information on simulating the test statistics and computing the
p-values and critical values, see
The quantile test statistic is well-defined when there are no VaR failures in the data.
However, when the expected number of failures
NpVaR is small, an adjustment is
required. The sample estimator of the expected shortfall takes the average of
Ntail observations in the
sample, where . If
0, the sample estimator of the expected shortfall becomes
an empty sum, and the quantile test statistic is undefined.
To account for this, whenever
1, the value of
Ntail is set to
1. Thus, the sample estimator of the expected shortfall
has a single term and is equal to the minimum value of the sample. With this
adjustment, the quantile test statistic is then well-defined and the
significance analysis is unchanged.
 Acerbi, C., and B. Szekely. Backtesting Expected Shortfall. MSCI Inc. December, 2014.