扫地僧backtrader量化回测与实盘
文章平均质量分 50
backtrader从回测到实盘,从股票到期货、期权,从经典量化到机器学习的闭环生态系统教程
扫地僧量化
量化极客!致力于最前沿的量化回测与交易技术分享与普及。
展开
-
扫地僧Backtrader给力教程:量化回测核心篇(全集)
扫地僧原创出品国内首本全面、系统介绍backtrader量化回测平台的技术教程《扫地僧Backtrader给力教程系列一:股票量化回测核心篇》,并开发了视频课程。全书12章,A4大开本。从backtrader基本的核心概念如线对象,策略迭代表等,到开发一个交易策略所需的各方面的知识,都进行了详细介绍,并配有大量源码。视频课程即将在腾讯课堂推出,敬请关注。...原创 2020-08-27 09:01:47 · 8257 阅读 · 2 评论 -
Qlib+backtrader:2014.1.1-2023.9.20最新回测结果,可以实盘吗?
今年以来,在研究了qlib和backtrader的基础上,把二者结合起来进行了一个策略研究。简单说就是用qlib在200只股票的股票池中进行滚动训练与预测(walk forward),总体数据范围是2005到2023年,以20日间隔滚动训练和预测,最终得到2014.1.1-2023.9.20共10年测试期的收益率预测结果。将预测结果代入backtrader进行回测,得到如下回测结果。原创 2024-01-18 11:15:18 · 721 阅读 · 1 评论 -
backtrader策略库:强化学习二:应用
介绍了梯度提升gradient ascent的概念,本文介绍如何使用梯度提升最大化回报函数。文末有github源码链接。原创 2024-01-17 07:40:04 · 479 阅读 · 0 评论 -
backtrader策略库:强化学习一: 梯度提升( Gradient Ascent)
本文来自,文末含源码链接。原创 2024-01-17 07:38:24 · 897 阅读 · 0 评论 -
backtrader策略库:基于bt外调仓表的多因子选股策略
然后再将调仓表传给 Backtrader ,让 Backtrader 读取调仓表上的信息,进行策略回测。调仓表上存的选股结果,其实就是每个调仓日应该持有哪些股票以及对应的持仓权重。扫地僧教程中的多股操作定期再平衡案例,是一种多因子选股策略,它是在backtrader内部,定期选股,确定各股权重(采用的是等权法)。...原创 2022-08-30 18:09:34 · 1942 阅读 · 2 评论 -
扫地僧Backtrader量化回测与交易闭环生态系列教程
backtrader是著名的开源量化框架,作者叫Daniel Rodriguez,就是下图这位老兄。这个作者是德国人,工作在德国慕尼黑,编程水平极高,比国内一些非专业程序员编写的回测平台代码质量高太多。backtrader框架编码简洁优雅,用户编写回测策略所需代码量极少。遗憾的是这位德国老兄写的backtrader英文文档与英国人的写作风格很不一样,能说一句绝不说两句,还经常夹杂一些古怪的俚语,说实话对中国人有些晦涩难懂(有的老外看了也说难懂),严重妨碍了backtrader在中国的普及。比如backtra原创 2022-06-11 08:17:15 · 1247 阅读 · 0 评论 -
backtrader高级walk forward多股滚动回测
许多朋友在做策略参数优化时,都陷入了一个误区,那就是简单地在历史数据上执行参数优化,发现最优参数下,策略绩效极好,然后使用这个最优参数投入实盘,这样做基本等于自杀,过拟合的可能性太大了。稍微好一点的做法,是将历史数据分层成两部分,一部分是训练集,另一部分是测试集。在训练集上做参数优化,然后拿到最优参数后,在测试集上回测,看看回测效果如何,如何好,就投入实盘,如何回测效果不好,就继续修改策略。这样做,比较浪费数据,测试量也不够大。更好的评价参数优化效果的方法,是所谓walk forward滚动回测的方法。这里原创 2022-06-10 17:31:35 · 1600 阅读 · 1 评论 -
backtrader:终于可以集成pyfolio了
点此获取扫地僧backtrader技术教程===============之前,我写了一篇文章“backtrader高级专题:策略绩效评价:用不了pyfolio?还有quantstats”,提到backtrader现在不能直接集成pyfolio,但是可以集成quantstats,进行策略绩效展示。最近,我再次研究了pyfolio,发现现在已经可以集成到backtrader了。至少我自己测试通过了。注意,pyfolio只能用于notebook里,而quantstats可用于notebook和普通.py文件原创 2021-08-26 17:31:11 · 1935 阅读 · 0 评论 -
新版backtrader国内期货实盘模拟交易发布
终于完成了基于ctp接口的国内期货实盘模拟backtrader接口文件和例子文件。我们采用了ctpbee接口连接ctp。具体案例和安装使用方法请进qq群 1125384417 下载“新版backtrader_ctp国内期货实盘模拟交易.zip”....原创 2021-05-16 19:35:03 · 1975 阅读 · 0 评论 -
backtrader进行期货回测要注意的问题:保证金等设置,拼接滚动合约
点此获取backtrader技术教程==================很多同学问如何用backtrader进行期货回测。以下给个例子,与普通股票回测不同的是佣金的设置方式。import datetime # For datetime objectsimport backtrader as btimport backtrader.feeds as btfeedsimport backtrader.indicators as btindimport pandas as pdimpor原创 2021-04-24 09:59:02 · 3360 阅读 · 2 评论 -
backtrader利用小时间粒度数据动态合成大时间粒度数据:replay功能
扫地僧backtrader技术教程获取方法===========================看过我教程的同学都是知道,backtrader中可以用重采样resample功能来将小粒度数据合成大粒度数据,比如将1分钟k线数据合成1小时k线数据。比如当10点到11点间所有1分钟k线都出来后,合成1根11点结束的1小时k线,在10点半时,如果要取1小时k线,只能去上一根,即10点结束的1小时k线。也就是说,在当一个整点小时完全结束时,才能合成新的1小时k线。但是有些用户有一个需求,就是要求最新的1小时即原创 2021-03-11 11:14:28 · 1346 阅读 · 0 评论 -
fastquant封装backtrader,仅用3行代码即可回测交易策略,含机器学习、情绪策略
1 概述为了进一步简化backtrader的操作,Github上有人封装backtrader,形成了一个新的框架fastquant,可以极大地简化backtrader开发,对初学者可能有帮助,其框架和策略结构,对老手也有借鉴意义。2 使用案例首先,安装该框架: pip install fastquant2.1 股票经典双均线策略回测以下三行代码,从网上api提取菲律宾股市的股票"JFC"的日线数据,然后用经典的双均线策略进行回测。from fastquant import back原创 2021-03-05 18:06:23 · 1906 阅读 · 1 评论 -
重要公告:发布backtrader通过ctp接口进行国内期货实盘模拟交易的接口和例子文件
backtrader回测功能非常强大,但是只开发了国外的实盘交易接口,国内还没有公开的实盘交易接口。鉴于广大用户都有实盘交易需求。我们对此进行了开发。目前完成了第一阶段的工作。即开发了针对国内期货交易的实盘接口,目前可以进行实盘模拟交易,但还不能进行实际交易(支持实际交易是下一阶段的工作)。对期货实盘模拟交易感兴趣的用户可以加群QQ群1125384417下载“backtrader ctp国内期货实盘模拟交易.zip”文件,内含进行国内期货实盘模拟交易的接口和例子文件,以及安装和使用说明。欢迎测试。加群问原创 2021-02-26 11:02:04 · 2229 阅读 · 0 评论 -
入坑backtrader,还是入坑...?选择困难症解忧
市场上有不少开源量化回测与交易框架,很多朋友不知如何选择。我也看过许多,到目前为止,backtrader是我看到的编写策略最简洁优雅的框架,同样的事情,他的代码量往往最少。1 统一简洁的策略编写模式大家可以观察如下链接中经典双均线策略的单股和多股实施:扫地僧backtrader给力教程系列可以看出单股、多股是在统一的模式下编制,不像有些框架单股、多股需要两套不同的模板,处理得很不优雅。如果你想对比评估其他框架,可以看看他们实现这两个策略,特别是多股策略是否如此简洁。2 矢量化指.原创 2021-01-31 10:32:59 · 1412 阅读 · 0 评论 -
Qlib如何配置使用模型LSTM进行预测
有同学看了我的Qlib教学视频后,想将视频中的示例机器学习模型LGBModel换成Qlib提供的另一个模型LSTM,但不知道怎么配置。我看了一下,确实LSTM模型的配置要比LGBModel麻烦。参考Qlib源码中的如下yaml文件:我们可以在jupyter notebook中写出对应的词典配置,其中改动的是data_handler_config和task配置段。我已将源码传到腾讯课堂Qlib课程最后一课,欢迎下载。data_handler_config = { "start_t原创 2021-01-26 16:29:07 · 1275 阅读 · 0 评论 -
扫地僧开源量化框架(backtrader、Qlib等)学习官网
扫地僧开源量化框架(backtrader、Qlib等)学习官网上线了,欢迎浏览,网址在这里。原创 2021-01-25 08:41:17 · 2065 阅读 · 0 评论 -
独家:微软AI量化投资平台Qlib视频教程3:下载行情数据
上一个视频介绍了怎么安装Qlib,本次视频演示将网上的行情数据下载到本地。视频地址点此可以将Qlib的机器学习和另一个更加成熟的基于python的开源量化回测框架backtrader一起使用。关于backtrader技术教程,请进QQ群1125384417下载样书及源码。===============背景资料:微软研究院发布的融合了各种机器学习算法的AI人工智能量化投资平台Qlib,可以用来进行交易策略量化回测。从应用层来看,它主要包括松耦合的三大块(每块可以独立):1 数据原创 2020-12-25 21:38:13 · 821 阅读 · 0 评论 -
独家:微软AI量化投资平台Qlib视频教程2:安装Qlib
上一篇文章的视频介绍了Qlib的基本功能。本次视频演示怎么安装Qlib。有不少同学安装Qlib都碰到坑了,也许本次视频可以拉你出坑。点此查看视频,安装Qlib。原创 2020-12-24 11:13:54 · 728 阅读 · 0 评论 -
独家:微软AI量化投资平台Qlib视频教程1:Qlib简介
最近微软研究院发布了一个融合了各种机器学习算法的人工智能量化投资平台Qlib,可以用来进行量化机器学习和交易策略量化回测。看其他介绍文章都是半通不通的翻译英文文档,不着要点。我安装试用了一下,用大白话告诉你Qlib的功能,也许你看起来更容易明白它是干什么的。从应用层来看,它主要包括数据、机器学习和策略回测松耦合的三大块(每块可以独立),我们会陆续制作相关视频课程介绍这些内容。本次发出第一部分视频,点此查看简介部分。...原创 2020-12-24 09:34:17 · 1036 阅读 · 0 评论 -
大白话微软人工智能AI量化投资平台Qlib试用体验
进qq群 809845360 ,交流Qlib技术=============================================最近微软研究院发布了一个融合了各种机器学习算法的人工智能量化投资平台Qlib,可以用来进行交易策略量化回测。看其他介绍文章都是半通不通的翻译英文文档,不着要点。我安装试用了一下,用大白话告诉你Qlib的功能,也许你看起来更容易明白它是干什么的。从应用层来看,它主要包括松耦合的三大块(每块可以独立):1 数据从外部获取行情数据,按Qlib内部高效率的格式原创 2020-12-22 10:53:54 · 2443 阅读 · 0 评论 -
backtrader策略排坑:策略编制要特别关注停牌日的坑
《扫地僧Backtrader给力教程系列一》前面发过几篇策略编制时考虑停牌问题的文章,本文汇总补充后,再发一次。本文内容亦发布于微信公众号:optMaster,公众号文章有分类,便于按需检索导航。1 引子有同学回测时发现一个奇怪的现象,如下图,在2010年3月11日,600000浦发银行的买单执行了三次,还有很多因现金不足作废。这是因为600000在2010年2月26到3月10日停牌,因此2月25到3月10日发出的订单只能在3月11日执行。所以3月11日三个执行了,其他现金不足作废了。原创 2020-12-21 10:30:56 · 1026 阅读 · 0 评论 -
开源量化框架backtrader FAQ:开发sqlite data feed
完整技术教程见这里有很多人建立了自己本地的行情数据库,希望能够从本地数据库将数据发到backtrader,供策略使用。一个通用的方法是将数据库的行情数据读到pandas dataframe里,然后将这个数据帧的数据传给backtrader的pandas feed数据对象,这样策略就能够使用了。但是有些同学不想通过pandas dataframe中转,而是想直接从数据库将数据喂给backtrader的数据馈送对象,这就需要针对数据库开发专门的data feed类了。上一篇我们介绍了如何开发针对My原创 2020-12-18 10:36:27 · 539 阅读 · 0 评论 -
开源量化框架backtrader FAQ:开发MySQL data feed
完整技术教程见这里有很多人建立了自己本地的行情数据库,希望能够从本地数据库将数据发到backtrader,供策略使用。一个通用的方法是将数据库的行情数据读到pandas dataframe里,然后将这个数据帧的数据传给backtrader的pandas feed数据对象,这样策略就能够使用了。但是有些同学不想通过pandas dataframe中转,而是想直接从数据库将数据喂给backtrader的数据馈送对象,这就需要针对数据库开发专门的data feed类了。以下就是backtrader社区原创 2020-12-18 07:30:16 · 1299 阅读 · 0 评论 -
backtrader高级专题:策略绩效评价:用不了pyfolio?还有quantstats
本文完整内容请参见我的微信公众号“optMaster”中的backtrader高级专题部分,或参看我们开发的视频课程中backtrader高级专题部分。目录:1 引例:输出html绩效报表2 Quantstats详解2.1 quantstats.stats:输出文字形式的各项绩效指标2.2 quantstats.plots:以图的形式输出绩效指标(仅notebook)2.3 quantstats.reports:生成文字或(和)图表形式的综合报表3 重要指标简介(sharpe、s原创 2020-12-16 09:00:36 · 2504 阅读 · 0 评论 -
开源量化框架backtrader FAQ:filler,让订单执行数量与总成交量相关
完整backtrader技术教程看这里默认情况下,backtrader中发出的订单,如果要成交,会成交全部数量,而与成交那根bar的总成交量(volumn)无关。比如,在当前bar结束时,创建如下市价买单:self.buy(size=100)那么,到下一根bar,会以开盘价全部成交100股,即使下一根bar总成交量是50股也不影响该订单成交100股。那么,我们能不能改变这种默认行为,让订单成交量与bar的总成交量挂钩呢?至少不要超过总成交量。方法是有的,那就是使用订单履行对象fille原创 2020-12-12 09:55:02 · 567 阅读 · 0 评论 -
backtrader FAQ:什么是一篮子订单Bracket Orders optMaster
完整教程见这里。一篮子订单并非一个单一订单,而是三个订单组合起来的,其中一个是主订单,另外两个一是针对主订单的止损保护单,二是针对主订单的获利了结单。我们考虑一个做多的场景:这种场景下,我们想买入股票(创建买单),但是又希望在股价下跌时通过止损卖单限制损失,并且希望股价上升到目标价后卖出股票获利了结。因此,当下达一个主买单后,同时下达一个止损卖单保护自己,再同时下达一个获利了结卖单保护利润,说明如下:一个主买单buy,默认是限价单Limit,要设置主限制价price(相当于进入市场价格)。此单称原创 2020-12-10 10:27:39 · 786 阅读 · 0 评论 -
backtrader策略库:基于z-score的配对策略
配对交易,其基本原理就是找出两只走势相关的股票。这两只股票的价格差距从长期来看在一个固定的水平内波动,如果价差暂时性的超过或低于这个水平,就买多价格偏低的股票,卖空价格偏高的股票。等到价差恢复正常水平时,进行平仓操作,赚取这一过程中价差变化所产生的利润。配对策略本质上也是多股操作,可以采用我们教程中的多股组合操作的技术。假设我们找到两支走势高度相关的股票601128.SH 常熟银行 X 和601166.SH 兴业银行 Y,通过OLS回归得到两者价格的关系为:Y - 1.5575*X = 6.1175原创 2020-12-06 14:11:38 · 1013 阅读 · 0 评论 -
backtrader股票量化回测超省力必须入门系列(8):核心概念未决(pending)订单
教程和源码下载见这里深入掌握backtrader,必须理解几个核心概念,如策略迭代表、线line、未决(pending)订单。奇怪的是backtrader原始文档对这些核心概念着墨极少,只是对line多说了几句,还说得不明不白,没把line、lines对象的关系将清楚。至于策略迭代表则根本没有提及,未决订单也没加以解释。正是因为对这些非常基础和核心的概念缺乏解释,导致很多人难以入门。其实这些概念都很简单,本系列前面部分已介绍了单支股票下的策略迭代表、line和lines的概念,本节彻底解决未决订原创 2020-12-02 07:58:42 · 423 阅读 · 0 评论 -
backtrader与机器学习的结合,就这么简单!
机器学习太热门,如今搞量化投资而不提机器学习,人工智能,就显得太low了,至于效果麽,嘿嘿嘿。那么是不是在量化回测中,引入机器学习会很复杂呢?其实有复杂,也有简单的。今天就给大家介绍一种用backtrader结合机器学习的思路。比如说,我想测试能否利用某个机器学习算法对股价的预测进行交易,以获取利润。套路可能是这样的,我们用一个假想的案例来说明。(1)我利用机器学习算法“支持向量机SVM”训练了一个模型,它能够利用股票过去n天的日收益率,预测明日股票处于涨(状态1)、平(状态0)、跌(状态-原创 2020-12-01 07:49:51 · 1467 阅读 · 0 评论 -
backtrader股票量化回测超省力必须入门系列(7):佣金、滑点,输出调试用执行信息
看了我的必须入门连载系列,如果你还不能入门,算我白写哈!全文见这里本次介绍backtrader技术教程的1.6节,介绍佣金、滑点的设置,以及怎样输出调试用执行信息,这个非常重要。我发现很多同学不会调试,当你不理解一些运行结果时,要多用print或log来输出信息,帮助自己理解和调试策略运行逻辑。...原创 2020-11-30 08:47:30 · 863 阅读 · 0 评论 -
backtrader实现真正的多股组合操作策略,看这一篇就够了,用定时器进入策略逻辑
以下策略来自我们编写的教程和视频课程。多股组合操作,是一种高级的操作模式。多股组合操作通常有两种模式,一种是定期调仓,即定期再平衡,比如每周1调仓,或每月1号调仓等。另一种是非定期调仓,比如每日判断,进行调仓,或者每隔n天进行调仓。定期调仓(再平衡)通常通过定时器timer来进入调仓逻辑,而非定期调仓通常通过传统的策略next方法进入调仓逻辑。当然,这并非绝对。这两种多股调仓操作,都不能用backtrader内置的自动确定最小期的方法来做(比如为了求20日均线,自动跳过前20个bar),因为有些原创 2020-11-30 08:45:10 · 5324 阅读 · 0 评论 -
backtrader股票量化回测超省力必须入门系列(6):线相关概念再续
看了我的必须入门连载系列,如果你还不能入门,算我白写哈!全文见这里本次介绍backtrader技术教程的1.5.11节到1.5.13节,继续理解线line的相关的操作。原创 2020-11-29 09:54:22 · 313 阅读 · 0 评论 -
backtrader股票量化回测超省力必须入门系列(5):线相关概念续
看了我的必须入门连载系列,如果你还不能入门,算我白写哈!本次介绍backtrader技术教程的1.5.9节到1.5.10节,继续理解线line的相关的操作。原创 2020-11-28 09:15:51 · 274 阅读 · 0 评论 -
如果优雅地输出backtrader策略优化结果
我们写的backtrader技术教程backtrader回测结果存放在各种analyzer中,结果是词典的形式,如果你想把他以表格的形式输出,并存到csv文件,可以参考下面的例子。这个例子来自Optimizing Strategy Backtesting in Python with Backtrader,利用backtrader做策略参数优化。策略就是一个简单的双均线策略,要优化的是两根均线的时间窗口大小。如下代码从yahoo在线api取得股票行情数据,可直接运行。analyzeroutpu原创 2020-11-27 15:56:42 · 2892 阅读 · 2 评论 -
backtrader股票量化回测超省力必须入门系列(4):线相关概念续
内容摘自我们写的backtrader技术教程看了我的必须入门连载系列,如果你还不能入门,算我白写哈本次介绍backtrader技术教程的1.5.5节到1.5.8节,介绍线line相关的操作。原创 2020-11-27 15:52:14 · 285 阅读 · 0 评论 -
backtrader股票量化回测超省力必须入门系列(3):策略运行逻辑,线line相关概念
看了我的必须入门连载系列,如果你还不能入门,算我白写哈本次介绍backtrader技术教程的1.4节到1.5.4节,引入了非常重要的线line的概念。(全书内容点击这里本专栏的第一篇文章)编辑于 14 小时前...原创 2020-11-26 10:10:15 · 551 阅读 · 0 评论 -
backtrader股票量化回测超省力必须入门系列(2):回测步骤
本次介绍backtrader技术教程的1.3节。(全书内容点击这里本专栏的第一篇文章)发布于昨天 08:05原创 2020-11-24 10:12:41 · 1201 阅读 · 0 评论 -
backtrader股票量化回测超省力必须入门系列(1):回测基本思想与“策略迭代表”
从本文开始,将连载我们的backtrader技术教程,方便感兴趣的用户入门backtrader。(全书内容参考这里)本文是第1章1.1-1.2节的内容。本次内容最核心的要点是“策略迭代表”,读者务必要理解它的概念和构造。...原创 2020-11-23 08:14:31 · 484 阅读 · 0 评论 -
backtrader:关于trade对象,文档没告诉你的秘密
上一篇文章我们简单介绍了backtrader中交易trade的概念。其实关于trade,backtrader文档讲得很不清晰,或者太简略,以至于没几个人知道它的确切用法和用处。比如策略自身带的_tades属性是什么,怎么访问它的信息。trade对象的history属性又是什么,如何访问其信息,这些都语焉不详。本文从我们编写的教程里摘出部分内容,彻底解释清楚trade相关知识,以飨读者。...原创 2020-11-19 20:25:33 · 961 阅读 · 0 评论 -
backtrader中何为一个交易trade?你可能并没理解它
1 概述在backtrader回测程序中,当交易trade状态发生改变时,会触发策略的notify_trade方法,这里头可以输出交易trade信息,例子如下:记录交易收益情况(可省略,默认不输出结果)def notify_trade(self, trade): if trade.isclosed: print('毛收益 %0.2f, 扣佣后收益 % 0.2f, 佣金 %.2f' % (trade.pnl, trade.pnlc原创 2020-11-19 08:31:06 · 2594 阅读 · 1 评论