Parametrisk skattning

Kvantitativ riskhantering i Python

Jamsheed Shorish

Computational Economist

En klass av fördelningar

  • Förlustfördelning: inte känd med säkerhet
  • Klass av möjliga fördelningar?
    • Anta klassen av fördelningar $f(x; \theta)$
    • $x$ är förlusten (stokastisk variabel)
    • $\theta$ är en vektor av okända parametrar
  • Exempel: normalfördelning
    • Parametrar: $\theta = (\mu, \sigma)$, medelvärde $\mu$ och standardavvikelse $\sigma$
  • Parametrisk skattning: hitta bästa $\theta^\star$ givet data
  • Förlustfördelning: $f(x,\theta^\star)$
Kvantitativ riskhantering i Python

Anpassa en fördelning

  • Anpassa fördelning enligt felminimeringskriterier
    • Exempel: scipy.stats.norm.fit(), anpassar normalfördelning till data
      • Resultat: optimalt anpassat medelvärde och standardavvikelse
  • Fördelar:
    • Kan visualisera skillnaden mellan data och skattning via histogram
    • Kan tillhandahålla anpassningstester
Kvantitativ riskhantering i Python

Anpassningens kvalitet

  • Hur väl passar en skattad fördelning till data?
  • Visualisera: plotta histogram över portföljförluster

histogrambild över förluster

Kvantitativ riskhantering i Python

Anpassningens kvalitet

  • Hur väl passar en skattad fördelning till data?
  • Visualisera: plotta histogram över portföljförluster
  • Normalfördelning med norm.fit()

histogrambild över förluster med normalfördelning

Kvantitativ riskhantering i Python

Anpassningens kvalitet

  • Hur väl passar en skattad fördelning till data?
  • Visualisera: plotta histogram över portföljförluster
  • Exempel:
    • Normalfördelning med norm.fit()
    • Students t-fördelning med t.fit()
    • Asymmetriskt histogram?

histogrambild över förluster med normalfördelning

Kvantitativ riskhantering i Python

Anderson-Darling-testet

  • Statistiskt test av anpassningens kvalitet
    • Testa nollhypotes: data är normalfördelade
    • Teststatistikan förkastar normalfördelningen om den överstiger critical_values
  • Importera scipy.stats.anderson
  • Beräkna testresultatet med loss-data
from scipy.stats import anderson

anderson(loss)
AndersonResult(statistic=11.048641503898523,
critical_values=array([0.57 , 0.649, 0.779, 0.909, 1.081]),
significance_level=array([15. , 10. ,  5. ,  2.5,  1. ]))
Kvantitativ riskhantering i Python

Skevhet

  • Skevhet: i vilken grad data är asymmetriskt fördelat
    • Normalfördelning: symmetrisk

normalfördelning

Kvantitativ riskhantering i Python

Skevhet

  • Skevhet: i vilken grad data är asymmetriskt fördelat
    • Normalfördelning: symmetrisk
    • Students t-fördelning: symmetrisk

normal- och t-fördelningar

Kvantitativ riskhantering i Python

Skevhet

  • Skevhet: i vilken grad data är asymmetriskt fördelat
    • Normalfördelning: symmetrisk
    • Students t-fördelning: symmetrisk
  • Skevad normalfördelning: asymmetrisk
    • Innehåller normalfördelningen som specialfall
    • Användbar för portföljdata, där t.ex. förluster är vanligare än vinster
    • Tillgänglig i scipy.stats som skewnorm

normal-, t- och skevad normalfördelning

Kvantitativ riskhantering i Python

Testa för skevhet

  • Testa hur långt data avviker från en symmetrisk fördelning: scipy.stats.skewtest
  • Nollhypotes: ingen skevhet
  • Importera skewtest från scipy.stats
  • Beräkna testresultatet på loss-data
    • Statistiskt signifikant => använd en fördelningsklass med skevhet
from scipy.stats import skewtest

skewtest(loss)
SkewtestResult(statistic=-7.786120875514511,
pvalue=6.90978472959861e-15)
Kvantitativ riskhantering i Python

Nu kör vi en övning!

Kvantitativ riskhantering i Python

Preparing Video For Download...