Me gustaría hacer un simple backtest para una de mis estrategias de venta en corto. Estoy usando pandas dataframes. Así que tengo un dataframe como el siguiente, que indica cuántas posiciones para abrir / cerrar cada día.
position_change position_total
2018-01-03 1 1
2018-01-04 0 1
2018-01-05 0 1
2018-01-08 0 1
2018-01-09 0 1
2018-01-10 1 2
2018-01-11 0 2
2018-01-12 0 2
2018-01-16 0 2
También tengo un dataframe con los precios del activo:
price short_sell_change accum_change
2018-01-03 10 1 1
2018-01-04 9 1,1111111111 1,1111111111
2018-01-05 8 1,125 1,25
2018-01-08 7 1,1428571429 1,4285714286
2018-01-09 6 1,1666666667 1,6666666667
2018-01-10 5 1,2 2
2018-01-11 4 1,25 2,5
2018-01-12 3 1,3333333333 3,3333333333
2018-01-16 2,5 1,2 4
El marco de datos final (importe neto) debería ser:
net_amount
2018-01-03 10
2018-01-04 11,1111111111
2018-01-05 12,5
2018-01-08 14,2857142857
2018-01-09 16,6666666667
2018-01-10 25
2018-01-11 31,25
2018-01-12 41,6666666667
2018-01-16 50
Esto es fácil de hacer con Excel acumulando el importe neto anterior con una referencia a la celda anterior y añadiendo la información de position_chage:
¿Cómo se puede hacer esto a la manera de los pandas? (Lamentablemente supongo que la única forma posible es iterando sobre las filas)