2017-10-18 6 views
2

내가이 문제를 해결할 수 있는지 알아 보겠습니다. 포트폴리오를 최적화하는 데 사용 된 R 패키지 포트폴리오 분석에는 버그가있는 것으로 보입니다. 가장 가능성이 있지만 다른 사람이 동일한 문제와 해결책을 찾았는지 확인하고 싶습니다. 자산마다 할당의 최소 및 최대의 제한을 추가 할 때portfolioanalytics 상자 제약 조건 오류

난 다음 오류받을 :

c.min = c(0.10,0.15,0.10,0.50,0.15,0,0,0,0,0) 
c.max = c(.20,.20,.20,.20,.20,.20,.20,.20,.20,.20) 
port_spec <- add.constraint(portfolio = port_spec,type = "box",enabled = TRUE,min = c.min, 
          max = c.max) #Min Posiion & Max position 

10 정확한 수는 : 여기서

Error in sample.int(length(x), size, replace, prob) : 
    invalid first argument 

는 상기 에러 코드 인 자산의 경우 다음을 사용할 때 코드가 잘 실행됩니다.

port_spec <- add.constraint(portfolio = port_spec,type = "box",enabled = TRUE,min = .00, max = .25) #Min Posiion & Max position 

다음 링크를 통해 게시자가 요청하는 정확한 구문을 사용하십시오. publishers doc

이전에이 문제를 본 사람이 있습니까?

여기 포트폴리오 최적화를 위해 사용되는 전체 코드입니다 : 당신이 최적화를 허용하지 않는, 그것은 = 1 인 분을 요약하면

port_spec <- NULL 
port_spec <- portfolio.spec(colnames(returns.monthly)) 

## Add contraints 
#add contraint "full_invested" portfolio must equal 100% allocation 
port_spec <- add.constraint(portfolio = port_spec,type = "weight_sum",min_sum = .97, max_sum = 1.01) 
port_spec <- add.constraint(portfolio = port_spec,type = "long_only")#add constriant "long_only" not allowing the portfolio to go short 

c.min = c(0.10,0.15,0.10,0.50,0.15,0,0,0,0,0) 
c.max = c(.20,.20,.20,.20,.20,.20,.20,.20,.20,.20) 
port_spec <- add.constraint(portfolio = port_spec,type = "box",enabled = TRUE,min = c.min, 
          max = c.max) #Min Posiion & Max position 
port_spec <- add.constraint(port_spec,type = "return",return_target=mean.return) 
port_spec <- add.constraint(port_spec,type = "risk",risk_target=mean.risk) 
##Add portfolio objectives 

#port_spec <- add.objective(portfolio = port_spec,type = "return",name = "sr_annualized",arguments = list(scale = 12,rfr = .02)) 
port_spec <- add.objective(portfolio = port_spec,type = "return",name = "mean") 
#port_spec <- add.objective(portfolio = port_spec,type = "risk",name = "StdDev") 
#port_spec <- add.objective(portfolio = port_spec,type = "risk",name = "ES",arguments = list(p=0.90,method = "gaussian")) 



# Add dummy objectives for ploting 
port_spec <- add.objective(portfolio = port_spec,type = "risk",name = "StdDev",multiplier=0) 
#port_spec <- add.objective(portfolio = port_spec,type = "return",name = "mean",multiplier=0) 

print(port_spec) 
## Run optimization 
opt <- optimize.portfolio(returns.monthly, portfolio = port_spec,optimize_method="DEoptim",trace = TRUE) 

답변

0

신경 끄시 고, 나는 나의 문제를 발견했다. 음, 아!

죄송합니다.

+0

lol, 기뻤습니다. 때로는 신선한 눈으로 볼 수 있도록 질문을 게시해야합니다. – lebelinoz