1 votos

Optimización inversa: ¿Cómo generar los rendimientos esperados de la cartera dadas las ponderaciones y una serie de restricciones en esas ponderaciones?

Tengo la siguiente función en Python. Mi objetivo es deshacer los retornos esperados asociados con ciertos pesos de cartera dados una serie de suposiciones.

A partir de esto quiero generar los retornos esperados que obtendría con una cartera que tiene una serie de restricciones. Mi expectativa es que debería obtener el mismo resultado de una función que no está restringida y esta, siempre y cuando los pesos dados a ambas funciones estén dentro de las mismas restricciones y todos los otros inputs sean los mismos. Pero hasta ahora ese no es el caso. ¿Alguien puede iluminarme sobre dónde estoy yendo mal?

Función con restricciones (no funciona del todo bien):

def reverse_optimze_expected_return(weights, asset_covariance, weight_limits, risk_aversion):

    n_assets = len(weights)

    expected_return = cp.Variable(n_assets)

    objective = cp.Minimize(cp.quad_form(weights, asset_covariance))

    constraints = [
        cp.sum(weights) == 1,
        cp.quad_form(weights, asset_covariance) <= risk_aversion,
        ]

    for i in range(n_assets):
        constraints.append(weights[i] >= weight_limits[i][0] / 100)
        constraints.append(weights[i] <= weight_limits[i][1] / 100)

    problem = cp.Problem(objective, constraints)
    problem.solve()

    optimize_expected_returns = expected_return.value

    return optimize_expected_returns

Aquí está la función sin restricciones:

def get_expected_return(weight, asset_covariance, risk_aversion):

    w = weight
    S = asset_covariance
    L = risk_aversion 

    return L * S @ w

Los pesos son los siguientes [0.55, 0.45, 0.0]

La covarianza de los activos es esta matriz

enter image description here

La aversión al riesgo es 3.1880326818259768

Y los límites de peso son [(42.5, 67.5), (32.5, 57.5), (0, 25)]

1voto

Foxy Puntos 46

Esto aún no es una respuesta, pero es demasiado largo para un comentario. Comencemos sin las restricciones de la caja e impongamos únicamente $\sum_iw_i=1, es decir, w^T\mathbf{1}=1$:

$$ \begin{align} \max_w\quad & w^T\mathbf{\mu}-\frac{1}{2}\gamma w^T\mathbf{\Sigma} w\\ \mathrm{s.t.}\quad &w^T\mathbf{1}=1 \end{align} $$

Después de resolver el Lagrangiano, la solución es

$$ w^*(\gamma)=w_0+\frac{b}{\gamma}\left(w_M-w_0\right) $$

Canónicamente, $$ \begin{align} w_0\equiv\frac{\mathbf{\Sigma}^{-1}\mathbf{1}}{\mathbf{1}^T\mathbf{\Sigma}^{-1}\mathbf{1}}\equiv\frac{\mathbf{\Sigma}^{-1}\mathbf{1}}{a}\\ w_M\equiv\frac{\mathbf{\Sigma}^{-1}\mathbf{\mu}}{\mathbf{1}^T\mathbf{\Sigma}^{-1}\mathbf{\mu}}\equiv\frac{\mathbf{\Sigma}^{-1}\mathbf{\mu}}{b}\\ \end{align} $$

Dado $w^*, \gamma, \Sigma$ observados, por supuesto que podemos resolver fácilmente para $w_0$ y $a$, pero no podemos resolver para $\mu$, ya que el sistema de ecuaciones siguiente (derivado al reorganizar la ecuación anterior) está indeterminado y no se puede resolver para $\mu$ ya que la matriz del lado derecho no es invertible:

$$ \gamma\Sigma(w^*-w_0)=\left(\mathbf{I}-\frac{1}{a}\mathbf{1}\mathbf{1^T}\Sigma^{-1}\right)\mu $$

Lo que podemos decir, sin embargo, es que $w_m-w_0$, y por lo tanto $\mathbf{\mu-1}$ (elementwise), escala con $w^*-w_0$, es decir,

$$ w_M-w_0\propto w^*-w_0 $$

Agregar restricciones de caja ayuda un poco a la solución, pero en mi humilde opinión no es información suficiente para resolver este problema. Por lo tanto, incluso la observación de una segunda decisión de inversión $w(\gamma_2)$ no agrega información, ni el conocimiento del rendimiento esperado de la cartera $\mu_i=w(\gamma_i)^T\mathbf{\mu}$.

En mi opinión, dado las restricciones de caja, lo único que podrías hacer en este punto es trazar diferentes niveles de $\mu(b)$ como función de $b$:

$$\mu(b)=\gamma\Sigma\left(w(\gamma)-w_0\right)+\frac{b}{a}\mathbf{1}$$.

Dado que esta es una ecuación lineal en $b$, el conjunto de $\mu$ (y $b$) factibles es compacto y se traza con bastante facilidad. Además, al agregar niveles de $\frac{b}{a}$, elemento por elemento, las diferencias entre los diferentes elementos en $\mu_i$ siempre son las mismas y son iguales a la verdadera diferencia.

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