我在使用cumprod()计算复合收益时遇到困难。它从一开始就开始复利,但我只希望它在“最终指令”等于买入时开始,在“最终指令”等于卖出时停止,然后在下一个买入指令时重新设置。请看下面的例子。
下面的示例数据显示了我希望看到的列“Backtest”的输出。
Time Adj_Price Final_Order Backtest
0 7 nan 1000
1 6 nan 1000
2 5 Buy 1000
3 7 Buy 1400
4 8 Sell 1600
5 6 Sell 1600
6 4 Buy 1600
7 5 Buy 2000
8 7 Buy 2800
9 9 Sell 3600
10 7 Sell 3600
11 7 Sell 3600
12 6 Sell 3600
下面是“回溯测试”的计算。
时间1=IF(Final_Order=“Buy(t0)”,(6/7)*1000,Else 1000)=1000
时间2=IF(Final_Order=“Buy(t1)”,(5/6)*1000,Else 1000)=1000
时间3=IF(Final_Order=“Buy(t2)”,(7/5)*1000,Else 1000)=1400
时间4=IF(Final_Order=“购买(t3)”,(8/7)*1400,Else 1400)=1600
时间5=IF(Final_Order=“Buy(t4)”,(6/8)*1600,Else 1600)=1600
时间6=IF(Final_Order=“Buy(t5)”,(4/6)*1600,否则1600)=1600