Karesel fayda fonksiyonunu maksimize et
Portföy optimizasyonunun zorlukları videosunda, quadprog paketiyle karesel (quadratic) bir fayda optimizasyonu probleminin nasıl çözüleceğini gördün. Bu egzersizde ise PortfolioAnalytics paketini kullanarak karesel bir fayda problemini nasıl çözeceğini öğreneceksin. Karesel fayda formülasyonunun iki terimi olduğunu hatırla: biri portföyün ortalama getirisi, diğeri ise riskten kaçınma parametresi lambda ile ağırlıklandırılan portföy varyansı.
Bu egzersiz
R ile Orta Düzey Portföy Analizi
kursunun bir parçasıdırEgzersiz talimatları
index_returnsveri kümesindeki varlık adlarını kullanarak bir portföy belirtimi (specification) nesnesi oluştur ve bu nesneyiport_specolarak adlandır.port_specnesnesine, ağırlıkların toplamı 1 olacak şekilde tam yatırım (full investment) kısıtı ekle.port_specnesnesine, her bir varlığın ağırlığı 0 ile 1 arasında olacak şekilde yalnızca uzun (long only) kısıtı ekle.port_specnesnesine, portföyün ortalama getirisini maksimize edecek bir amaç (objective) ekle.port_specnesnesine, portföy varyansını minimize edecek bir amaç ekle. Riskten kaçınma (risk aversion) 10 olarak ayarlanmalı.- Optimizasyonu çalıştır. Bu problem karesel programlama çözücüsüyle çözülebilir; bu yüzden
optimize_method = "ROI"olarak belirtiyoruz.
Uygulamalı interaktif egzersiz
Bu örnek kodu tamamlayarak bu egzersizi bitirin.
# Create the portfolio specification
port_spec <- portfolio.spec(assets = ___)
# Add a full investment constraint such that the weights sum to 1
port_spec <- add.constraint(portfolio = ___, type = ___)
# Add a long only constraint such that the weight of an asset is between 0 and 1
port_spec <- add.constraint(portfolio = ___, type = ___)
# Add an objective to maximize portfolio mean return
port_spec <- add.objective(portfolio = ___, type = ___, name = ___)
# Add an objective to minimize portfolio variance
port_spec <- add.objective(portfolio = port_spec, type = ___, name = ___, risk_aversion = ___)
# Solve the optimization problem
opt <- optimize.portfolio(R = ___, portfolio = ___, optimize_method = "ROI")