定义一个计算累计回报的函数
def cum_return(df, split_value):
#该基准收益为‘Return’的总和*100
cum_return = df[split_value:]['Return'].cumsum()*100
#将计算结果进行返回
return cum_return
#再定义一个计算使用策略交易的收益
def strategy_return(df, split_value):
#使用策略交易的收益为模型‘zgpa_Return’乘以模型预测的涨跌幅
df['Strategy_Return'] = df['Return']*df['Predict_Signal'].shift(1)
#将每日策略交易的收益加和并乘以100
cum_strategy_return = df[split_value:]['Strategy_Return'].cumsum()*100
#将计算结果进行返回
return cum_strategy_return
#定义一个绘图函数,用来对比基准收益和算法交易的收益
def plot_chart(cum_returns, cum_strategy_return, symbol):
#首先是定义画布的尺寸
plt.figure(figsize=(9,6))
#使用折线图绘制基准收益
plt.plot(cum_returns, '--',label='%s Returns'%symbol)
#使用折线图绘制算法交易收益
plt.plot(cum_strategy_return, label = 'Strategy Returns')
#添加图注
plt.legend()
plt.xticks(np.arange(0,286,36),rotation=20)
#显示图像
plt.show()
计算并且画图
首先来计算基准收益(预测集)
cum_returns = cum_return(df, split_value=len(X_train))
然后是计算使用算法交易带来的收益(同样只计算预测集)
cum_strategy_return = strategy_return(df, split_value=len(X_train))
用图像来进行对比
plot_chart(cum_returns, cum_strategy_return, 'zgpa')