[R-SIG-Finance] BLCOP / Idzorek working paper

Heiko Mayer Heiko-Mayer at gmx.de
Fri May 15 08:25:47 CEST 2009


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
--



More information about the R-SIG-Finance mailing list