欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > python >内容正文

python

cnil在python_在Python中使用cumprod()计算权益曲线

发布时间:2025/4/5 python 71 豆豆
生活随笔 收集整理的这篇文章主要介绍了 cnil在python_在Python中使用cumprod()计算权益曲线 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

我在使用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

时间7=IF(Final_Order=“Buy(t6)”,(5/4)*1600,Else 1600)=2000

时间8=IF(Final_Order=“Buy(t7)”,(7/5)*2000,Else 2000)=2800

时间9=IF(Final_Order=“Buy(t8)”,(9/7)*2800,Else 2800)=3600

时间10=IF(Final_Order=“Buy(t9)”,(7/9)*3600,Else 3600)=3600

下面是我正在使用的代码。

data['Backtest'] = np.where(data['Final_Order'] == 'Buy',

((1 + data['Adj

Close'].pct_change(1)).cumprod())*1000,

data['Backtest'].ffill())

总结

以上是生活随笔为你收集整理的cnil在python_在Python中使用cumprod()计算权益曲线的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。