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