Estoy trabajando en un trabajo para una empresa. Quieren que calcule el rendimiento de una cartera de valores a lo largo del tiempo, dados los rendimientos de los valores a lo largo del tiempo y la ponderación inicial de los valores. Puedo hacerlo para el caso normal de que no haya posiciones cortas, es decir, sin ponderaciones negativas. Sin embargo, para los casos de 20% largo neto y 0% largo neto, obtengo respuestas diferentes de sus casos de prueba después del primer período, es decir, después de que las ponderaciones diverjan de sus valores iniciales. Creo que esto se debe a que no estoy normalizando las ponderaciones correctamente. Para el caso largo del 100%, simplemente divido cada peso por la suma de todos los pesos para asegurarme de que suman 100%. ¿Cuál es el procedimiento equivalente para los demás casos?
Aquí están los rendimientos de la seguridad:
SAMPLE_RETURN_ARRAY = [
[0.02, 0.01, 0.08, 0.04, -0.05], # MSFT
[-0.02, 0.03, 0.06, 0.01, 0.05], # AAPL
[0.01, -0.04, -0.03, -0.05, -0.03], # GOOG
[0.04, 0.02, 0.01, -0.02, -0.01], # TSLA
[-0.01, -0.01, -0.06, -0.03, 0.02], # JPM
]
Y aquí están los pesos iniciales:
SAMPLE_WEIGHTS = [0.2, 0.3, 0.1, 0.05, 0.35]
estos son los resultados para el caso 100% largo:
correct_result = [-0.0025, 0.00440602, 0.01166979, -0.00329201, 0.00761087]
r1 = np.all(np.isclose(correct_result, result, atol=1e-5, rtol=0))
Efectivamente, consigo que sus resultados sean correctos con 5 decimales.
Estos son los resultados para un 20% de posiciones largas y un 0% de posiciones largas (es decir, neutralidad de mercado):
20%: correct_result = [0.0005, 0.00924038, 0.05129543, 0.01710086, -0.00349387]
0%: correct_result = [0.0015, -0.01729905, -0.05853928, -0.02974261, -0.00176708]
En el caso del 20%, las ponderaciones son [0.2, 0.3, 0.1, -0.05, -0.35]
y en el caso del 0% las ponderaciones son [-0.2, -0.3, 0.1, 0.05, 0.35]
.
¿Puede alguien ayudarme a entender cómo se calculan los 0,00924038 y -0,01729905 (los rendimientos de la cartera del segundo período)? No necesito el código (aunque puede proporcionármelo), sólo las matemáticas que hay detrás de los números. He probado un montón de cosas y obtengo números cercanos, pero nunca exactos o con 5 decimales.
Hágame saber si puedo proporcionarle más información.
Muchas gracias de antemano.