exponenta event banner

Ожидаемый поток операций обратного тестирования дефицита (ES) с использованием моделирования

В этом примере показан ожидаемый поток операций обратного тестирования дефицита (ES) с использованием esbacktestbysim объект. Тесты, поддерживаемые в esbacktestbysim объект требует в качестве входных данных не только тестовые данные (Portfolio, VaR, и ES данные), а также информацию о распределении тестируемой модели.

esbacktestbysim класс поддерживает пять тестов - условные, безусловные, квантильные, которые основаны на Acerbi-Szekely (2014) и minBiasAbsolute и minBiasRelative, которые основаны на Acerbi-Szekely (2017 и 2019). Эти тесты используют допущения распределения для моделирования сценариев возврата, предполагая, что допущения распределения верны (нулевая гипотеза). Смоделированные сценарии определяют распределение типичных значений для статистики тестирования и значимость тестов. esbacktestbysim поддерживает нормальное распределение и распределение в масштабе местоположения (с фиксированным числом степеней свободы во всем окне теста).

Шаг 1. Загрузите данные обратного тестирования ES.

Используйте ESBacktestBySimData.mat для загрузки данных в рабочую область. Этот пример работает с Returns числовой массив. Этот массив представляет доходность собственного капитала. Соответствующие данные VaR и доверительные уровни VaR находятся в VaR и VaRLevel. Ожидаемые данные о дефиците содержатся в ES.

load ESBacktestBySimData

Шаг 2. Создайте график обратного тестирования ES.

Используйте plot функция для визуализации данных обратного тестирования ES. Этот тип визуализации является обычным первым шагом при выполнении анализа обратного тестирования ES. На этом графике отображаются данные возврата по данным VaR и ES.

VaRInd = 2;
figure;
plot(Dates,Returns,Dates,-VaR(:,VaRInd),Dates,-ES(:,VaRInd))
legend('Returns','VaR','ES')
title(['Test Data, ' num2str(VaRLevel(VaRInd)*100) '% Confidence'])
grid on

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

Шаг 3. Создание esbacktestbysim объект.

Создание esbacktestbysim объект с использованием esbacktestbysim. Distribution используется для моделирования результатов для оценки значимости тестов. Моделирование для оценки значимости выполняется по умолчанию при создании esbacktestbysim объект. Поэтому результаты теста доступны при создании объекта. Можно задать необязательный входной аргумент пары имя-значение 'Simulate' кому false во избежание моделирования, в этом случае можно использовать simulate перед запросом результатов теста.

rng('default'); % for reproducibility
IDs = ["t(dof) 95%","t(dof) 97.5%","t(dof) 99%"];
IDs = strrep(IDs,"dof",num2str(DoF));
ebts = esbacktestbysim(Returns,VaR,ES,Distribution,...
   'DegreesOfFreedom',DoF,...
   'Location',Mu,...
   'Scale',Sigma,...
   'PortfolioID',"S&P",...
   'VaRID',IDs,...
   'VaRLevel',VaRLevel);
disp(ebts)
  esbacktestbysim with properties:

    PortfolioData: [1966x1 double]
          VaRData: [1966x3 double]
           ESData: [1966x3 double]
     Distribution: [1x1 struct]
      PortfolioID: "S&P"
            VaRID: ["t(10) 95%"    "t(10) 97.5%"    "t(10) 99%"]
         VaRLevel: [0.9500 0.9750 0.9900]
disp(ebts.Distribution) % distribution information stored in the 'Distribution' property
                Name: "t"
    DegreesOfFreedom: 10
            Location: 0
               Scale: [1966x1 double]

Шаг 4. Создайте сводный отчет ES.

Сводный отчет ES предоставляет информацию о серьезности нарушений, то есть о том, насколько велика потеря по сравнению с VaR в дни, когда VaR был нарушен. ObservedSeverity (или наблюдаемый средний коэффициент серьезности) - отношение потерь к VaR в течение дней, когда VaR нарушается. ExpectedSeverity (или ожидаемый средний коэффициент серьезности) показывает среднее отношение ES к VaR в дни нарушения VaR.

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

       "S&P"       "t(10) 95%"        0.95         0.94812            1.3288              1.4515             1966          102         98.3      1.0376       0   
       "S&P"       "t(10) 97.5%"     0.975         0.97202            1.2652              1.4134             1966           55        49.15       1.119       0   
       "S&P"       "t(10) 99%"        0.99         0.98627            1.2169              1.3947             1966           27        19.66      1.3733       0   

Шаг 5. Выполните отчет для всех тестов.

Выполните все тесты и создайте отчет только для результатов принятия или отклонения.

t = runtests(ebts);
disp(t)
    PortfolioID        VaRID        VaRLevel    Conditional    Unconditional    Quantile    MinBiasAbsolute    MinBiasRelative
    ___________    _____________    ________    ___________    _____________    ________    _______________    _______________

       "S&P"       "t(10) 95%"        0.95        reject          accept         reject         accept             reject     
       "S&P"       "t(10) 97.5%"     0.975        reject          reject         reject         reject             reject     
       "S&P"       "t(10) 99%"        0.99        reject          reject         reject         reject             reject     

