exponenta event banner

Оценка ценности и обратное тестирование

В этом примере показано, как оценить значение риска (VaR) с помощью трех методов и выполнить анализ обратного тестирования VaR. Тремя методами являются:

  1. Нормальное распределение

  2. Историческое моделирование

  3. Экспоненциальное взвешенное скользящее среднее (EWMA)

Стоимостной риск - это статистический метод, который количественно определяет уровень риска, связанного с портфелем. VaR измеряет максимальную величину потерь на определенном временном горизонте и на заданном доверительном уровне.

Обратное тестирование измеряет точность расчетов VaR. С помощью методов VaR рассчитывается прогноз убытков, который затем сравнивается с фактическими убытками в конце следующего дня. Степень разницы между прогнозируемыми и фактическими потерями указывает на то, занижает или завышает риск модель VaR. Таким образом, бэктестинг ретроспективно смотрит на данные и помогает оценить модель VaR.

Три метода оценки, использованные в этом примере, оценивают VaR на 95% и 99% доверительных уровней.

Загрузка данных и определение окна тестирования

Загрузите данные. Данные, использованные в этом примере, взяты из временного ряда результатов по индексу S&P за период с 1993 по 2003 год.

load VaRExampleData.mat
Returns = tick2ret(sp);
DateReturns = dates(2:end);
SampleSize = length(Returns);

Определите окно оценки как 250 торговых дней. Окно тестирования начинается в первый день 1996 года и продолжается до конца образца.

TestWindowStart      = find(year(DateReturns)==1996,1);
TestWindow           = TestWindowStart : SampleSize;
EstimationWindowSize = 250;

Для уровня достоверности VaR 95% и 99% установите дополнение уровня VaR.

pVaR = [0.05 0.01];

Эти значения означают, что существует не более 5% и 1% вероятности, соответственно, что понесенные потери будут больше максимального порога (то есть больше, чем VaR).

Вычисление VaR с помощью метода нормального распределения

Для обычного метода распределения предположим, что прибыль и убыток портфеля обычно распределяются. Используя это предположение, вычислите VaR путем умножения показателя z на каждом доверительном уровне на стандартное отклонение результатов. Поскольку обратное тестирование VaR выглядит ретроспективно на данных, VaR «сегодня» вычисляется на основе значений возвращений за последние N = 250 дней, ведущих к, но не включая, «сегодня».

Zscore   = norminv(pVaR);
Normal95 = zeros(length(TestWindow),1);
Normal99 = zeros(length(TestWindow),1);

for t = TestWindow
    i = t - TestWindowStart + 1;
    EstimationWindow = t-EstimationWindowSize:t-1;
    Sigma = std(Returns(EstimationWindow));
    Normal95(i) = -Zscore(1)*Sigma;
    Normal99(i) = -Zscore(2)*Sigma;
end

figure;
plot(DateReturns(TestWindow),[Normal95 Normal99])
xlabel('Date')
ylabel('VaR')
legend({'95% Confidence Level','99% Confidence Level'},'Location','Best')
title('VaR Estimation Using the Normal Distribution Method')

Метод нормального распределения также известен как параметрический VaR, поскольку его оценка включает в себя вычисление параметра для стандартного отклонения возвратов. Преимуществом метода нормального распределения является его простота. Однако слабость метода нормального распределения заключается в предположении, что доходность обычно распределяется. Другое название метода нормального распределения - дисперсионно-ковариационный подход.

Вычисление VaR с помощью метода исторического моделирования

В отличие от обычного метода распределения, историческое моделирование (HS) является непараметрическим методом. Он не предполагает определенного распределения возвратов основных средств. Историческое моделирование прогнозирует риск, предполагая, что прошлые прибыли и убытки могут использоваться в качестве распределения прибыли и убытков для следующего периода прибыли. VaR «today» вычисляется как p-й квантиль последних N возвращений до «today».

Historical95 = zeros(length(TestWindow),1);
Historical99 = zeros(length(TestWindow),1);

for t = TestWindow
    i = t - TestWindowStart + 1;
    EstimationWindow = t-EstimationWindowSize:t-1;
    X = Returns(EstimationWindow);
    Historical95(i) = -quantile(X,pVaR(1));
    Historical99(i) = -quantile(X,pVaR(2));
