2012-02-05 81 views
3

我正在嘗試使用R包投資回報率進行簡單的投資組合優化問題。
我可以使用quadprog求解器「手動」得到結果,但我真的很想了解ROI包的工作原理。
不幸的是我遇到了一個錯誤,即使我在http://statmath.wu.ac.at/courses/optimization/Presentations/ROI-2011.pdf堅持提供的示例由斯特凡Theussl(幻燈片26,27)R:使用投資回報包

下面是代碼:

library(fPortfolio) 
library(ROI) 

data(LPP2005.RET) 
lppData <- 100 * LPP2005.RET[, 1:6] 
r <- mean(lppData) 
foo <- Q_objective(Q = cov(lppData), L = rep(0, ncol(lppData))) 
full_invest <- L_constraint(rep(1, ncol(lppData)), "==", 1) 
target_return <- L_constraint(apply(lppData, 2, mean), "==",r) 
op <- OP(objective = foo, constraints = rbind(full_invest, target_return)) 
sol <- ROI_solve(op, solver = "quadprog") 

錯誤消息我得到是:

錯誤(dir ==「< =」)| (DIR = Q = 「<」):操作僅僅爲數字,邏輯或複雜類型

感謝您的幫助是可能的 !

+0

我不知道這個包,但看起來像你有一個錯字。你的「or」中的第二項可能應該是'dir ==「<」'(其中「q」來自哪個DID?),否則兩者都應該使用'='。我的下一個猜測是,你的一個源變量不是所需的類型,如錯誤消息所示。 – 2012-02-05 14:16:06

+0

我無法複製這個。你有沒有撥打你還沒有提供的其他代碼?調用堆棧在出現錯誤時的樣子是什麼? (在錯誤發生後鍵入'traceback()') – 2012-02-06 11:11:45

+0

> traceback() 4:which((dir ==「<=」)|(dir = q =「<」)) 3:.quadprog_solve_QP (x)$ L,dir = constraints(x)$ dir,rhs =約束條件(x)(Q =條件(objective(x))$ Q,L =條件(objective(x))$ L, $ rhs, max = x $ maximum) 2:SOLVE(x,control) 1:ROI_solve(op,solver =「quadprog」) – bigsleep 2012-02-12 02:50:39

回答

1

事實證明,開發人員修復了ROI quadprog插件中的一個錯誤。

+0

當前版本(0.0-7)仍然存在此問題。 – mitchus 2012-05-18 09:13:44

相關問題