Шаг 6. Запустите условный тест.

Выполните индивидуальный тест для условного теста (также известного как первый тест Acerbi-Szekely). Второй выход (s) содержит смоделированные значения статистики теста, предполагая, что допущения распределения верны. Каждая строка s выходные данные соответствуют VaRID в соответствующей строке t выход. Эти смоделированные статистические данные используются для определения значимости тестов.

[t,s] = conditional(ebts);
disp(t)
    PortfolioID        VaRID        VaRLevel    Conditional    ConditionalOnly    PValue    TestStatistic    CriticalValue    VaRTest    VaRTestResult    VaRTestPValue    Observations    Scenarios    TestLevel
    ___________    _____________    ________    ___________    _______________    ______    _____________    _____________    _______    _____________    _____________    ____________    _________    _________

       "S&P"       "t(10) 95%"        0.95        reject           reject             0       -0.092302        -0.043941       "pof"        accept           0.70347           1966          1000         0.95   
       "S&P"       "t(10) 97.5%"     0.975        reject           reject         0.001        -0.11714        -0.052575       "pof"        accept           0.40682           1966          1000         0.95   
       "S&P"       "t(10) 99%"        0.99        reject           reject         0.003        -0.14608        -0.085433       "pof"        accept           0.11536           1966          1000         0.95   
whos s
  Name      Size              Bytes  Class     Attributes

  s         3x1000            24000  double              

Шаг 7. Визуализация значимости условного теста.

Визуализация значимости условного теста с использованием гистограмм для отображения распределения типичных значений (результаты моделирования). В гистограммах звездочка показывает значение статистики теста, наблюдаемой для фактических результатов. Это визуализация автономного условного теста. Конечный результат условного теста также зависит от предварительного теста VaR, как показано в выходных данных условного теста.

NumVaRs = height(t);
figure;
for VaRInd = 1:NumVaRs
   subplot(NumVaRs,1,VaRInd)
   histogram(s(VaRInd,:));
   hold on;
   plot(t.TestStatistic(VaRInd),0,'*');
   hold off;
   Title = sprintf('Conditional: %s, p-value: %4.3f',t.VaRID(VaRInd),t.PValue(VaRInd));
   title(Title)
end

Figure contains 3 axes. Axes 1 with title Conditional: t(10) 95%, p-value: 0.000 contains 2 objects of type histogram, line. Axes 2 with title Conditional: t(10) 97.5%, p-value: 0.001 contains 2 objects of type histogram, line. Axes 3 with title Conditional: t(10) 99%, p-value: 0.003 contains 2 objects of type histogram, line.

Шаг 8. Запустите безусловный тест.

Выполните индивидуальный тест для безусловного теста (также известного как второй тест Acerbi-Szekely).

[t,s] = unconditional(ebts);
disp(t)
    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   

Шаг 9. Визуализация значимости безусловного теста.

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

NumVaRs = height(t);
figure;
for VaRInd = 1:NumVaRs
   subplot(NumVaRs,1,VaRInd)
   histogram(s(VaRInd,:));
   hold on;
   plot(t.TestStatistic(VaRInd),0,'*');
   hold off;
   Title = sprintf('Unconditional: %s, p-value: %4.3f',t.VaRID(VaRInd),t.PValue(VaRInd));
   title(Title)
end

Figure contains 3 axes. Axes 1 with title Unconditional: t(10) 95%, p-value: 0.093 contains 2 objects of type histogram, line. Axes 2 with title Unconditional: t(10) 97.5%, p-value: 0.031 contains 2 objects of type histogram, line. Axes 3 with title Unconditional: t(10) 99%, p-value: 0.008 contains 2 objects of type histogram, line.

Шаг 10. Запустите тест квантиля.

Выполните индивидуальный тест для квантового теста (также известного как третий тест Acerbi-Szekely).

[t,s] = quantile(ebts);
disp(t)
    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   

Шаг 11. Визуализация значимости теста квантиля.

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

NumVaRs = height(t);
figure;
for VaRInd = 1:NumVaRs
   subplot(NumVaRs,1,VaRInd)
   histogram(s(VaRInd,:));
   hold on;
   plot(t.TestStatistic(VaRInd),0,'*');
   hold off;
   Title = sprintf('Quantile: %s, p-value: %4.3f',t.VaRID(VaRInd),t.PValue(VaRInd));
   title(Title)
end

Figure contains 3 axes. Axes 1 with title Quantile: t(10) 95%, p-value: 0.002 contains 2 objects of type histogram, line. Axes 2 with title Quantile: t(10) 97.5%, p-value: 0.000 contains 2 objects of type histogram, line. Axes 3 with title Quantile: t(10) 99%, p-value: 0.000 contains 2 objects of type histogram, line.

