/ / zduplikowane wpisy w indeksach błąd w optimize.portfolio w pakiecie PortfolioAnalytics - r, finanse, quantmod

zduplikowane wpisy w indeksach błąd w optimize.portfolio w pakiecie PortfolioAnalytics - r, finance, quantmod

Kiedy próbuję uruchomić optimize.portfolio funkcja za pomocą ROI Dostaję błąd.

Error in ROI::V_bound(li = seq.int(1L, N), lb = as.numeric(lb), ui = seq.int(1L,  : duplicated entries in indices.

A kiedy używam DEoptim Dostaję.

Error in sample.int(length(x), size, replace, prob) :
invalid first argument

Po zebraniu danych o zapasach za pomocą getSymbols pojawia się ostrzeżenie o długości zwracanych obiektów badania, które przeprowadziłem sugeruje, że to nie jest problem.

Kod, którego używam, znajduje się poniżej. Każda pomoc będzie mile widziana.

library(quantmod)
library(PortfolioAnalytics)
library(DEoptim)
library(ROI)
require(ROI.plugin.glpk)
require(ROI.plugin.quadprog)

symbols <- c("MSFT", "MMM", "AMZN")

e <- new.env()
getSymbols(symbols, src="yahoo", env=e)
stocks <- do.call(merge, eapply(e, Cl)[symbols])

ret <- diff(log(df))
ret <- ret[2:(nrow(df)),]

portfolio <- portfolio.spec(ret)
portfolio

portfolio <- add.constraint(portfolio = portfolio, type = "weight_sum", min_sum=0.99,max_sum=1.01)
portfolio <- add.constraint(portfolio = portfolio, type = "long_only")
portfolio <- add.objective(portfolio=portfolio, type="risk", name="StdDev")

optimise <- optimize.portfolio(R = ret, portfolio = portfolio, optimize_method = "ROI")

Odpowiedzi:

2 dla odpowiedzi № 1

Zobacz pomoc (?portfolio.spec). Ta funkcja oczekuje nazw lub numerów. Jeśli używasz nazw zasobów, nie ma błędu.

portfolio <- portfolio.spec(names(ret))