Portfele Markowitza

Wprowadzenie do zarządzania ryzykiem portfela w Pythonie

Dakota Wixom

Quantitative Analyst | QuantCourse.com

100 000 losowo wygenerowanych portfeli

Wprowadzenie do zarządzania ryzykiem portfela w Pythonie

Wskaźnik Sharpe'a

Wskaźnik Sharpe'a mierzy zwrot skorygowany o ryzyko.

Wersja wskaźnika Sharpe'a z 1966 roku:

$$ S = \frac{ R_a - r_f }{\sigma_a} $$

  • S: wskaźnik Sharpe'a
  • $ R_a $: zwrot z aktywa
  • $ r_f $: stopa wolna od ryzyka
  • $ \sigma_a $: zmienność aktywa
Wprowadzenie do zarządzania ryzykiem portfela w Pythonie

Granica efektywna

Wprowadzenie do zarządzania ryzykiem portfela w Pythonie

Portfele Markowitza

Każdy punkt na granicy efektywnej to portfel optymalny.

Dwa kluczowe punkty noszą nazwę portfeli Markowitza:

  • MSR: portfel o Maksymalnym wskaźniku Sharpe'a
  • GMV: portfel o Globalnie Minimalnej Zmienności

Wprowadzenie do zarządzania ryzykiem portfela w Pythonie

Wybór portfela

Jak wybrać najlepszy portfel?

  • Wybieraj portfele leżące na granicy efektywnej
  • Wyższy zwrot wiąże się z wyższym ryzykiem
Wprowadzenie do zarządzania ryzykiem portfela w Pythonie

Wybór MSR w Pythonie

Przy założeniu, że DataFrame df zawiera losowe portfele z kolumnami Volatility i Returns:

numstocks = 5
risk_free = 0
df["Sharpe"] = (df["Returns"] - risk_free) / df["Volatility"]
MSR = df.sort_values(by=['Sharpe'], ascending=False)
MSR_weights = MSR.iloc[0, 0:numstocks]
np.array(MSR_weights)
array([0.15, 0.35, 0.10, 0.15, 0.25])
Wprowadzenie do zarządzania ryzykiem portfela w Pythonie

Wyniki historyczne nie gwarantują przyszłych zwrotów

Choć portfel o maksymalnym wskaźniku Sharpe'a brzmi atrakcyjnie, w praktyce prognozowanie zwrotów jest niezwykle trudne.

Wprowadzenie do zarządzania ryzykiem portfela w Pythonie

Wybór GMV w Pythonie

Przy założeniu, że DataFrame df zawiera losowe portfele z kolumnami Volatility i Returns:

numstocks = 5
GMV = df.sort_values(by=['Volatility'], ascending=True)
GMV_weights = GMV.iloc[0, 0:numstocks]
np.array(GMV_weights)
array([0.25, 0.15, 0.35, 0.15, 0.10])
Wprowadzenie do zarządzania ryzykiem portfela w Pythonie

Czas na ćwiczenia!

Wprowadzenie do zarządzania ryzykiem portfela w Pythonie

Preparing Video For Download...