Mäta risk

Kvantitativ riskhantering i Python

Jamsheed Shorish

CEO, Shorish Research

Förlustfördelningen

  • Valutaexempel:
    • Portföljvärde i US-dollar: USD 100
    • Riskfaktor = EUR / USD växelkurs
    • Portföljvärde i euro om 1 EUR = 1 USD: USD 100 x EUR 1 / USD 1 = EUR 100.
    • Portföljvärde i euro om r EUR = 1 USD: = USD 100 x EUR r / 1 USD = EUR 100 x r
    • Förlust = EUR 100 - EUR 100 x r = EUR 100 x (1 - r)
  • Förlustfördelning: Slumpmässiga utfall av r => fördelning av portföljförluster i framtiden

Histogram över valutaförluster

Kvantitativ riskhantering i Python

Maximal förlust

  • Vad är den maximala förlusten för en portfölj?
  • Förluster kan inte begränsas med 100% säkerhet
  • Konfidensnivå: ersätt 100% säkerhet med sannolikhet för en övre gräns
  • Möjliggör frågor som "Vilken är den maximala förlusten som inträffar 95% av fallen?"
    • Här är konfidensnivån 95%.
Kvantitativ riskhantering i Python

Value at Risk (VaR)

  • VaR: statistiskt mått på maximal portföljförlust vid en given konfidensnivå
  • Typiska konfidensnivåer: 95%, 99% och 99,5% (anges vanligen som decimaltal)
  • Valutaexempel: Om EUR/USD-kursen minst är 0,40 i 95% av fallen, gäller:
    • portföljvärdet är minst USD 100 x 0,40 EUR/USD = EUR 40,
    • portföljförlusten är högst EUR 40 - EUR 100 = EUR 60,
    • alltså är 95% VaR EUR 60.

Tidsserie för EUR/USD-växelkurs med gränsvärdet 0,40

Kvantitativ riskhantering i Python

Conditional Value at Risk (CVaR)

  • CVaR: mäter förväntad förlust givet en minimiförlust lika med VaR
  • Motsvarar förväntat värde av svansen i förlustfördelningen:
    • $$\textnormal{CVaR}(\alpha) := \frac{1}{1-\alpha}\mathbb{E} \int_{\textnormal{VaR}(\alpha)}^{\bar{x}} x f(x) dx,$$
    • $f(\cdot)$ = förlustfördelningens täthetsfunktion (pdf)
    • $\bar{x}$ = övre gräns för förlusten (kan vara oändligheten)
    • $\textnormal{VaR}(\alpha)$ = VaR vid konfidensnivån $\alpha$.
  • Valutaexempel:
    • 95% CVaR = förväntad förlust för de 5% av fallen då portföljvärdet är mindre än EUR 40

Graf över förlustfördelningen med VaR och CVaR-svansberoende

Kvantitativ riskhantering i Python

Beräkna VaR

  1. Ange konfidensnivå, t.ex. 95% (0,95)
  2. Skapa en serie loss-observationer
  3. Beräkna loss.quantile() vid angiven konfidensnivå
  4. VaR = beräknad .quantile() vid önskad konfidensnivå

  5. scipy.stats förlustfördelning: percentpunktsfunktionen .ppf() kan också användas

loss = pd.Series(observations)

VaR_95 = loss.quantile(0.95) print("VaR_95 = ", VaR_95)
Var_95 = 1.6192834157254088
Kvantitativ riskhantering i Python

Beräkna CVaR

  1. Ange konfidensnivå, t.ex. 95% (0,95)
  2. Skapa eller använd ett urval från förlustfördelningen
  3. Beräkna VaR vid angiven konfidensnivå, t.ex. 0,95.
  4. Beräkna CVaR som förväntad förlust (normalfördelning: scipy.stats.norm.expect() gör detta).
losses = pd.Series(scipy.stats.norm.rvs(size=1000))

VaR_95 = scipy.stats.norm.ppf(0.95)
CVaR_95 = (1/(1 - 0.95))*scipy.stats.norm.expect(lambda x: x, lb = VaR_95)
print("CVaR_95 = ", CVaR_95)
CVaR_95 = 2.153595332530393
Kvantitativ riskhantering i Python

Visualisera VaR

  • Histogram över förlustfördelningen för 1 000 dragningar från N(1,3)

Histogram över normalfördelade förluster

Kvantitativ riskhantering i Python

Visualisera VaR

  • Histogram över förlustfördelningen för 1 000 dragningar från N(1,3)
    • VaR$_{95}$ = 5,72, dvs. VaR vid 95% konfidens

Histogram över förluster med 95% VaR

Kvantitativ riskhantering i Python

Visualisera VaR

  • Histogram över förlustfördelningen för 1 000 dragningar från N(1,3)
    • VaR$_{95}$ = 5,72, dvs. VaR vid 95% konfidens
    • VaR$_{99}$ = 7,81, dvs. VaR vid 99% konfidens

Histogram över förluster med 95%- och 99%-VaR

Kvantitativ riskhantering i Python

Visualisera VaR

  • Histogram över förlustfördelningen för 1 000 dragningar från N(1,3)
    • VaR$_{95}$ = 5,72, dvs. VaR vid 95% konfidens
    • VaR$_{99}$ = 7,81, dvs. VaR vid 99% konfidens
    • VaR$_{99.5}$ = 8,78, dvs. VaR vid 99,5% konfidens
  • VaR-måttet ökar när konfidensnivån stiger

Histogram över förluster med 95%-, 99%- och 99,5%-VaR

Kvantitativ riskhantering i Python

Nu kör vi en övning!

Kvantitativ riskhantering i Python

Preparing Video For Download...