量化交易学习(十七)backtrader基本概念6
今天这篇是backtrader文档的学习笔记。主要介绍了backtrader中的运算符重载。
官方文档链接:https://www.backtrader.com/docu/concepts
例子中的代码都需要导入以下库:
1 | # 导入backtrader |
今天这篇是backtrader文档的学习笔记。主要介绍了backtrader中的运算符重载。
官方文档链接:https://www.backtrader.com/docu/concepts
例子中的代码都需要导入以下库:
1 | # 导入backtrader |
今天这篇介绍小市值选股策略。
小市值选股策略是指以市值为标准,选取市场中市值较小的股票进行投资的策略。该策略基于小市值股票具有以下优势:
小市值选股策略的具体实施方法如下:
上一篇文章跟着一篇研报过了一遍安装流程,以及一些数据获取相关的命令。今天在跑研报提供的例子的时候发现有些代码已经跑不通了,估计是qlib有些api已经改了,在qlib源码中的examples找到了官方的入门例子。
workflow_by_code.ipynb 与 workflow_by_code.py 是用qlib跑回测的完整流程代码。在 tutorial 目录中的 detailed_workflow.ipynb 是详细工作流程的代码。
接下来照着 workflow_by_code.ipynb 把整个流程跑一遍。
导入 qlib 库:
今天试用了一下Qlib,一款微软开源的人工智能量化框架。它用起来没有backtrader那样简单易懂,网上相关的教程很少,我找到了一篇介绍Qlib的研报,大家想看这篇研报可以私信我。本文记录一下Qlib的安装及使用方法。
Qlib 是一个面向人工智能的量化投资平台,旨在利用人工智能技术从探索想法到实施生产,实现潜力,赋能研究,创造价值。Qlib 支持多种机器学习建模范式,包括监督学习、市场动态建模和强化学习。
Qlib支持Windows和Linux。推荐在Linux下使用Qlib。支持Python3,不过不支持最新的python,最高支持到python3.8。
在 Windows 上使用的话还得安装好 Microsoft C++生成工具,下载地址:https://visualstudio.microsoft.com/zh-hans/visual-cpp-build-tools/
我用 anaconda 创建了一个新的python3.8的环境来安装qlib,安装命令如下:
回测时,佣金的设置有时会被忽略,然而在频繁交易时过高的佣金会极大地影响收益,只有正确设置佣金才能让我们的回测更贴合实际。
首先来看一下交易佣金的收取规则(参考东方财富的帮助文档):
税费合计为个股交易费用和股息红利税费之和,其中不同证券品种的交易费用构成如下:
今天这篇是backtrader文档的学习笔记。主要介绍了怎么规范化(声明式)及不规范化(命令式)创建自定义指标的方法,通过声明式创建指标可以少写很多代码。
官方文档链接:https://www.backtrader.com/blog/2019-07-08-canonical-or-not/canonical-or-not/
规范 vs 非规范指标 (Canonical vs Non-Canonical Indicators)
这个问题经常以各种形式出现,例如:“如何使用 backtrader 最佳/规范地实现这个或那个指标?”
backtrader 的目标之一是尽可能灵活地支持各种情况和用例,因此答案很简单:“有多种方式”。对于指标(这是最常出现问题的对象),有以下三种实现方式:
今天这篇是backtrader文档的学习笔记。主要介绍了backtrader线的概念。
官方文档链接:https://www.backtrader.com/docu/concepts
例子中的代码都需要导入以下库:
1 | # 导入backtrader |
今天这篇是backtrader文档的学习笔记。主要介绍了backtrader中对切片的支持以及线的概念。
官方文档链接:https://www.backtrader.com/docu/concepts
例子中的代码都需要导入以下库:
1 | # 导入backtrader |
买入并持有,是一个最简单的策略,一般来说这个策略是用来衡量其他策略好坏的基础。也就是如果一个策略的收益最后还跑不赢买入并持有的策略的话说明这个策略是无效策略,白折腾一场。
在backtrader官网上有相关介绍:https://www.backtrader.com/blog/2019-06-13-buy-and-hold/buy-and-hold/
这里我只介绍最简单的买入并持有的策略代码:
1 | class BuyAndHold_1(bt.Strategy): |
在策略开始时调用start函数,获取当前的现金。随后调用nextstart函数把所有现金都用来购买股票,nextstart函数在第一个next函数调用开始前触发,nextstart函数只触发一次。最后在回测时间结束后调用stop函数,计算投资回报率。
在写前端页面的过程中,偶尔需要做一下分栏,在github上找了一圈后,发现一个很好用的库 splitpanes,它的github地址:https://github.com/antoniandre/splitpanes
分栏的效果是这样的:
官网还有更多的示例,这里就不再展示了。官网示例:https://antoniandre.github.io/splitpanes/
接下来讲一下怎么用这个库吧: