Параметрична оцінка

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

Jamsheed Shorish

Computational Economist

Клас розподілів

  • Розподіл збитків: невідомий напевно
  • Клас можливих розподілів?
    • Нехай клас розподілів $f(x; \theta)$
    • $x$ — збиток (випадкова величина)
    • $\theta$ — вектор невідомих параметрів
  • Приклад: нормальний розподіл
    • Параметри: $\theta = (\mu, \sigma)$, середнє $\mu$ та стандартне відхилення $\sigma$
  • Параметрична оцінка: знайти «найкраще» $\theta^\star$ за даними
  • Розподіл збитків: $f(x,\theta^\star)$
Кількісне управління ризиками в Python

Підгонка розподілу

  • Підігнати розподіл за критерієм мінімізації похибки
    • Приклад: scipy.stats.norm.fit(), підгонка нормального розподілу до даних
      • Результат: оптимальні середнє та стандартне відхилення
  • Переваги:
    • Можна візуалізувати різницю між даними й оцінкою за гістограмою
    • Можна виконати тести узгодженості
Кількісне управління ризиками в Python

Узгодженість

  • Наскільки добре оцінений розподіл відтворює дані?
  • Візуалізація: побудуйте гістограму збитків портфеля

зображення гістограми збитків

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

Узгодженість

  • Наскільки добре оцінений розподіл відтворює дані?
  • Візуалізація: побудуйте гістограму збитків портфеля
  • Нормальний розподіл з norm.fit()

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

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

Узгодженість

  • Наскільки добре оцінений розподіл відтворює дані?
  • Візуалізація: побудуйте гістограму збитків портфеля
  • Приклад:
    • Нормальний розподіл з norm.fit()
    • Розподіл Стьюдента з t.fit()
    • Асиметрична гістограма?

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

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

Тест Андерсона — Дарлінга

  • Статистичний тест узгодженості
    • Нульова гіпотеза: дані мають нормальний розподіл
    • Статистика тесту відхиляє нормальний розподіл, якщо більша за critical_values
  • Імпортуйте scipy.stats.anderson
  • Обчисліть результат тесту для даних loss
from scipy.stats import anderson

anderson(loss)
AndersonResult(statistic=11.048641503898523,
critical_values=array([0.57 , 0.649, 0.779, 0.909, 1.081]),
significance_level=array([15. , 10. ,  5. ,  2.5,  1. ]))
Кількісне управління ризиками в Python

Асиметрія

  • Асиметрія: ступінь несиметричності розподілу даних
    • Нормальний розподіл: симетричний

нормальний розподіл

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

Асиметрія

  • Асиметрія: ступінь несиметричності розподілу даних
    • Нормальний розподіл: симетричний
    • Розподіл Стьюдента: симетричний

нормальний і t-розподіли

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

Асиметрія

  • Асиметрія: ступінь несиметричності розподілу даних
    • Нормальний розподіл: симетричний
    • Розподіл Стьюдента: симетричний
  • Асиметричний нормальний розподіл: несиметричний
    • Містить нормальний як окремий випадок
    • Корисний для даних портфеля, де, напр., збитки частіші за прибутки
    • Доступний у scipy.stats як skewnorm

нормальний, t та асиметричний нормальний розподіли

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

Перевірка асиметрії

  • Перевірте відхилення від симетрії: scipy.stats.skewtest
  • Нульова гіпотеза: немає асиметрії
  • Імпортуйте skewtest з scipy.stats
  • Обчисліть результат тесту для даних loss
    • Статистично значущо ⇒ використайте клас розподілу з асиметрією
from scipy.stats import skewtest

skewtest(loss)
SkewtestResult(statistic=-7.786120875514511,
pvalue=6.90978472959861e-15)
Кількісне управління ризиками в Python

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

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

Preparing Video For Download...