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

Этот пример показывает ожидаемый недостаток (ES) backtesting рабочий процесс и использование ES backtesting инструменты. Класс esbacktest поддерживает два теста - безусловный нормальный и безусловный t - которые основаны на безусловной тестовой статистической величине Асерби-Сзекели (также известный как второй тест Acerbi-Szekely). Эти тесты используют предварительно моделируемые критические значения для безусловной тестовой статистической величины с предположением о нормальном распределении для нормального случая и t распределении с 3 степенями свободы для t случая.

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

Используйте файл ESBacktestData.mat, чтобы загрузить данные в рабочую область. Этот пример работает с числовым массивом Returns. Этот массив представляет акцию, возвращается, VaRModel1, VaRModel2, и VaRModel3 и соответствующие данные VaR на доверительных уровнях на 97,5%, сгенерированных с тремя различными моделями. Ожидаемые данные о недостатке содержатся в ESModel1, ESModel2 и ESModel3. Три образцовых дистрибутива, используемые, чтобы сгенерировать ожидаемые данные о недостатке в этом примере, нормальны (модель 1), t с 10 степенями свободы (модель 2) и t с 5 степенями свободы (модель 3). Однако эта информация о распределении не нужна в этом примере, потому что объект esbacktest не требует его.

load('ESBacktestData')
whos
  Name              Size             Bytes  Class        Attributes

  Data           1966x13            224195  timetable              
  Dates          1966x1              15729  datetime               
  ESModel1       1966x1              15728  double                 
  ESModel2       1966x1              15728  double                 
  ESModel3       1966x1              15728  double                 
  Returns        1966x1              15728  double                 
  VaRLevel          1x1                  8  double                 
  VaRModel1      1966x1              15728  double                 
  VaRModel2      1966x1              15728  double                 
  VaRModel3      1966x1              15728  double                 

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

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

Получившийся график показывает некоторые большие нарушения в 1 997, 1998, и 2000. Нарушения в 1 996 взглядах, меньших в свободных членах, однако относительно энергозависимости того периода, те нарушения являются также значительными. Для безусловного теста значение нарушений и количество нарушений имеют значение, потому что тестовые средние значения статистической величины по ожидаемому количеству отказов. Если ожидаемый номер является маленьким, но существует несколько нарушений, эффективная серьезность для теста больше. Год 2002 является примером года с маленьким, но много отказов VaR.

figure;
plot(Dates,Returns,Dates,-VaRModel1,Dates,-ESModel1)
legend('Returns','VaR','ES')
title('Test Data, Model 1, VaR level 95%')
grid on

Шаг 3. Создайте объект esbacktest.

Создайте объект esbacktest с помощью esbacktest.

load ESBacktestData
ebt = esbacktest(Returns,[VaRModel1 VaRModel2 VaRModel3],[ESModel1 ESModel2 ESModel3],...
    'PortfolioID',"S&P",'VaRID',["Model1","Model2","Model3"],'VaRLevel',VaRLevel)
ebt = 
  esbacktest with properties:

    PortfolioData: [1966x1 double]
          VaRData: [1966x3 double]
           ESData: [1966x3 double]
      PortfolioID: "S&P"
            VaRID: ["Model1"    "Model2"    "Model3"]
         VaRLevel: [0.9750 0.9750 0.9750]

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

Сгенерируйте сводный отчет ES. Столбец ObservedSeverity показывает среднее отношение потери для VaR на периодах, когда VaR нарушен. Столбец ExpectedSeverity показывает среднее отношение ES к VaR в течение периодов нарушения VaR.

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

       "S&P"       "Model1"     0.975         0.97101            1.1928              1.4221             1966           57        49.15      1.1597       0   
       "S&P"       "Model2"     0.975         0.97202            1.2652              1.4134             1966           55        49.15       1.119       0   
       "S&P"       "Model3"     0.975         0.97202              1.37              1.4146             1966           55        49.15       1.119       0   

Шаг 5. Запустите отчет для всех тестов.

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

t = runtests(ebt);
disp(t)
    PortfolioID     VaRID      VaRLevel    UnconditionalNormal    UnconditionalT
    ___________    ________    ________    ___________________    ______________

       "S&P"       "Model1"     0.975            reject               reject    
       "S&P"       "Model2"     0.975            reject               accept    
       "S&P"       "Model3"     0.975            accept               accept    

Шаг 6. Запустите безусловный нормальный тест.

Запустите отдельный тест для безусловного нормального теста.

t = unconditionalNormal(ebt);
disp(t)
    PortfolioID     VaRID      VaRLevel    UnconditionalNormal     PValue      TestStatistic    CriticalValue    Observations    TestLevel
    ___________    ________    ________    ___________________    _________    _____________    _____________    ____________    _________

       "S&P"       "Model1"     0.975            reject           0.0054099      -0.38265          -0.2403           1966          0.95   
       "S&P"       "Model2"     0.975            reject            0.044967      -0.25011          -0.2403           1966          0.95   
       "S&P"       "Model3"     0.975            accept               0.149      -0.15551          -0.2403           1966          0.95   

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

Запустите отдельный тест для безусловного теста t.

t = unconditionalT(ebt);
disp(t)
    PortfolioID     VaRID      VaRLevel    UnconditionalT     PValue     TestStatistic    CriticalValue    Observations    TestLevel
    ___________    ________    ________    ______________    ________    _____________    _____________    ____________    _________

       "S&P"       "Model1"     0.975          reject        0.018566      -0.38265         -0.28242           1966          0.95   
       "S&P"       "Model2"     0.975          accept        0.073292      -0.25011         -0.28242           1966          0.95   
       "S&P"       "Model3"     0.975          accept         0.17932      -0.15551         -0.28242           1966          0.95   

Шаг 8. Запустите ES backtests в течение конкретного года.

Выберите конкретный календарный год и запустите тесты в течение того года только путем создания объекта esbacktest и передачи только данных интереса.

Year = 1996;
Ind = year(Dates)==Year;
PortID = ['S&P, ' num2str(Year)];
PortfolioData = Returns(Ind);
VaRData = [VaRModel1(Ind) VaRModel2(Ind) VaRModel3(Ind)];
ESData = [ESModel1(Ind) ESModel2(Ind) ESModel3(Ind)];
ebt = esbacktest(PortfolioData,VaRData,ESData,...
   'PortfolioID',PortID,'VaRID',["Model1","Model2","Model3"],'VaRLevel',VaRLevel);
disp(ebt)
  esbacktest with properties:

    PortfolioData: [262x1 double]
          VaRData: [262x3 double]
           ESData: [262x3 double]
      PortfolioID: "S&P, 1996"
            VaRID: ["Model1"    "Model2"    "Model3"]
         VaRLevel: [0.9750 0.9750 0.9750]
tt = runtests(ebt);
disp(tt)
    PortfolioID     VaRID      VaRLevel    UnconditionalNormal    UnconditionalT
    ___________    ________    ________    ___________________    ______________

    "S&P, 1996"    "Model1"     0.975            reject               reject    
    "S&P, 1996"    "Model2"     0.975            reject               reject    
    "S&P, 1996"    "Model3"     0.975            reject               accept    

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

| | | |

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

Больше о