Салихов Марсель (marcel.salikhov@gmail.com)
2019-03-20
Есть много типов финансового риска:
Оценка риска является обязательной частью процесса принятия финансовых решений.
\[ X = 1000 \times (Y - 100) \] где \(Y\) – цена акции завтра. Горизонт оценки – 1 рабочий день.
Если \(L\) – убыток в течение горизонта \(T\), то \(VaR(\alpha)\) – это верхняя квантиль функции распределения \(L\). Для непрерывно функции распределения \(VaR(\alpha)\) решает следующее уравнение:
\[ P\{L> VaR(\alpha)\} = \alpha \]
“Какой уровень потерь, что мы на X% уверены, что он не будет превышен в течение срока T”?
Регуляторы используют VaR для оценки капитала, который необходим банкам. К примеру, в рамках Базеля 2 оценка рыночного риска оценивается на основе 10 дневного VaR с вероятностью в 99%. Кредитный риск стандартно оценивается на основе 1-летнего VaR с вероятностью в 99,9%.
Оценка VaR на основе плотности распределения прибыли. Уровень VaR равен V.
Проект сроком на 1 год имеет 98% вероятность прибыли в 2, вероятность 1,5% получить потери в размере 4 млн и 0,5% вероятности привести к потере 10 млн.
VaR с доверительным уровнем 99% и годичным горизонтом составляет 4 млн.
Плюсы VaR:
но у VaR есть серьезные минусы
\[ ES(\alpha) = \frac{\int_0^{\alpha} VaR(u)du}{\alpha} \]
Предположим, что ожидаемая доходность акции составляет 0,04 и среднеквадратичное отклонение равно 0,18.
Если вы купили акций этой компании на 100 тыс. рублей, какой будет VaR при горизонте в 1 год?
Предположим, что функция распределения убытка распределена нормально с ожидаемым значением 4 тыс. рублей и СКО равным 18 тыс. рублей.
Тогда VaR будет равен:
\[4000 + 18 000 z_{\alpha} \] где \(z_{\alpha}\) – верхняя \(\alpha\)-квантиль распределения нормального распределения.
[1] 4000
[1] 18000
[1] 8225.917
[1] 46526.61
Предположим, что ваша позиция это 1 млн рублей, вложенный в индексный фонд ММВБ.
Вы хотите оценить VaR на 1 день.
Построим график ежедневных доходностей индекса ММВБ в 2010-2017 гг.
[1] -0.02036615
Var_nonp <- -10^6 * q # непараметрический VaR
IEVar = MICEX.rtn < q # вектор логических переменных, равен TRUE, если величина доходности меньше квантили
ES_nonp = -10^6 * sum(MICEX.rtn * IEVar) / sum(IEVar) # суммируем и считаем среднее значение убытка
ES_nonp # непараметрическая оценка ES
[1] 31348.33
5%-ая квантиль данного распределения доходностей равна 2%.
Это означает, что на исторических данных дневная доходность, превышающая 2%, наблюдалась в менее чем 5% времени.
Таким образом, мы можем оценить, что существует 5% вероятность, что убыток такого размера может возникнуть на следующий день.
\[\hat{VaR}(0,05, 1д) = 10^6 * 0,02 = 20366.15 \] ES рассчитывается путем усреднения всех доходностей, которые были меньше 2% и умножения их на величину портфеля. В нашем случае \(ES(0,05) = 31348.33\)
Параметрическая оценка дает несколько преимуществ по сравнению с непараметрической оценкой:
Пусть \(F(y|\theta)\) – параметрическое семейство распределений, используемое для моделирования доходностей.
\(\hat{\theta}\) оценка \(\theta\), оцененная, к примеру, методом максимального правдоподобия на основе исторических данных.
Тогда \(F^{-1}(\alpha|\hat{\theta})\) представляет собой оценку \(\alpha\)-квантили распределения доходностей на основе обратной эмпирической функции распределения.
VaR будет определяться как:
\[\hat{VaR}^{par}(\alpha) = -S \times F^{-1}(\alpha|\hat{\theta}) \] \(S\) – текущая величина нашей позиции.
Оценка ES будет рассчитываться как:
\[\hat{ES}^{par} = - \frac{S}{\alpha} \times \int_{-1}^{F^{-1}(\alpha|\hat{\theta})}x f(x| \hat{\theta}) dx\] В общем случае рассчитать этот интеграл может быть сложно, но для случаев нормального распределения и распределения Стьюдента существуют удобные аналитические формулы для расчета.
x = seq(-4,4, by=0.01)
plot(x, dt(x, df=10), type = 'l', main='Распределение Стьюдента с разными df и нормальное распределение')
lines(x,dt(x,df = 5), col = 'red')
lines(x,dt(x,df = 1), col = 'blue')
lines(x,dnorm(x), col = 'green', lwd = 2)
\[X = \mu + \sigma T \] или \(T = \frac{X- \mu}{\sigma}\) – имеет классическое t-распределение.
Таким образом, не-стандартизированное t-распределение Стьюдента имеет три параметра – \(\nu, \mu, \sigma\). В данном случае \(\sigma\) не является среднеквадратическим отклонением, а параметром масштаба распределения (scale parameter)
Другие характеристики не-стандартизированного распределения Стьдента:
\[ E(x) = \mu \] \[ Var(x) = \sigma^2 \frac{\nu}{\nu-2}\]
Посчитаем параметрические оценку VaR и ES в R, предположив, что доходность индекса имеет не-стандартизированное распределение Стьюдента (i.i.d.). В рамках этого допущения VaR будет определяться как:
\[\hat{VaR}^t = -S \times \{ \hat{\mu} + q_{\alpha,t} (\hat{\mu}) \hat{\sigma} \} \] где \(\hat{\mu}, \hat{\sigma}, \hat{\mu}\) – выборочные значения среднего, коэффициента масштаба (scale parameter), индекса степенй свободы (tail index), соответственно.
\(q_{\alpha,t} (\hat{\mu})\) – \(\alpha\)-квантиль распределения Стьюдента с заданным параметром \(\mu\).
В нашем случае для доходностей индекса ММВБ:
\[ \hat{\mu} = 0.0004702794, \hat{\sigma} = 0.0101840885, \hat{\nu} = 5.16 \]
n = nrow(MICEX.rtn)
alpha = 0.05
library(MASS)
fitt <- fitdistr(MICEX.rtn,"t") # функция для оценки различных одномерых распределения с помощью MLE из пакета MASS
param <- as.numeric(fitt$estimate)
mean <- param[1]
df <- param[3]
sd <- param[2]*sqrt( (df)/(df-2) ) #расчет стандартного отклонения через scale и df по формуле
sigma <- param[2]
qalpha <- qt(alpha,df=df) # квантиль-функция для распределения Стьюдента (t)
VaR_par <- -10^6 *(mean + sigma*qalpha)
es1 <- dt(qalpha,df=df)/(alpha)
es2 <- (df + qalpha^2) / (df - 1)
es3 = -mean+sigma*es1*es2
ES_par <- 10^6 *es3
VaR_par
[1] 19905.36
[1] 28591.27
Параметрическая оценка VaR (19905) близка к непараметрической оценке (20366), но несколько меньшее ее. Параметрическая оценка ES = 28591, что меньше чем не-параметрическая оценка ES (31348). Это связано с тем, что наиболее левая часть распределения доходностей (90 из 1782 наблюдений) является более тяжелой по сравнению с распределением Стьюдента с df = 5.16
Формула ES для распределения Стьюдента, используемая в расчете:
\[\hat{ES}^t = S \times \{ -\mu + \sigma \frac{f_{_\nu}F_{\nu}^{-1}(\alpha)}{\alpha}[\frac{\nu+\{F_{\nu}^{-1}(\alpha)\}^2\}}{\nu-1}] \} \]
Красная линия – график квантилей распределения Стьюдента с зафиксированным значением df = 5.16
Точки - точки наблюдений исторической доходности.
В левой нижней части графика красная линия находится ниже точек. Это означает, что распределение Стьюдента имеет менее тяжелый хвост по сравнению с эмпирическими наблюдениями.
grid = (1:n)/(n+1)
qqplot(coredata(MICEX.rtn), qt(grid,df=5.16),main="Распределение Стьдента,df=5.16",xlab="данные",ylab="t-квантили")
abline(lm(qt(c(.25,.75),df=5.16)~quantile(MICEX.rtn,c(.25,.75))), col = 'red', lwd = 2)
Оценка VaR и ES – это только оценки. Если мы будем использовать другие временные периоды мы будем получать другие оценки риска. Мы посчитали точность VaR до второго знака после запятой, однако на сколько мы на самом деле можем быть уверены в этих оценках?
Для оценки доверительных интервалов VaR и ES мы можем использовать метод бутстрапа.
В бутстрапе мы из имеющейся выборки случайным образом формируем под-выборку с репликацией (то есть одни и теж же значения имеют шансы попасть в под-выборку несколько раз) и оцениваем параметры.
Мы будем создавать выборки с репликацией из нашего ряда доходностей (размера 1000) и проводить ту же самую процедуру – непараметрическую оценку и параметрическую оценку VaR и ES и сохранять полученные значения.
Выполнение кода занимает около 5 минут даже на современном производительном компьютере – бустрап оценки имеют “вычислительную” цену.
B = 1000 # количество выборок
VaRs=matrix(0,nrow=B,ncol=4) # матрица для хранения значений риск-метрик
alpha = 0.05
set.seed(1234)
for (i in (1:B))
{
returns_b = sample(MICEX.rtn,1000,replace=TRUE) # бутстрап-выборка
q_b = as.numeric(quantile(returns_b,.05))
VaR_nonp_b = -10^6*q_b
IEVaR_b = (returns_b < q_b)
ES_nonp_b = -10^6 * sum(returns_b*IEVaR_b) / sum(IEVaR_b)
fitt_b = fitdistr(returns_b,"t")
param_b = as.numeric(fitt_b$estimate)
mean_b = param_b[1]
df_b = param_b[3]
sd_b = param_b[2]*sqrt( (df_b)/(df_b-2) )
lambda_b = param_b[2]
qalpha_b = qt(.05,df=df_b)
VaR_par_b = -10^6*(mean_b + lambda_b*qalpha_b)
es1_b = dt(qalpha_b,df=df_b)/(alpha)
es2_b = (df_b + qalpha_b^2) / (df_b - 1)
es3_b = -mean_b+lambda_b*es1_b*es2_b
ES_par_b = 10^6*es3_b
VaRs[i,]=c(VaR_nonp_b,VaR_par_b,ES_nonp_b,ES_par_b)
cat('итерация', i)
}
Посмотрим на распределение полученных оценок риска:
Мы можем использовать подходы из портфельного анализа, чтобы оценить среднее и дисперсию портфеля бумаг для того, чтобы оценить VaR и ES.
require(mvtnorm)
require(mnormt)
require(rgl)
rtns2 <- rtns[,1:2] # две бумаги - Газпром и Сбербанк
mu <- c(mean(rtns2[,1], na.rm = TRUE), mean(rtns2[,2], , na.rm = TRUE)) # вектор средних
Sigma <- cov(rtns2, use = "complete.obs") # матрица ковариаций
set.seed(1234)
bivn <- mvrnorm(5000, mu = mu, Sigma = Sigma ) # cимулируем многомерное нормальное
bivn.t <- rmt(5000, mu, Sigma, df = 3.45) # симулирование данных. df нашли методом MLE
Если мы сравним симулированные значения многомерного нормального и t-распределения, то увидим, что нормальное распределение - горадо более “сжато” относительно среднего значения.
par(mfrow=c(1,3))
plot(bivn.t[,1], bivn.t[,2], main = 'Двумерное t-распределение', xlab = 'GAZP', ylab='SBER')
plot(bivn[,1],bivn[,2],main = 'Двумерное нормальное распределение', xlab = 'GAZP', ylab='SBER',
ylim=c(-.4,0.4), xlim = c(-0.3, 0.5))
plot(coredata(rtns[,1]),coredata(rtns[,2]),main = 'Исторические данные', xlab = 'GAZP', ylab='SBER',
ylim=c(-.4,0.4), xlim = c(-0.3, 0.5))
Мы можем построить красивый трехмерный график, который показывает плотностей двумерного распределения Стьюдента с эмпирическими параметрами.
require(mnormt)
alpha = .05
rtns3 <- rtns[,1:3]
cor(rtns3, use = "complete.obs") # матрица корреляций 3 бумаг
GAZP SBER GMKN
GAZP 1.0000000 0.5774974 0.4053343
SBER 0.5774974 1.0000000 0.3292064
GMKN 0.4053343 0.3292064 1.0000000
df = seq(2.0,7.0,.05) # вектор возможных значений параметра тяжести хвоста (tail index)
n = length(df)
loglik = rep(0,n)
# найдем параметр df, который максимизирует log-likelehood
for(i in 1:n){
fit = cov.trob(rtns3,nu=df) # оценка матрицы ковариации для многомерного t-распределения
loglik[i] = sum(log(dmt(rtns3,mean=fit$center,S=fit$cov,df=df[i])))
}
indicate = (1:length(df))[ (loglik== max(loglik)) ]
dfhat = df[indicate] # максизирующей LL значение df
estim = cov.trob(rtns3,nu=dfhat,cor=TRUE) # оценка матрицы ковариации для многомерного t-распределения
options(digits=3)
muhat = estim$center
covhat = estim$cov
dfhat;muhat;covhat # основные параметны многомерного распределения
[1] 4.65
GAZP SBER GMKN
-0.000482 0.000394 0.000734
GAZP SBER GMKN
GAZP 1.41e-04 1.02e-04 6.49e-05
SBER 1.02e-04 2.20e-04 7.07e-05
GMKN 6.49e-05 7.07e-05 1.67e-04
w = rep(1/3,3) # равные веса в портфеле
muP = as.numeric(w %*% muhat) #ожидаемая доходность портфеля
varP = as.numeric(w %*% covhat %*% w) #дисперсия портфеля
sdP = sqrt(varP) # с.к.о. порфеля
muP
[1] 0.000215
[1] 0.0106
[1] 0.00797
[1] 16123
qalpha = qt(alpha,df=dfhat)
es1 = dt(qalpha,df=dfhat)/(alpha)
es2 = (dfhat + qalpha^2) / (dfhat - 1)
es3 = -muP+sigmaP*es1*es2
ES_par = 10^6*es3
ES_par
[1] 23533
Модель Альтмана. В 1968 году Эдвард Альтман предложил использование бухгалтерских показателей для расчета вероятностей дефолта. Для публично торгуемыех промышленных компаний оригинальная формула Альтмана выглядела следующим образом:
\[Z = 1.2 \cdot X_1 + 1.4 \cdot X_2 + 3.3 \cdot X_3 + 0.6 \cdot X4 + 0.999 \cdot X5 \]
\[X_1=Working Capital/Total Assets\] \[ X_2=Retained Earnings/Total Assets\] \[X_3=EBIT/Total Assets\] \[ X_4=Market Value of Equity/Book Value of Liabilities\] \[X5=Sales/Total Assets\]
Если значение Z> 3.0, то дефолт маловероятен; если 2.7 <Z <3.0, это повод насторожится. Если 1,8 <Z <2,7, существует умеренная вероятность дефолта; если Z <1,8, то существует высокая вероятность дефолта.
НО модель Альтмана была разработана 50 лет назад, коэффициенты оценивались на выборке компаний США.
Накопленные средние уровни дефолтов % (1970-2013, Moody’s)
Время лет) | |||||||
---|---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 7 | 10 | |
Aaa | 0 | 0.013 | 0.013 | 0.037 | 0.104 | 0.241 | 0.489 |
Aa | 0.022 | 0.068 | 0.136 | 0.26 | 0.41 | 0.682 | 1.017 |
A | 0.062 | 0.199 | 0.434 | 0.679 | 0.958 | 1.615 | 2.759 |
Baa | 0.174 | 0.504 | 0.906 | 1.373 | 1.862 | 2.872 | 4.623 |
Ba | 1.11 | 3.071 | 5.371 | 7.839 | 10.065 | 13.911 | 19.323 |
B | 3.904 | 9.274 | 14.723 | 19.509 | 23.869 | 31.774 | 40.56 |
Caa | 15.894 | 27.003 | 35.8 | 42.796 | 48.828 | 56.878 | 66.212 |
В таблице показана вероятность дефолта для компаний, начинающих с определенного кредитного рейтинга. Компания с первоначальным кредитным рейтингом Baa имеет вероятность 0,174% дефолта к концу первого года, 0,504% к концу второго года и так далее.
Для компании, которая начинает с хорошего кредитного рейтинга, вероятности дефолта со временем увеличиваются. Для компании, которая начинает с низкого кредитного рейтинга, вероятности дефолта со временем снижаются.
В России многие компании не имеют кредитных рейтингов от международных рейтинговых агентств.
Модель Мертона рассматривает капитал фирмы как опцион на его активы. В простейшем случае стоимость капитала фирмы равна \(max(V_T- D, 0)\), где \(V_T\) – стоимость активов фирмы, \(D\) – долг.
См. R. Merton, “On the Pricing of Corporate Debt: The Risk Structure of Interest Rates,” Journal of Finance 29 (1974): 449–470.
Можно использовать формулу Блека-Шоулза-Мертона для оценки стоимости опциона колл, где цена страйка равна размеру долга:
\[E_0 = V_0 \cdot N(d_1) - D e^{-rT} \cdot N(d2)\]
где \[ d_1 = \frac{ln(V_0/D)+rf + 1/2 \cdot \sigma_V^2 \cdot T }{\sigma_V \cdot \sqrt{T} }\] \[d_2 = d_1 - \sigma_V \cdot \sqrt{T} \] \(N\) – функция нормального распределения
Если {V_T < D}, то тогда компания объявляет дефолт, а стоимость капитала становится равной нулю. Вероятность этого согласно модели, будет составлять \(N(-d_2)\).
Мы не можем наблюдать \(V_0\) и \(\sigma_V\) напрямую, но если компания торгуется на рынке, то мы можем наблюдать \(E_0\). Можно показать, что
\[\sigma_E E_0 = \frac{dE}{dV}\sigma_V V_0 \] так как \(\frac{dE}{dV} = N(d_1)\), то можно записать как
\[ \sigma_E E_0 = N(d1) \sigma_V V_0 \]
Задача. Компания имеет капитал в 3 млрд рублей. Волатильность капитала составляет 80%. Безрисковая ставка составляет 5%. Уровень долга равен 10 млрд рублей. Срок до погашения долга составляет 1 год.
Решение. \(E_0 = 3, \sigma_E = 0.8, r = 0.07, T = 1, D = 10\).
Тогда решая систему из двух не-линейных уравнений, мы можем найти, что \(V_0 = 12.4\) и \(\sigma_V = 0.2123\). Параметр \(d_2\) равен 1.1408. Тогда вероятность дефолта равна \(N(d_2) = 12.76%\).
1-летний Credit VaR c вероятностью 99,9% определяет, что мы на 99,9% уверены, что убыток в течение года не превысит значение VaR.
Для большого портфеля кредитов каждый из которых имеет вероятность дефолта \(PD\) за время \(T\) максимальный показатель дефолта (worst case default rate - WCDR), который не будет превышен с уверенность в %X, можно определить по формуле
\[WCDR = N(\frac{N^{-1}[PD]+\sqrt{\rho}N^{-1}(X)}{\sqrt{1-\rho}}) \] где \(\rho\) – коэффициент корреляции между кредитами.
Тогда
\[Credit VaR = WCDR \cdot EAD \cdot LGD \] EAD – exposure at default, означает величину кредитных требований, подверженных риску потерь при дефолте
LGD – loss given default, доля потерь в случае дефолта, которая зависит от обеспечения и прочих факторов.
Управляющий фондом сообщил, что 95%-ый VaR сроком на 1 месяц составляет 6%. Ваши инвестиции в фонд составляют 1 млн рублей. Как вы можете интепретировать информацию управляющего?
Управляющий фондом сообщил, что 95%-ый ES сроком на 1 месяц составляет 6% от активов фонда. Ваши инвестиции в фонд составляют 1 млн рублей. Как вы можете интепретировать информацию управляющего?
Предположим у вас есть инвестиция, которая имеет 4% вероятность потерь в 10 млн, 2% потерь в 1 млн и 94% вероятность прибыли в 1 млн. Какова величина VaR на уровне 95%? Какова величина ES на уровне 95%?