Использование загрузочного и фильтрованного исторического симуляции для оценки рыночного риска

Этот пример показывает, как оценить рыночный риск гипотетического глобального портфеля индекса капитала с помощью фильтрованного метода исторической симуляции (FHS), альтернативы традиционному историческому симуляции и подходам симуляции Монте-Карло. FHS сочетает относительно сложную основанную на модели обработку волатильности (GARCH) с непараметрической спецификацией распределения вероятностей возвратов активов. Одной из привлекательных функций FHS является его способность генерировать относительно большие отклонения (потери и прибыли), не обнаруженные в исходной серии возвратов портфеля.

Пример сначала извлекает фильтрованные невязки модели и условные волатильности из серии возвратов портфеля с помощью асимметричной модели GARCH, из которой формируется серия независимых и одинаково распределенных (i.i.d.) стандартизированных невязок. FHS сохраняет непараметрический характер исторической симуляции путем начальной привязки (выборка с заменой) от стандартизированных невязок. Эти загрузочные стандартизированные невязки затем используются, чтобы сгенерировать временные пути будущих возвратов активов. Наконец, симуляция оценивает Стоимость под угрозой (VaR) гипотетического глобального портфеля капитала за один месяц горизонта.

Этот пример иллюстрирует лишь одну из многих альтернатив и не предназначен для поддержки какой-либо конкретной философии управления рисками. Для другой альтернативы смотрите пример, озаглавленный Использование теории экстремального значения и Copulas для оценки рыночного риска.

Изучение ежедневных закрытий данных Глобального индекса капитала

Необработанные данные состоят из 2665 наблюдений ежедневных значений закрытия следующих репрезентативных индексов капитала, охватывающих торговые даты, 27-April-1993 к 14-July-2003:

  Canada: TSX Composite (Ticker ^GSPTSE)
  France: CAC 40        (Ticker ^FCHI)
 Germany: DAX           (Ticker ^GDAXI)
   Japan: Nikkei 225    (Ticker ^N225)
      UK: FTSE 100      (Ticker ^FTSE)
      US: S&P 500       (Ticker ^GSPC)
load Data_GlobalIdx1   % Import daily index closings

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

figure
plot(dates, ret2price(price2ret(Data)))
datetick('x')
xlabel('Date')
ylabel('Index Value')
title ('Relative Daily Index Closings')
legend(series, 'Location', 'NorthWest')

При подготовке к последующему моделированию задайте вектор веса портфеля. Хотя принимается одинаково взвешенный портфель, можно изменить вектор веса, чтобы изучить любой другой состав портфеля или даже одну страну. Обратите внимание, что веса портфеля фиксируются на протяжении всего горизонта риска и что симуляция игнорирует любые транзакционные затраты, необходимые для ребалансировки портфеля (ежедневный процесс ребалансировки принимается как самофинансирование).

nIndices = size(Data,2);                          % # of indices
weights  = repmat(1/nIndices, nIndices, 1);       % Equally weighted portfolio

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

returns = price2ret(Data,[],'Periodic') * weights;   % Arithmetic returns
returns = log(1 + returns);                          % Logarithmic returns
T       = size(returns, 1);                          % Historical sample size

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

figure
subplot(2,1,1)
plot(dates, ret2price(returns))
datetick('x')
xlabel('Date')
ylabel('Closing Level')
title('Daily Portfolio Closings')

subplot(2,1,2)
plot(dates(2:end), returns)
datetick('x')
xlabel('Date')
ylabel('Return')
title('Daily Portfolio Logarithmic Returns')

Фильтрация возвратов портфеля

Метод bootstrapped FHS требует, чтобы наблюдения были примерно независимыми и одинаково распределенными. Однако большинство серий финансового возврата демонстрируют некоторую степень автокорреляции и, что более важно, гетероскедастичность.

Для примера функция выборочной автокорреляции (ACF) возвратов портфеля показывает некоторую мягкую последовательную корреляцию.

figure
autocorr(returns)
title('Sample ACF of Returns')

Однако выборка ACF квадратов возвратов иллюстрирует степень стойкости в отклонении и подразумевает, что моделирование GARCH может значительно обусловить данные, используемые в последующем способе начальной загрузки.

figure
autocorr(returns.^2)
title('Sample ACF of Squared Returns')