Шаг 10. Запустите тест minBiasAbsolute.

Выполните индивидуальный тест для теста minBiasAbsolute.

[t,s] = minBiasAbsolute(ebts);
disp(t)
    PortfolioID        VaRID        VaRLevel    MinBiasAbsolute    PValue    TestStatistic    CriticalValue    Observations    Scenarios    TestLevel
    ___________    _____________    ________    _______________    ______    _____________    _____________    ____________    _________    _________

       "S&P"       "t(10) 95%"        0.95          accept         0.062      -0.0014247       -0.0015578          1966          1000         0.95   
       "S&P"       "t(10) 97.5%"     0.975          reject         0.029      -0.0026674       -0.0023251          1966          1000         0.95   
       "S&P"       "t(10) 99%"        0.99          reject         0.005      -0.0060982       -0.0039004          1966          1000         0.95   

Шаг 11. Визуализация значимости теста minBiasAbsolute.

Визуализация значимости теста minBiasAbsolute с использованием гистограмм для отображения распределения типичных значений (результаты моделирования). В гистограммах звездочка показывает значение статистики теста, наблюдаемой для фактических результатов.

NumVaRs = height(t);
figure;
for VaRInd = 1:NumVaRs
   subplot(NumVaRs,1,VaRInd)
   histogram(s(VaRInd,:));
   hold on;
   plot(t.TestStatistic(VaRInd),0,'*');
   hold off;
   Title = sprintf('minBiasAbsolute: %s, p-value: %4.3f',t.VaRID(VaRInd),t.PValue(VaRInd));
   title(Title)
end

Figure contains 3 axes. Axes 1 with title minBiasAbsolute: t(10) 95%, p-value: 0.062 contains 2 objects of type histogram, line. Axes 2 with title minBiasAbsolute: t(10) 97.5%, p-value: 0.029 contains 2 objects of type histogram, line. Axes 3 with title minBiasAbsolute: t(10) 99%, p-value: 0.005 contains 2 objects of type histogram, line.

Шаг 10. Запустите тест minBiasRelative.

Выполните индивидуальный тест для теста minBiasRelative.

[t,s] = minBiasRelative(ebts);
disp(t)
    PortfolioID        VaRID        VaRLevel    MinBiasRelative    PValue    TestStatistic    CriticalValue    Observations    Scenarios    TestLevel
    ___________    _____________    ________    _______________    ______    _____________    _____________    ____________    _________    _________

       "S&P"       "t(10) 95%"        0.95          reject         0.003       -0.10509         -0.056072          1966          1000         0.95   
       "S&P"       "t(10) 97.5%"     0.975          reject             0       -0.15603         -0.073324          1966          1000         0.95   
       "S&P"       "t(10) 99%"        0.99          reject             0       -0.26716            -0.104          1966          1000         0.95   

Шаг 11. Визуализация значимости теста minBiasAbsolute.

Визуализация значимости теста minBiasRelative с использованием гистограмм для отображения распределения типичных значений (результаты моделирования). В гистограммах звездочка показывает значение статистики теста, наблюдаемой для фактических результатов.

NumVaRs = height(t);
figure;
for VaRInd = 1:NumVaRs
   subplot(NumVaRs,1,VaRInd)
   histogram(s(VaRInd,:));
   hold on;
   plot(t.TestStatistic(VaRInd),0,'*');
   hold off;
   Title = sprintf('minBiasRelative: %s, p-value: %4.3f',t.VaRID(VaRInd),t.PValue(VaRInd));
   title(Title)
end

Figure contains 3 axes. Axes 1 with title minBiasRelative: t(10) 95%, p-value: 0.003 contains 2 objects of type histogram, line. Axes 2 with title minBiasRelative: t(10) 97.5%, p-value: 0.000 contains 2 objects of type histogram, line. Axes 3 with title minBiasRelative: t(10) 99%, p-value: 0.000 contains 2 objects of type histogram, line.

Шаг 12. Запустите новое моделирование, чтобы оценить значимость тестов.

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

ebts = simulate(ebts,'NumScenarios',5000);
t = unconditional(ebts);  % new results for unconditional test
disp(t)
    PortfolioID        VaRID        VaRLevel    Unconditional    PValue    TestStatistic    CriticalValue    Observations    Scenarios    TestLevel
    ___________    _____________    ________    _____________    ______    _____________    _____________    ____________    _________    _________

       "S&P"       "t(10) 95%"        0.95         accept        0.0984      -0.13342         -0.17216           1966          5000         0.95   
       "S&P"       "t(10) 97.5%"     0.975         reject        0.0456      -0.25011         -0.24251           1966          5000         0.95   
       "S&P"       "t(10) 99%"        0.99         reject        0.0104      -0.57396         -0.40089           1966          5000         0.95   

См. также

| | | | | | |

Связанные примеры

Подробнее