В этом примере показан поток операций обратного тестирования значения риска (VaR) и использование инструментов обратного тестирования VaR. Более полный пример обратного тестирования 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.
Используйте plot функция для визуализации данных обратного тестирования VaR. Этот тип визуализации является обычным первым шагом при выполнении анализа обратного тестирования VaR.
plot(Date,[EquityIndex -Normal95 -Normal99]) title('VaR Backtesting') xlabel('Date') ylabel('Returns') legend('Returns','VaR 95%','VaR 99%')

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]
Используйте 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
Используйте 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
После выполнения всех тестов можно исследовать детали конкретных тестов. Например, используйте 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
Для различных портфелей или одного и того же портфеля в различных временных окнах можно создавать фоновые тесты 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]);
Используйте 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
Используйте 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
bin | cc | cci | pof | runtests | summary | tbf | tbfi | tl | tuff | varbacktest