Волатильність і екстремальні значення

Кількісне управління ризиками в Python

Jamsheed Shorish

Computational Economist

Припущення тесту Чоу

  • Тест Чоу: визначає статистичну значущість можливого структурного зсуву
  • Потрібно: заздалегідь задана точка структурного зсуву
  • Потрібно: лінійний зв'язок (напр., факторна модель) $$ \log(\text{Population}_t) = \alpha + \beta * \text{Year}_t + u_t $$

Зображення зростання населення Китаю з позначеною точкою структурного зсуву

Кількісне управління ризиками в Python

Ознаки структурного зсуву

  • Візуалізація тренду може не вказувати точку зсуву
  • Альтернатива: аналізуйте волатильність, а не тренд
    • Структурні зміни часто супроводжуються більшою невизначеністю => волатильністю
    • Дозволяє розглядати багатші моделі (напр., моделі стохастичної волатильності)

Зображення місячної волатильності з можливими точками структурного зсуву

Кількісне управління ризиками в Python

Волатильність у ковзному вікні

  • Ковзне вікно: обчисліть волатильність у часі та виявляйте зміни
  • Згадайте: 30-денне ковзне вікно

    • Створіть ковзне вікно методом ".rolling()"
    • Обчисліть волатильність у ковзному вікні (відкиньте недоступні дати)
    • Обчисліть потрібну зведену метрику, напр. .mean(), .min() тощо

     

rolling = portfolio_returns.rolling(30)

volatility = rolling.std().dropna()
vol_mean = volatility.resample("M").mean()
Кількісне управління ризиками в Python

Волатильність у ковзному вікні

  • Візуалізуйте отриману волатильність (дисперсію або стандартне відхилення)
import matplotlib.pyplot as plt
vol_mean.plot(
  title="Monthly average volatility"
).set_ylabel("Standard deviation")
plt.show()

Зображення середньомісячної волатильності

Кількісне управління ризиками в Python

Волатильність у ковзному вікні

  • Візуалізуйте отриману волатильність (дисперсію або стандартне відхилення)
  • Великі зміни волатильності => можливі точки структурного зсуву
  • Використайте запропоновані точки у лінійній моделі волатильності
    • Варіант тесту Чоу
  • Орієнтир для застосування, напр., ARCH та моделей стохастичної волатильності
vol_mean.pct_change().plot(
  title="$\Delta$ average volatility"
).set_ylabel("% $\Delta$ stdev")
plt.show()

Зображення відсоткової зміни місячної волатильності

Кількісне управління ризиками в Python

Екстремальні значення

  • VaR, CVaR: максимальний збиток, очікуваний короткийfall на певному рівні довіри
  • Візуалізуйте зміни максимального збитку, будуючи VaR?
    • Корисно для великих наборів даних
    • Малі набори: замало інформації
  • Альтернатива: шукайте збитки, що перевищують певний поріг
  • Приклад: $\text{VaR}_{95}$ — це максимальний збиток у 95% випадків
    • Отже, у 5% випадків збитки можуть перевищувати $\text{VaR}_{95}$
  • Бектестування: використовуйте попередні дані ex-post, щоб оцінити, як працює оцінка ризику
    • Широко застосовується в корпоративному управлінні ризиками
Кількісне управління ризиками в Python

Бектестування

  • Припустімо, $\text{VaR}_{95} = 0.03$
  • Збитки, що перевищують 3%, — це екстремальні значення
  • Бектестування: близько 5% (100% - 95%) попередніх збитків мають перевищувати 3%
    • Більше ніж 5%: розподіл із ширшими ("товстішими") хвостами
    • Менше ніж 5%: розподіл із вужчими хвостами
  • CVaR для бектестування: краще враховує хвіст, ніж VaR

Зображення збитків і порогу VaR 95%

Кількісне управління ризиками в Python

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

Кількісне управління ризиками в Python

Preparing Video For Download...