Ekspozycja na ryzyko i straty

Ilościowe zarządzanie ryzykiem w Pythonie

Jamsheed Shorish

Computational Economist

Analogia wakacyjna

  • Rezerwacja hotelu na wakacje

  • Płatność z góry, przed przyjazdem

    • Niska stawka za pokój
    • Bezzwrotna: opłata za anulowanie = 100% stawki za pokój
  • Płatność po przyjeździe

    • Wysoka stawka za pokój
    • Częściowo zwrotna: opłata za anulowanie = 20% stawki za pokój

Łódka przy karaibskiej plaży

Ilościowe zarządzanie ryzykiem w Pythonie

Wybór między opcjami

  • Co determinuje Państwa decyzję?
    1. Prawdopodobieństwo negatywnego zdarzenia: choroba, zakłócenia podróży, pogoda
      • Prawdopodobieństwo straty
    2. Strata związana ze zdarzeniem: kwota lub kwota warunkowa
      • np. VaR, CVaR
    3. Chęć uniknięcia zdarzenia: subiektywne odczucie
      • Tolerancja ryzyka

Rysunek trojga chorych dzieci leżących w łóżku z termometrami w ustach

 

Skala ryzyka i pieniądze symbolizujące zarządzanie ryzykiem

Ilościowe zarządzanie ryzykiem w Pythonie

Ekspozycja na ryzyko i VaR

  • Ekspozycja na ryzyko: prawdopodobieństwo straty x miara straty
    • Miara straty: np. VaR
  • 10% szansa na odwołanie wakacji: P(Choroba) = 0,10
  • Opcja bezzwrotna:
    • Całkowity koszt hotelu (bezzwrotny): € 500
    • VaR na poziomie ufności 90%: € 500
  • Opcja częściowo zwrotna:
    • Koszt hotelu (częściowo zwrotny): € 550
    • VaR na poziomie ufności 90%: opłata 20% x € 550 = € 110
Ilościowe zarządzanie ryzykiem w Pythonie

Obliczanie ekspozycji na ryzyko

  • Ekspozycja bezzwrotna ("$\text{nr}$"):
    • P(choroba) x $\text{VaR}_{0.90}^{\text{nr}}$ = 0,10 x € 500 = € 50.
  • Ekspozycja częściowo zwrotna ("$\text{pr}$"):
    • P(choroba) x $\text{VaR}_{0.90}^{\text{pr}}$ = 0,10 x € 110 = € 11.
  • Różnica w ekspozycji na ryzyko: € 50 - € 11 = € 39.
  • Całkowita różnica cen ofert: € 550 - € 500 = € 50.
  • Tolerancja ryzyka: czy dopłata € 50 jest warta uniknięcia € 39 dodatkowej ekspozycji?
Ilościowe zarządzanie ryzykiem w Pythonie

Tolerancja i apetyt na ryzyko

  • Neutralność wobec ryzyka: liczy się tylko wartość oczekiwana
    • € 39 < € 50 $\Rightarrow$ preferuje opcję bezzwrotną
  • Awersja do ryzyka: niepewność sama w sobie ma koszt
    • € 39 < € 50 $\Rightarrow$ preferuje opcję częściowo zwrotną
  • Zarządzanie ryzykiem korporacyjnym/instytucjonalnym: preferencje jako apetyt na ryzyko
  • Indywidualni inwestorzy: preferencje jako tolerancja ryzyka
Ilościowe zarządzanie ryzykiem w Pythonie

Rozkład strat – dyskretny

  • Ekspozycja na ryzyko zależy od rozkładu strat (prawdopodobieństwo straty)
  • Przykład wakacyjny: 2 wyniki z losowego czynnika ryzyka

Wykres słupkowy binarnych strat z przykładu wakacyjnego

Ilościowe zarządzanie ryzykiem w Pythonie

Rozkład strat – ciągły

  • Ekspozycja na ryzyko zależy od rozkładu strat (prawdopodobieństwo straty)
  • Przykład wakacyjny: 2 wyniki z losowego czynnika ryzyka
  • Ogólnie: ciągły rozkład strat
    • Rozkład normalny: odpowiedni dla dużych prób

Ciągły rozkład normalny strat

Ilościowe zarządzanie ryzykiem w Pythonie

Rozkład strat – ciągły

  • Ekspozycja na ryzyko zależy od rozkładu strat (prawdopodobieństwo straty)
  • Przykład wakacyjny: 2 wyniki z losowego czynnika ryzyka
  • Ogólnie: ciągły rozkład strat
    • Rozkład normalny: odpowiedni dla dużych prób
    • Rozkład t-Studenta: odpowiedni dla małych prób

Ciągły rozkład strat – rozkład t

Ilościowe zarządzanie ryzykiem w Pythonie

Wprowadzenie: rozkład t-Studenta

  • Określany również jako rozkład T
  • Dla małych prób ma "grubsze" ogony niż rozkład normalny
    • Podobne do stóp zwrotu/strat portfela
  • Wraz ze wzrostem próby rozkład T zbiega do normalnego

Ciągły rozkład strat

Ilościowe zarządzanie ryzykiem w Pythonie

Rozkład T w Pythonie

  • Przykład: obliczenie VaR 95% z rozkładu T
    • Importuj rozkład t z scipy.stats
    • Dopasuj dane portfolio_loss za pomocą t.fit()

 

from scipy.stats import t

params = t.fit(portfolio_losses)

Ciągły rozkład strat

Ilościowe zarządzanie ryzykiem w Pythonie

Rozkład T w Pythonie

  • Przykład: obliczenie VaR 95% z rozkładu T
    • Importuj rozkład t z scipy.stats
    • Dopasuj dane portfolio_loss za pomocą t.fit()
    • Oblicz funkcję kwantylową .ppf(), aby wyznaczyć VaR
from scipy.stats import t

params = t.fit(portfolio_losses)
VaR_95 = t.ppf(0.95, *params)

Ciągły rozkład strat – rozkład t z VaR

Ilościowe zarządzanie ryzykiem w Pythonie

Stopnie swobody

  • Stopnie swobody (df): liczba niezależnych obserwacji
  • Małe df: rozkład T z "grubymi ogonami"
  • Duże df: rozkład normalny
x = np.linspace(-3, 3, 100)

plt.plot(x, t.pdf(x, df = 2))
plt.plot(x, t.pdf(x, df = 5))
plt.plot(x, t.pdf(x, df = 30))

Rozkład T dla 30 stopni swobody

Ilościowe zarządzanie ryzykiem w Pythonie

Czas na ćwiczenia!

Ilościowe zarządzanie ryzykiem w Pythonie

Preparing Video For Download...