Kernel density estimation

Kvantitativ riskhantering i Python

Jamsheed Shorish

Computational Economist

Histogrammet återbesökt

  • Riskfaktorsfördelningar
    • Antagna (t.ex. normal, t, m.fl.)
    • Anpassade (parametrisk skattning, Monte Carlo-simulering)
    • Ignorerade (historisk simulering)
  • Faktiska data: histogram
  • Hur representerar man ett histogram med en sannolikhetsfördelning?
    • Jämna ut data med filtrering
    • Icke-parametrisk skattning

histogram över förluster

Kvantitativ riskhantering i Python

Datautjämning

  • Filter: jämnar ut ojämnheter i histogrammet

histogramaxlar

Kvantitativ riskhantering i Python

Datautjämning

  • Filter: jämnar ut ojämnheter i histogrammet
  • Observationer samlas på hög över tid

bild av observationer som samlas på hög

Kvantitativ riskhantering i Python

Datautjämning

  • Filter: jämnar ut ojämnheter i histogrammet
  • Observationer samlas på hög över tid

bild av observationer som samlas på hög

Kvantitativ riskhantering i Python

Datautjämning

  • Filter: jämnar ut ojämnheter i histogrammet
  • Observationer samlas på hög över tid

bild av observationer som samlas på hög

Kvantitativ riskhantering i Python

Datautjämning

  • Filter: jämnar ut ojämnheter i histogrammet
  • Observationer samlas på hög över tid
  • Välj en specifik portföljförlust

förluster och vald förlust markerad med pil

Kvantitativ riskhantering i Python

Datautjämning

  • Filter: jämnar ut ojämnheter i histogrammet
  • Observationer samlas på hög över tid
  • Välj en specifik portföljförlust
    • Undersök närliggande förluster

kernelfönster lagt över observationer

Kvantitativ riskhantering i Python

Datautjämning

  • Filter: jämnar ut ojämnheter i histogrammet
  • Observationer samlas på hög över tid
  • Välj en specifik portföljförlust
    • Undersök närliggande förluster
    • Bilda ett "viktat medelvärde" av förlusterna
  • Kernel: filterval; bestämmer "fönstret"

viktat medelvärde från kernel visas i bild

Kvantitativ riskhantering i Python

Datautjämning

  • Filter: jämnar ut ojämnheter i histogrammet
  • Observationer samlas på hög över tid
  • Välj en specifik portföljförlust
    • Undersök närliggande förluster
    • Bilda ett "viktat medelvärde" av förlusterna
  • Kernel: filterval; bestämmer "fönstret"
    • Flytta fönstret till en annan förlust

bild av andra kernelposition

Kvantitativ riskhantering i Python

Datautjämning

  • Filter: jämnar ut ojämnheter i histogrammet
  • Observationer samlas på hög över tid
  • Välj en specifik portföljförlust
    • Undersök närliggande förluster
    • Bilda ett "viktat medelvärde" av förlusterna
  • Kernel: filterval; bestämmer "fönstret"
    • Flytta fönstret till en annan förlust
  • Kernel density estimate: sannolikhetstäthet

bild av kernel density estimate

Kvantitativ riskhantering i Python

Den gaussiska kerneln

  • Kontinuerlig kernel
  • Viktar alla observationer efter avstånd från centrum
  • Generellt: många olika kernels finns tillgängliga
    • Används i tidsserieanalys
    • Används i signalbehandling

bild av gaussisk kernel

Kvantitativ riskhantering i Python

KDE i 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))
  • Visualisering: sannolikhetstäthetsfunktion från KDE-anpassning

plot av gaussisk KDE-skattning

Kvantitativ riskhantering i Python

Beräkna VaR med KDE

  • VaR: använd metoden .resample() i gaussian_kde
  • Beräkna kvantilen för det erhållna urvalet
  • CVaR: förväntat värde som tidigare, men
    • gaussian_kde saknar metoden .expect() => beräkna integralen manuellt
    • en särskild .expect()-metod har skrivits för övningen
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
Kvantitativ riskhantering i Python

Nu kör vi en övning!

Kvantitativ riskhantering i Python

Preparing Video For Download...