Есть ли способ привести пограничный объект из пакета PortfolioAnalytics в таблицу?
В следующем фрагменте вы можете найти небольшой воспроизводимый пример того, чего я пытаюсь достичь.
if ( !("tidyverse") %in% rownames(installed.packages())) {
install.packages("tidyverse")
}
if ( !("timetk") %in% rownames(installed.packages())) {
install.packages("timetk")
}
if ( !("PortfolioAnalytics") %in% rownames(installed.packages())) {
install.packages("PortfolioAnalytics")
}
if ( !("rvest") %in% rownames(installed.packages())) {
install.packages("rvest")
}
library(tidyverse)
library(timetk)
library(PortfolioAnalytics)
library(rvest)
N <- 10
M <- 2
dates <- as.Date(seq(1,N,1))
assets <- c("V1","V2")
historicalReturn <- matrix(rnorm(N*M,mean=0,sd=1), N, M) %>%
as.data.frame() %>%
mutate(date = dates) %>%
tk_xts(silent = T)
pspec <- assets %>%
portfolio.spec() %>%
add.constraint(type = "box", min = -1, max = 1) %>%
add.constraint(type = "weight_sum", min_sum = 1, max_sum = 1) %>%
add.objective(type = "return", name = "mean") %>%
add.objective(type = "risk", name = "ES", arguments = list(p = 0.95,clean = "boudt"), enabled = TRUE)
meanES.ef <- historicalReturn %>%
create.EfficientFrontier(pspec, type = "mean-ES", n.portfolios = 25)
Я хотел бы использовать такой рабочий процесс:
meanES.ef %>%
pluck(2) %>%
as_tibble()
К сожалению, я получаю следующую ошибку:
Error in as.data.frame.default(value, stringsAsFactors = FALSE) :
cannot coerce class ‘"frontier"’ to a data.frame
Я могу подтвердить, что объект имеет границу класса выполнив следующее
meanES.ef %>%
pluck(2) %>%
class()
[1] "frontier"
Итак, как указано выше, могу ли я как-нибудь привести пограничный объект meanES.ef $ frontier к столу? Я хотел бы передать это tidyverse функции, так что я считаю это предложение актуальным.
Заранее спасибо.