Estymacja parametryczna

Ilościowe zarządzanie ryzykiem w Pythonie

Jamsheed Shorish

Computational Economist

Klasa rozkładów

  • Rozkład strat: nieznany z pewnością
  • Klasa możliwych rozkładów?
    • Załóżmy klasę rozkładów $f(x; \theta)$
    • $x$ to strata (zmienna losowa)
    • $\theta$ to wektor nieznanych parametrów
  • Przykład: rozkład normalny
    • Parametry: $\theta = (\mu, \sigma)$, średnia $\mu$ i odchylenie standardowe $\sigma$
  • Estymacja parametryczna: znalezienie optymalnego $\theta^\star$ na podstawie danych
  • Rozkład strat: $f(x,\theta^\star)$
Ilościowe zarządzanie ryzykiem w Pythonie

Dopasowanie rozkładu

  • Dopasowanie rozkładu według kryterium minimalizacji błędu
    • Przykład: scipy.stats.norm.fit(), dopasowanie rozkładu normalnego do danych
      • Wynik: optymalnie dopasowana średnia i odchylenie standardowe
  • Zalety:
    • Możliwość wizualizacji różnic między danymi a estymatą za pomocą histogramu
    • Możliwość przeprowadzenia testów dobroci dopasowania
Ilościowe zarządzanie ryzykiem w Pythonie

Dobroć dopasowania

  • Jak dobrze dopasowany rozkład opisuje dane?
  • Wizualizacja: histogram strat portfela

histogram strat

Ilościowe zarządzanie ryzykiem w Pythonie

Dobroć dopasowania

  • Jak dobrze dopasowany rozkład opisuje dane?
  • Wizualizacja: histogram strat portfela
  • Rozkład normalny z norm.fit()

histogram strat z rozkładem normalnym

Ilościowe zarządzanie ryzykiem w Pythonie

Dobroć dopasowania

  • Jak dobrze dopasowany rozkład opisuje dane?
  • Wizualizacja: histogram strat portfela
  • Przykład:
    • Rozkład normalny z norm.fit()
    • Rozkład t-Studenta z t.fit()
    • Asymetryczny histogram?

histogram strat z rozkładem normalnym

Ilościowe zarządzanie ryzykiem w Pythonie

Test Andersona-Darlinga

  • Statystyczny test dobroci dopasowania
    • Hipoteza zerowa: dane mają rozkład normalny
    • Statystyka testowa odrzuca rozkład normalny, jeśli przekracza critical_values
  • Importuj scipy.stats.anderson
  • Oblicz wynik testu na danych 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. ]))
Ilościowe zarządzanie ryzykiem w Pythonie

Skośność

  • Skośność: stopień asymetrii rozkładu danych
    • Rozkład normalny: symetryczny

rozkład normalny

Ilościowe zarządzanie ryzykiem w Pythonie

Skośność

  • Skośność: stopień asymetrii rozkładu danych
    • Rozkład normalny: symetryczny
    • Rozkład t-Studenta: symetryczny

rozkład normalny i t-Studenta

Ilościowe zarządzanie ryzykiem w Pythonie

Skośność

  • Skośność: stopień asymetrii rozkładu danych
    • Rozkład normalny: symetryczny
    • Rozkład t-Studenta: symetryczny
  • Skośny rozkład normalny: asymetryczny
    • Zawiera rozkład normalny jako przypadek szczególny
    • Przydatny dla danych portfelowych, np. gdy straty są częstsze niż zyski
    • Dostępny w scipy.stats jako skewnorm

rozkład normalny, t-Studenta i skośny normalny

Ilościowe zarządzanie ryzykiem w Pythonie

Test skośności

  • Test odchylenia danych od rozkładu symetrycznego: scipy.stats.skewtest
  • Hipoteza zerowa: brak skośności
  • Importuj skewtest z scipy.stats
  • Oblicz wynik testu na danych loss
    • Wynik istotny statystycznie => użyj klasy rozkładów ze skośnością
from scipy.stats import skewtest

skewtest(loss)
SkewtestResult(statistic=-7.786120875514511,
pvalue=6.90978472959861e-15)
Ilościowe zarządzanie ryzykiem w Pythonie

Czas na ćwiczenia!

Ilościowe zarządzanie ryzykiem w Pythonie

Preparing Video For Download...