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)
lol, 기뻤습니다. 때로는 신선한 눈으로 볼 수 있도록 질문을 게시해야합니다. – lebelinoz