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

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

前几天,发布blog《backtrader:目前最强单机量化平台 》

backtrader:目前最强单机量化平台

QQ群里面,在和大家互动时,遭到无数友好的、怀疑的质问。

这个回应,远远超出我们的预计。

由于这个涉及到TopQuant极宽2019升级项目的整体方向,开源组核心成员,连续数日,基本上日夜无休,对多个量化平台,特别是BackTrader-github项目网站列举的经典框架,和一些国内的常见框架,进行了仔细的对标测试,测试案例程序,超过一百组。

BakcTrader-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论坛注册好像是谷歌的验证码模式,需要翻墙,不过浏览无需注册。

越深入研究,我们越发现选择BakcTrader的正确性。

至少,目前我们没有发现第二家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》

https://www.backtrader.com/blog/posts/2018-04-22-improving-code/improving-code.html

其中涉及的一位网友云金杞,刚好也是多年的金融操盘手,也是我们QQ群的老友。

云先生是位典型的国内金融用户:

  • 金融很强:多年金融实盘经验,了解金融行业相关的金融操盘、游戏规则。
  • 思维开放:英文基础不错,可以看懂一般的金融、IT行业英文资料。
  • 有一定IT基础:熟悉常规的电脑软件,如word、excel。
  • 编程小白:了解一些basic、python,但是不是专业程序员,没有系统的编程经验,或者独立完成过一个程序的开发。
  • …..

关于云先生blog当中的问题:《backtrader-学习笔记2 》

 https://blog.csdn.net/qq_26948675/article/details/80016633

 

这个案例里面的问题,其实已经比较专业,下面是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的量化程序,如bakctrader,都是采用矢量化矩阵运算模式。

因为矢量化矩阵运算,相对于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%的问题都出在最简单的系统配置,根本无法进入系统。

专业的程序员,也经常出错,参见:

http://www.topquant.vip/?p=728

很多初学者,和编程高手,被各种版本Python平台,繁琐复杂,搞的彻底绝望的时候。

发现zwPython,操作简单,功能强大。

通通量化软件的作者,使用zwPython,三个月,就完成了通通量化软件的开发。

 

 

 


			

发表评论

电子邮件地址不会被公开。 必填项已用*标注