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

Этот пример показывает, как оценить риск рынка гипотетического глобального портфеля фондового индекса с помощью метода отфильтрованной исторической симуляции (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. наблюдений, соответствуйте первому порядку, который возвращает авторегрессивная модель к условному среднему значению портфеля

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

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

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

Следующий сегмент кода оценивает 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.00021378     0.00012471        1.7143        0.086474
    AR{1}           0.1855       0.019906        9.3187      1.1773e-20
    DoF              12.65          2.704        4.6783      2.8933e-06

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

    Constant        -0.13366       0.030071        -4.445      8.7899e-06
    GARCH{1}         0.98639      0.0030907        319.15               0
    ARCH{1}          0.13383       0.019006        7.0418      1.8984e-12
    Leverage{1}    -0.091886       0.012152       -7.5616      3.9811e-14
    DoF                12.65          2.704        4.6783      2.8933e-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.7603%
Maximum Simulated Gain:  15.2458%

     Simulated 90% VaR:  -5.0145%
     Simulated 95% VaR:  -7.2183%
     Simulated 99% VaR: -12.4883%

Библиография

Следующие бумаги и статьи в журнале представляют полезную справочную информацию, связанную с FHS:

[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.