Вимірювання ризику

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

Jamsheed Shorish

CEO, Shorish Research

Розподіл збитків

  • Приклад Forex:
    • Вартість портфеля в доларах США — USD 100
    • Ризиковий фактор = курс EUR / USD
    • Вартість портфеля в EUR, якщо 1 EUR = 1 USD: USD 100 × EUR 1 / USD 1 = EUR 100.
    • Вартість портфеля в EUR, якщо r EUR = 1 USD: USD 100 × EUR r / USD 1 = EUR 100 × r
    • Збиток = EUR 100 − EUR 100 × r = EUR 100 × (1 − r)
  • Розподіл збитків: випадкові реалізації rрозподіл майбутніх збитків портфеля

Гістограма збитків на Forex

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

Максимальний збиток

  • Який максимальний збиток портфеля?
  • Збитки не можна обмежити з 100% певністю
  • Рівень довіри: замінюємо 100% певність на ймовірну верхню межу
  • Можна питати: «Який максимальний збиток траплятиметься у 95% випадків?»
    • Тут рівень довіри — 95%.
Кількісне управління ризиками в Python

Value at Risk (VaR)

  • VaR: статистика, що вимірює максимальний збиток портфеля за певного рівня довіри
  • Типові рівні довіри: 95%, 99% та 99,5% (зазвичай як десяткові дроби)
  • Приклад Forex: якщо у 95% часу курс EUR/USD не менший за 0,40, тоді:
    • вартість портфеля не менша за USD 100 × 0,40 EUR/USD = EUR 40,
    • збиток портфеля не більший за EUR 40 − EUR 100 = EUR 60,
    • отже, 95% VaR дорівнює EUR 60.

Часовий ряд курсу EUR/USD з порогом 0.40

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

Conditional Value at Risk (CVaR)

  • CVaR: очікуваний збиток за умови, що мінімальний збиток дорівнює VaR
  • Дорівнює математичному сподіванню хвоста розподілу збитків:
    • $$\textnormal{CVaR}(\alpha) := \frac{1}{1-\alpha}\mathbb{E} \int_{\textnormal{VaR}(\alpha)}^{\bar{x}} x f(x) dx,$$
    • $f(\cdot)$ = щільність розподілу збитків
    • $\bar{x}$ = верхня межа збитку (може бути нескінченність)
    • $\textnormal{VaR}(\alpha)$ = VaR за рівня довіри $\alpha$.
  • Приклад Forex:
    • 95% CVaR = очікуваний збиток для 5% випадків, коли вартість портфеля менша за EUR 40

Графік розподілу збитків із позначенням VaR і хвоста для CVaR

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

Виведення VaR

  1. Задайте рівень довіри, напр. 95% (0.95)
  2. Створіть Series зі спостереженнями loss
  3. Обчисліть loss.quantile() на заданому рівні довіри
  4. VaR = значення .quantile() на потрібному рівні довіри

  5. Для розподілу збитків у scipy.stats можна також використати percent point function .ppf()

loss = pd.Series(observations)

VaR_95 = loss.quantile(0.95) print("VaR_95 = ", VaR_95)
Var_95 = 1.6192834157254088
Кількісне управління ризиками в Python

Виведення CVaR

  1. Задайте рівень довіри, напр. 95% (0.95)
  2. Створіть або використайте вибірку з розподілу збитків
  3. Обчисліть VaR на заданому рівні довіри, напр. 0.95.
  4. Обчисліть CVaR як очікуваний збиток (для нормального розподілу: це робить scipy.stats.norm.expect()).
losses = pd.Series(scipy.stats.norm.rvs(size=1000))

VaR_95 = scipy.stats.norm.ppf(0.95)
CVaR_95 = (1/(1 - 0.95))*scipy.stats.norm.expect(lambda x: x, lb = VaR_95)
print("CVaR_95 = ", CVaR_95)
CVaR_95 = 2.153595332530393
Кількісне управління ризиками в Python

Візуалізація VaR

  • Гістограма розподілу збитків для 1000 вибірок з N(1,3)

Гістограма нормально розподілених збитків

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

Візуалізація VaR

  • Гістограма розподілу збитків для 1000 вибірок з N(1,3)
    • VaR$_{95}$ = 5,72, тобто VaR за рівня довіри 95%

Гістограма збитків із 95% VaR

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

Візуалізація VaR

  • Гістограма розподілу збитків для 1000 вибірок з N(1,3)
    • VaR$_{95}$ = 5,72, тобто VaR за рівня довіри 95%
    • VaR$_{99}$ = 7,81, тобто VaR за рівня довіри 99%

Гістограма збитків із 95% та 99% VaR

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

Візуалізація VaR

  • Гістограма розподілу збитків для 1000 вибірок з N(1,3)
    • VaR$_{95}$ = 5,72, тобто VaR за рівня довіри 95%
    • VaR$_{99}$ = 7,81, тобто VaR за рівня довіри 99%
    • VaR$_{99.5}$ = 8,78, тобто VaR за рівня довіри 99,5%
  • Показник VaR зростає зі збільшенням рівня довіри

Гістограма збитків із 95%, 99% та 99,5% VaR

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

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

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

Preparing Video For Download...