Ожидаемый недостаток (ES) рабочий процесс Backtesting Используя симуляцию

Этот пример показывает ожидаемый недостаток (ES) backtesting рабочий процесс с помощью esbacktestbysim объект. Тесты поддержаны в esbacktestbysim объект требует как входные параметры не только тестовые данные (Portfoliovar, и ES данные), но также и информация о распределении протестированной модели.

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

Шаг 1. Загрузите ES backtesting данные.

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

load ESBacktestBySimData

Шаг 2. Сгенерируйте ES backtesting график.

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

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

Шаг 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: [1966×1 double]
          VaRData: [1966×3 double]
           ESData: [1966×3 double]
     Distribution: [1×1 struct]
      PortfolioID: "S&P"
            VaRID: [1×3 string]
         VaRLevel: [1×3 double]
disp(ebts.Distribution) % distribution information stored in the 'Distribution' property
                Name: "t"
    DegreesOfFreedom: 10
            Location: 0
               Scale: [1966×1 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 backtest, как показано в условном тесте выход.

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

Шаг 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

Шаг 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

Шаг 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

Шаг 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

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

Запустите симуляцию снова с помощью 5 000 сценариев, чтобы сгенерировать новый набор результатов испытаний. Если начальными результатами испытаний для одного из тестов является граница, использование большей симуляции может помочь разъяснить результаты испытаний.

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   

Смотрите также

| | | | | | |

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

Больше о

Для просмотра документации необходимо авторизоваться на сайте