Portofolii Markowitz

Introducere în gestionarea riscului de portofoliu în Python

Dakota Wixom

Quantitative Analyst | QuantCourse.com

100.000 de portofolii generate aleatoriu

Introducere în gestionarea riscului de portofoliu în Python

Raportul Sharpe

Raportul Sharpe măsoară randamentul ajustat la risc.

Formula din 1966 a raportului Sharpe:

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

  • S: Raportul Sharpe
  • $ R_a $: Randamentul activului
  • $ r_f $: Rata de rentabilitate fără risc
  • $ \sigma_a $: Volatilitatea activului
Introducere în gestionarea riscului de portofoliu în Python

Frontiera eficientă

Introducere în gestionarea riscului de portofoliu în Python

Portofoliile Markowitz

Orice punct de pe frontiera eficientă reprezintă un portofoliu optim.

Aceste două puncte comune se numesc Portofolii Markowitz:

  • MSR: Portofoliul cu raport Sharpe maxim
  • GMV: Portofoliul cu volatilitate minimă globală

Introducere în gestionarea riscului de portofoliu în Python

Alegerea unui portofoliu

Cum alegeți cel mai bun portofoliu?

  • Alegeți un portofoliu de pe frontiera eficientă
  • Randamentul mai mare implică un risc mai mare
Introducere în gestionarea riscului de portofoliu în Python

Selectarea MSR în Python

Presupunând un DataFrame df cu portofolii aleatorii și coloanele 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])
Introducere în gestionarea riscului de portofoliu în Python

Performanța trecută nu garantează randamentele viitoare

Deși un portofoliu cu raport Sharpe maxim poate părea atractiv, în practică, randamentele sunt extrem de dificil de previzionat.

Introducere în gestionarea riscului de portofoliu în Python

Selectarea GMV în Python

Presupunând un DataFrame df cu portofolii aleatorii și coloanele 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])
Introducere în gestionarea riscului de portofoliu în Python

Să exersăm!

Introducere în gestionarea riscului de portofoliu în Python

Preparing Video For Download...