exponenta event banner

Рабочий процесс для ожидаемого дефицита (ES), бэктестирование Du и Escanciano

В этом примере показан рабочий процесс для использования обратных тестов ожидаемого дефицита (ES) Du-Escanciano (DE) и показано фиксированное окно тестирования для одной модели DE с несколькими уровнями VaR.

Загрузить данные

Данные в ESBacktestDistributionData.mat файл содержит возвращаемые данные, данные VaR и ES и информацию о распределении для трех моделей: нормальной и t с 5 степенями свободы и t с 10 степенями свободы. Данные охватывают несколько лет с января 1996 года по июль 2003 года и включают в себя в общей сложности 1966 наблюдений.

В этом примере используется распределение t с 10 степенями свободы и фокусируется на годичных данных, чтобы показать разницу между методами критических значений для аппроксимации больших выборок и моделирования, поддерживаемых esbacktestbyde класс.

load ESBacktestDistributionData.mat

TargetYear = 1998; % Change to test other calendar years
Ind = year(Dates)==TargetYear;
Dates = Dates(Ind);
Returns = Returns(Ind);
VaR = T10VaR(Ind,:);
ES = T10ES(Ind,:);
Mu = 0; % Always 0 in this data set
Sigma = T10Scale(Ind);

Данные графика

Постройте график данных для уровня VaR 0.975.

% Plot data
TargetVaRLevel = 0.975;
VaRInd = VaRLevel==TargetVaRLevel;

FailureInd = Returns<-VaR(:,VaRInd);

bar(Dates,Returns)
hold on
plot(Dates,-VaR(:,VaRInd),Dates,-ES(:,VaRInd))
plot(Dates(FailureInd),Returns(FailureInd),'.')
hold off
legend('Returns','VaR','ES','Location','best')
title(['Test Data, VaR Level ' num2str(TargetVaRLevel*100) '%'])
ylabel('Returns')
grid on

Figure contains an axes. The axes with title Test Data, VaR Level 97.5% contains 4 objects of type bar, line. These objects represent Returns, VaR, ES.

Создание esbacktestbyde Объект

Создание esbacktestbyde объект для выполнения тестов DE. Обратите внимание, что данные VaR и ES не являются обязательными входными данными, поскольку тесты DE работают над «отображенными возвращениями» или «рангами» и выполняют сопоставление с помощью информации о распределении. Однако для удобства esbacktestbyde объект вычисляет данные VaR и ES внутри с использованием информации о распределении и сохраняет данные в VaRData и ESData свойства esbacktestbyde объект. Данные VaR и ES используются только для оценки коэффициентов серьезности, сообщаемых summary и не используются ни для одного из тестов DE.

По умолчанию при создании esbacktestbyde объект, прогон моделирования и критические значения на основе больших выборок и моделирования доступны немедленно. Несмотря на эффективность моделирования, при проверке соответствия аппроксимации большой выборки рассматриваемому размеру выборки и уровню VaR можно отключить моделирование для увеличения скорости обработки. Отключение моделирования при использовании esbacktestbyde для создания esbacktestbtde объект, задайте аргумент пара имя-значение 'Simulate' кому false.

rng('default'); % For reproducibility
tic;
ebtde = esbacktestbyde(Returns,"t",...
'DegreesOfFreedom',10,...
'Location',Mu,...
'Scale',Sigma,...
'VaRLevel',VaRLevel,...
'PortfolioID',"S&P",...
'VaRID',"t(10)");
toc;
Elapsed time is 0.203833 seconds.
disp(ebtde)
  esbacktestbyde with properties:

    PortfolioData: [261x1 double]
          VaRData: [261x3 double]
           ESData: [261x3 double]
     Distribution: [1x1 struct]
      PortfolioID: "S&P"
            VaRID: ["t(10)"    "t(10)"    "t(10)"]
         VaRLevel: [0.9500 0.9750 0.9900]
disp(ebtde.Distribution)
                Name: "t"
    DegreesOfFreedom: 10
            Location: 0
               Scale: [261x1 double]

Сводная статистика

Использовать summary вернуть базовый отчет об ожидаемом дефиците (ES) о сбоях и серьезности. Это то же самое summary вывод в качестве других классов обратного тестирования ES esbacktest и esbacktestbysim. Когда esbacktestbyde создается объект, данные VaR и ES вычисляются с использованием информации о распределении. Эта информация хранится в VaRData и ESData свойства. summary функция использует VaRData и ESData свойства для вычисления наблюдаемого коэффициента серьезности.

