量化投资系列文章:

Backtrader 教程 — Python 量化投资实战教程(1)

Python 量化投资实战教程(2) —MACD策略

Python 量化投资实战教程(3) —A股回测MACD策略

Python 量化投资实战教程(4) —KDJ 策略

Python 量化投资实战教程(5) — A股回测KDJ 策略

Github仓库:https://github.com/Ckend/pythondict-quant


在之前的五篇系列文章中,计算收益率时没有考虑每次按策略进行交易时的收益率,而是单纯回测一段时间后,通过计算最终价值和本金的差距并除以本金,得到最终收益率。这样的计算方法其实是不准确的,因为交易时每次都采用100股的形式进行,在没有引入调仓技术前,我们应该以每次交易的平均收益率为准。

具体计算方法如下:

  • 在每次买入股票的时候,记录购买价格:self.buyprice
  • 在每次卖出股票的时候,计算收益率:(卖出价格-买入价格)/买入价格,忽略佣金。
  • 将每次交易收益存入params变量中,以便后续分析。

1.准备

开始之前,你要确保Python和pip已经成功安装在电脑上,如果没有,请访问这篇文章:超详细Python安装指南 进行安装。如果你用Python的主要目的是数据分析,可以直接安装Anaconda:Python数据分析与挖掘好帮手—Anaconda,内含许多科学计算模块。

Windows环境下打开Cmd(开始—运行—CMD),苹果系统环境下请打开Terminal(command+空格输入Terminal),准备开始输入命令安装依赖。

当然,我更推荐大家用VSCode编辑器,把本文代码Copy下来,在编辑器下方的终端运行命令安装依赖模块,多舒服的一件事:Python 编程的最好搭档—VSCode 详细指南。

在终端输入以下命令安装我们所需要的依赖模块:

pip install backtrader

看到 Successfully installed xxx 则说明安装成功。

Backtrader基本使用请看我们前一篇文章:
backtrader教程—量化投资实战教程(1)

本文全部代码,请在Python实用宝典后台回复:量化投资6 进行下载。

2.交易收益率

以第二篇的macd策略为例,首先初始化策略变量,用于记录股票交易的每次收益率:

class TestStrategy(bt.Strategy):params = (('code', 0),('profits', []))

第二,要在notify_order函数中记录购买时的价格:

    def notify_order(self, order):# 交易状态处理# Python实用宝典if order.status in [order.Submitted, order.Accepted]:returnif order.status in [order.Completed]:if order.isbuy():self.log("BUY EXECUTED, Price: %.2f, Cost: %.2f, Comm %.2f"% (order.executed.price, order.executed.value, order.executed.comm))# 记录买入价格self.buyprice = order.executed.priceself.buycomm = order.executed.commself.bar_executed_close = self.dataclose[0]

第三,在卖出的时候,根据卖出价格和买入价格计算收益率,并存入策略变量里的profits变量中:

    def notify_order(self, order):# 交易状态处理# Python实用宝典if order.status in [order.Submitted, order.Accepted]:returnif order.status in [order.Completed]:if order.isbuy():self.log("BUY EXECUTED, Price: %.2f, Cost: %.2f, Comm %.2f"% (order.executed.price, order.executed.value, order.executed.comm))# 记录买入价格self.buyprice = order.executed.priceself.buycomm = order.executed.commself.bar_executed_close = self.dataclose[0]else:self.log("SELL EXECUTED, Price: %.2f, Cost: %.2f, Comm %.2f"% (order.executed.price, order.executed.value, order.executed.comm))# 收益率计算profit_rate = float(order.executed.price - self.buyprice)/float(self.buyprice)# 存入策略变量self.params.profits.append(profit_rate)self.bar_executed = len(self)

在策略运行完毕后,可以通过以下变量获得策略变量里profits的值:

cerebro.runstrats[0][0].params.profits

结果如下:

[0.021676761236850372, -0.1054225992123598, 0.10678571428571423, 0.11044953855314062, 0.21502209131075103, 0.15729837813819164, 0.10841304881039966, 0.16918294849023086]

可以看到,每次该策略进行交易时的收益率,第一次盈利2%、第二次亏损10%、第三次盈利10%、第四次盈利11%…

有趣的是第五次,盈利了21%,这个策略明明是在盈利10%的时候卖出,为什么这次交易能盈利21%?

主要是在涨停板之下,股票无法卖出导致的。

这也给我们一个hint:这个策略写死的涨/跌10%卖出是不是过于死板了,有没有更合适的卖出策略?

大家可以尝试一下找到更好的卖出策略,下一篇文章中我们将重点讨论这个问题。

3. 平均收益率

使用numpy的mean函数,可以直接算出数组的平均值:

print(np.mean(profits))

结果如下:

0.09792573520161482

平均下来,该策略在这只股票上的收益率为9.7%.

但是这并不代表这个策略是可用的,因为有可能它只是适用于这只股票,是否适合所有股票需要通过回测A股来决定:Python 量化投资实战教程(3) —A股回测MACD策略

