Оцінювання хвостового ризику

Вступ до керування ризиком портфеля в Python

Dakota Wixom

Quantitative Analyst | QuantCourse.com

Оцінювання хвостового ризику

Хвостовий ризик — це ризик крайніх інвестиційних результатів, зазвичай на негативному «хвості» розподілу.

  • Історична просадка
  • Value at Risk
  • Conditional Value at Risk
  • Моделювання Монте-Карло
Вступ до керування ризиком портфеля в Python

Історична просадка

Просадка — це відсоткова втрата від найвищого кумулятивного історичного значення.

$$ \text{Drawdown} = \frac{r_t}{RM} - 1$$

  • $r_t$: кумулятивна дохідність у момент t
  • $RM$: поточний максимум
Історична просадка ETF на нафту USO

Вступ до керування ризиком портфеля в Python

Історична просадка в Python

Припустімо, cum_rets — це np.array кумулятивних дохідностей у часі

running_max = np.maximum.accumulate(cum_rets)
running_max[running_max < 1] = 1
drawdown = (cum_rets) / running_max - 1
drawdown
Date        Return
2007-01-03    -0.042636
2007-01-04    -0.081589
2007-01-05    -0.073062
Вступ до керування ризиком портфеля в Python

Історичний Value at Risk

Value at Risk (VaR) — це поріг із заданим рівнем довіри, що збитки не (або точніше, історично не) перевищать певний рівень.

VaR зазвичай наводять для квантилів 95, 99 і 99,9.

Приклад: VaR(95) = -2,3%

95% упевненість, що збитки не перевищать -2,3% за день на основі історичних даних.

Вступ до керування ризиком портфеля в Python

Історичний Value at Risk у Python

var_level = 95
var_95 = np.percentile(StockReturns, 100 - var_level)
var_95
-0.023
Вступ до керування ризиком портфеля в Python

Історичний очікуваний короткийfall

Conditional Value at Risk (CVaR) — це оцінка очікуваних збитків у найгірших 1 - x% сценаріїв.

CVaR зазвичай наводять для квантилів 95, 99 і 99,9.

 

Приклад: CVaR(95) = -2,5%

 

В найгірших 5% випадків історично середні збитки перевищували -2,5%.

Вступ до керування ризиком портфеля в Python

Історичний CVaR у Python

Припустімо, у вас є об'єкт StockReturns — це часовий ряд біржових дохідностей.

Щоб обчислити історичний CVaR(95):

var_level = 95
var_95 = np.percentile(StockReturns, 100 - var_level)
cvar_95 = StockReturns[StockReturns <= var_95].mean()
cvar_95
-0.025
Вступ до керування ризиком портфеля в Python

Давайте потренуємось!

Вступ до керування ризиком портфеля в Python

Preparing Video For Download...