disp(summary(ebtde))
    PortfolioID     VaRID     VaRLevel    ObservedLevel    ExpectedSeverity    ObservedSeverity    Observations    Failures    Expected    Ratio     Missing
    ___________    _______    ________    _____________    ________________    ________________    ____________    ________    ________    ______    _______

       "S&P"       "t(10)"      0.95         0.94253            1.3288              1.5295             261            15        13.05      1.1494       0   
       "S&P"       "t(10)"     0.975         0.96935            1.2652              1.5269             261             8        6.525      1.2261       0   
       "S&P"       "t(10)"      0.99         0.98467            1.2169              1.5786             261             4         2.61      1.5326       0   

Выполнить тесты

Использовать runtests провести все ожидаемые обратные тесты дефицита (ES) для esbacktestbyde объект. Метод критического значения по умолчанию: 'large-sample' или асимптотическое приближение.

disp(runtests(ebtde))
    PortfolioID     VaRID     VaRLevel    ConditionalDE    UnconditionalDE
    ___________    _______    ________    _____________    _______________

       "S&P"       "t(10)"      0.95         accept            accept     
       "S&P"       "t(10)"     0.975         accept            accept     
       "S&P"       "t(10)"      0.99         accept            accept     

Запустите тесты с помощью 'simulation' или критические значения конечных выборок.

disp(runtests(ebtde,'CriticalValueMethod','simulation'))
    PortfolioID     VaRID     VaRLevel    ConditionalDE    UnconditionalDE
    ___________    _______    ________    _____________    _______________

       "S&P"       "t(10)"      0.95         accept            accept     
       "S&P"       "t(10)"     0.975         accept            accept     
       "S&P"       "t(10)"      0.99         accept            accept     

runtests функция принимает аргумент пары имя-значение 'ShowDetails' который включает в себя дополнительные столбцы в выходных данных. В частности, этот вывод включает используемый метод критических значений, количество задержек и уровень достоверности теста.

disp(runtests(ebtde,'CriticalValueMethod','simulation','ShowDetails',true))
    PortfolioID     VaRID     VaRLevel    ConditionalDE    UnconditionalDE    CriticalValueMethod    NumLags    TestLevel
    ___________    _______    ________    _____________    _______________    ___________________    _______    _________

       "S&P"       "t(10)"      0.95         accept            accept            "simulation"           1         0.95   
       "S&P"       "t(10)"     0.975         accept            accept            "simulation"           1         0.95   
       "S&P"       "t(10)"      0.99         accept            accept            "simulation"           1         0.95   

Сведения о безусловном тесте DE

Безусловный тест DE оценивает серьезность нарушений на основе оценки наблюдаемой средней потери хвоста и определяет, согласуется ли серьезность с предположениями модели. Все тесты, поддерживаемые в связанных классах esbacktest и esbacktestbysim это также тесты на серьезность.

Для просмотра сведений о безусловном тесте DE используйте unconditionalDE функция. По умолчанию эта функция использует 'large-sample' метод критических значений.

disp(unconditionalDE(ebtde))
    PortfolioID     VaRID     VaRLevel    UnconditionalDE     PValue     TestStatistic     LowerCI     UpperCI     Observations    CriticalValueMethod    MeanLS      StdLS      Scenarios    TestLevel
    ___________    _______    ________    _______________    ________    _____________    _________    ________    ____________    ___________________    ______    _________    _________    _________

       "S&P"       "t(10)"      0.95          accept          0.31715      0.032842       0.0096343    0.040366        261           "large-sample"        0.025    0.0078398       NaN         0.95   
       "S&P"       "t(10)"     0.975          accept          0.32497      0.018009       0.0015295    0.023471        261           "large-sample"       0.0125    0.0055973       NaN         0.95   
       "S&P"       "t(10)"      0.99          accept         0.076391      0.011309               0    0.011978        261           "large-sample"        0.005    0.0035603       NaN         0.95   

Сравнение результатов 'large-sample' для моделирования критических значений используйте аргумент пары имя-значение 'CriticalValueMethod'. В этом примере результаты обоих методов критических значений, включая доверительный интервал и p-значения, выглядят сходными.

