Nowoczesna teoria portfela

Ilościowe zarządzanie ryzykiem w Pythonie

Jamsheed Shorish

Computational Economist

Kompromis ryzyko–zwrot

  • Czynniki ryzyka: źródła niepewności wpływające na zwrot
  • Intuicja: większa niepewność (wyższe ryzyko) kompensowana wyższym zwrotem
  • Nie można zagwarantować zwrotu: potrzebna miara oczekiwanego zwrotu
    • średni (mean) historyczny zwrot: przybliżenie oczekiwanego przyszłego zwrotu
Ilościowe zarządzanie ryzykiem w Pythonie

Skłonność inwestora do ryzyka

  • Ankieta inwestorów: minimalny zwrot wymagany przy danym poziomie ryzyka?
  • Odpowiedź tworzy „punkt danych" profilu ryzyka (ryzyko, zwrot)
  • Zmienny poziom ryzyka => zbiór punktów (ryzyko, zwrot)
  • Skłonność inwestora do ryzyka: definiuje ilościową zależność między ryzykiem a zwrotem
Ilościowe zarządzanie ryzykiem w Pythonie

Dobór wag portfela

  • Zmiana wag portfela dla danego portfela => tworzy zbiór par (ryzyko, zwrot)
  • Zmiana wag = początek zarządzania ryzykiem!
  • Cel: zmiana wag w celu maksymalizacji oczekiwanego zwrotu przy danym poziomie ryzyka
    • Równoważnie: minimalizacja ryzyka przy danym oczekiwanym zwrocie
  • Zmiana wag = dostosowanie ekspozycji na ryzyko inwestora
Ilościowe zarządzanie ryzykiem w Pythonie

Nowoczesna teoria portfela

  • Portfel efektywny: portfel z wagami generującymi najwyższy oczekiwany zwrot przy danym poziomie ryzyka
  • Nowoczesna Teoria Portfela (MPT), 1952
    • H. M. Markowitz (laureat Nagrody Nobla, 1990)
  • Wektor wag efektywnego portfela $w^\star$ rozwiązuje:

Równania problemu optymalizacji wyznaczania portfela efektywnego

Ilościowe zarządzanie ryzykiem w Pythonie

Granica efektywności

  • Obliczenie wielu efektywnych portfeli dla różnych poziomów ryzyka
  • Granica efektywności: zbiór par (ryzyko, zwrot) tworzonych przez efektywne portfele
  • Biblioteka PyPortfolioOpt: zoptymalizowane narzędzia do MPT
    • Klasa EfficientFrontier: generuje jeden optymalny portfel jednorazowo
    • Klasa Constrained Line Algorithm (CLA): generuje całą granicę efektywności
      • Wymaga macierzy kowariancji zwrotów
      • Wymaga przybliżenia oczekiwanych przyszłych zwrotów: średnie zwroty historyczne
Ilościowe zarządzanie ryzykiem w Pythonie

Portfel banku inwestycyjnego 2005–2010

  • Oczekiwane zwroty: dane historyczne
  • Macierz kowariancji: Covariance Shrinkage poprawia dokładność estymacji
  • Obiekt Constrained Line Algorithm CLA
  • Portfel minimalnej wariancji: cla.min_volatility()
  • Granica efektywności: cla.efficient_frontier()

 

expected_returns = mean_historical_return(prices)

efficient_cov = CovarianceShrinkage(prices).ledoit_wolf()
cla = CLA(expected_returns, efficient_cov)
minimum_variance = cla.min_volatility()
(ret, vol, weights) = cla.efficient_frontier()
Ilościowe zarządzanie ryzykiem w Pythonie

Wizualizacja granicy efektywności

  • Wykres punktowy par (zmienność, zwrot)

Wykres granicy efektywności jako zbioru par (ryzyko, zwrot)

Ilościowe zarządzanie ryzykiem w Pythonie

Wizualizacja granicy efektywności

  • Wykres punktowy par (zmienność, zwrot)
  • Portfel minimalnej wariancji: najmniejsza zmienność spośród wszystkich efektywnych portfeli

Portfel minimalnej wariancji zaznaczony na wykresie granicy efektywności

Ilościowe zarządzanie ryzykiem w Pythonie

Wizualizacja granicy efektywności

  • Wykres punktowy par (zmienność, zwrot)
  • Portfel minimalnej wariancji: najmniejsza zmienność spośród wszystkich efektywnych portfeli
  • Rosnąca skłonność do ryzyka: przesunięcie wzdłuż granicy

Przesunięcie wzdłuż granicy efektywności zobrazowane strzałką w kierunku wyższego ryzyka i wyższego zwrotu

Ilościowe zarządzanie ryzykiem w Pythonie

Czas na ćwiczenia!

Ilościowe zarządzanie ryzykiem w Pythonie

Preparing Video For Download...