Рабочий процесс обратного тестирования VaR

Этот пример показывает рабочий процесс обратного тестирования (VaR) и использование инструментов обратного тестирования VaR. Более подробный пример обратного тестирования VaR см. в разделе Оценка ценности риска и обратное тестирование.

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

Используйте VaRBacktestData.mat файл для загрузки данных VaR в рабочую область. Этот пример работает с EquityIndex, Normal95, и Normal99 числовые массивы. Эти массивы являются возвратами капитала, и соответствующие данные VaR на 95% и 99% доверительных уровнях получаются с нормальным распределением (дисперсионно-ковариационный подход). Пример генерации данных VaR см. в разделе Оценка ценности риска и обратное тестирование.

load('VaRBacktestData')
disp([EquityIndex(1:5) Normal95(1:5) Normal99(1:5)])
   -0.0043    0.0196    0.0277
   -0.0036    0.0195    0.0276
   -0.0000    0.0195    0.0275
    0.0298    0.0194    0.0275
    0.0023    0.0197    0.0278

В первом столбце показаны три потери за первые три дня, но ни один из этих потерь не превышает соответствующий VaR (столбцы 2 и 3). Модель VaR прекращает работать каждый раз, когда потеря (отрицание возвратов) превышает VaR.

Шаг 2. Сгенерируйте график обратного тестирования VaR.

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

plot(Date,[EquityIndex -Normal95 -Normal99])
title('VaR Backtesting')
xlabel('Date')
ylabel('Returns')
legend('Returns','VaR 95%','VaR 99%')

Figure contains an axes. The axes with title VaR Backtesting contains 3 objects of type line. These objects represent Returns, VaR 95%, VaR 99%.

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

Создайте varbacktest объект для возвратов и VaRs на 95% и 99% доверительных уровней.

vbt = varbacktest(EquityIndex,[Normal95 Normal99],...
   'PortfolioID','S&P', ...
   'VaRID',{'Normal95' 'Normal99'}, ...
   'VaRLevel',[0.95 0.99]);
disp(vbt)
  varbacktest with properties:

    PortfolioData: [1043x1 double]
          VaRData: [1043x2 double]
      PortfolioID: "S&P"
            VaRID: ["Normal95"    "Normal99"]
         VaRLevel: [0.9500 0.9900]

Шаг 4. Запуск сводного отчета.

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

summary(vbt)
ans=2×10 table
    PortfolioID      VaRID       VaRLevel    ObservedLevel    Observations    Failures    Expected    Ratio     FirstFailure    Missing
    ___________    __________    ________    _____________    ____________    ________    ________    ______    ____________    _______

       "S&P"       "Normal95"      0.95         0.94535           1043           57        52.15       1.093         58            0   
       "S&P"       "Normal99"      0.99          0.9837           1043           17        10.43      1.6299        173            0   

Шаг 5. Запустите все тесты.

Используйте runtests функция для отображения окончательных результатов тестирования сразу.

runtests(vbt)
ans=2×11 table
    PortfolioID      VaRID       VaRLevel      TL       Bin       POF       TUFF       CC       CCI       TBF       TBFI 
    ___________    __________    ________    ______    ______    ______    ______    ______    ______    ______    ______

       "S&P"       "Normal95"      0.95      green     accept    accept    accept    accept    accept    reject    reject
       "S&P"       "Normal99"      0.99      yellow    reject    accept    accept    accept    accept    accept    accept

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

После выполнения всех тестов можно исследовать детали конкретных тестов. Для примера используйте tl функция для запуска теста светофора.

tl(vbt)
ans=2×9 table
    PortfolioID      VaRID       VaRLevel      TL      Probability     TypeI     Increase    Observations    Failures
    ___________    __________    ________    ______    ___________    _______    ________    ____________    ________

       "S&P"       "Normal95"      0.95      green       0.77913      0.26396          0         1043           57   
       "S&P"       "Normal99"      0.99      yellow      0.97991      0.03686    0.26582         1043           17   

Шаг 7. Создайте бэктесты VaR для нескольких портфелей.

Можно создать бэктесты VaR для различных портфелей или одного и того же портфеля в разные временные окна. Запустите тесты по двум различным подокнам исходного тестового окна.

Ind1 = year(Date)<=2000;
Ind2 = year(Date)>2000;

vbt1 = varbacktest(EquityIndex(Ind1),[Normal95(Ind1,:) Normal99(Ind1,:)],...
   'PortfolioID','S&P, 1999-2000',...
   'VaRID',{'Normal95' 'Normal99'},...
   'VaRLevel',[0.95 0.99]);

vbt2 = varbacktest(EquityIndex(Ind2),[Normal95(Ind2,:) Normal99(Ind2,:)],...
   'PortfolioID','S&P, 2001-2002',...
   'VaRID',{'Normal95' 'Normal99'},...
   'VaRLevel',[0.95 0.99]);

Шаг 8. Отображение сводного отчета для обоих портфелей.

Используйте summary функция для отображения сводных данных для обоих портфелей.

Summary = [summary(vbt1); summary(vbt2)];
disp(Summary)
      PortfolioID         VaRID       VaRLevel    ObservedLevel    Observations    Failures    Expected    Ratio     FirstFailure    Missing
    ________________    __________    ________    _____________    ____________    ________    ________    ______    ____________    _______

    "S&P, 1999-2000"    "Normal95"      0.95         0.94626           521            28        26.05      1.0749         58            0   
    "S&P, 1999-2000"    "Normal99"      0.99         0.98464           521             8         5.21      1.5355        173            0   
    "S&P, 2001-2002"    "Normal95"      0.95         0.94444           522            29         26.1      1.1111         35            0   
    "S&P, 2001-2002"    "Normal99"      0.99         0.98276           522             9         5.22      1.7241         45            0   

Шаг 9. Запустите все тесты для обоих портфелей.

Используйте runtests функция для отображения конечного результата тестирования для обоих портфелей.

Results = [runtests(vbt1);runtests(vbt2)];
disp(Results)
      PortfolioID         VaRID       VaRLevel      TL       Bin       POF       TUFF       CC       CCI       TBF       TBFI 
    ________________    __________    ________    ______    ______    ______    ______    ______    ______    ______    ______

    "S&P, 1999-2000"    "Normal95"      0.95      green     accept    accept    accept    accept    accept    reject    reject
    "S&P, 1999-2000"    "Normal99"      0.99      green     accept    accept    accept    accept    accept    accept    accept
    "S&P, 2001-2002"    "Normal95"      0.95      green     accept    accept    accept    accept    accept    accept    accept
    "S&P, 2001-2002"    "Normal99"      0.99      yellow    accept    accept    accept    accept    accept    accept    accept

См. также

| | | | | | | | | |

Похожие примеры

Подробнее о