disp(unconditionalDE(ebtde,'CriticalValueMethod','simulation'))
    PortfolioID     VaRID     VaRLevel    UnconditionalDE    PValue    TestStatistic     LowerCI     UpperCI     Observations    CriticalValueMethod    MeanLS    StdLS    Scenarios    TestLevel
    ___________    _______    ________    _______________    ______    _____________    _________    ________    ____________    ___________________    ______    _____    _________    _________

       "S&P"       "t(10)"      0.95          accept         0.326       0.032842        0.010859    0.041709        261            "simulation"         NaN       NaN       1000         0.95   
       "S&P"       "t(10)"     0.975          accept         0.336       0.018009       0.0032446    0.024657        261            "simulation"         NaN       NaN       1000         0.95   
       "S&P"       "t(10)"      0.99          accept         0.126       0.011309               0    0.013311        261            "simulation"         NaN       NaN       1000         0.95   

Можно визуализировать 'simulation' и 'large-sample' распределения для оценки того, 'large-sample' аппроксимация достаточно точна для рассматриваемого размера выборки и уровня VaR. unconditionalDE функция возвращает 'simulated' тестовая статистика в качестве необязательного выходного сигнала.

В этом примере более высокие уровни VaR вызывают заметное несоответствие между 'large-sample' и 'simulation' распределения. Однако доверительные интервалы и значения p сопоставимы.

% Choose VaR level
TargetVaRLevel = 0.975;
VaRInd = VaRLevel==TargetVaRLevel;

[~,s] = unconditionalDE(ebtde,'CriticalValueMethod','simulation');
histogram(s(VaRInd,:),'Normalization',"pdf")
hold on
t = unconditionalDE(ebtde,'CriticalValueMethod','large-sample');
Mu = t.MeanLS(VaRInd);
Sigma = t.StdLS(VaRInd);
MinValPlot = min(s(VaRInd,:))-0.001;
MaxValPlot = max(s(VaRInd,:))+0.001;
xLS = linspace(MinValPlot,MaxValPlot,101);
pdfLS = normpdf(xLS,Mu,Sigma);
plot(xLS,pdfLS)
hold off
legend({'Simulation','Large-Sample'})
Title = sprintf('UnconditionalDE Test Distribution\nVaR Level: %g%%, Sample Size = %d',VaRLevel(VaRInd)*100,t.Observations(VaRInd));
title(Title)

Figure contains an axes. The axes with title UnconditionalDE Test Distribution VaR Level: 97.5%, Sample Size = 261 contains 2 objects of type histogram, line. These objects represent Simulation, Large-Sample.

Сведения об условном тесте DE

Условный тест DE оценивает, имеются ли доказательства автокорреляции в потерях хвоста.

Хотя имена совпадают, условный тест DE и условный тест поддерживаются в esbacktestbysim являются качественно другими испытаниями. Условный тест Acerbi-Szekely поддерживается в esbacktestbysim проверяет серьезность ES при условии, что модель пройдет тест VaR. Условный тест Acerbi-Szekely является тестом серьезности, сопоставимым с тестами, поддерживаемыми в esbacktest, esbacktestbysim, и unconditionalDE тест.

Однако условный тест DE в esbacktestbyde является тестом на независимость между периодами времени.

Для просмотра подробной информации о результатах условного теста DE используйте conditionalDE функция. По умолчанию эта функция использует 'large-sample' метод критических значений и тесты для одного запаздывания (корреляция с предыдущим периодом времени).

disp(conditionalDE(ebtde))
    PortfolioID     VaRID     VaRLevel    ConditionalDE    PValue     TestStatistic    CriticalValue    AutoCorrelation    Observations    CriticalValueMethod    NumLags    Scenarios    TestLevel
    ___________    _______    ________    _____________    _______    _____________    _____________    _______________    ____________    ___________________    _______    _________    _________

       "S&P"       "t(10)"      0.95         accept        0.45361        0.5616          3.8415            0.046387           261           "large-sample"          1          NaN         0.95   
       "S&P"       "t(10)"     0.975         accept        0.54189       0.37205          3.8415            0.037755           261           "large-sample"          1          NaN         0.95   
       "S&P"       "t(10)"      0.99         accept        0.87949      0.022989          3.8415          -0.0093851           261           "large-sample"          1          NaN         0.95   

