zwPython.com研习社

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 39|回复: 0

backtrader实战和工程师思维的选型

[复制链接]

178

主题

185

帖子

2577

积分

超级版主

Rank: 8Rank: 8

积分
2577
发表于 2020-8-7 09:01:08 | 显示全部楼层 |阅读模式
backtrader实战和工程师思维的选型
前几天,发布blog《backtrader:目前最强单机量化平台 》
QQ群里面,在和大家互动时,遭到无数友好的、怀疑的质问。
这个回应,远远超出我们的预计。
由于这个涉及到TopQuant极宽2019升级项目的整体方向,开源组核心成员,连续数日,基本上日夜无休,对多个量化平台,特别是BackTrader-github项目网站列举的经典框架,和一些国内的常见框架,进行了仔细的对标测试,测试案例程序,超过一百组。
BackTrader-github项目网站:https://github.com/backtrader/backtrader
测试项目有:zipline、pyfoio、pybacktest、bt、ffn等等。
zwPython开发平台和内置的量化系统相关的模块库,也分别在py3.5,py3.6,py3.7多种版本下,进行了案例测试,因为时间关系,没有采用压力测试。
期间,python3.7.2正式发布,考虑到大部分金融机构到保守态度,很多模块库还在采用py3.5.
最终,我们确定了zwpy2019,采用py3.6版本,这种略微保守的模式,是可取的。
测试期间,我们对BackTrader对文档、blog、论坛社区里面都重点文档,都进行了浏览。
ps,BackTrader论坛注册好像是谷歌的验证码模式,需要翻墙,不过浏览无需注册。
越深入研究,我们越发现选择BackTrader的正确性。
至少,目前我们没有发现第二家py量化项目,在文档和、案例如此系统、完整,包括quantopian和很多线上量化网站。
这期间,我们也通过案例测试、和论坛网友的反馈,发现,90%的问题,都是因为行业间隔。
大部分是因为使用者的金融背景,对于python语言和编程基础方面的欠缺。
在blog当中,我们说:
新一代TopQuant(TQ)极宽量化系统,将完全基于backtrader:
类似小米与原生安卓的关系,在backtrader系统之上,增加多种本地化,和高效化的辅助工具。
TQ极宽优化版,会进行极简化的二次封装,就一个TQ2019.py函数文件,超级简单。
TopQuant其实从zwQuant开始,已经过多年开发,多次迭代:zwQuant,TopQuant-core,TopQuant,TopQuant-pro,。。。
其中TopQuant-pro已经在实盘使用,参见:
《TOPO•数字货币•分析简报 》–  http://www.topquant.vip/?p=431
可是,和一线的量化系统比较而言,在系统性、完备性,特别是可操作性,在非IT背景的金融从业人员方面,还是存在很多差距。
当然,zwQuant和《零起点》系列量化入门图书,作为高度简化的量化架构和课件,目前依然是初学者最好的量化入门课件,特别是:量化平台+图书+课件案例,这种三位一体的入门套件,在整个行业都是绝无仅有的。
我们在2019项目升级时,有几种考虑:
  • +加法,借鉴zipline、backtrade这些架构,进行源码copy,移植。zwQuant、TopQuant虽然是100%原生、原创的py量化项目,不过作为开源项目,这样操作,没有任何技术、法律方面的障碍,国内大部分量化平台,也都是这样操作的。
  • -减法,对目前相关py量化软件,进行删减,类似lite、骨头版的win系统,方便大家操作。
和前几年不同,如今国内外已经有不少成熟的的py量化系统,但是,金融行业,真正采用的还是渺渺无几。
这个类似苹果以前的多普达智能机,曲高和寡。
TopQuant极宽量化团队,大部分是程序员,典型的工程师思维。
刚好有个facebook的小故事,完美的体现了:典型的工程师思维:
05 年初,扎克伯格希望 MySpace 能够买下 Facebook,价格是 7500 万美元。
《为什么 MySpace 会惨败给 Facebook?》https://news.cnblogs.com/n/615831/
这是另外一个故事了。

MySpace 早期,还是有很多可圈可点的故事的:
MySpace上线第一周后,放弃了评估用户陌生程度的做法,转而用了一种很巧妙的方法:将安德森设置为所有人的好友,这样每个人在网络中都是二度关系。
尤其是相比起 Friendster 的 20 秒加载时间,MySpace 能做到 2 秒以内,极大的提升了用户体验。
这个是典型的工程师模式 :简单、粗暴、高效。

现在,金融行业急需的是:一种傻瓜式的,100%完全小白化的量化软件。
真真正正,能够象苹果mac电脑、iphone手机一样,开箱即用。
初心不改:这个其实,也一直是zwPython、zwQuant量化软件的设计起点。
自主开发,听起来高大上,可是如果开发的还是轮子,可能还是不完整的轮子的,其实价值不大。
这些乱七八糟的虚名,对于我们团队,也毫无价值。
放弃,其实比获得更加艰难。
佛经千千万,核心就两个字云:舍得。
有舍,才有得。
最终,我们做出了这个:—,超级减法的决定。
只是在backtrader以外,增加一个TopQuant.py的文件,单文件模块库,无需安装,直接copy即可。
TopQuant.py函数文件,重点解决backtrader本地化的问题,以及各种入门用户的小问题。
就像小米ui和原生谷歌,Ubuntu和linux差不多吧。

