【发布时间】:2021-08-09 16:11:35
【问题描述】:
我正在尝试使用 PortfolioOptim 包 (https://cran.r-project.org/web/packages/PortfolioOptim/PortfolioOptim.pdf) 中的 BDportfolio_optim 函数运行示例代码,以最小化 CVaR。输出应该是关于某些约束的最小 CVaR 的最佳权重。 但是,我总是遇到一个错误,说我的第一个约束矩阵 A 的尺寸有误。 使用的代码与 PortfolioOptim 手册中使用的示例非常相似: https://cran.r-project.org/web/packages/PortfolioOptim/PortfolioOptim.pdf
库(PortfolioOptim) 图书馆(fPortfolio) 库(quantmod) 图书馆(吃豆人) 图书馆(时间日期) 库(timeSeries)
getSymbols("EBAY", src="yahoo", from= "2011-01-01")
getSymbols("MSFT", src="yahoo", from= "2011-01-01")
getSymbols("INTC", src="yahoo", from= "2011-01-01")
getSymbols("KO", src="yahoo", from= "2011-01-01")
portfolio_1 = cbind(EBAY$EBAY.Close, MSFT$MSFT.Close, INTC$INTC.Close, KO$KO.Close)
ret_p_1 = cbind(dailyReturn(EBAY), dailyReturn(MSFT), dailyReturn(INTC), dailyReturn(KO))
portfolioReturns_1 <- as.timeSeries(ret_p_1)
colnames(ret_p_1) <- tickers
portfolioReturns_1 <- as.timeSeries(ret_p_1)
k = ncol(portfolioReturns_1)
num = nrow(portfolioReturns_1)
port_ret = 0.05 # target portfolio return
alpha_optim = 0.95
a0 <- rep(1,k)
A <- rbind(a0,-a0)
b <- rbind(1+1e-8, -1+1e-8)
LB <- rep(0, k)
UB <- rep(0.5 ,k)
result <- BDportfolio_optim(portfolioReturns_1, port_ret, "CVAR", alpha_optim,
Aconstr = A , bconstr = b, LB, UB, maxiter=10000, tol=1e-8)
控制台的输出总是一样的:
Error in BDportfolio_optim(portfolioReturns_1, port_ret, "CVAR", alpha_optim, :
Matrix A must have as many rows as constraints (=elements of vector b) and as many columns as variables (=assets).
但是,当我检查 A 的维度时,它是 (2, 4) - 完全对应于向量 b 的元素和资产变量 (k=4)。
有人知道出了什么问题吗?
【问题讨论】:
标签: r