Результаты 'large-sample' метод критических значений, в частности имитационные критические значения и p-значения, существенно отличаются от результатов 'simulation' метод критических значений.

Критическое значение аналогично для уровня VaR 95%, но основанное на моделировании критическое значение намного больше для более высоких уровней VaR, особенно для VaR 99%. Автокорреляция 1 для любого образца без отказов VaR. Поэтому статистика теста равняется количеству наблюдений для любого сценария без отказов VaR. Для уровня VaR 99% сценарии без отказов VaR подобны; следовательно, существует точка массы при количестве наблюдений, которая проявляется как длинный, тяжелый хвост в моделируемом распределении тестовой статистики.

disp(conditionalDE(ebtde,'CriticalValueMethod','simulation'))
    PortfolioID     VaRID     VaRLevel    ConditionalDE    PValue    TestStatistic    CriticalValue    AutoCorrelation    Observations    CriticalValueMethod    NumLags    Scenarios    TestLevel
    ___________    _______    ________    _____________    ______    _____________    _____________    _______________    ____________    ___________________    _______    _________    _________

       "S&P"       "t(10)"      0.95         accept        0.257         0.5616          3.6876            0.046387           261            "simulation"           1         1000         0.95   
       "S&P"       "t(10)"     0.975         accept        0.141        0.37205          5.3504            0.037755           261            "simulation"           1         1000         0.95   
       "S&P"       "t(10)"      0.99         accept        0.502       0.022989             261          -0.0093851           261            "simulation"           1         1000         0.95   

Вы можете визуально сравнить 'large-sample' и 'simulation' распределения. conditionalDE функция также возвращает смоделированную статистику теста в качестве необязательного вывода.

Обратите внимание, что хвостовая часть распределения становится тяжелее по мере увеличения уровня VaR.

% Choose VaR level
TargetVaRLevel = 0.975;
VaRInd = VaRLevel==TargetVaRLevel;

[t,s] = conditionalDE(ebtde,'CriticalValueMethod','simulation');
xLS = 0:0.01:20;
pdfLS = chi2pdf(xLS,t.NumLags(1));
histogram(s(VaRInd,:),'Normalization',"pdf")
hold on
plot(xLS,pdfLS)
hold off
ylim([0 0.01])
legend({'Simulation','Large-Sample'})
Title = sprintf('ConditionalDE Test Distribution\nVaR Level: %g%%, Sample Size = %d',VaRLevel(VaRInd)*100,t.Observations(VaRInd));
title(Title)

Figure contains an axes. The axes with title ConditionalDE Test Distribution VaR Level: 97.5%, Sample Size = 261 contains 2 objects of type histogram, line. These objects represent Simulation, Large-Sample.

Так как условный тест DE основан на автокорреляциях, можно запустить тест на различное количество лагов.

Запуск условного теста DE для 2 отстает. При уровне VaR 99% 'large-sample' метод критических значений отклоняет модель, но 'simulation' метод критических значений не отклоняет модель с p-значением, близким к 10%. Это показывает, что 'simulation' распределение и 'large-sample' аппроксимация может привести к различным результатам в зависимости от размера выборки и уровня VaR.

disp(conditionalDE(ebtde,'NumLags',2,'CriticalValueMethod','large-sample'))
    PortfolioID     VaRID     VaRLevel    ConditionalDE      PValue      TestStatistic    CriticalValue    AutoCorrelation    Observations    CriticalValueMethod    NumLags    Scenarios    TestLevel
    ___________    _______    ________    _____________    __________    _____________    _____________    _______________    ____________    ___________________    _______    _________    _________

       "S&P"       "t(10)"      0.95         reject          0.015812        8.294           5.9915            0.17212            261           "large-sample"          2          NaN         0.95   
       "S&P"       "t(10)"     0.975         reject        0.00045758       15.379           5.9915            0.23979            261           "large-sample"          2          NaN         0.95   
       "S&P"       "t(10)"      0.99         reject        2.5771e-07       30.343           5.9915            0.34083            261           "large-sample"          2          NaN         0.95   