Для создания серии i.i.d. наблюдения, подгонка авторегрессионной модели первого порядка к условному среднему значению возвратов портфеля

$$r_t = c + \theta r_{t-1} + \epsilon_t$$

и асимметричная экспоненциальная модель GARCH (EGARCH) к условному отклонению

$$log[\sigma^2_t] = \kappa + \alpha log[\sigma^2_{t-1}] + \phi (|z_{t-1}| - E[|z_{t-1}|]) + \psi z_{t-1}$$

Авторегрессионная модель первого порядка компенсирует автокорреляцию, в то время как модель EGARCH компенсирует гетероскедастичность. В частности, модель EGARCH также включает асимметрию (рычаг) в уравнение отклонения (см. [6]).

Кроме того, стандартизированные невязки каждого индекса моделируются как стандартизированное распределение Student's t, чтобы компенсировать жировые хвосты, часто связанные с возвратами капитала. То есть

$$z_t = \epsilon_t/\sigma_t$$ i.i.d. distributed $$t(\nu)$$

Следующий сегмент кода оценивает модель AR (1) + EGARCH (1,1) и извлекает отфильтрованные невязки и условные отклонения из возвратов портфеля.

model   = arima('AR', NaN, 'Distribution', 't', 'Variance', egarch(1,1));
options = optimoptions(@fmincon, 'Display'  , 'off', 'Diagnostics', 'off', ...
    'Algorithm', 'sqp', 'TolCon'     , 1e-7);

fit = estimate(model, returns, 'options', options);  % Fit the model
[residuals, variances] = infer(fit, returns);        % Infer residuals and variances
 
    ARIMA(1,0,0) Model (t Distribution):
 
                  Value       StandardError    TStatistic      PValue  
                __________    _____________    __________    __________

    Constant    0.00021377     0.00012471        1.7142        0.086488
    AR{1}           0.1855       0.019905        9.3189      1.1753e-20
    DoF              12.65         2.7038        4.6784      2.8914e-06

 
 
    EGARCH(1,1) Conditional Variance Model (t Distribution):
 
                     Value      StandardError    TStatistic      PValue  
                   _________    _____________    __________    __________

    Constant        -0.13366        0.03007       -4.4449      8.7947e-06
    GARCH{1}         0.98639      0.0030907        319.15               0
    ARCH{1}          0.13383       0.019006        7.0417      1.8991e-12
    Leverage{1}    -0.091884       0.012151       -7.5616      3.9807e-14
    DoF                12.65         2.7038        4.6784      2.8914e-06

Сравните невязки модели и соответствующие условные стандартные отклонения, отфильтрованные от необработанных возвратов. Нижний график четко иллюстрирует изменение летучести (гетероскедастичности), присутствующее в фильтрованных невязках.

figure
subplot(2,1,1)
plot(dates(2:end), residuals)
datetick('x')
xlabel('Date')
ylabel('Residual')
title ('Filtered Residuals')

subplot(2,1,2)
plot(dates(2:end), sqrt(variances))
datetick('x')
xlabel('Date')
ylabel('Volatility')
title ('Filtered Conditional Standard Deviations')

Отфильтровав невязки модели из серии возвратов портфеля, стандартизируйте каждую невязку по соответствующему условному стандартному отклонению. Эти стандартизированные невязки представляют базовую нулевую, единичную дисперсию i.i.d. серия. i.i.d. свойство важно для начальной загрузки и позволяет процедуре дискретизации безопасно избегать подводных камней выборки из населения, в которой последовательные наблюдения последовательно зависят.

standardizedResiduals = residuals ./ sqrt(variances);

Чтобы завершить этот раздел, исследуйте ACF стандартизированных невязок и квадратов стандартизированных невязок. Сравнение ACF стандартизированных невязок с соответствующими ACF необработанных возвратов показывает, что стандартизированные невязки в настоящее время являются приблизительно i.i.d., тем самым гораздо более поддающимися последующему загрузочному соединению.

figure
autocorr(standardizedResiduals)
title('Sample ACF of Standardized Residuals')

figure
autocorr(standardizedResiduals.^2)
title('Sample ACF of Squared Standardized Residuals')

Моделирование возвратов портфеля глобальных индексов с FHS

