我正在尝试根据特定风险等级优化投资组合。使用fPortfolio
似乎很简单,但我得到的结果没有意义。我花了好几个小时试图找出这没有任何运气。在R包中设定目标风险fPortfolio
基本情况(即不限制)
defaultSpec <- portfolioSpec()
lppAssets <- 100*LPP2005.RET[, c("SBI", "SPI", "LMI", "MPI")]
lppData <- portfolioData(data = lppAssets, spec = defaultSpec)
port <- efficientPortfolio(lppData, defaultSpec, constraints = "LongOnly")
[email protected]
# $weights
# SBI SPI LMI MPI
# 0.396009510 0.002142136 0.547715368 0.054132986
# $covRiskBudgets
# SBI SPI LMI MPI
# 0.396009510 0.002142136 0.547715368 0.054132986
# $targetReturn
# mean mu
# 0.006422759 0.006422759
# $targetRisk
# Cov Sigma CVaR VaR
# 0.1038206 0.1038206 0.2186926 0.1684104
# $targetAlpha
# [1] 0.05
# $status
# [1] 0
# Slot "messages":
# list()
当我尝试风险级别设置为0.09,我得到了同样的答案。
defaultSpec <- portfolioSpec()
setTargetRisk(defaultSpec) <- 0.09 # **this doesn't seem to work**
lppAssets <- 100*LPP2005.RET[, c("SBI", "SPI", "LMI", "MPI")]
lppData <- portfolioData(data = lppAssets, spec = defaultSpec)
port <- efficientPortfolio(lppData, defaultSpec, constraints = "LongOnly")
[email protected]
# An object of class "fPFOLIOVAL"
# Slot "portfolio":
# $weights
# SBI SPI LMI MPI
# 0.396009510 0.002142136 0.547715368 0.054132986
# $covRiskBudgets
# SBI SPI LMI MPI
# 0.396009510 0.002142136 0.547715368 0.054132986
# $targetReturn
# mean mu
# 0.006422759 0.006422759
# $targetRisk
# Cov Sigma CVaR VaR
# 0.1038206 0.1038206 0.2186926 0.1684104
# $targetAlpha
# [1] 0.05
# $status
# [1] 0
# Slot "messages":
# list()
“spec”表示新的风险等级是针对性的,但结果不会改变。如果我将风险设置为0.09或0.12或任何其他值,这并不重要。
defaultSpec
# Model List:
# Type: MV
# Optimize: maxReturn
# Estimator: covEstimator
# Params: alpha = 0.05 a = 1
# Portfolio List:
# Portfolio Weights: NA
# Target Return: NA
# Target Risk: 0.09
# Risk-Free Rate: 0
# Number of Frontier Points: 50
# Status: NA
# Optim List:
# Solver: solveRquadprog
# Objective: portfolioObjective portfolioReturn portfolioRisk
# Options: meq = 2
# Trace: FALSE
我在做什么错?如何使用R中的fPortfolio
来设置风险等级?
我有相同的问题 – user1627466
似乎与有效的投资组合函数和规范中使用的求解器有关。显然,无论您输入什么目标风险,解算器都会输入与您在打印投资组合时获得的Cov相对应的目标。 – user1627466
尝试过:lppData = 100 * LPP2005.RET [,1:6] maxRetSpec = portfolioSpec() setTargetRisk maxRetSpec)= 0.7 setSolver(maxRetSpec)=“solveRdonlp2” efficientPortfolio(data = lppData,spec = maxRetSpec,constraints =“LongOnly”)不起作用 – user1627466