end

figure;
plot(DateReturns(TestWindow),[Historical95 Historical99])
ylabel('VaR')
xlabel('Date')
legend({'95% Confidence Level','99% Confidence Level'},'Location','Best')
title('VaR Estimation Using the Historical Simulation Method')

На предыдущем рисунке показано, что кривая исторического моделирования имеет кусочно-постоянный профиль. Причина этого в том, что квантилы не меняются в течение нескольких дней, пока не произойдут экстремальные события. Таким образом, метод исторического моделирования медленно реагирует на изменения волатильности.

Вычисление VaR с использованием метода экспоненциального взвешенного скользящего среднего (EWMA)

Первые два метода VaR предполагают, что все прошлые возвраты имеют одинаковый вес. Метод экспоненциального взвешенного скользящего среднего (EWMA) присваивает неравные веса, в частности экспоненциально уменьшающиеся веса. Самые последние возвраты имеют более высокие веса, потому что они влияют на «сегодняшнюю» отдачу сильнее, чем возвраты дальше в прошлом. Формула для дисперсии EWMA по окну оценки размера$W_E$:

$$\hat{\sigma}^2_t=\frac{1}{c}\sum_{i=1}^{W_E}\lambda^{i-1} y^2_{t-i}$$

где$c$ - нормирующая константа:

$$c=\sum_{i=1}^{W_E}\lambda^{i-1} = \frac{1-\lambda^{W_E}}{1-\lambda}\quad\rightarrow \frac{1}{1-\lambda} ~ as ~ W_E\rightarrow\infty$$

Для удобства мы предполагаем бесконечно большое окно оценки для аппроксимации дисперсии:

$$\hat{\sigma}^2_t\approx(1-\lambda)(y^2_{t-1}+\sum^{\infty}_{i=2}\lambda^{i-1}y^2_{t-i})=(1-\lambda)y^2_{t-1}+\lambda\hat{\sigma}^2_{t-1}$$

Значение коэффициента распада, часто используемое на практике, составляет 0,94. Это значение используется в этом примере. Дополнительные сведения см. в разделе Ссылки.

Инициируйте EWMA с помощью фазы прогрева для настройки стандартного отклонения.

Lambda = 0.94;
Sigma2     = zeros(length(Returns),1);
Sigma2(1)  = Returns(1)^2;

for i = 2 : (TestWindowStart-1)
    Sigma2(i) = (1-Lambda) * Returns(i-1)^2 + Lambda * Sigma2(i-1);
end

Используйте EWMA в окне тестирования для оценки VaR.

Zscore = norminv(pVaR);
EWMA95 = zeros(length(TestWindow),1);
EWMA99 = zeros(length(TestWindow),1);

for t = TestWindow
    k     = t - TestWindowStart + 1;
    Sigma2(t) = (1-Lambda) * Returns(t-1)^2 + Lambda * Sigma2(t-1);
    Sigma = sqrt(Sigma2(t));
    EWMA95(k) = -Zscore(1)*Sigma;
    EWMA99(k) = -Zscore(2)*Sigma;
end

figure;
plot(DateReturns(TestWindow),[EWMA95 EWMA99])
ylabel('VaR')
xlabel('Date')
legend({'95% Confidence Level','99% Confidence Level'},'Location','Best')
title('VaR Estimation Using the EWMA Method')

На предыдущем рисунке EWMA очень быстро реагирует на периоды большой (или малой) отдачи.

Обратное тестирование VaR

В первой части этого примера VaR оценивали в окне теста с помощью трех различных методов и при двух различных уровнях достоверности VaR. Цель обратного тестирования VaR - оценить производительность моделей VaR. Оценка VaR при 95% достоверности нарушается только около 5% времени, а сбои VaR не кластерны. Кластеризация сбоев VaR указывает на отсутствие независимости во времени, поскольку модели VaR медленно реагируют на изменяющиеся рыночные условия.

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

