Pomiar ryzyka

Ilościowe zarządzanie ryzykiem w Pythonie

Jamsheed Shorish

CEO, Shorish Research

Rozkład strat

  • Przykład Forex:
    • Wartość portfela w dolarach wynosi USD 100
    • Czynnik ryzyka = kurs wymiany EUR / USD
    • Wartość portfela w EUR, gdy 1 EUR = 1 USD: USD 100 x EUR 1 / USD 1 = EUR 100.
    • Wartość portfela w EUR, gdy r EUR = 1 USD: = USD 100 x EUR r / 1 USD = EUR 100 x r
    • Strata = EUR 100 - EUR 100 x r = EUR 100 x (1 - r)
  • Rozkład strat: Losowe realizacje r => rozkład strat portfela w przyszłości

Histogram strat forex

Ilościowe zarządzanie ryzykiem w Pythonie

Strata maksymalna

  • Jaka jest maksymalna strata portfela?
  • Strat nie można ograniczyć z 100% pewnością
  • Poziom ufności: zastępuje 100% pewność prawdopodobieństwem górnego ograniczenia
  • Pozwala formułować pytania takie jak „Jaka jest maksymalna strata w 95% przypadków?"
    • Poziom ufności wynosi tu 95%.
Ilościowe zarządzanie ryzykiem w Pythonie

Wartość zagrożona (VaR)

  • VaR: statystyka mierząca maksymalną stratę portfela przy danym poziomie ufności
  • Typowe poziomy ufności: 95%, 99% i 99,5% (zwykle wyrażane dziesiętnie)
  • Przykład Forex: Jeśli w 95% przypadków kurs EUR/USD wynosi co najmniej 0,40, to:
    • wartość portfela wynosi co najmniej USD 100 x 0,40 EUR/USD = EUR 40,
    • strata portfela wynosi co najwyżej EUR 40 - EUR 100 = EUR 60,
    • a więc 95% VaR wynosi EUR 60.

Szereg czasowy kursu EUR/USD z progiem 0,40

Ilościowe zarządzanie ryzykiem w Pythonie

Warunkowa wartość zagrożona (CVaR)

  • CVaR: mierzy oczekiwaną stratę przy założeniu, że strata jest co najmniej równa VaR
  • Równa się wartości oczekiwanej ogona rozkładu strat:
    • $$\textnormal{CVaR}(\alpha) := \frac{1}{1-\alpha}\mathbb{E} \int_{\textnormal{VaR}(\alpha)}^{\bar{x}} x f(x) dx,$$
    • $f(\cdot)$ = gęstość rozkładu strat
    • $\bar{x}$ = górne ograniczenie straty (może być nieskończoność)
    • $\textnormal{VaR}(\alpha)$ = VaR przy poziomie ufności $\alpha$.
  • Przykład Forex:
    • CVaR 95% = oczekiwana strata w 5% przypadków, gdy wartość portfela spada poniżej EUR 40

Wykres rozkładu strat z zaznaczonym ogonem VaR i CVaR

Ilościowe zarządzanie ryzykiem w Pythonie

Wyznaczanie VaR

  1. Określ poziom ufności, np. 95% (0,95)
  2. Utwórz serię obserwacji loss
  3. Oblicz loss.quantile() dla określonego poziomu ufności
  4. VaR = obliczony .quantile() dla wybranego poziomu ufności

  5. Rozkład strat scipy.stats: można też użyć funkcji kwantylowej .ppf()

loss = pd.Series(observations)

VaR_95 = loss.quantile(0.95) print("VaR_95 = ", VaR_95)
Var_95 = 1.6192834157254088
Ilościowe zarządzanie ryzykiem w Pythonie

Wyznaczanie CVaR

  1. Określ poziom ufności, np. 95% (0,95)
  2. Utwórz lub użyj próby z rozkładu strat
  3. Oblicz VaR dla określonego poziomu ufności, np. 0,95.
  4. Oblicz CVaR jako oczekiwaną stratę (rozkład normalny: scipy.stats.norm.expect() to realizuje).
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
Ilościowe zarządzanie ryzykiem w Pythonie

Wizualizacja VaR

  • Histogram rozkładu strat dla 1000 losowań z N(1,3)

Histogram strat o rozkładzie normalnym

Ilościowe zarządzanie ryzykiem w Pythonie

Wizualizacja VaR

  • Histogram rozkładu strat dla 1000 losowań z N(1,3)
    • VaR$_{95}$ = 5,72, tj. VaR przy 95% poziomie ufności

Histogram strat z VaR na poziomie 95%

Ilościowe zarządzanie ryzykiem w Pythonie

Wizualizacja VaR

  • Histogram rozkładu strat dla 1000 losowań z N(1,3)
    • VaR$_{95}$ = 5,72, tj. VaR przy 95% poziomie ufności
    • VaR$_{99}$ = 7,81, tj. VaR przy 99% poziomie ufności

Histogram strat z VaR na poziomie 95% i 99%

Ilościowe zarządzanie ryzykiem w Pythonie

Wizualizacja VaR

  • Histogram rozkładu strat dla 1000 losowań z N(1,3)
    • VaR$_{95}$ = 5,72, tj. VaR przy 95% poziomie ufności
    • VaR$_{99}$ = 7,81, tj. VaR przy 99% poziomie ufności
    • VaR$_{99.5}$ = 8,78, tj. VaR przy 99,5% poziomie ufności
  • Miara VaR rośnie wraz ze wzrostem poziomu ufności

Histogram strat z VaR na poziomie 95%, 99% i 99,5%

Ilościowe zarządzanie ryzykiem w Pythonie

Czas na ćwiczenia!

Ilościowe zarządzanie ryzykiem w Pythonie

Preparing Video For Download...