Hi all, I have read the working paper from Idzorek regarding Black Litterman as shown below. As the examples of the BLCOP manuals are based on that paper, I have expected equal results. Posterior looks good (beside bonds) , but the optimized portfolio weights (Idzorek: page 17, table 6) are completly different. No bonds are allocated. Beside long only, I cannot see any constraints, therefore I assume "solve.QP" used in "optimalPortfolios" should work. Any ideas? As markets tend to overreact significantly sometimes, it might not the best idea using market cap. Would it be a good idea to start with risk (sigma) adjusted weights and re-optimize these to get the prior returns? library(BLCOP) ## example from Thomas M. Idzorek's paper "A STEP-BY-STEP GUIDE TO THE BLACK-LITTERMAN MODEL" # http://corporate.morningstar.com/ib/documents/MethodologyDocuments/IBBAssociates/BlackLitterman.pdf x <- c(0.001005,0.001328,-0.000579,-0.000675,0.000121,0.000128,-0.000445,-0.000437 , 0.001328,0.007277,-0.001307,-0.000610,-0.002237,-0.000989,0.001442,-0.001535 , -0.000579,-0.001307,0.059852,0.027588,0.063497,0.023036,0.032967,0.048039 , -0.000675,-0.000610,0.027588,0.029609,0.026572,0.021465,0.020697,0.029854 , 0.000121,-0.002237,0.063497,0.026572,0.102488,0.042744,0.039943,0.065994 , 0.000128,-0.000989,0.023036,0.021465,0.042744,0.032056,0.019881,0.032235 , -0.000445,0.001442,0.032967,0.020697,0.039943,0.019881,0.028355,0.035064 , -0.000437,-0.001535,0.048039,0.029854,0.065994,0.032235,0.035064,0.079958 ) varCov <- matrix(x, ncol = 8, nrow = 8) mu <- c(0.08, 0.67,6.41, 4.08, 7.43, 3.70, 4.80, 6.60) / 100 pick <- matrix(0, ncol = 8, nrow = 3, dimnames = list(NULL, letters[1:8])) pick[1,7] <- 1 pick[2,1] <- -1; pick[2,2] <- 1 pick[3, 3:6] <- c(0.9, -0.9, .1, -.1) confidences <- 1 / c(0.000709, 0.000141, 0.000866) # Replaced wrong value "0.00709". Zero was missing. myViews <- BLViews(pick, c(0.0525, 0.0025, 0.02), confidences, letters[1:8]) myPosterior <- posteriorEst(myViews, tau = 0.025, mu, varCov ) optimalPortfolios(myPosterior) Thanks, Heiko --
BLCOP / Idzorek working paper
2 messages · Heiko Mayer, Francisco Gochez
Hi Heiko, Thanks for bringing this to my attention. I will look into the matter over the weekend to see what might be wrong. In reality, "optimalPortfolios" is more or less a "toy" to experiment with, and not meant to be used as a serious tool. The next version of the package, which will be out soon, will interface with some of Rmetric's portfolio optimization tools. I am in the process of discussing how best to do this with Prof. Diethelm Wuertz at the moment. Kind regards, Francisco mango solutions S & R Consulting and Training +44 (0)1249 767 700 -----Original Message----- From: r-sig-finance-bounces at stat.math.ethz.ch [mailto:r-sig-finance-bounces at stat.math.ethz.ch] On Behalf Of Heiko Mayer Sent: 15 May 2009 07:26 To: r-sig-finance at stat.math.ethz.ch Subject: [R-SIG-Finance] BLCOP / Idzorek working paper Hi all, I have read the working paper from Idzorek regarding Black Litterman as shown below. As the examples of the BLCOP manuals are based on that paper, I have expected equal results. Posterior looks good (beside bonds) , but the optimized portfolio weights (Idzorek: page 17, table 6) are completly different. No bonds are allocated. Beside long only, I cannot see any constraints, therefore I assume "solve.QP" used in "optimalPortfolios" should work. Any ideas? As markets tend to overreact significantly sometimes, it might not the best idea using market cap. Would it be a good idea to start with risk (sigma) adjusted weights and re-optimize these to get the prior returns? library(BLCOP) ## example from Thomas M. Idzorek's paper "A STEP-BY-STEP GUIDE TO THE BLACK-LITTERMAN MODEL" # http://corporate.morningstar.com/ib/documents/MethodologyDocuments/IBBAs sociates/BlackLitterman.pdf x <- c(0.001005,0.001328,-0.000579,-0.000675,0.000121,0.000128,-0.000445,-0.0 00437 , 0.001328,0.007277,-0.001307,-0.000610,-0.002237,-0.000989,0.001442,-0.00 1535 , -0.000579,-0.001307,0.059852,0.027588,0.063497,0.023036,0.032967,0.04803 9 , -0.000675,-0.000610,0.027588,0.029609,0.026572,0.021465,0.020697,0.02985 4 , 0.000121,-0.002237,0.063497,0.026572,0.102488,0.042744,0.039943,0.065994 , 0.000128,-0.000989,0.023036,0.021465,0.042744,0.032056,0.019881,0.032235 , -0.000445,0.001442,0.032967,0.020697,0.039943,0.019881,0.028355,0.035064 , -0.000437,-0.001535,0.048039,0.029854,0.065994,0.032235,0.035064,0.07995 8 ) varCov <- matrix(x, ncol = 8, nrow = 8) mu <- c(0.08, 0.67,6.41, 4.08, 7.43, 3.70, 4.80, 6.60) / 100 pick <- matrix(0, ncol = 8, nrow = 3, dimnames = list(NULL, letters[1:8])) pick[1,7] <- 1 pick[2,1] <- -1; pick[2,2] <- 1 pick[3, 3:6] <- c(0.9, -0.9, .1, -.1) confidences <- 1 / c(0.000709, 0.000141, 0.000866) # Replaced wrong value "0.00709". Zero was missing. myViews <- BLViews(pick, c(0.0525, 0.0025, 0.02), confidences, letters[1:8]) myPosterior <- posteriorEst(myViews, tau = 0.025, mu, varCov ) optimalPortfolios(myPosterior) Thanks, Heiko -- _______________________________________________ R-SIG-Finance at stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-sig-finance -- Subscriber-posting only. -- If you want to post, subscribe first.