Как уже упоминалось, FHS загружает стандартизированные невязки, чтобы сгенерировать пути будущей доходности активов и, следовательно, не делает параметрических предположений о распределении вероятностей этих возвратов. Процедура начальной загрузки создает файл i.i.d. стандартизированные невязки, совместимые с остатками, полученными из вышеописанного процесса фильтрации AR (1) + EGARCH (1,1).

В следующем сегменте кода моделируется 20 000 независимых случайных испытаний стандартизированных невязок за один месячный горизонт в 22 торговых дня.

s = RandStream.getGlobalStream();
reset(s)

nTrials = 20000;                  % # of independent random trials
horizon = 22;                     % VaR forecast horizon

bootstrappedResiduals = standardizedResiduals(unidrnd(T, horizon, nTrials));

Использование загрузочных стандартизированных невязок в качестве i.i.d. входной процесс шума, повторно ввести автокорреляцию и гетероскедастичность, наблюдаемые в исходной серии возвратов портфеля через Econometrics Toolbox™ filter функция. Чтобы максимально использовать текущую информацию, задайте необходимые предварительные выборки невязок, отклонений и возвратов модели, чтобы каждый моделируемый путь развивался из общего начального состояния.

Y0 = returns(end);                            % Presample returns
Z0 = residuals(end)./sqrt(variances(end));    % Presample model standardized residuals
V0 = variances(end);                          % Presample variances

portfolioReturns = filter(fit, bootstrappedResiduals, ...
                         'Y0', Y0, 'Z0', Z0, 'V0', V0);

Результирующие результаты

Смоделировав возвраты глобального портфеля индексов, сообщите максимальную прибыль и убыток, а также VaR на различных доверительных уровнях за один месяц горизонта риска. Кроме того, постройте график эмпирической функции кумулятивного распределения (CDF) и функции плотности вероятностей (PDF) совокупных возвратов портфеля.

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

cumulativeReturns = sum(portfolioReturns);

VaR = 100 * quantile(cumulativeReturns, [0.10 0.05 0.01]');

disp(' ')
fprintf('Maximum Simulated Loss: %8.4f%s\n'   , -100*min(cumulativeReturns), '%')
fprintf('Maximum Simulated Gain: %8.4f%s\n\n' ,  100*max(cumulativeReturns), '%')
fprintf('     Simulated 90%% VaR: %8.4f%s\n'  ,  VaR(1), '%')
fprintf('     Simulated 95%% VaR: %8.4f%s\n'  ,  VaR(2), '%')
fprintf('     Simulated 99%% VaR: %8.4f%s\n\n',  VaR(3), '%')

figure
h = cdfplot(cumulativeReturns);
h.Color = 'Red';
xlabel('Logarithmic Return')
ylabel('Probability')
title ('Simulated One-Month Global Portfolio Returns CDF')

figure
bins = -0.3:0.02:0.2;
histogram(cumulativeReturns, bins, 'Normalization', 'pdf')
xlabel('Logarithmic Return')
ylabel('Probability Density')
title ('Simulated One-Month Global Portfolio Returns PDF')
grid on
 
Maximum Simulated Loss:  39.7597%
Maximum Simulated Gain:  15.2458%

     Simulated 90% VaR:  -5.0145%
     Simulated 95% VaR:  -7.2182%
     Simulated 99% VaR: -12.4882%

Ссылки

[1] Barone-Adesi, G., K. Giannopoulos, and L. Vosper. «VaR без корреляций для нелинейных портфелей». Журнал фьючерсных рынков. Том 19, 1999, стр. 583-602.

[2] Брандолини, Д., М. Паллотта и Р. Зенти. «Управление рисками в управляющей компании: практический случай». Представлен на выставке EMFA 2001, Лугано, Швейцария. 2000.

[3] Christoffersen, P.F. Элементы управления финансовыми рисками. Waltham, MA: Academic Press, 2002.

[4] Дауд, К. Измерение рыночного риска. West Sussex: John Wiley & Sons, 2005.

[5] Макнил, А. и Р. Фрей. Оценка показателя риска, связанного с хвостом, для гетероскедастических финансовых временных рядов: подход с экстремальным значением. Журнал эмпирических финансов. Том 7, 2000, стр. 271-300.

[6] Нельсон, Д. Б. «Условная гетероскедастичность в возвратах активов: новый подход». Эконометрика.. Том 59, № 2, 1991, с. 347-370.