Estimarea densității kernel

Managementul Cantitativ al Riscului în Python

Jamsheed Shorish

Computational Economist

Histograma revizuită

  • Distribuții ale factorilor de risc
    • Asumate (ex. normală, T etc.)
    • Estimate (estimare parametrică, simulare Monte Carlo)
    • Ignorate (simulare istorică)
  • Date reale: histogramă
  • Cum reprezentăm histograma printr-o distribuție de probabilitate?
    • Netezirea datelor prin filtrare
    • Estimare neparametrică

histogramă a pierderilor

Managementul Cantitativ al Riscului în Python

Netezirea datelor

  • Filtru: netezirea 'denivelărilor' histogramei

axele histogramei

Managementul Cantitativ al Riscului în Python

Netezirea datelor

  • Filtru: netezirea 'denivelărilor' histogramei
  • Observațiile se acumulează în timp

imagine cu observații care se acumulează

Managementul Cantitativ al Riscului în Python

Netezirea datelor

  • Filtru: netezirea 'denivelărilor' histogramei
  • Observațiile se acumulează în timp

imagine cu observații care se acumulează

Managementul Cantitativ al Riscului în Python

Netezirea datelor

  • Filtru: netezirea 'denivelărilor' histogramei
  • Observațiile se acumulează în timp

imagine cu observații care se acumulează

Managementul Cantitativ al Riscului în Python

Netezirea datelor

  • Filtru: netezirea 'denivelărilor' histogramei
  • Observațiile se acumulează în timp
  • Alegeți o pierdere specifică din portofoliu

pierderi și pierdere selectată cu săgeată

Managementul Cantitativ al Riscului în Python

Netezirea datelor

  • Filtru: netezirea 'denivelărilor' histogramei
  • Observațiile se acumulează în timp
  • Alegeți o pierdere specifică din portofoliu
    • Examinați pierderile din apropiere

fereastră kernel suprapusă peste observații

Managementul Cantitativ al Riscului în Python

Netezirea datelor

  • Filtru: netezirea 'denivelărilor' histogramei
  • Observațiile se acumulează în timp
  • Alegeți o pierdere specifică din portofoliu
    • Examinați pierderile din apropiere
    • Calculați „media ponderată" a pierderilor
  • Kernel: alegerea filtrului; determină „fereastra"

medie ponderată din kernel afișată pe imagine

Managementul Cantitativ al Riscului în Python

Netezirea datelor

  • Filtru: netezirea 'denivelărilor' histogramei
  • Observațiile se acumulează în timp
  • Alegeți o pierdere specifică din portofoliu
    • Examinați pierderile din apropiere
    • Calculați „media ponderată" a pierderilor
  • Kernel: alegerea filtrului; determină „fereastra"
    • Mutați fereastra la o altă pierdere

imagine cu a doua locație a kernelului

Managementul Cantitativ al Riscului în Python

Netezirea datelor

  • Filtru: netezirea 'denivelărilor' histogramei
  • Observațiile se acumulează în timp
  • Alegeți o pierdere specifică din portofoliu
    • Examinați pierderile din apropiere
    • Calculați „media ponderată" a pierderilor
  • Kernel: alegerea filtrului; determină „fereastra"
    • Mutați fereastra la o altă pierdere
  • Estimare prin densitate kernel: densitate de probabilitate

imagine cu estimarea densității kernel

Managementul Cantitativ al Riscului în Python

Kernelul Gaussian

  • Kernel continuu
  • Ponderează toate observațiile după distanța față de centru
  • În general: există mai multe tipuri de kerneluri
    • Utilizat în analiza seriilor de timp
    • Utilizat în procesarea semnalelor

imagine cu kernelul Gaussian

Managementul Cantitativ al Riscului în Python

KDE în 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))
  • Vizualizare: funcția de densitate de probabilitate din estimarea KDE

grafic al estimării KDE gaussiene

Managementul Cantitativ al Riscului în Python

Calculul VaR cu KDE

  • VaR: utilizați metoda gaussian_kde .resample()
  • Găsiți cuantila eșantionului rezultat
  • CVaR: valoarea așteptată ca anterior, dar
    • gaussian_kde nu are metoda .expect() => calculați integrala manual
    • metodă specială .expect() scrisă pentru exercițiu
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
Managementul Cantitativ al Riscului în Python

Să exersăm!

Managementul Cantitativ al Riscului în Python

Preparing Video For Download...