2017-10-18 9 views
2

私はあなたの助けを借りてこれを解決できるかどうかを見てみましょう。ポートフォリオを最適化するために使用されるRパッケージのポートフォリオ分析にはバグがあるようです。私はおそらく私ですが、他の誰かが同じ問題に遭遇した可能性があるかどうかを確かめたいのです。portfolioanalyticsボックスの制約エラー

資産当たりの割り当ての最小値と最大値の制約を追加する場合、私は、次のエラーを受け取る:ここ

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

は、前記エラーのコードである:

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が正しい数であります以下のコードを使用すると、コードは正常に動作します。

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

ネヴァーマインド、私は、私の問題を発見しました。ええ、DUH !!!

申し訳ありません。

+0

lol、私はあなたがそれを理解してうれしいです。ときどき新鮮な目でそれを見るために質問を投稿する必要があります。 – lebelinoz