Optimasi portofolio alternatif

Pengantar Analisis Portofolio dengan Python

Charlotte Werger

Data Scientist

Ekspektasi risiko dan return berbasis data historis

$$

  • Rata-rata return historis atau varians portofolio historis bukan estimasi sempurna untuk mu dan Sigma
  • Bobot dari optimasi portofolio tidak dijamin bekerja baik pada data masa depan

$$ Lelucon jika sejarah berulang

Pengantar Analisis Portofolio dengan Python

Data historis

Data deret waktu yang berubah seiring waktu

Pengantar Analisis Portofolio dengan Python

Return berbobot eksponensial

$$

  • Butuh ukuran risiko dan return yang lebih baik
  • Bobot eksponensial memberi porsi lebih besar pada data terbaru
  • EMA pada grafik: bobot terbesar pada observasi t-1

Bobot pada perhitungan return berbobot eksponensial

Pengantar Analisis Portofolio dengan Python

Kovarians berbobot eksponensial

$$

  • Matriks kovarians eksponensial: memberi bobot lebih pada data terbaru
  • Di grafik: volatilitas berbobot eksponensial (hitam) mengikuti volatilitas riil lebih baik daripada volatilitas standar (biru)

$$ Membandingkan kovarians berbobot eksponensial dan kovarians normal dengan kovarians aktual

1 Sumber: https://systematicinvestor.github.io/Exponentially-Weighted-Volatility-RCPP
Pengantar Analisis Portofolio dengan Python

Return berbobot eksponensial

from pypfopt import expected_returns
# Exponentially weighted moving average
mu_ema = expected_returns.ema_historical_return(df, 
                         span=252, frequency=252)
print(mu_ema)
symbol
XOM     0.103030
BBY     0.394629
PFE     0.186058
Pengantar Analisis Portofolio dengan Python

Kovarians berbobot eksponensial

from pypfopt import risk_models
# Exponentially weighted covariance
Sigma_ew = risk_models.exp_cov(df, span=180, frequency=252)
Pengantar Analisis Portofolio dengan Python

Menggunakan risiko penurunan dalam optimasi

$ $

  • Ingat rasio Sortino: hanya memakai varians return negatif
  • PyPortfolioOpt dapat menggunakan semikovarians dalam optimasi; ini mengukur risiko penurunan:

$ $ Perhitungan risiko penurunan

Pengantar Analisis Portofolio dengan Python

Semikovarians di PyPortfolioOpt

Sigma_semi = risk_models.semicovariance(df,     
                        benchmark=0, frequency=252)

print(Sigma_semi)
         XOM         BBY          MA         PFE
XOM     0.018939    0.008505    0.006568    0.004058
BBY     0.008505    0.016797    0.009133    0.004404
MA      0.006568    0.009133    0.018711    0.005373
PFE     0.004058    0.004404    0.005373    0.008349
Pengantar Analisis Portofolio dengan Python

Ayo berlatih!

Pengantar Analisis Portofolio dengan Python

Preparing Video For Download...