第一章 Backtrader简介
新事物的出现总是让人难以理解 。当火车刚开始出现时,有些英国人嘲笑说这笨重的大铁块有什么用,随着火车的轰鸣的蒸汽喷往各处,却促进了经济的极大发展 , 嘲讽也如乌云散去 。量化交易刚出现时,也是遭受不少人的怀疑,冰冷的计算机会作出决策,简直天方夜谭 。
资本市场的魅力在于充满多样性,任何人可以探索不同的投资路径 。十年前如果有人对你说:“让电脑来选出股票进行交易”,你会认为他脑壳被门挤了 。西蒙斯以及很多前辈已经用硕果累累的战绩来证明其路径的可靠性 。
一个人可能一时幸运,但幸运女神是多情的不会永远钟情于某一个人 。也就是说,短期内瞩目的成绩并不代表其高超的技艺 。说起股神巴菲特,令人啧啧称奇的是几十年的年化收益率达到了20.23%,但有一个猛人超级猛,其历史年化收益率为39%,这人是西蒙斯 。未扣除基金管理费用的收益率更是达到惊人66.1% 。
西蒙斯作为先驱,一直在努力,不停的尝试 。苦心人,天不负,终成正果 。
如图是1988-2018收益:

文章插图
pnl 未扣除费用的收益年均66.1%pnlcomm 扣除费用后的收益率 。年均39.1%
就是这么猛,猛的难以相信!很多在交易路上不得志的投资人,在西蒙斯事迹的鼓舞下,加入了量化团队中 , 前路豁然开朗,开辟了新的天地 。
量化交易并不是天方夜谭,并不是偶然的概率 。在世界各地,已经踊跃出不少的优秀的量化交易者 。在中国,量化交易也得到广泛认可,不少量化交易者取得成功,成就自己的事业和美满家庭生活 。
在过去 , 计算机技术还只是少部分人的技术;在过去 , 关于金融的编程技术更是门可罗雀 。计算机性能的提高 , 金融编程的发展极大的降低了量化准入的门槛 。
有种精神叫做奉献 , 有种奉献叫做开源 。著名的量化框架Backtrader就是开源的 。现在即使优秀的量化团队也在使用backtrader,正如其作者所说华尔街不少量化交易者使用量化开源框架Backtrader 。彼有之,吾亦有之;彼能成,吾为何不能成!
量化交易难在交易的理念,而不是实现的技术 。
网上认识一位老哥,也是做量化交易 , 七八年的年均收益率为20% 。这很厉害,但是量化交易的工具竟然是excel 。可见工具并不是真正的难点 , 最宝贵的是交易模型 。实现的技术有优良之分,但是策略才是重中之重 。当然 , 使用excel来处理数据的工作量是远大于交易框架 。没必要神话量化交易框架,就是能够极大的减轻工作量 , 可以花更多的时间和精力在交易逻辑上 。
backtrader官方文档已经很详细 , 那么本文存在的意义又是什么:
毕竟是英语文档,中英文阅读存在一定的差异 。文档是海纳百川,有的地方讲的太详细,侧重于细枝末节则易失主干 。本文有的放矢,力求让读者彻底明白框架运行的结构 。本文会增加一些交易思维的讲解,当然这个见仁见智 。增加一些经典策略的代码实现 。
本文尚在持续更新中 。若有需求可私信,或者在csdn网上搜“南万寿”或者文章“量化交易Backtrader核心掌握” 。
1.1 Backtrader是什么
众所周知,实践是检验真理的唯一标准,回测是检验量化交易的重要手段 。未来不可知难以验证准确,真金白银实战的踩坑填坑得不偿失,回测就是利用过去的数据提高交易的准确性 。当然回测框架也可以用来实盘交易 。
Backtrader回测框架是大浪淘中,众多框架中的优秀作品 。Backtrader作者说,他不知道谁在使用,但是他知道华尔街很多量化交易者在使用 。
Backtrader不仅得到了华尔街量化交易者的喜爱,在国内也有一众粉丝 。很多的人量化交易学习也是从Backtrader开始
1.2 Backtrader特性
Backtrader 是基于python语言的量化工具,可以支持多种资产 。
Backtrader优点众多,网上介绍很多 。比如组件多 , 支持pandas矢量计算,内置百种技术指标 。Backtrader最大的特点就是简单易用,灵活 。
Backtrader在官方文档中提到

