2 votos

¿Por qué mi media posterior difiere de los resultados de Idzorek?

He implementado dos expresiones diferentes ( Idzorek p.6, Walters p.51) de un cálculo de rentabilidad media posterior en un marco Black-Litterman. Mis resultados son los mismos, independientemente de la expresión implementada, pero si se comparan con los resultados publicados por Idzorek difieren. También el paquete R BLCOP devuelve resultados aún más confusos. ¿Qué me falta?

Este es el código correspondiente...

# Equilibrium returns from CAPM, Idzorek p.5
mu = c(0.08, 0.67, 6.41, 4.08, 7.43, 3.70, 4.80, 6.60)/100
assetNames = c("US bonds", "Int bonds", "US large grow", "US large value",
               "US small grow", "US small value", "Int dev EQ", "Int emerg EQ")
# Views (returns and pick matrix), Idzorek p.7, p.13
Q = c(5.25, 0.25, 2)/100 
P = matrix(0, ncol = 8, nrow = 3, dimnames = list(NULL, assetNames))
P[1,7] = 1
P[2,1] = -1; P[2,2] <- 1
P[3, 3:6] = c(0.9, -0.9, .1, -.1)
# Prior covariance-variance matrix, Idzorek table 5
entries = 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 )
sigma = matrix(entries, ncol = 8, nrow = 8)
# Equilibrium variance uncertainty, Idzorek p. 15
tau = 0.25
omega = diag(c((P[1,]%*%sigma%*%P[1,])*tau, 
               (P[2,]%*%sigma%*%P[2,])*tau, 
               (P[3,]%*%sigma%*%P[3,]))*tau)
# BL master formula for posterior mu in Walters, Appendix E
mu_JWalters = mu+(tau*sigma%*%t(P))%*%inv((tau*P%*%sigma%*%t(P))+omega)%*%(Q-P%*%mu)
# BL master formula for posterior mu in Idzorek p. 6
mu_Idzorek = inv(inv(tau*sigma)+(t(P)%*%inv(omega)%*%P))%*%((inv(tau*sigma)%*%mu)+(t(P)%*%inv(omega)%*%Q))
# BL posterior mu using BLCOP package
views = BLViews(P, Q,confidences=diag(omega), assetNames)
mu_BLCOP = posteriorEst(views=views,mu=mu,tau=tau,sigma=sigma)@posteriorMean
posteriorMuSet = round(cbind(mu_JWalters,mu_Idzorek,mu_BLCOP),digits=4)*100
dimnames(posteriorMuSet) = list(assetNames,c("Walters", "Idzorek", "BLCOP"))

... y el resultado es

               Walters Idzorek BLCOP
US bonds          0.05    0.05  0.08
Int bonds         0.32    0.32  0.67
US large grow     6.75    6.75  6.41
US large value    4.51    4.51  4.08
US small grow     7.95    7.95  7.43
US small value    4.15    4.15  3.70
Int dev EQ        5.11    5.11  4.80
Int emerg EQ      7.16    7.16  6.60

Esto es muy diferente de los resultados reales en Idzorek . Cualquier idea es muy apreciada.

0voto

Ryan Guill Puntos 6115

A cada cierre en esto: Atribuyo la diferencia con Idzorek a errores de redondeo. Y en un nodo lateral, Idzorek establece la varianza de la muestra igual a la varianza anterior, una cuestión que me mantuvo ocupado hasta que encontré ese detalle confirmado por el documento de Walters.

Finanhelp.com

FinanHelp es una comunidad para personas con conocimientos de economía y finanzas, o quiere aprender. Puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X