Stima della densità con kernel

Gestione quantitativa del rischio in Python

Jamsheed Shorish

Computational Economist

L'istogramma, rivisto

  • Distribuzioni dei fattori di rischio
    • Assunte (es. Normale, T, ecc.)
    • Stimate (stima parametrica, simulazione Monte Carlo)
    • Ignorate (simulazione storica)
  • Dati reali: istogramma
  • Come rappresentare un istogramma con una distribuzione di probabilità?
    • Liscia i dati con il filtro
    • Stima non parametrica

istogramma delle perdite

Gestione quantitativa del rischio in Python

Levigare i dati

  • Filtro: attenua i «bozzi» dell'istogramma

assi dell'istogramma

Gestione quantitativa del rischio in Python

Levigare i dati

  • Filtro: attenua i «bozzi» dell'istogramma
  • Le osservazioni si accumulano nel tempo

immagine di osservazioni che si accumulano

Gestione quantitativa del rischio in Python

Levigare i dati

  • Filtro: attenua i «bozzi» dell'istogramma
  • Le osservazioni si accumulano nel tempo

immagine di osservazioni che si accumulano

Gestione quantitativa del rischio in Python

Levigare i dati

  • Filtro: attenua i «bozzi» dell'istogramma
  • Le osservazioni si accumulano nel tempo

immagine di osservazioni che si accumulano

Gestione quantitativa del rischio in Python

Levigare i dati

  • Filtro: attenua i «bozzi» dell'istogramma
  • Le osservazioni si accumulano nel tempo
  • Scegli una specifica perdita di portafoglio

perdite e perdita specifica indicata da una freccia

Gestione quantitativa del rischio in Python

Levigare i dati

  • Filtro: attenua i «bozzi» dell'istogramma
  • Le osservazioni si accumulano nel tempo
  • Scegli una specifica perdita di portafoglio
    • Esamina le perdite vicine

finestra del kernel sovrapposta alle osservazioni

Gestione quantitativa del rischio in Python

Levigare i dati

  • Filtro: attenua i «bozzi» dell'istogramma
  • Le osservazioni si accumulano nel tempo
  • Scegli una specifica perdita di portafoglio
    • Esamina le perdite vicine
    • Calcola una «media pesata» delle perdite
  • Kernel: scelta del filtro; determina la «finestra»

media pesata dal kernel mostrata nell'immagine

Gestione quantitativa del rischio in Python

Levigare i dati

  • Filtro: attenua i «bozzi» dell'istogramma
  • Le osservazioni si accumulano nel tempo
  • Scegli una specifica perdita di portafoglio
    • Esamina le perdite vicine
    • Calcola una «media pesata» delle perdite
  • Kernel: scelta del filtro; determina la «finestra»
    • Sposta la finestra su un'altra perdita

immagine di una seconda posizione del kernel

Gestione quantitativa del rischio in Python

Levigare i dati

  • Filtro: attenua i «bozzi» dell'istogramma
  • Le osservazioni si accumulano nel tempo
  • Scegli una specifica perdita di portafoglio
    • Esamina le perdite vicine
    • Calcola una «media pesata» delle perdite
  • Kernel: scelta del filtro; determina la «finestra»
    • Sposta la finestra su un'altra perdita
  • Stima della densità con kernel: densità di probabilità

immagine della stima della densità con kernel

Gestione quantitativa del rischio in Python

Il kernel gaussiano

  • Kernel continuo
  • Pesa tutte le osservazioni in base alla distanza dal centro
  • In generale: esistono molti kernel diversi
    • Usati nell'analisi delle serie temporali
    • Usati nell'elaborazione dei segnali

immagine di kernel gaussiano

Gestione quantitativa del rischio 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))
  • Visualizzazione: funzione di densità di probabilità dal fit KDE

grafico della stima KDE gaussiana

Gestione quantitativa del rischio in Python

Trovare la VaR con KDE

  • VaR: usa il metodo .resample() di gaussian_kde
  • Trova il quantile del campione risultante
  • CVaR: valore atteso come visto prima, ma
    • gaussian_kde non ha .expect() => integra manualmente
    • metodo .expect() speciale scritto per l'esercizio
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
Gestione quantitativa del rischio in Python

Esercitiamoci!

Gestione quantitativa del rischio in Python

Preparing Video For Download...