Kernel-dichtheidsschatting

Kwantitatief risicobeheer in Python

Jamsheed Shorish

Computational Economist

Het histogram herzien

  • Risicofactorverdelingen
    • verondersteld (bv. Normaal, t, enz.)
    • gefit (parametrische schatting, Monte Carlo-simulatie)
    • genegeerd (historische simulatie)
  • Ruwe data: histogram
  • Hoe geef je een histogram weer als kansverdeling?
    • Data gladmaken met filtering
    • Niet-parametrische schatting

histogram van verliezen

Kwantitatief risicobeheer in Python

Data smoothen

  • Filter: maak histogramhobbel(s) glad

histogram-assen

Kwantitatief risicobeheer in Python

Data smoothen

  • Filter: maak histogramhobbel(s) glad
  • Observaties stapelen zich in de tijd op

afbeelding van oplopende observaties

Kwantitatief risicobeheer in Python

Data smoothen

  • Filter: maak histogramhobbel(s) glad
  • Observaties stapelen zich in de tijd op

afbeelding van oplopende observaties

Kwantitatief risicobeheer in Python

Data smoothen

  • Filter: maak histogramhobbel(s) glad
  • Observaties stapelen zich in de tijd op

afbeelding van oplopende observaties

Kwantitatief risicobeheer in Python

Data smoothen

  • Filter: maak histogramhobbel(s) glad
  • Observaties stapelen zich in de tijd op
  • Kies een specifieke portefeuilleverlies

verliezen en specifiek verlies met pijl geselecteerd

Kwantitatief risicobeheer in Python

Data smoothen

  • Filter: maak histogramhobbel(s) glad
  • Observaties stapelen zich in de tijd op
  • Kies een specifieke portefeuilleverlies
    • Bekijk nabije verliezen

kernel-venster over observaties gelegd

Kwantitatief risicobeheer in Python

Data smoothen

  • Filter: maak histogramhobbel(s) glad
  • Observaties stapelen zich in de tijd op
  • Kies een specifieke portefeuilleverlies
    • Bekijk nabije verliezen
    • Maak een gewogen gemiddelde van verliezen
  • Kernel: keuze van filter; bepaalt het venster

gewogen gemiddelde uit kernel weergegeven

Kwantitatief risicobeheer in Python

Data smoothen

  • Filter: maak histogramhobbel(s) glad
  • Observaties stapelen zich in de tijd op
  • Kies een specifieke portefeuilleverlies
    • Bekijk nabije verliezen
    • Maak een gewogen gemiddelde van verliezen
  • Kernel: keuze van filter; bepaalt het venster
    • Verplaats venster naar een ander verlies

afbeelding van tweede kernel-positie

Kwantitatief risicobeheer in Python

Data smoothen

  • Filter: maak histogramhobbel(s) glad
  • Observaties stapelen zich in de tijd op
  • Kies een specifieke portefeuilleverlies
    • Bekijk nabije verliezen
    • Maak een gewogen gemiddelde van verliezen
  • Kernel: keuze van filter; bepaalt het venster
    • Verplaats venster naar een ander verlies
  • Kernel-dichtheidsschatting: kansdichtheid

afbeelding van kernel-dichtheidsschatting

Kwantitatief risicobeheer in Python

De Gauss-kernel

  • Continue kernel
  • Weegt alle observaties naar afstand tot het middelpunt
  • Algemeen: er zijn veel kernels
    • Gebruikt in tijdreeksanalyse
    • Gebruikt in signaalverwerking

afbeelding van Gauss-kernel

Kwantitatief risicobeheer in Python

KDE in Python

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))
  • Visualisatie: kansdichtheidsfunctie uit KDE-fit

grafiek van Gauss-KDE-schatting

Kwantitatief risicobeheer in Python

VaR vinden met KDE

  • VaR: gebruik gaussian_kde-methode .resample()
  • Zoek het kwantiel van de resulterende steekproef
  • CVaR: verwachtingswaarde zoals eerder, maar
    • gaussian_kde heeft geen .expect()-methode => integraal handmatig berekenen
    • speciale .expect()-methode geschreven voor oefening
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
Kwantitatief risicobeheer in Python

Laten we oefenen!

Kwantitatief risicobeheer in Python

Preparing Video For Download...