ReturnsTest = Returns(TestWindow);
DatesTest   = DateReturns(TestWindow);
figure;
plot(DatesTest,[ReturnsTest -Normal95 -Historical95 -EWMA95])
ylabel('VaR')
xlabel('Date')
legend({'Returns','Normal','Historical','EWMA'},'Location','Best')
title('Comparison of returns and VaR at 95% for different models')

Чтобы выделить, как различные подходы по-разному реагируют на изменяющиеся рыночные условия, можно увеличить временной ряд, где происходит большое и внезапное изменение стоимости прибыли. Например, примерно в августе 1998 года:

ZoomInd   = (DatesTest >= datetime(1998,8,5)) & (DatesTest <= datetime(1998,10,31));
VaRData   = [-Normal95(ZoomInd) -Historical95(ZoomInd) -EWMA95(ZoomInd)];
VaRFormat = {'-','--','-.'};
D = DatesTest(ZoomInd);
R = ReturnsTest(ZoomInd);
N = Normal95(ZoomInd);
H = Historical95(ZoomInd);
E = EWMA95(ZoomInd);
IndN95    = (R < -N);
IndHS95   = (R < -H);
IndEWMA95 = (R < -E);
figure;
bar(D,R,0.5,'FaceColor',[0.7 0.7 0.7]);
hold on
for i = 1 : size(VaRData,2)
    stairs(D-0.5,VaRData(:,i),VaRFormat{i});
end
ylabel('VaR')
xlabel('Date')
legend({'Returns','Normal','Historical','EWMA'},'Location','Best','AutoUpdate','Off')
title('95% VaR violations for different models')
ax = gca;
ax.ColorOrderIndex = 1;

plot(D(IndN95),-N(IndN95),'o',D(IndHS95),-H(IndHS95),'o',...
   D(IndEWMA95),-E(IndEWMA95),'o','MarkerSize',8,'LineWidth',1.5)
xlim([D(1)-1, D(end)+1])
hold off;

Сбой или нарушение VaR происходит, когда результаты имеют отрицательный VaR. Более пристальный взгляд примерно с 27 по 31 августа показывает значительное падение доходности. В даты, начинающиеся с 27 августа, EWMA следует тенденции возвращения внимательно и более точно. Следовательно, EWMA имеет меньше нарушений VaR (два (2) нарушения, желтые алмазы) по сравнению с подходом нормального распределения (семь (7) нарушений, синие звезды) или методом исторического моделирования (восемь (8) нарушений, красные квадраты).

Помимо визуальных инструментов, можно использовать статистические тесты для обратного тестирования VaR. В Toolbox™ управления рисками a varbacktest объект поддерживает несколько статистических тестов для анализа обратного тестирования VaR. В этом примере начните с сравнения различных результатов испытаний для подхода нормального распределения на уровнях VaR 95% и 99%.

vbt = varbacktest(ReturnsTest,[Normal95 Normal99],'PortfolioID','S&P','VaRID',...
    {'Normal95','Normal99'},'VaRLevel',[0.95 0.99]);
summary(vbt)
ans =

  2x10 table

    PortfolioID      VaRID       VaRLevel    ObservedLevel    Observations    Failures    Expected    Ratio     FirstFailure    Missing
    ___________    __________    ________    _____________    ____________    ________    ________    ______    ____________    _______

       "S&P"       "Normal95"      0.95         0.94863           1966          101         98.3      1.0275         7             0   
       "S&P"       "Normal99"      0.99         0.98372           1966           32        19.66      1.6277         7             0   

Сводный отчет показывает, что наблюдаемый уровень достаточно близок к определенному уровню VaR. Уровни VaR 95% и 99% имеют максимум (1-VaR_level) x N ожидаемые отказы, где N - количество наблюдений. Коэффициент отказа показывает, что Normal95 Уровень VaR находится в пределах диапазона, тогда как Normal99 Уровень VaR неточен и недооценивает риск. Выполнение всех тестов, поддерживаемых в varbacktest, использовать runtests.

runtests(vbt)
ans =

  2x11 table

    PortfolioID      VaRID       VaRLevel      TL       Bin       POF       TUFF       CC       CCI       TBF       TBFI 
    ___________    __________    ________    ______    ______    ______    ______    ______    ______    ______    ______

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

