2

我正在使用多个约束构建有效的投资组合:即多头头寸和给定资产的最小权重= 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)

上面的代码没有给出想要的结果。我知道我在设置约束时做错了。任何帮助将不胜感激。

4

1 回答 1

2

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

约束由字符串或字符串向量定义。摘要 约束:NULL、“LongOnly”、“Short” 有三种特殊情况,设置约束=NULL、约束=“Short”和约束=“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 

我认为这就是您正在寻找的。

于 2011-12-20T01:49:08.453 回答