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

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

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

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

Исследуйте ежедневные закрытия глобальных данных о фондовом индексе

Необработанные данные состоят из 2 665 наблюдений за ежедневными заключительными значениями следующих представительных фондовых индексов, охватывающих торговые даты 27 апреля 1993 до 14 июля 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')

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

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

Например, демонстрационная автокорреляционная функция (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 компенсирует heteroskedasticity. В частности, модель EGARCH также включает асимметрию (рычаги) в уравнение отклонения (см. [6]).

Кроме того, стандартизированные остаточные значения каждого индекса моделируются, когда 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

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

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);

Чтобы завершить этот раздел, исследуйте ACFs стандартизированных остаточных значений и стандартизированных остаточных значений в квадрате. Сравнение ACFs стандартизированных остаточных значений к соответствующему ACFs сырых данных возвращается, показывает, что стандартизированными остаточными значениями является теперь приблизительно 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. вводят шумовой процесс, повторно вводят автокорреляцию, и heteroskedasticity, наблюдаемые в исходном портфеле, возвращают ряд через filter Econometrics Toolbox™ функция. Чтобы максимально использовать текущую информацию, задайте необходимые преддемонстрационные остаточные значения модели, отклонения, и возвращается так, чтобы каждый симулированный путь развился из общего начального состояния.

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] Бэроун-Адези, G., К. Джиэннопулос и Л. Воспер. "VaR без Корреляций для Нелинейных Портфелей". Журнал Фьючерсных рынков. Издание 19, 1999, стр 583–602.

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

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

[4] Неряха, К. Измерение риска рынка. Западный Сассекс: John Wiley & Sons, 2005.

[5] Макнейл, А. и Р. Фрэй. "Оценка Связанной с хвостом Меры по Риску для Финансовых Временных рядов Heteroscedastic: Подход Экстремума". Журнал Эмпирических Финансов. Издание 7, 2000, стр 271–300.

[6] Нельсон, D. B. "Условный Heteroskedasticity в Активе Возвращается: Новый Подход". Econometrica.. Издание 59, № 2, 1991, стр 347–370.