Проблема оптимизации портфеля с минимизацией CVaR - PullRequest
0 голосов
/ 07 апреля 2020

Я пытаюсь оптимизировать портфель с 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)
...