第一章量化交易真实性

  • Post author:
  • Post category:其他


新事物的出现总是让人难以理解。当火车刚开始出现时,有些英国人嘲笑说这笨重的大铁块有什么用!随着火车的轰鸣的蒸汽喷往各处,却促进了经济的极大发展,嘲讽也如乌云散去。量化交易刚出现时,也是遭受不少人的怀疑,冰冷的计算机会作出决策,简直天方夜谭。

资本市场的魅力在于充满多样性,任何人可以探索不同的投资路径。十年前如果有人对你说:“让电脑来选出股票进行交易”,你会认为他脑壳被门挤了。西蒙斯以及很多前辈已经用硕果累累的战绩来证明其路径的可靠性。

一个人可能一时幸运,但幸运女神是多情的不会永远钟情于某一个人。也就是说,短期内瞩目的成绩并不代表其高超的技艺。说起股神巴菲特,令人啧啧称奇的是几十年的年化收益率达到了20.23%,但有一个猛人超级猛,其历史年化收益率为

39.1%

,这人是西蒙斯。未扣除基金管理费用的收益率更是达到惊人

66.1%

西蒙斯作为先驱,一直在努力,不停的尝试。苦心人,天不负,终成正果。

如图是1988-2018收益:

在这里插入图片描述

  • pnl 未扣除费用的收益 年均66.1%
  • pnlcomm 扣除费用后的收益率。 年均39.1%

就是这么猛,猛的难以相信!在西蒙斯事迹的鼓舞下,很多在交易路上不得志的投资人,加入了量化团队中,前路豁然开朗,开辟了新的天地。

量化交易并不是天方夜谭,并不是偶然的概率。在世界各地,已经踊跃出不少的优秀的量化交易者。在中国,量化交易也得到广泛认可,不少量化交易者取得成功,成就自己的事业和美满家庭生活。

在过去,计算机技术还只是少部分人的技术;在过去,关于金融的编程技术更是门可罗雀。计算机性能的提高,金融编程的发展极大的降低了量化准入的门槛。

有种精神叫做奉献,有种奉献叫做开源。著名的量化框架Backtrader就是开源的。现在即使优秀的量化团队也在使用backtrader,正如其作者所说华尔街不少量化交易者使用量化开源框架Backtrader。彼有之,吾亦有之;彼能成,吾为何不能成!

量化交易难在交易的

理念

,而不是实现的技术。

网上认识一位老哥,也是做量化交易,七八年的年均收益率为20%。这很厉害,但是量化交易的工具竟然是excel。可见工具并不是真正的难点,最

宝贵

的是交易模型。实现的技术有优良之分,但是策略才是重中之重。当然,使用excel来处理数据的工作量是远大于交易框架。没必要神话量化交易框架,就是能够极大的减轻工作量,可以花更多的时间和精力在

交易逻辑

上。

backtrader官方文档已经很详细,那么本文存在的意义又是什么:

  1. 毕竟是英语文档,中英文阅读存在一定的差异。
  2. 文档海纳百川,过于丰富。本文有的放矢,求让读者从整体上掌握。
  3. 本文会增加一些交易思维的讲解。
  4. 增加一些经典策略的代码实现。

本系列文章尚在持续更新中。若文章中出现纰漏,请勿客气。

想学习量化框架Backtrader可加QQ群讨论:711174217。本群用于量化交易爱好者交流。量化交易最宝贵之处在于其策略模型,然后才是实现量化交易的技术。所以本群更鼓励大家多多讨论策略模型和交易逻辑,互相学习,共同进步。



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 numpy
conda install pandas
pip 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 pd
import backtrader as bt
from datetime import datetime

# 添加策略
class TestStrategy(bt.Strategy):
    pass


if __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 绘制。绘制图形

看上去很多模块,但用起来很简单,甚至有些模块用不到。核心就是Strategy和大脑Cerebro。

一下是运行回测的简略图:

在这里插入图片描述

首先是交易逻辑的策略还有交易的数据,然后就交给backtrader框架运行回测就可以。

为了方便读者进行阅读,在此手动插入目录:



第一部分:backtrader功能介绍


第二篇核心概念知识补充



第三篇 Strategy(1) 生命周期函数



第三篇 Strategy (2)开始交易



第三篇Strategy (3) 通知函数



第三篇 Strategy(4) 策略完善



第四篇 Cerebro



第五篇 Data Feeds (1)数据接口



第五篇 Data Feeds(2)使用GenericCSVData加载数据



第五篇Data Feeds(3)使用Pandas加载数据



第六篇 Analyzer(1)基本使用



第六篇Analyzer(2)内部构造



第七篇 indicators(1)线对象在init和next的区别



第七篇 indicators(2)指标的绘制



第七篇 indicators(3)第三方指标库Ta-lib



第八篇order订单专题(1)订单创建及控制参数



第八篇order订单专题(2)订单通知及属性



第八篇order订单专题(3)回测中交易的两个前提



第八篇order订单专题(4)市价单、收盘价单、限价单、止损单



第八篇order订单专题(5)限价止损单、跟踪止损单、跟踪限价止损单讲解



第八篇order(6)目标订单OCO订单讲解



第九篇 Commission 佣金



第十篇 Sizer



第十一篇 Broker



第十二篇 Observer



第十三篇backtrader绘制图形



第十四篇Backtrader参数优化



第二部分


让量化交易者看懂金融词汇(1),浅讲最优风险资产组合



百度网盘代码资料:

链接:https://pan.baidu.com/s/1rJFAXO88fxSgnd0o5nKl5w?pwd=amws 
提取码:amws

目录以及网盘资料会跟随文章篇幅增加而更新。欢迎订阅,您的订阅是对本人工作的最大肯定。



版权声明:本文为mebnkan原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。