cnil在python_在Python中使用cumprod()计算权益曲线
我在使用cumprod()計(jì)算復(fù)合收益時(shí)遇到困難。它從一開始就開始復(fù)利,但我只希望它在“最終指令”等于買入時(shí)開始,在“最終指令”等于賣出時(shí)停止,然后在下一個(gè)買入指令時(shí)重新設(shè)置。請看下面的例子。
下面的示例數(shù)據(jù)顯示了我希望看到的列“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
下面是“回溯測試”的計(jì)算。
時(shí)間1=IF(Final_Order=“Buy(t0)”,(6/7)*1000,Else 1000)=1000
時(shí)間2=IF(Final_Order=“Buy(t1)”,(5/6)*1000,Else 1000)=1000
時(shí)間3=IF(Final_Order=“Buy(t2)”,(7/5)*1000,Else 1000)=1400
時(shí)間4=IF(Final_Order=“購買(t3)”,(8/7)*1400,Else 1400)=1600
時(shí)間5=IF(Final_Order=“Buy(t4)”,(6/8)*1600,Else 1600)=1600
時(shí)間6=IF(Final_Order=“Buy(t5)”,(4/6)*1600,否則1600)=1600
時(shí)間7=IF(Final_Order=“Buy(t6)”,(5/4)*1600,Else 1600)=2000
時(shí)間8=IF(Final_Order=“Buy(t7)”,(7/5)*2000,Else 2000)=2800
時(shí)間9=IF(Final_Order=“Buy(t8)”,(9/7)*2800,Else 2800)=3600
時(shí)間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())
總結(jié)
以上是生活随笔為你收集整理的cnil在python_在Python中使用cumprod()计算权益曲线的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一汽奔腾x40怎么样 详细解析一汽奔腾x
- 下一篇: mysql录入foreigen错误_Py