本人看法,也就比excel高级一点,距离backtrader这些框架又差一点。做最基础的测试可以,如果后期加入加仓功能,或者是止盈止损等功能,很不合适。只能做最简单的技术指标测试。所以别太当回事。

导包,常用包导入:

import os
import akshare as ak
import requests
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import talib as ta
%matplotlib inline
plt.style.use("ggplot")

获取数据,本文使用akshare中债券数据为对象分析:

bond_zh_hs_daily_df = ak.bond_zh_hs_daily(symbol="sh010107")

添加指标:

def backtest_trend_strategy(ohlc: pd.DataFrame,fast_period: int = 50,slow_period: int = 200,threshold: float = 1.0) -> pd.DataFrame:"""封装向量化回测的逻辑"""# 计算指标ohlc["fast_ema"] = talib.EMA(ohlc.close, fast_period)ohlc["slow_ema"] = talib.EMA(ohlc.close, slow_period)ohlc["pct_diff"] = (ohlc["fast_ema"] / ohlc["slow_ema"] - 1) * 100# 生成信号,1表示做多,-1表示做空,0表示空仓ohlc["signal"] = np.where(ohlc["pct_diff"] > threshold, 1, 0)ohlc["signal"] = np.where(ohlc["pct_diff"] < -threshold, -1, ohlc["signal"])# 计算策略收益率ohlc["returns"] = np.log(ohlc["close"] / ohlc["close"].shift(1))ohlc["strategy"] = ohlc["signal"].shift(1) * ohlc["returns"]ohlc["strategy_returns"] = ohlc["strategy"].cumsum()return ohlc

运行策略,并绘制图片:

data = strategy1(data)fig, ax = plt.subplots(nrows=3, ncols=1, figsize=(12, 15), sharex=True)ax[0].plot(data.index, data["close"])
ax[0].plot(data.index, data["fast_ema"])
ax[0].plot(data.index, data["slow_ema"])
ax[0].set_title("Price and Indicators")ax[1].plot(data.index, data["signal"])
ax[1].set_title("Strategy Position")data[["returns", "strategy"]].cumsum().plot(ax=ax[2], title="Strategy Return")

参数优化:

# 选择核心参数和扫描区间,其它参数保持不变
fast_period_rng = np.arange(5, 101, 5)total_return = []
for fast_period in fast_period_rng:ohlc = data.filter(["open", "high", "low", "close"])res = backtest_trend_strategy(ohlc, fast_period, 200, 1.0)total_return.append(res["strategy_returns"].iloc[-1])# 散点图:策略收益率 vs 快速均线回溯期
fig, ax = plt.subplots(figsize=(12, 7))
ax.plot(fast_period_rng, total_return, "r-o", markersize=10)
ax.set_title("Strategy Return vs Fast period")
ax.set_xlabel("fast_period")
ax.set_ylabel("return(%)")

使用pandas进行量化回测(akshare)相关推荐

  1. backtrader量化回测,基础篇,附MACD交易回测代码

    backtrader由德国工程师开发,拥有股票的回测,检测交易策略,支持期货实时交易,对于股票交易还在完善,我尝试了pylagotrade,vn.py,发现backtrader功能强大,交易策略全面, ...

  2. 【手把手教你】获取股票数据并进行量化回测——基于ADX和MACD趋势策略

    01 引言 不少喜欢量化的读者向我反馈,虽然已经掌握了Python的编程基础,但仍不知道如何切入到股票量化分析上,一是对如何获取股票数据还不太熟悉:二是拿到股票数据后不知道怎么做量化回测.实际上公众号 ...

  3. 手把手教你python实现量价形态选股知乎_【手把手教你】Python实现基于事件驱动的量化回测...

    01引言 使用矢量化方法(pandas)建立的基于研究的量化回测框架,不考虑交易的委托成交行为,与真实市场情况差距比较大.今天为大家介绍的是基于事件驱动的回测框架,这是一种十分复杂的回测系统,力图模拟 ...

  4. vnpy怎么创建策略并回测_【手把手教你】入门量化回测最强神器backtrader(一)

    1 引言 目前基于Python的量化回测框架有很多,开源框架有zipline.vnpy.pyalgotrader和backtrader等,而量化平台有Quantopian(国外).聚宽.万矿.优矿.米 ...

  5. 从零开始实现一个量化回测系统(一)

    持续行动1期 41/100,"AI技术应用于量化投资研资"之可转债投资. 今天是中秋节和教师节,祝大家中秋快乐,教师节快乐! 今天开始一个主题--"从零实现一个量化回测系 ...

  6. vnpy量化回测怎么做?一文带你了解

    有些量化教程让人摸不着头脑.他们一上来就教人怎么写策略,但你连回测都做不到.即使你有一个很棒的策略,你敢让他直接跑吗?因此,本期主要解决vnpy量化回测怎么做的问题.我们的目的很简单,无视策略,让回测 ...

  7. 【python量化】国内外基于python开发的量化回测框架

    文章目录 写在前面 Zipline PyAlgoTrade BackTrader Catalyst Vn.py 总结 写在前面 在进行量化策略开发时,必不可少的就是策略回测,虽然有很多量化回测平台如三 ...

  8. backtrader股票技术指标自定义与量化回测

    01 引言 股票市场自交易以来,人们就开始孜孜不倦地探索各种各样的投资理论,其中技术分析是重要的理论之一.实际上,技术分析是100多年前创建的股票投资理论,是投资者对股票量价变化长期观察归纳总结的若干 ...

  9. 【手把手教你】用backtrader量化回测海龟交易策略

    01 引言 海龟交易策略是比较经典的趋势交易系统之一,涵盖了从入场交易(品种选择).仓位管理(基于ATR加减仓).离场(触发条件)的整个过程.机械套用海龟交易法则在A股上进行交易可能效果不佳,但其交易 ...

最新文章

  1. python数据的格式输出_python数据类型,格式话输出
  2. C++Dynamic Array动态数组(附完整源码)
  3. x3-02 java_Day13 -- Java流程控制02
  4. Python 37 进程池与线程池 、 协程
  5. python使用技巧_python小技巧
  6. android学习笔记48——SQLite
  7. 如何测试Nginx的高性能
  8. typename的双重语义
  9. 【网络安全工程师面试合集】— 网络攻防技术演化历程
  10. Allatori java代码混淆
  11. 为什么配置智能DNS解析的时候一定要有默认线路?
  12. python躲方块_pygame实现的《躲小球》
  13. Linux 目录初识
  14. 高德 infowindow 绑定点击事件_滴滴联合腾讯地图上线聚合打车,开战高德打车 subtitle...
  15. 设定绘图区坐标轴及标题字体、字号的两种方法
  16. 2020-12-26 工作常用 Linux 操作:磁盘卸载、 自动化挂盘脚本 、磁盘分区合并、ansible、git 设置相关
  17. SuperMap地图绘制线段
  18. G1 垃圾收集器详解
  19. 数据分析课设(SPSS,EVIEWS,R)【理论】
  20. JS获取本机IP的工具类

热门文章

  1. python sqlserver 数据操作_python对Excel数据进行读写操作
  2. memory_buffer详解
  3. 25岁肥胖!美研究:晚年恐出现病态肥胖
  4. 周鸿祎详解360手机战略:赚钱不靠硬件靠服务
  5. OpenBSD 5.1 正式版发布
  6. zabbix安装过程
  7. 堆以及stl堆的使用
  8. 七个帮助你处理Web页面层布局的jQuery插件
  9. 【BZOJ 4103】 [Thu Summer Camp 2015]异或运算 可持久化01Trie
  10. CentOS 7 使用iptables防火墙