2011-12-13 4 views
2

여러 조건, 즉 주어진 자산의 최소 순위와 최소 가중치를 사용하여 효율적인 포트폴리오를 구성하고 있습니다 (말하자면 34 %). 나는 이것을하기 위해 fPortfolio 패키지를 사용하고있다. 매뉴얼에 따르면 문자열 벡터를 작성하여 복합 제약 조건을 제공 할 수 있습니다. 그 접근 방식에 몇 가지 문제가 있습니다. 다음은 fPortfolio 매뉴얼의 예제입니다.f 포트폴리오 포트폴리오를 사용하여 포트폴리오 최적화에서 여러 제약 조건

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

예, 제약 선처럼 보입니다. 페이지 33/the fPortfolio manual

문자열을 포함하거나 제약 조건이 문자 문자열로 정의됩니다. 요약 제약 조건 : 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 

를 얻을.

+0

감사합니다. 나는 많이 생각했습니다. 이것은 가중치에 대해 더 복잡한 제한을 가할 수없는 거대한 한계입니다. – user227290

+0

@ user227290 : 무언가를 원한다면'Constraints = "minW = c (0.74,0,0,0)"'또는'Constraints = "minW = c (0.74, -0.5,0, -1) 더 복잡하다 : 전자는 "Long only" – Henry

관련 문제