Markowitz-portföljer

Introduktion till portföljriskhantering i Python

Dakota Wixom

Quantitative Analyst | QuantCourse.com

100 000 slumpmässigt genererade portföljer

Introduktion till portföljriskhantering i Python

Sharpe-kvoten

Sharpe-kvoten mäter riskjusterad avkastning.

Formeln för 1966 års version av Sharpe-kvoten:

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

  • S: Sharpe-kvot
  • $ R_a $: Tillgångens avkastning
  • $ r_f $: Riskfri ränta
  • $ \sigma_a $: Tillgångens volatilitet
Introduktion till portföljriskhantering i Python

Den effektiva fronten

Introduktion till portföljriskhantering i Python

Markowitz-portföljerna

Varje punkt på den effektiva fronten är en optimal portfölj.

Dessa två vanliga punkter kallas Markowitz-portföljer:

  • MSR: Portfölj med maximal Sharpe-kvot (Max Sharpe Ratio)
  • GMV: Portfölj med global minimal volatilitet (Global Minimum Volatility)

Introduktion till portföljriskhantering i Python

Att välja en portfölj

Hur väljer du den bästa portföljen?

  • Försök att välja en portfölj längs den effektiva frontens ytterkant
  • Högre avkastning är möjlig om du accepterar högre risk
Introduktion till portföljriskhantering i Python

Välja MSR i Python

Givet en DataFrame df med slumpmässiga portföljer och kolumnerna Volatility och 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])
Introduktion till portföljriskhantering i Python

Historisk avkastning är ingen garanti för framtida resultat

Även om en portfölj med maximal Sharpe-kvot låter lockande, är avkastning i praktiken mycket svår att förutsäga.

Introduktion till portföljriskhantering i Python

Välja GMV i Python

Givet en DataFrame df med slumpmässiga portföljer och kolumnerna Volatility och 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])
Introduktion till portföljriskhantering i Python

Nu kör vi en övning!

Introduktion till portföljriskhantering i Python

Preparing Video For Download...