Python akshare 回测均线交叉策略的收益
1.Python akshare 回测均线交叉策略的收益
针对均线交叉策略的收益,进行回测
从 akshare 获取数据的代码,可从上一篇文章中获取[Python 通过 akshare 绘制中国平安均线并显示买卖点
但是由于需要进行回测,就需要很长时间的数据,只是使用30天的数据,是无法看出来策略的好坏的,这次直接获取所有的数据。
pingan = ak.stock_zh_a_daily(symbol=symbol, adjust="qfq")
data = pingan.reset_index()
计算5日线和10日线的代码如下
data['1'] = data['close']
data['5'] = data.close.rolling(5).mean()
data['10'] = data.close.rolling(10).mean()
计算买卖信号
data['Signal'] = 0
# 短期均线上穿长期均线,产生买入信号
data.loc[data['5'] > data['10'], 'Signal'] = 1
# 短期均线下穿长期均线,产生卖出信号
data.loc[data['5'] < data['10'], 'Signal'] = -1
这篇针对5日线和10日线上穿和下穿的信号,进行数据回测,看下按照均线买卖的话收益率如何。使用的还是中国平安(sh601318)的数据
-
计算每日收益率
data['Daily_Return'] = data['close'].pct_change()
-
计算策略收益
data['Strategy_Return'] = data['Signal'].shift(1) * data['Daily_Return']
-
计算累计收益
data['Cumulative_Return'] = (1 + data['Strategy_Return']).cumprod()
-
绘制折线图
plt.figure(figsize=(10, 6)) plt.plot(data['Cumulative_Return'], label='策略收益回测', color='b') plt.plot(data['close'] / data['close'].iloc[0], label='股票', color='g') plt.title("策略收益回测 vs. 股票") plt.xlabel("日期") plt.ylabel("策略积累收益") plt.legend() plt.show(block=True)
绘制的折线图如下:

直面挑战,躬身入局
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
2016-01-06 Unable to execute dex: Multiple dex files define异常的解决办法
2016-01-06 Android开发之ADT导入Support Library
2016-01-06 Android开发之内容观察者
2016-01-06 Android开发之读写联系人