Quantile expected shortfall (ES) backtest by Acerbi and Szekely
runs the quantile ES backtest of Acerbi-Szekely (2014).TestResults
= quantile(ebts
)
[
adds an optional name-value pair argument for TestResults
,SimTestStatistic
] = quantile(ebts
,Name,Value
)TestLevel
.
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 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
ebts
— esbacktestbysim
objectesbacktestbysim
(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
.
Specify optional
comma-separated pairs of Name,Value
arguments. Name
is
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
Name1,Value1,...,NameN,ValueN
.
[TestResults,SimTestStatistic] =
quantile(ebts,'TestLevel',0.99)
'TestLevel'
— Test confidence level0.95
(default) | numeric with values between 0
and
1
Test confidence level, specified as the comma-separated pair
consisting of 'TestLevel'
and a numeric value
between 0
and 1
.
Data Types: double
TestResults
— ResultsResults, 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
'PValue'
—
P-value of the quantile test
'TestStatistic'
— Quantile test
statistic
'CriticalValue'
— Critical value
for the quantile test
'Observations'
— Number of
observations
'Scenarios'
— Number of scenarios
simulated to get the p-values
'TestLevel'
— Test confidence
level
SimTestStatistic
— Simulated values of test statisticSimulated values of the test statistic, returned as a
NumVaRs
-by-NumScenarios
numeric array.
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
Y
1,…,Y
N is:
where
N
is the number of periods in the test window
(t = 1
,…,N
).
P
VaR is the probability of VaR
failure defined as 1-VaR level.
Y
[1],…,Y
[N]
are the sorted sample values (from smallest to largest), and is the largest integer less than or equal to
Np
VaR.
To compute the quantile test statistic, a sample of size N
is created at each time t as follows. First, convert the
portfolio outcomes to X
t to ranks using the cumulative distribution function
P
t. If the distribution
assumptions are correct, the rank values
U
1,…,U
N
are uniformly distributed in the interval (0,1). Then at each time
t:
Invert the ranks U =
(U
1,…,U
N)
to get N
quantiles .
Compute the sample estimator .
Compute the expected value of the sample estimator
where V
=
(V
1,…,V
N
is a sample of N
independent uniform random
variables in the interval (0,1). This value can be computed
analytically.
Define the quantile test statistic as
The denominator inside the sum can be computed analytically as
where
I
x(z
,w
)
is the regularized incomplete beta function. For more information, see betainc
.
Assuming that the distributional assumptions are correct, the
expected value of the test statistic
Z
quantile is
0
.
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 1
minus the test confidence level.
For more information on simulating the test statistics and computing the
p-values and critical values, see simulate
.
The quantile test statistic is well-defined when there are no VaR failures in the data.
However, when the expected number of failures
Np
VaR is small, an adjustment is
required. The sample estimator of the expected shortfall takes the average of
the smallest N
tail observations in the
sample, where . If Np
VaR <
1
, then N
tail =
0
, the sample estimator of the expected shortfall becomes
an empty sum, and the quantile test statistic is undefined.
To account for this, whenever Np
VaR
< 1
, the value of
N
tail 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.
[1] Acerbi, C., and B. Szekely. Backtesting Expected Shortfall. MSCI Inc. December, 2014.
conditional
| esbacktestbyde
| esbacktestbysim
| minBiasAbsolute
| minBiasRelative
| runtests
| simulate
| summary
| unconditional
You have a modified version of this example. Do you want to open this example with your edits?