计算单次收益 loc写法问题

来源:4-12 【实战作业】:尝试创建基于布林道的择时策略

小马不马虎

2021-09-29

老师你好:
计算单次收益方法,我打印后遇到点问题

def calculate_prof_pct(data):
    # 筛选信号不为0的,并且计算涨跌幅
    data.loc[data['signal'] != 0, 'profit_pct'] = data['close'].pct_change()
    print(data[['close','signal','profit_pct']])
    data = data[data['signal'] == -1]  # 筛选平仓后的数据:单次收益
    return data

这段中 data.loc[data[‘signal’] != 0, ‘profit_pct’] = data[‘close’].pct_change() 并没有排除信号为0元素,还是与上一个元素计算的相差百分比
打印后如下:

            close  signal  profit_pct
2020-01-02  16.46       0         NaN
2020-01-03  16.76       0         NaN
2020-01-06  16.65       0         NaN
2020-01-07  16.73       0         NaN
2020-01-08  16.25       0         NaN
2020-01-09  16.38       0         NaN
2020-01-10  16.28       0         NaN
2020-01-13  16.57       0         NaN
2020-01-14  16.35       0         NaN
2020-01-15  16.11       0         NaN
2020-01-16  15.93       0         NaN
2020-01-17  15.99       0         NaN
2020-01-20  16.05       0         NaN
2020-01-21  15.61       0         NaN
2020-01-22  15.69       0         NaN
2020-01-23  15.16       0         NaN
2020-02-03  13.65       0         NaN
2020-02-04  14.24       0         NaN
2020-02-05  14.27       0         NaN
2020-02-06  14.41      -1    0.009811
2020-02-07  14.26       0         NaN
2020-02-10  14.14       0         NaN
2020-02-11  14.43       0         NaN
2020-02-12  14.41       0         NaN
2020-02-13  14.29       0         NaN
2020-02-14  14.66       0         NaN
2020-02-17  14.99       0         NaN
2020-02-18  14.83       0         NaN
2020-02-19  14.87       0         NaN
2020-02-20  15.21       1    0.022865
2020-02-21  15.20       0         NaN
2020-02-24  14.86       0         NaN
2020-02-25  14.67       0         NaN
2020-02-26  14.62       0         NaN
2020-02-27  14.74       0         NaN
2020-02-28  14.14       0         NaN
2020-03-02  14.43      -1    0.020509
2020-03-03  14.36       0         NaN
2020-03-04  14.33       0         NaN
2020-03-05  15.01       0         NaN
2020-03-06  14.66       0         NaN
2020-03-09  14.09       0         NaN
2020-03-10  14.40       0         NaN
2020-03-11  14.33       0         NaN
2020-03-12  14.32       0         NaN
2020-03-13  14.16       0         NaN
2020-03-16  13.41       0         NaN
2020-03-17  13.08       0         NaN
2020-03-18  12.40       0         NaN
2020-03-19  11.93       0         NaN
2020-03-20  12.21       0         NaN
2020-03-23  11.85       0         NaN
2020-03-24  12.30       0         NaN
2020-03-25  12.55       0         NaN
2020-03-26  12.74       0         NaN
2020-03-27  12.83       0         NaN
2020-03-30  12.62       0         NaN
2020-03-31  12.49       0         NaN
2020-04-01  12.57       0         NaN
2020-04-02  12.65       0         NaN
2020-04-03  12.30       0         NaN
2020-04-07  12.56       0         NaN
2020-04-08  12.47       0         NaN
2020-04-09  12.43       0         NaN
2020-04-10  12.48       0         NaN
2020-04-13  12.28       0         NaN
2020-04-14  12.54       0         NaN
2020-04-15  12.55       1    0.000797
2020-04-16  12.37       0         NaN
2020-04-17  12.57      -1    0.016168
2020-04-20  12.67       1    0.007955
写回答

1回答

DeltaF

2021-11-25

尝试改成:
data.loc[data['signal'] != 0, 'profit_pct'] = data.loc[data['signal'] != 0, 'close'].pct_change()

0
0

程序员理财课 Python量化交易系统实战

打造一个自动交易平台,新手也能提升理财收益

1986 学习 · 405 问题

查看课程