quantile
Quantile expected shortfall (ES) backtest by Acerbi and Szekely
Description
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
.
Examples
Run an ES Quantile Test
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
Input Arguments
ebts
— esbacktestbysim
object
object
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
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] =
quantile(ebts,'TestLevel',0.99)
TestLevel
— Test confidence level
0.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
Output Arguments
TestResults
— Results
table
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'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 statistic
numeric array
Simulated values of the test statistic, returned as a
NumVaRs
-by-NumScenarios
numeric array.
More About
Quantile Test by Acerbi and Szekely
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 getN
quantiles .Compute the sample estimator .
Compute the expected value of the sample estimator
where
V
= (V
1,...,V
N is a sample ofN
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
.
Significance of the Test
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
.
Edge Cases
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.
References
[1] Acerbi, C., and B. Szekely. Backtesting Expected Shortfall. MSCI Inc. December, 2014.
Version History
Introduced in R2017b
See Also
summary
| runtests
| conditional
| unconditional
| simulate
| minBiasRelative
| minBiasAbsolute
| esbacktestbysim
| esbacktestbyde
Open Example
You have a modified version of this example. Do you want to open this example with your edits?
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other bat365 country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)