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

Количественное управление рисками на 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

Асимметрия

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

нормальное распределение и распределение Стьюдента

Количественное управление рисками на Python

Асимметрия

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

нормальное, распределение Стьюдента и скошенное нормальное распределение

Количественное управление рисками на 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...