测试过程定制,发现BackTrader量化框架本身并没有架构、设计上的大问题。
当然一些配置、入门方面的小问题,我们会通过二次封装,以及TopQuant的函数,尽量高度简化。
同时,我们还会借鉴《零起点》系列:量化平台+教程+课件案例,这种三位一体的套件模式。
对于初学者,推出系列配套的入门课件,以及配套的py量化系统。
对于高端用户,我们也会推出专业的一站式解决方案:
  • 专业定制的4-8路GPU量化工作站;
  • 全套完整的的专业级量化回溯平台。
  • 100%量化实盘平台,集成交易所数据采集、交易下单等API接口。
  • 内置式AI人工智能、神经网络、深度学习开发平台。
  • ……

有趣的是,在BackTrader项目的复核期间,刚好项目网站blog有个翻出来的老blog:
《Improving Random Python Internet Study Notes》
其中涉及的一位网友云金杞,刚好也是多年的金融操盘手,也是我们QQ群的老友。
云先生是位典型的国内金融用户:
  • 金融很强:多年金融实盘经验,了解金融行业相关的金融操盘、游戏规则。
  • 思维开放:英文基础不错,可以看懂一般的金融、IT行业英文资料。
  • 有一定IT基础:熟悉常规的电脑软件,如word、excel。
  • 编程小白:了解一些basic、python,但是不是专业程序员,没有系统的编程经验,或者独立完成过一个程序的开发。
  • …..
关于云先生blog当中的问题:《backtrader-学习笔记2 》

这个案例里面的问题,其实已经比较专业,下面是backtrader开发者的简化版本:
def __init__(self):    ...    # Let's create the moving averages as before    ma1 = bt.ind.SMA(self.data0, period=self.p.period)    ma2 = bt.ind.SMA(self.data1, period=self.p.period)    ma1_pct = bt.ind.PctChange(ma1, period=1)  # The ma1 percentage part    ma2_pct = bt.ind.PctChange(ma2, period=1)  # The ma2 percentage part    self.buy_sig = ma1_pct > ma2_pct  # buy signal    self.sell_sig = ma1_pct <= ma2_pct  # sell signal
这次测试,我们发现许多量化系统,如bt、pyBacktest,为了追求速度,在矢量化方面,对系统进行了高度优化,ohlc四组数据,分别就用这o、h、l、c四组单字母代替,有些甚至还省略了股票池pools的设计。
目前量化程序,特别是新一代基于pandas的量化程序,如backtrader,都是采用矢量化矩阵运算模式。
因为矢量化矩阵运算,相对于for循环的传统编程思维:可以数十、数百,甚至上千倍地提高运算速度,而且无需gpu超算模块,纯cpu运算。
这方面,大家可以看看pandas和传统编程语言,在数据处理效率方面的对比。
笔者blog曾经说过:
2014年有许多大型金融机构—如美国银行、美林证券的“石英”项目或者摩根大通的“雅典娜”项目—战略性地使用了Python和其他既定的技术,构建、改进和维护其核心IT系统。
更多请参见:
《大数据,why python》  http://www.topquant.vip/?p=774
《python、量化与“雅典娜”项目 》 http://www.topquant.vip/?p=778


即使是专业程序员,一般也不熟悉matlab矩阵运算模式,更何况是金融从业人员。
金融行业,特别是一线实盘人员,时间成本极其昂贵。
能够如云先生这样,深入代码内核,已经是非常难得。
这也从另外一个角度,说明国内量化应用层面的推广与普及,严重滞后于市场的需求。
想象一下,如果每个手机用户、电脑用户,都必须去电脑城、华强北,自己选配件,组装电脑、组装手机,才能用word,才能用手机。
这是多么恐怖的一个场景。
各种系统代码的海洋、各种配置的陷阱。。。。。。
TopQaunt极宽量化开源团队,这次2019升级,采用高度简化的模式,就是希望大家能够尽快,更加轻松地用好量化系统,更多的时间、精力,用于策略开发当中。

众所周知,开源软件,和linux,90%的问题都是出在配置方面。
python语言问世几十年了,可是我们的网友,99%的问题都出在最简单的系统配置,根本无法进入系统。
专业的程序员,也经常出错,参见:
很多初学者,和编程高手,被各种版本Python平台,繁琐复杂,搞的彻底绝望的时候。
发现zwPython,操作简单,功能强大。
通通量化软件的作者,使用zwPython,三个月,就完成了通通量化软件的开发。



【极宽QQ群】
群号:1057170501 ,zwPython.com学习QQ群,面向py初学者和大众小白用户。
群号:124134140,TOP极宽金融量化,三千人超大QQ群,面向专业金融实盘用户。
群号:699266891,TFB极宽足球大数据QQ群
群号:790548107,FASTAI智能量化QQ群。
【微信公众号】
请大家关注TOP极宽量化公众号,大量原创Python量化技术
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|zwPython.com研习社

GMT+8, 2020-10-1 02:59 , Processed in 0.089823 second(s), 5 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表