1 votos

Optimización inversa: encontrar los rendimientos que satisfacen los pesos específicos dados un rendimiento conocido

Aquí está la premisa: Tengo una cartera de tres activos, conozco la covarianza de los activos, la aversión al riesgo del cliente y el rendimiento esperado de uno de los activos. También tengo un conjunto de pesos deseado.

Entonces, 1) ¿cómo encuentro los rendimientos esperados para los dos activos que no conozco que me dan mi conjunto de pesos deseado y 2) si invierto la función ¿puedo recuperar los pesos deseados es decir, probar los resultados?

Aquí está mi código en Python:

import numpy as np

# Definir la función
def get_weight(expected_return, asset_covariance, risk_aversion):
   ER = expected_return
   S = asset_covariance
   L = risk_aversion
   return np.linalg.inv(L * S) @ ER

   # Datos dados
   risk_aversion = 1.0 # valor de ejemplo para L
   cov_matrix = np.array([[0.01, 0.002, 0.001], [0.002, 0.03, 0.004], [0.001, 0.004, 0.02]]) 
   # matriz de covarianza de ejemplo

   # Pesos deseados
   desired_weights = np.array([0, 0.55, 0.45])

   # Resolver para los rendimientos esperados
   expected_returns = risk_aversion * cov_matrix @ desired_weights
   expected_returns[0] = 0.009 # rendimiento dado 

   # Calcular los pesos usando la función original
   calculated_weights = get_weight(expected_returns, cov_matrix, risk_aversion)

   # Mostrar los resultados
   expected_returns, calculated_weights

Este es el resultado que obtengo. Claramente ves que no es circular. Espero que la matriz de pesos sea 0.00,0.55,0.45. Puedo entender que haya algún redondeo pero el resultado está bastante alejado.

introducir descripción de la imagen aquí

¿Dónde me equivoqué? Por favor haga referencia a Python en sus comentarios si puede.

1voto

Brendan Puntos 150

OP toma los rendimientos esperados de la optimización inversa de Black-Litterman, anula uno de los valores con un rendimiento esperado diferente, y encuentra que la cartera resultante no coincide con la original. Esto no es sorprendente.

La respuesta mencionada por @KaiSqDst es casi suficiente para dar una solución analítica (esto está muy cerca de ser una repetición de esa pregunta).

Esa respuesta (al menos cuando la estoy viendo) tiene la fórmula

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

y señala correctamente que el problema está mal determinado y no se puede invertir la matriz del lado derecho. Sin embargo, es posible, especialmente para un problema simple como este pero quizás no en el caso general, tomar un subconjunto de la matriz y resolver eso. Para tu propósito, esto sería excluir el primer activo que se asume que tiene un rendimiento esperado de 0.009. Esto sería como resolver los rendimientos excesivos de los otros activos. A partir de los rendimientos excesivos, agregarías 0.009 a cada uno para obtener rendimientos reales. El resultado es un 0.009 para el activo 1, 0.09275 para el activo 2 y 0.05725 para el activo 3.

Al verificar los resultados, debes asegurarte de asumir que los pesos suman 1. No es "circular" con varianza media sin restricciones.

0voto

Foxy Puntos 46

Haciendo referencia a la respuesta original al problema general y las definiciones en ella, recordamos la decisión de inversión óptima que podemos reescribir como:

$$ \begin{align} w^*&=w_0+\frac{b}{\gamma}\left(w_M-w_0\right)\\ \Rightarrow \gamma \Sigma \left(w^*-w_0\right)&=\mu-\frac{b}{a}\mathbf{1} \end{align} $$ Conocemos todos los elementos del vector en el lado izquierdo y conocemos un elemento de $\mu$, digamos $\mu_1$. Por lo tanto, podemos resolver trivialmente:

$$ \begin{align} \left(\gamma \Sigma \left(w^*-w_0\right)\right)_{(1)}&=\mu_1-\frac{b}{a}\\ \Rightarrow b&=a\mu_1 - a\left(\gamma \Sigma \left(w^*-w_0\right)\right)_{(1)} \end{align} $$

Dado el conocimiento de $b$, obtenemos:

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

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