VaR 95% проходит тесты частоты, такие как светофор, биномиальные тесты и доля отказов (tl, bin, и pof столбцы). 99% VaR не проходит эти же тесты, как указано yellow и reject результаты. Оба уровня достоверности были отклонены в условной независимости покрытия и времени между отказами независимости (cci и tbfi столбцы). Этот результат говорит о том, что нарушения VaR не являются независимыми, и, вероятно, существуют периоды с несколькими сбоями за короткий промежуток времени. Кроме того, один сбой может повысить вероятность того, что другие сбои последуют в последующие дни. Для получения дополнительной информации о методах тестирования и интерпретации результатов см. varbacktest и индивидуальные тесты.

Использование varbacktest выполните одни и те же тесты для портфеля для трех подходов на обоих уровнях достоверности VaR.

vbt = varbacktest(ReturnsTest,[Normal95 Historical95 EWMA95 Normal99 Historical99 ...
    EWMA99],'PortfolioID','S&P','VaRID',{'Normal95','Historical95','EWMA95',...
    'Normal99','Historical99','EWMA99'},'VaRLevel',[0.95 0.95 0.95 0.99 0.99 0.99]);
runtests(vbt)
ans =

  6x11 table

    PortfolioID        VaRID         VaRLevel      TL       Bin       POF       TUFF       CC       CCI       TBF       TBFI 
    ___________    ______________    ________    ______    ______    ______    ______    ______    ______    ______    ______

       "S&P"       "Normal95"          0.95      green     accept    accept    accept    accept    reject    reject    reject
       "S&P"       "Historical95"      0.95      yellow    accept    accept    accept    accept    accept    reject    reject
       "S&P"       "EWMA95"            0.95      green     accept    accept    accept    accept    accept    reject    reject
       "S&P"       "Normal99"          0.99      yellow    reject    reject    accept    reject    accept    reject    reject
       "S&P"       "Historical99"      0.99      yellow    reject    reject    accept    reject    accept    reject    reject
       "S&P"       "EWMA99"            0.99      red       reject    reject    accept    reject    accept    reject    reject

Результаты аналогичны предыдущим результатам, и на уровне 95% результаты частоты в целом приемлемы. Однако результаты частоты на уровне 99% обычно являются отклонениями. Что касается независимости, большинство тестов проходят условный тест независимости покрытия (cci), который проверяет независимость в последующие дни. Обратите внимание, что все тесты не выдерживают контроль наработки между отказами (tbfi), который учитывает время между всеми отказами. Этот результат говорит о том, что все методы имеют проблемы с предположением независимости.

Чтобы лучше понять, как эти результаты меняются при определенных рыночных условиях, посмотрите на 2000 и 2002 годы для уровня доверия VaR 95%.

Ind2000 = (year(DatesTest) == 2000);
vbt2000 = varbacktest(ReturnsTest(Ind2000),[Normal95(Ind2000) Historical95(Ind2000) EWMA95(Ind2000)],...
   'PortfolioID','S&P, 2000','VaRID',{'Normal','Historical','EWMA'});
runtests(vbt2000)
ans =

  3x11 table

    PortfolioID       VaRID        VaRLevel     TL       Bin       POF       TUFF       CC       CCI       TBF       TBFI 
    ___________    ____________    ________    _____    ______    ______    ______    ______    ______    ______    ______

    "S&P, 2000"    "Normal"          0.95      green    accept    accept    accept    accept    accept    accept    accept
    "S&P, 2000"    "Historical"      0.95      green    accept    accept    accept    accept    accept    accept    accept
    "S&P, 2000"    "EWMA"            0.95      green    accept    accept    accept    accept    accept    accept    accept

Ind2002 = (year(DatesTest) == 2002);
vbt2002 = varbacktest(ReturnsTest(Ind2002),[Normal95(Ind2002) Historical95(Ind2002) EWMA95(Ind2002)],...
   'PortfolioID','S&P, 2002','VaRID',{'Normal','Historical','EWMA'});
