5 votos

Limitación de la cartera de acciones activas

Estaba leyendo un artículo de Cremers y Petajisto, llamado

¿Cómo de activo es su gestor de fondos? Una nueva medida que predice el rendimiento

En el documento original de 2009 tienen la siguiente medida para la cuota activa

1-sum(min(w_pfo, w_bench))

que más tarde revisaron como

sum(abs(w_pfo-w_bench))*0.5

donde a mi entender, la única diferencia es básicamente cómo se trata la infraponderación del índice de referencia, es decir, lo negativo anula lo positivo.

Así que ahora a mi problema, quiero implementar esto en mi código de optimización de la cartera y estoy luchando cómo formular la restricción de una manera conforme a DCP. ¿Cómo puedo obtener una formulación convexa con un umbral de límite inferior? Básicamente quiero asegurarme de que mi cartera tiene un porcentaje mínimo de posiciones activas fuera del índice de referencia. En CVXPY estoy intentando s.th. como

sum_entries(abs(w_pfo - w_bench))*0.5 >= 0.8  

y

1-sum_entries(min_elemwise(w_pfo,w_bench)) >= 0.8  

donde w_pfo es mi variable solver, sé que será un problema convexo cuando volteo la desigualdad a <= 0.8.

Cualquier aportación sobre cómo implementar esto sería genial.

2voto

Paul Sheldrake Puntos 1571

El problema que propones tiene un conjunto factible no convexo, por lo que no puedes formularlo de forma conforme a DCP. Para ver esto, considere una cartera de referencia de 2 elementos [1, 1]. Usted está optimizando sobre carteras [x, y] tales que |x-1| + |y-1| >= 1,6. Observe que [2, 0] y [0, 2] son carteras factibles, pero la combinación convexa 0,5[2, 0] + 0,5[0, 2] = [1, 1] no es factible. Por tanto, su conjunto factible no es convexo.

Como usted señala, si en lugar de ello restringe las carteras para que sean suficientemente similares a la cartera de referencia en lugar de suficientemente disímiles, entonces el problema es convexo y es fácil formularlo de una manera conforme a la DCP utilizando las restricciones exactas que usted enumeró en su pregunta.

0voto

AK88 Puntos 1368

Inicialmente pensé que esto podría hacerse en R usando fPortfolio paquete, pero no pudo resolverlo. Entonces @josliber de SO sugirió lo siguiente con quadprog paquete:

library(quadprog)
set.seed(1111)
df = matrix(rnorm(3*100), 100)

cov.mat = cov(df)
wbench <- c(0.4, 0.5, 0.1)
n <- length(wbench)

cov.mat.exp <- cbind(rbind(cov.mat, matrix(0, n, n)), matrix(0, 2*n, n))
cov.mat.exp <- cov.mat.exp + 1e-8*diag(2*n)  ## make it positive definite

consts <- rbind(rep(c(1, 0), c(n, n)),
                 rep(c(0, 1), c(n, n)),
                 cbind(matrix(0, n, n), -diag(n)),
                 cbind(diag(n), -diag(n)))

rhs <- c(1, 0.7, -w.bench, rep(0, n))

mod <- solve.QP(Dmat = cov.mat.exp,
                dvec = rep(0, 2*n),
                Amat = t(consts),
                bvec = rhs,
                meq = 1)
wpf <- head(mod$solution, n)
y <- tail(mod$solution, n)
wpf
y

0 votos

Gracias hombre voy a ver si puedo entender y portar esto a mi framework de python

0 votos

Tenga en cuenta que la pregunta que usted planteó y yo respondí en Stack Overflow difiere de la pregunta formulada aquí por Markuss. Markuss quiere carteras que sean suficientemente disímiles de una cartera de referencia, pero tú preguntaste en Stack Overflow sobre carteras que sean suficientemente similares a una cartera de referencia.

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