Estoy tratando de ejecutar una prueba retrospectiva de forma vectorizada usando Python Pandas
y necesito calcular un rendimiento acumulativo de cartera a partir de los datos de precios y los datos de peso de activos.
Tengo dos Dataframes
:
-
precio de cada activos individuales (https://www.dropbox.com/s/ve9ll3t1j5owfuc/test_price.csv?dl=0)
-
peso de cada activos individuales (https://www.dropbox.com/s/hto9kq2g2wwfpm8/test_weight.csv?dl=0)
-
Ambos Dataframes tienen la misma forma
-
Los pesos de cada activo solo cambian al final del mes
- Los pesos de los demás días se llenan con el método 'ffill', por lo que los pesos son iguales durante cada mes
Lo que he descubierto:
-
portfolio_cum_rtn_df = (price_df.pct_change().fillna(0) + 1).multiply(weight_df).sum(axis=1)
-
portfolio_rtn_df = price_df.pct_change().fillna(0).multiply(weight_df).sum(axis=1)
portfolio_cum_rtn_df = (portfolio_rtn_df + 1).cumprod()
Ambos no son la forma correcta de calcular el rendimiento acumulativo de la cartera.
Necesito un poco de ayuda