使用fPortfolio包进行投资组合优化的多重约束

时间:2011-12-13 00:14:57

标签: r

我正在构建使用多个约束的有效投资组合:即长期头寸和给定资产的最小权重= 34%(比如说)。我正在使用fPortfolio包来执行此操作。根据手册,可以通过创建字符串向量来提供复合约束。我对这种方法有一些问题。以下是fPortfolio手册中的示例。

library(fPortfolio)
Data = SMALLCAP.RET[,c("BKE", "GG", "GYMB", "KRON")]
Spec = portfolioSpec()
setTargetReturn(Spec) = mean(colMeans(Data))
Constraints = "LongOnly"
efficientPortfolio(Data, Spec, Constraints)

这很有效。但是我想通过添加最小重量条件

来增加这一点
Spec = portfolioSpec()  
setTargetReturn(Spec) = mean(colMeans(Data))
Constraints = c("LongOnly","minW[1]=0.34")
efficientPortfolio(Data, Spec, Constraints)

上述代码未给出预期的结果。我知道我在设置约束时做错了什么。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

是的,它看起来像约束线。 the fPortfolio manual的第33页说

约束由字符串或字符向量定义 字符串。摘要约束:NULL,“LongOnly”,“Short”有 三种特殊情况,设置约束= NULL, constraints =“Short”,constraints =“LongOnly”。注意,这些 三个约束设置不允许与更多组合 一般约束定义。

如果你试试这个

library(fPortfolio)
Data = SMALLCAP.RET[,c("BKE", "GG", "GYMB", "KRON")]
Spec = portfolioSpec()  
setTargetReturn(Spec) = mean(colMeans(Data))
Constraints = "minW[1]=0.34"
efficientPortfolio(Data, Spec, Constraints)

你得到了

Title:
 MV Efficient Portfolio 
 Estimator:         covEstimator 
 Solver:            solveRquadprog 
 Optimize:          minRisk 
 Constraints:       minW 

Portfolio Weights:
   BKE     GG   GYMB   KRON 
0.3400 0.3390 0.1671 0.1538 

Covariance Risk Budgets:
   BKE     GG   GYMB   KRON 
0.3457 0.3421 0.2120 0.1002 

Target Return and Risks:
  mean     mu    Cov  Sigma   CVaR    VaR 
0.0243 0.0243 0.0962 0.0962 0.1592 0.1117 

我认为这就是你要找的东西。