Volatilitet och extremvärden

Kvantitativ riskhantering i Python

Jamsheed Shorish

Computational Economist

Antaganden för Chow-testet

  • Chow-test: identifiera statistisk signifikans vid möjligt strukturbrott
  • Kräver: förspecificerad tidpunkt för strukturbrottet
  • Kräver: linjärt samband (t.ex. faktormodell) $$ \log(\text{Population}_t) = \alpha + \beta * \text{Year}_t + u_t $$

Bild av Kinas befolkningstillväxt med markerad punkt för strukturbrott

Kvantitativ riskhantering i Python

Tecken på strukturbrott

  • Visualisering av trend indikerar inte alltid ett strukturbrott
  • Alternativ: undersök volatilitet i stället för trend
    • Strukturförändringar åtföljs ofta av ökad osäkerhet => volatilitet
    • Möjliggör rikare modeller (t.ex. stokastisk volatilitet)

Bild av månadsvolatilitet med möjliga strukturbrottspunkter

Kvantitativ riskhantering i Python

Volatilitet med rullande fönster

  • Rullande fönster: beräkna volatilitet över tid och detektera förändringar
  • Kom ihåg: 30-dagars rullande fönster

    • Skapa rullande fönster med metoden ".rolling()"
    • Beräkna volatiliteten för fönstret (ta bort datum utan data)
    • Beräkna önskad sammanfattningsstatistik, t.ex. .mean(), .min() osv.

     

rolling = portfolio_returns.rolling(30)

volatility = rolling.std().dropna()
vol_mean = volatility.resample("M").mean()
Kvantitativ riskhantering i Python

Volatilitet med rullande fönster

  • Visualisera beräknad volatilitet (varians eller standardavvikelse)
import matplotlib.pyplot as plt
vol_mean.plot(
  title="Monthly average volatility"
).set_ylabel("Standard deviation")
plt.show()

Bild av genomsnittlig månadsvolatilitet

Kvantitativ riskhantering i Python

Volatilitet med rullande fönster

  • Visualisera beräknad volatilitet (varians eller standardavvikelse)
  • Stora förändringar i volatilitet => möjliga strukturbrottspunkter
  • Använd föreslagna brytpunkter i en linjär volatilitetsmodell
    • Variant av Chow-testet
  • Vägledning för att tillämpa t.ex. ARCH- och stokastiska volatilitetsmodeller
vol_mean.pct_change().plot(
  title="$\Delta$ average volatility"
).set_ylabel("% $\Delta$ stdev")
plt.show()

Bild av procentuell förändring i månadsvolatilitet

Kvantitativ riskhantering i Python

Extremvärden

  • VaR, CVaR: maximal förlust respektive förväntad förlust vid ett visst konfidensnivå
  • Visualisera förändringar i maximal förlust genom att plotta VaR?
    • Användbart för stora datamängder
    • Små datamängder: för lite information
  • Alternativ: hitta förluster som överstiger ett visst tröskelvärde
  • Exempel: $\text{VaR}_{95}$ är den maximala förlusten 95% av tiden
    • Alltså kan förluster förväntas överstiga $\text{VaR}_{95}$ 5% av tiden
  • Backtestning: använd historiska data ex-post för att utvärdera riskmåttet
    • Används i stor utsträckning inom företagsriskhantering
Kvantitativ riskhantering i Python

Backtestning

  • Anta att $\text{VaR}_{95} = 0{,}03$
  • Förluster som överstiger 3% är då extremvärden
  • Backtestning: ungefär 5% (100% - 95%) av tidigare förluster bör överstiga 3%
    • Mer än 5%: fördelning med bredare ("fetare") svansar
    • Mindre än 5%: fördelning med smalare svansar
  • CVaR vid backtestning: fångar svansen bättre än VaR

Bild av förluster och 95%-gränsen för VaR

Kvantitativ riskhantering i Python

Nu kör vi en övning!

Kvantitativ riskhantering i Python

Preparing Video For Download...