我们的文章到此就结束啦,如果你喜欢我们今天的Python 实战教程,请持续关注我们,如果对你有帮助,麻烦在下面点一个赞/在看哦,有任何问题都可以在下方留言区留言,我们都会耐心解答的!


Python实用宝典

不只是一个宝典

欢迎关注公众号:Python实用宝典

原文来自Python实用宝典:Python 量化投资实战教程(6) — 交易平均收益率

Python 量化投资实战教程(6) — 交易平均收益率相关推荐

  1. 可转债交易薅羊毛策略 — Python 量化投资实战教程(10)

    往期推荐 量化投资原来这么简单(1) 量化投资原来这么简单(2)-MACD策略(+26.9%) 量化投资原来这么简单(3) -A股回测MACD策略 Python 量化投资原来这么简单(4) -KDJ ...

  2. Python 量化投资实战教程(4) —KDJ 策略

    量化投资系列文章: Backtrader 教程 - Python 量化投资实战教程(1) Python 量化投资实战教程(2) -MACD策略(+26.9%) Python 量化投资实战教程(3) - ...

  3. Python 量化投资实战教程(2) —MACD策略(+26.9%)

    量化投资系列文章: Backtrader 教程 - Python 量化投资实战教程(1) Python 量化投资实战教程(2) -MACD策略(+26.9%) Python 量化投资实战教程(3) - ...

  4. Python 量化投资实战教程(3) —A股回测MACD策略

    量化投资系列文章: Backtrader 教程 - Python 量化投资实战教程(1) Python 量化投资实战教程(2) -MACD策略(+26.9%) Python 量化投资实战教程(3) - ...

  5. A股回测“孕线”策略 — Python 量化投资实战教程(8)

    上一篇系列文章<Python 量化投资实战教程(7)-孕线真的有用吗?>中我们讲到了孕线的形态和其基本的量化规则. 不过,当时只是基于一支股票对这个策略进行回测,数据量过少,其结果并不具有 ...

  6. 【转】Python 量化投资实战教程(1) — Backtrader 教程

    都说 Python 量化投资 非常好用,但是很多人都不知道该怎么做,甚至觉得是非常高深的知识,其实并非如此,任何人都可以在只有一点Python的基础上回测一个简单的策略. Backtrader是一个基 ...

  7. 【转】Python 量化投资实战教程(2) —MACD策略

    上次,我们简单地用Python 和 backtrader 使用最简单的买入卖出策略进行了一次量化投资分析: 这一次,让我们把策略变得复杂一点,使用MACD策略的信号线交叉交易法: 本系列教程源代码Gi ...

  8. Backtrader 基本使用教程 — 量化投资实战教程(1)

    都说Python可以用于量化投资,但是很多人都不知道该怎么做,甚至觉得是非常高深的知识,其实并非如此,任何人都可以在只有一点Python的基础上回测一个简单的策略. Backtrader是一个基于Py ...

  9. 量化投资python教程_零基础入门Python量化投资全套教程,30+经典教材打包送!暑期get新技能就靠它了!...

    量化投资是指使用数理分析.编程.建模等方式,通过对样本数据进行集中比对处理,找到数据之间的关系,制定量化策略,并使用编写的软件程序来执行交易,从而获得投资回报的方式. 在如今的量化投资领域,已经有了无 ...

最新文章

  1. 零基础学C++进腾讯,这份GitHub热榜的「从入门到高薪」请你收下
  2. Windows 远程桌面管理
  3. macOS 的头文件隐藏这么深
  4. [转载] JVM(一):JVM体系结构详解
  5. 深度linux桌面启动器,在Deepin桌面系统启动器中创建“我的世界”启动项
  6. 将DataRow转换为DataTable
  7. 网络传输中利用fastjson将复杂嵌套数据类型Json格式转换(GeoJsonPolygon)
  8. [转]SQLite内存数据库
  9. Linux kali2021 密码学PBC库安装
  10. MongoDB实战-分片概念和原理
  11. Redis 微博微信场景使用案例
  12. 5年码农吐血推荐10款用了就离不开的网站
  13. 字符串(String)
  14. vue的三种传值方式:父传子,子传父,子传子
  15. 费雪信息 (Fisher information)
  16. python 16.1 继承 重写 supper()方法 多重继承
  17. unity雪山场景+雪地素材包可以用于雪地雪山场景制作
  18. jsp药品销售管理系统
  19. 【html】常见的行标签(inline)、块标签(block)和行块标签(inline-block)特点及相互转换
  20. Ubuntu快速下载百度云文件

热门文章

  1. 计算机技术与软件专业资格(水平)考试 报考指南
  2. 俞敏洪:不要为眼前的得失而抓狂
  3. 哪个linux系统最安全,Linux系统是不是最安全的系统?
  4. onShow onHide页面生命周期不执行
  5. 炫美泡泡飞舞特效(源代码+效果)
  6. 预约挂号医院管理项目----service_hosp模块—医院管理
  7. bip39英文单词列表_快速使用语言工程构建瑞典的bip39单词表
  8. top命令-linux
  9. 我试过销声匿迹最后却无人问津(人生感悟)
  10. 科技圈女性太少 盖茨夫人也是这样想的