Alternatif portföy optimizasyonu

Python ile Portföy Analizine Giriş

Charlotte Werger

Data Scientist

Geçmiş verilere dayalı beklenen risk ve getiri

$$

  • Geçmiş ortalama getiriler ya da geçmiş portföy varyansı, mu ve Sigma için mükemmel tahminler değildir
  • Bu yüzden portföy optimizasyonundan gelen ağırlıkların gelecekte iyi çalışacağı garanti değildir

$$ Tarihin tekerrür etmesi şakası

Python ile Portföy Analizine Giriş

Geçmiş veriler

Zaman içinde değişen zaman serisi verisi

Python ile Portföy Analizine Giriş

Üssel ağırlıklı getiriler

$$

  • Risk ve getiri için daha iyi ölçülere ihtiyaç var
  • Üssel ağırlıklı risk ve getiri, en yeni verilere daha çok ağırlık verir
  • Grafikte üssel hareketli ortalama: en büyük ağırlık t-1 gözleminde

Üssel ağırlıklı getiri hesaplamasında ağırlıklar

Python ile Portföy Analizine Giriş

Üssel ağırlıklı kovaryans

$$

  • Üssel kovaryans matrisi: en yeni verilere daha çok ağırlık verir
  • Grafikte: siyah üssel ağırlıklı oynaklık, mavi standart oynaklıktan daha iyi gerçek oynaklığı izler

$$ Üssel ağırlıklı kovaryans ve normal kovaryansın gerçek kovaryansla karşılaştırılması

1 Source: https://systematicinvestor.github.io/Exponentially-Weighted-Volatility-RCPP
Python ile Portföy Analizine Giriş

Üssel ağırlıklı getiriler

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
Python ile Portföy Analizine Giriş

Üssel ağırlıklı kovaryans

from pypfopt import risk_models
# Exponentially weighted covariance
Sigma_ew = risk_models.exp_cov(df, span=180, frequency=252)
Python ile Portföy Analizine Giriş

Optimizasyonda aşağı yönlü riski kullanma

$ $

  • Sortino oranını hatırla: yalnızca negatif getirilerin varyansını kullanır
  • PyPortfolioOpt, optimizasyonda yarım kovaryans kullanmana izin verir; bu, aşağı yönlü risk ölçüsüdür:

$ $ Aşağı yönlü riskin hesaplanması

Python ile Portföy Analizine Giriş

PyPortfolioOpt'ta yarım kovaryans

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
Python ile Portföy Analizine Giriş

Hadi pratik yapalım!

Python ile Portföy Analizine Giriş

Preparing Video For Download...