2011-12-13 32 views
2

我正在使用多重約束構造高效投資組合:即給定資產的多頭頭寸和最小權重= 34%(比如說)。我正在使用fPortfolio軟件包來執行此操作。根據手冊,可以通過創建一個字符串向量來提供複合約束。這種方法我有一些問題。以下是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) 

This Works。不過,我想通過添加最小重量條件來增加這一點

Spec = portfolioSpec() 
setTargetReturn(Spec) = mean(colMeans(Data)) 
Constraints = c("LongOnly","minW[1]=0.34") 
efficientPortfolio(Data, Spec, Constraints) 

上面的代碼沒有給出想要的結果。我知道我在設置約束條件時做錯了什麼。任何幫助將不勝感激。

回答

1

是的,它看起來像約束線。頁33的the fPortfolio manual

約束是由一個字符串或一個字符的向量字符串定義的 字符串。總結約束:NULL,「LongOnly」,「Short」有三種特殊情況,約束= NULL, constraints =「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 

我認爲這是你在找什麼。

+0

謝謝..我也這麼想。這是一個巨大的限制,不能對權重施加更復雜的限制。 – user227290

+0

@ user227290:如果你想要一些東西,你可以使用'Constraints =「minW = c(0.74,0,0,0)」'或'Constraints =「minW = c(0.74,-0.5,0,-1)更復雜的是:前者將是「僅限長」 – Henry