Я пытаюсь закодировать передискретизацию эффективной границы в R, любая помощь более чем ценится, так как это моя дипломная работа бакалавра. В настоящее время я только кодировал «нормальную эффективную границу» следующим образом:
library(quantmod)
library(PortfolioAnalytics)
tickers <- c("IVV", "EXSA.DE", "^N225", "EEM", "XLE", "DLBS", "AAPL", "NVDA", "IGLN.L", "MSFT")
tickernames <- c("S&P 500", "Stoxx Europe 600", "Nikkei 225", "MSCI EM", "US Treaseraies", "DE Bonds
longterm", "DE Bonds shortterm", "Eu Corporate", "Edelmetal", "Energie")
portfolioPrices <- NULL
for(ticker in tickers) {
portfolioPrices <- cbind(portfolioPrices,
getSymbols.yahoo(ticker, from='2016-01-03', periodicity = 'daily',
auto.assign=FALSE)[,6])
}
colnames(portfolioPrices) <- tickernames
colSums(is.na(portfolioPrices))
#portfolioReturns <- na.omit(ROC(portfolioPrices, type="discrete"))
portfolioReturns <- na.spline(ROC(portfolioPrices, type="discrete"))
portf <- portfolio.spec(colnames(portfolioReturns))
portf <- add.constraint(portf, type="weight_sum", min_sum=1, max_sum=1)
portf <- add.constraint(portf, type="box", min=0, max=1)
portf <- add.objective(portf, type="return", name="mean")
portf <- add.objective(portf, type="risk", name="StdDev")
optPort <- optimize.portfolio(portfolioReturns, portf, optimize_method = "ROI", trace=TRUE)
ef <- extractEfficientFrontier(optPort, match.col = "StdDev", n.portfolios = 300, risk_aversion =
NULL)
chart.EfficientFrontier(ef, match.col = "StdDev", n.portfolios = 300, xlim = NULL, ylim = NULL,
cex.axis = 0.8, element.color = "darkgray", main = "Efficient Frontier",
RAR.text = "SR", rf = 0, tangent.line = TRUE, cex.legend = 0.8,
chart.assets = TRUE, labels.assets = TRUE, pch.assets = 21,
cex.assets = 0.8)
chart.EF.Weights(ef, colorset=NULL, match.col="StdDev", n.portfolios = 300,
cex.lab = 0.8, cex.axis = 0.8, cex.legend = 0.8, legend.labels = NULL,
element.color = "darkgray", legend.loc = "topright")
Теперь мой следующий шаг - кодирование процесса повторной выборки, кто-нибудь может мне помочь?