runtests(vbt2002)
ans =

  3x11 table

    PortfolioID       VaRID        VaRLevel      TL       Bin       POF       TUFF       CC       CCI       TBF       TBFI 
    ___________    ____________    ________    ______    ______    ______    ______    ______    ______    ______    ______

    "S&P, 2002"    "Normal"          0.95      yellow    reject    reject    accept    reject    reject    reject    reject
    "S&P, 2002"    "Historical"      0.95      yellow    reject    accept    accept    reject    reject    reject    reject
    "S&P, 2002"    "EWMA"            0.95      green     accept    accept    accept    accept    reject    reject    reject

В 2000 году все три метода прошли все испытания. Однако в 2002 году результаты испытаний были в основном отклонены по всем методам. Метод EWMA, похоже, работает лучше в 2002 году, но все методы не проходят тесты независимости.

Чтобы получить больше информации о тестах независимости, посмотрите на условную независимость покрытия (cci) и наработку на независимость от отказов (tbfi) детали теста за 2002 год. Для получения подробной информации о тестах выполните отдельные функции тестирования.

cci(vbt2002)
ans =

  3x13 table

    PortfolioID       VaRID        VaRLevel     CCI      LRatioCCI    PValueCCI    Observations    Failures    N00    N10    N01    N11    TestLevel
    ___________    ____________    ________    ______    _________    _________    ____________    ________    ___    ___    ___    ___    _________

    "S&P, 2002"    "Normal"          0.95      reject     12.591      0.0003877        261            21       225    14     14      7       0.95   
    "S&P, 2002"    "Historical"      0.95      reject     6.3051       0.012039        261            20       225    15     15      5       0.95   
    "S&P, 2002"    "EWMA"            0.95      reject     4.6253       0.031504        261            14       235    11     11      3       0.95   

В тесте CCI вероятность p 01 отказа в момент времени t, зная, что отказа в момент времени t-1 не было, дается

$$ p_{01} = \frac{N_{01}}{N_{01}+N_{00}}$$

Вероятность p 11 о наличии отказа в момент времени t, зная, что произошел сбой в момент времени t-1,

$$ p_{11} = \frac{N_{11}}{N_{11}+N_{10}}$$

От N00, N10, N01, N11 столбцы в результатах теста, значение p 01 составляет около 5% для трех методов, но значения p 11 выше 20%. Поскольку имеются доказательства того, что за сбоем следует другой сбой гораздо чаще, чем 5% времени, этот тест CCI завершается неуспешно.

При проверке независимости времени между отказами посмотрите на минимальные, максимальные и квартили распределения времени между отказами, в столбцах TBFMin, TBFQ1, TBFQ2, TBFQ3, TBFMax.

tbfi(vbt2002)
ans =

  3x14 table

    PortfolioID       VaRID        VaRLevel     TBFI     LRatioTBFI    PValueTBFI    Observations    Failures    TBFMin    TBFQ1    TBFQ2    TBFQ3    TBFMax    TestLevel
    ___________    ____________    ________    ______    __________    __________    ____________    ________    ______    _____    _____    _____    ______    _________

    "S&P, 2002"    "Normal"          0.95      reject      53.936      0.00010087        261            21         1          1        5      17        48        0.95   
    "S&P, 2002"    "Historical"      0.95      reject      45.274       0.0010127        261            20         1        1.5      5.5      17        48        0.95   
    "S&P, 2002"    "EWMA"            0.95      reject      25.756        0.027796        261            14         1          4      7.5      20        48        0.95   

При уровне VaR 95% ожидается среднее время между отказами 20 дней или один отказ каждые 20 дней. Однако медиана времени между отказами за 2002 год колеблется от 5 до 7,5 для трех методов. Этот результат предполагает, что половина времени, два последовательных сбоя происходят в течение 5-7 дней, гораздо чаще, чем 20 ожидаемых дней. Следовательно, происходит больше сбоев тестирования. Для обычного метода первый квартиль равен 1, что означает, что 25% отказов происходят в последующие дни.

Ссылки

Nieppola, O. Backtesting Value-at-Risk Model. Хельсинкская школа экономики. 2009.

Даниельссон, J. Financial Risk Forecasting: Теория и практика прогнозирования рыночных рисков с внедрением в R и MATLAB ®. Уайли Финанс, 2012.

См. также

| | | | | | | | | |

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

Подробнее