disp(conditionalDE(ebtde,'NumLags',2,'CriticalValueMethod','simulation'))
    PortfolioID     VaRID     VaRLevel    ConditionalDE    PValue    TestStatistic    CriticalValue    AutoCorrelation    Observations    CriticalValueMethod    NumLags    Scenarios    TestLevel
    ___________    _______    ________    _____________    ______    _____________    _____________    _______________    ____________    ___________________    _______    _________    _________

       "S&P"       "t(10)"      0.95         reject         0.03         8.294           6.1397            0.17212            261            "simulation"           2         1000         0.95   
       "S&P"       "t(10)"     0.975         reject        0.019        15.379           9.3364            0.23979            261            "simulation"           2         1000         0.95   
       "S&P"       "t(10)"      0.99         accept        0.098        30.343              522            0.34083            261            "simulation"           2         1000         0.95   

Запуск нового моделирования с помощью simulate

Если значение p близко к границе отклонения, можно запустить новое моделирование, чтобы запросить дополнительные сценарии для уменьшения ошибки моделирования.

Можно также запустить новое моделирование, чтобы запросить большее количество задержек. По умолчанию создание esbacktestbyde объект приводит к запуску моделирования таким образом, что результаты теста моделирования становятся доступными немедленно. Однако во избежание дополнительного хранения только 5 моделируют задержки. Если вы запрашиваете больше, чем 5 отстает от simulate функция, conditionalDE функция тестирования выводит следующее сообщение:

No simulation results available for the number of lags requested. Call 'simulate' with the desired number of lags.

Сначала необходимо запустить новое моделирование с помощью esbacktestbyde и укажите количество лагов, используемых для этого моделирования. Отображение размера esbacktestbyde объект до и после нового моделирования иллюстрирует, как моделирование с большими задержками увеличивает объем данных, хранящихся в esbacktestbyde объект, поскольку более моделируемая статистика тестирования сохраняется с большим количеством лагов.

% See bytes before new simulation, 5 lags stored
whos ebtde
  Name       Size             Bytes  Class             Attributes

  ebtde      1x1             164883  esbacktestbyde              
% Simulate 6 lags
rng('default'); % for reproducibility
ebtde = simulate(ebtde,'NumLags',6);

% See bytes after new simulation, 6 lags stored
whos ebtde
  Name       Size             Bytes  Class             Attributes

  ebtde      1x1             188891  esbacktestbyde              

После запуска нового моделирования с помощью esbacktestbyde что увеличивает количество лагов до 6, результаты испытаний для conditionalDE доступны для 'simulation' способ с использованием 6 отстает.

disp(conditionalDE(ebtde,'NumLags',6,'CriticalValueMethod','simulation'))
    PortfolioID     VaRID     VaRLevel    ConditionalDE    PValue    TestStatistic    CriticalValue    AutoCorrelation    Observations    CriticalValueMethod    NumLags    Scenarios    TestLevel
    ___________    _______    ________    _____________    ______    _____________    _____________    _______________    ____________    ___________________    _______    _________    _________

       "S&P"       "t(10)"      0.95         accept        0.136        9.5173           16.412           -0.022881           261            "simulation"           6         1000         0.95   
       "S&P"       "t(10)"     0.975         accept        0.086        15.854           21.299           -0.021864           261            "simulation"           6         1000         0.95   
       "S&P"       "t(10)"      0.99         accept        0.128        30.438             1566          -0.0096211           261            "simulation"           6         1000         0.95   

В качестве альтернативы, conditionalDE результаты тестирования всегда доступны для 'large-sample' метод для любого количества лагов.

disp(conditionalDE(ebtde,'NumLags',10,'CriticalValueMethod','large-sample'))
    PortfolioID     VaRID     VaRLevel    ConditionalDE      PValue      TestStatistic    CriticalValue    AutoCorrelation    Observations    CriticalValueMethod    NumLags    Scenarios    TestLevel
    ___________    _______    ________    _____________    __________    _____________    _____________    _______________    ____________    ___________________    _______    _________    _________

       "S&P"       "t(10)"      0.95         reject          0.018711       21.361           18.307             0.15415           261           "large-sample"         10          NaN         0.95   
       "S&P"       "t(10)"     0.975         accept          0.088587       16.406           18.307            0.027955           261           "large-sample"         10          NaN         0.95   
       "S&P"       "t(10)"      0.99         reject        0.00070234       30.526           18.307          -0.0092432           261           "large-sample"         10          NaN         0.95   

См. также

| | |

Связанные темы