文章插图
该平台有两个主要目标 。一是简单易用,二是请参考第一条 。其格式类似于投资大师巴菲特投资名言:“第一保证本金安全,永远不要亏损;第二条请参考第一条”
得益于作者强大编程能力,backtrader框架使用简单,量化交易者可以集中精力放在交易逻辑的编写 。使用backtrader就像搭积木一样,需要什么模块,拿来组装就可以 。
backtrader也有一定的局限 , 因为python语言的本身,速度相对较慢,不太适合高频交易者 。Backtrader适合投中低频率的交易者 。
backtrader作者运用大量的元编程技术,如果运行出现问题 , 需要一定的python知识才能够解决问题 。
1.3基本使用
1.3.1 backtrader安装
推荐使用python 包管理工具anaconda.推荐使用清华镜像源 。
pip install backtrader
下载经常使用的数据分析的包
conda install numpyconda install pandaspip install matplotlib==3.2.2
由于backtrader不支持matplotlib新版本,所以安装matplotlib==3.2.2的版本
1.3.2 backtrader的基本运行
Backtrader平台的最重要的两个模块:策略Strategy和大脑Cerebro 。所以使用backtrader最主要的两个基本步骤:
*创建策略类*创建Cerebro大脑引擎
策略就是买卖的逻辑 。比如高于20日均线买入,低于20均线卖出,这就是个策略 。策略是最重要的 , 策略指导代码的编写,策略的成功才能保证盈利 。
Cerebro可以理解成一个框架 , 里面可以装很多东西 。比如数据、策略、绘图等等 。Cerebro翻译就是大脑,协调组织各个模块 , 共同完成工作 。
一个小案例
import pandas as pdimport backtrader as btfrom datetime import datetime#添加策略class TestStrategy(bt.Strategy): passif name ==”main”:# (1)大脑实体化 cerebro = bt.Cerebro()# (2)添加策略 cerebro.addstrategy(TestStrategy)##简单灵活# 初始化投资总金额 cerebro.broker.setcash(10000.00) print(f初始投资金额:{round(cerebro.broker.getvalue(),2)}) cerebro.run() print(f最后投资金额:{round(cerebro.broker.getvalue(),2)})
整个代码做了什么:
继承了bt.startegy编写了我们自己的策略 , 现在这个策略为空 。实例化一个大脑Cerebro,来管理交易策略 。cerebro.run()运行回测
这是最简单的案例,但却包含着backtrader的基本运用
这就是backtrader简单灵活之处,量化交易这编写代码可以更侧重于交易的逻辑,而不是内部复杂的执行 。
后续的文章会详细讲述策略Strategy和Cerebro以及其他模块 。
1.4backtrader组成部分
backtrader中包含很多模块 。最重要的上面已说过是Cerebro和Strategy,还有其他模块 。先简单说明模块的功能 。
Data Feeds 数据 。资产的数据信息,例如股票K线信息,基本面信息 。数据需要经过处理 , 采取一定的标准格式 。Strategy 策略就是买卖的逻辑 。比如高于20日均线买入 , 低于20均线卖出,这就是个策略 。策略是最重要的,策略指导代码的编写 , 策略的成功才能保证盈利 。Cerebro Cerebro可以理解成一个框架,里面可以装很多东西 。比如数据、策略、绘图等等 。Cerebro翻译就是大脑,协调组织各个模块,共同完成工作 。Indicators 指标,某种判断形态 。既可以是技术形态也可以是基本面 。比如20日移动平均线和每股收益 。很多人容易把策略Strategy和指标indicators搞混 。策略是买入卖出的整体逻辑,在策略中会使用指标的 。比如收盘价高于20日移动平均线买入,这就是一个策略,在这个策略中包含了20日移动平均线指标Analyzers 分析,交易结束之后需要做评价 , 比如收益率,风险收益等等 。Analyzers内置了大量的金融分析模块 。Orders 订单 。一般在策略使用的订单模块,进行买卖操作 。Sizers 仓位 。Broker 代理人 。证券交易商提供的接口observers 观察者 。观察回测中的状态Plotting 绘制 。绘制图形
看上去很多模块,但用起来很简单,甚至有些模块用不到 。一下是运行回测的简略图:

文章插图
【量化框架Backtrader简介】首先是交易逻辑的策略还有交易的数据,然后就交给backtrader框架运行回测就可以 。
- 简介Java全栈Web开发框架Hilla
- 什么是三大框架?SSH和SSM的区别在哪里?
- 自律需要练习,先养成习惯,然后在框架中放手
- 初中化学整本书的“知识框架图”,让孩子完美逆袭!(建议收藏)
- 成功父母的终极秘诀:大框架、会放手、好榜样
- 量化金融|首届中国西部量化金融大赛正式启动