Я пытаюсь оптимизировать портфель с 4 активами - облигациями, акциями, нефтью и золотом. Моя цель - минимизировать условное значение риска (CVaR). Ограничения включают в себя полное инвестирование, и все позиции имеют только длинные позиции. Однако, когда я запускаю приведенный ниже код, я сталкиваюсь с ошибкой -
Ошибка в seq.default (от = round (min, округление), до = round (max, округление),: 'from' должно быть конечным числом
Я не могу взломать его.
Поскольку я не могу загрузить данные, но это, я, безусловно, могу отправить их через.
Код выглядит следующим образом:
# 1.1. Load R packages
library("tseries")
library("quantmod")
library("Quandl")
library("PortfolioAnalytics")
library("DEoptim")
library(ROI)
library(robustbase)
# 1.2. Data Reading
setwd("C:/Users/Win10/Desktop/Portfolio Analysis-20200406T063327Z-001/Portfolio Analysis")
bonds <- data[,2]
mbonds <- monthlyReturn(bonds,type="arithmetic")
colnames(moil) <- "mbonds"
stocks <- data[,3]
mstocks <- monthlyReturn(stocks,type="arithmetic")
colnames(moil) <- "mstoks"
oil <- data[,4]
moil <- monthlyReturn(oil,type="arithmetic")
colnames(moil) <- "moil"
gold <- data[,5]
mgold <- monthlyReturn(gold,type="arithmetic")
colnames(mgold) <- "mgold"
# 4.2.1. Portfolio Assets Returns Matrix
mport <- cbind(mbonds,mstocks,moil,mgold)
mport4 <- portfolio.spec(assets=colnames(mport))
# Portfolio Constraints
mport4c <- add.constraint(mport4,type="Box",min=0,max=1)
mport4c <- add.constraint(mport4,type="weight_sum",min_sum=0.99, max_sum=1.01)
# Portfolio Objectives
mport4c <- add.objective(mport4c,type="risk",name="CVaR",arguments=list(p = 0.95,clean="boudt"))
# Portfolio Optimization
mportopt4 <- optimize.portfolio(R=mport,portfolio=mport4c,optimize_method="DEoptim", search_size = 2000, trace=TRUE)