Estymacja gęstości jądra

Ilościowe zarządzanie ryzykiem w Pythonie

Jamsheed Shorish

Computational Economist

Histogram — powrót do tematu

  • Rozkłady czynników ryzyka
    • Zakładane (np. normalny, t-Studenta itp.)
    • Dopasowane (estymacja parametryczna, symulacja Monte Carlo)
    • Pomijane (symulacja historyczna)
  • Rzeczywiste dane: histogram
  • Jak odwzorować histogram rozkładem prawdopodobieństwa?
    • Wygładź dane za pomocą filtrowania
    • Estymacja nieparametryczna

histogram strat

Ilościowe zarządzanie ryzykiem w Pythonie

Wygładzanie danych

  • Filtr: wygładza „nierówności" histogramu

osie histogramu

Ilościowe zarządzanie ryzykiem w Pythonie

Wygładzanie danych

  • Filtr: wygładza „nierówności" histogramu
  • Obserwacje narastają w czasie

obraz narastających obserwacji

Ilościowe zarządzanie ryzykiem w Pythonie

Wygładzanie danych

  • Filtr: wygładza „nierówności" histogramu
  • Obserwacje narastają w czasie

obraz narastających obserwacji

Ilościowe zarządzanie ryzykiem w Pythonie

Wygładzanie danych

  • Filtr: wygładza „nierówności" histogramu
  • Obserwacje narastają w czasie

obraz narastających obserwacji

Ilościowe zarządzanie ryzykiem w Pythonie

Wygładzanie danych

  • Filtr: wygładza „nierówności" histogramu
  • Obserwacje narastają w czasie
  • Wybór konkretnej straty portfela

straty i wybrana strata oznaczona strzałką

Ilościowe zarządzanie ryzykiem w Pythonie

Wygładzanie danych

  • Filtr: wygładza „nierówności" histogramu
  • Obserwacje narastają w czasie
  • Wybór konkretnej straty portfela
    • Analiza pobliskich strat

okno jądra nałożone na obserwacje

Ilościowe zarządzanie ryzykiem w Pythonie

Wygładzanie danych

  • Filtr: wygładza „nierówności" histogramu
  • Obserwacje narastają w czasie
  • Wybór konkretnej straty portfela
    • Analiza pobliskich strat
    • Tworzenie „średniej ważonej" strat
  • Jądro: wybór filtra; wyznacza „okno"

średnia ważona z jądra wyświetlona na obrazie

Ilościowe zarządzanie ryzykiem w Pythonie

Wygładzanie danych

  • Filtr: wygładza „nierówności" histogramu
  • Obserwacje narastają w czasie
  • Wybór konkretnej straty portfela
    • Analiza pobliskich strat
    • Tworzenie „średniej ważonej" strat
  • Jądro: wybór filtra; wyznacza „okno"
    • Przesunięcie okna do innej straty

obraz drugiej lokalizacji jądra

Ilościowe zarządzanie ryzykiem w Pythonie

Wygładzanie danych

  • Filtr: wygładza „nierówności" histogramu
  • Obserwacje narastają w czasie
  • Wybór konkretnej straty portfela
    • Analiza pobliskich strat
    • Tworzenie „średniej ważonej" strat
  • Jądro: wybór filtra; wyznacza „okno"
    • Przesunięcie okna do innej straty
  • Estymata gęstości jądra: gęstość prawdopodobieństwa

obraz estymaty gęstości jądra

Ilościowe zarządzanie ryzykiem w Pythonie

Jądro gaussowskie

  • Jądro ciągłe
  • Waży wszystkie obserwacje według odległości od centrum
  • Ogólnie: dostępnych jest wiele różnych jąder
    • Stosowane w analizie szeregów czasowych
    • Stosowane w przetwarzaniu sygnałów

obraz jądra gaussowskiego

Ilościowe zarządzanie ryzykiem w Pythonie

KDE w Pythonie

from scipy.stats import gaussian_kde

kde = guassian_kde(losses)
loss_range = np.linspace(np.min(losses), np.max(losses), 1000)
plt.plot(loss_range, kde.pdf(loss_range))
  • Wizualizacja: funkcja gęstości prawdopodobieństwa z dopasowania KDE

wykres estymaty gaussowskiej KDE

Ilościowe zarządzanie ryzykiem w Pythonie

Wyznaczanie VaR za pomocą KDE

  • VaR: metoda .resample() z gaussian_kde
  • Wyznaczenie kwantyla z otrzymanej próby
  • CVaR: wartość oczekiwana jak poprzednio, ale
    • gaussian_kde nie posiada metody .expect() => ręczne obliczenie całki
    • specjalna metoda .expect() napisana na potrzeby ćwiczenia
sample = kde.resample(size = 1000)

VaR_99 = np.quantile(sample, 0.99)
print("VaR_99 from KDE: ", VaR_99)
VaR_99 from KDE: 0.08796423698448601
Ilościowe zarządzanie ryzykiem w Pythonie

Czas na ćwiczenia!

Ilościowe zarządzanie ryzykiem w Pythonie

Preparing Video For Download...