我是妈妈的交易员:寻找免费的框架来测试假设并在战斗模式下启动(Python)

假设您之前与股市有关。 或者,没有一个,被热门的(但是最近几个月已经明显变冷了……)加密货币主题带走了。 我们还假设您走得更远,并决定对航班的“手动控制”已经无效,并且您将需要自动化您的聪明主意并将猴子变成更具技术性的东西。 正是在这一点上,我想在本文中讨论的问题开始了,即:是否有现成的解决方案来回测交易想法(希望免费),从哪里获取历史数据(最好是免费的)以及以后如何处理所有这些,即 在回测中成功测试过的自动交易系统的实战发射有哪些解决方案? 注意一和二:本文是针对基于Python的库和系统编写的,我无法判断其他语言的可访问性。 优先考虑国外市场和/或加密货币;我也不假定要判断如何适用于俄罗斯股票市场。

图片

该材料不是详尽的指南或复习,而是关于在实际寻找适合个人使用的正常工作组件的基础上交换工作思路的建议。 面对甚至需要自动化简单的交易策略(动量交易,趋势跟踪等)的需求,许多问题立即出现。 让我们指出我们需要做什么:

  • 提出假设并对其进行算法处理
  • 在历史数据上检验假设。 一个非常重要的注意事项:您还必须了解哪些历史数据属于“适合”类别,可用于回溯交易系统。 我现在不打算为此写一篇单独的文章(尽管这需要这样做,但是在公共领域有很多关于此主题的材料),我将概述历史数据的一些关键问题:是否考虑了那些退出指数或破产的公司,是否进行了股票分割,以及如何考虑获利能力-是否考虑股息(总回报)。 为简短起见,我真的表示歉意,但是这篇文章还没有涉及到这一点,这还不是一组详尽的数据要求。
  • 如果验证成功,如何将假设转移到真实交易账户,添加风险管理,订单管理,重新平衡和结果评估系统。

现在是时候就本文中涉及的“介绍性”提出两个重要的要点了。 首先是语言的选择:许多人会说,用于创建交易机器人/自动交易系统的C#比Python更为普遍和快捷。 我不能不同意,但我必须考虑第二个要点-算法交易与交易系统自动化之间的区别。 从与定量交易从业人员的对话中,仅从发现的理论材料中,可以得出结论,算法交易(通常用作“高频交易(HFT)”的代名词)是一种处理订单的策略,数据根据速度流向不同的交易所访问它们(并取决于毫秒),并且只有C#可以处理这些任务。 同时,“本地”算法交易者执行的任务很可能是Python,因为我们的目标是使短期和中期的投机交易系统自动化,该系统的每日投资组合周转率不达到100%,且订单和需求数量它们的执行速度不超过将高频交易与短期/中期自动交易区分开的合理阈值。

如何评估交易系统,如何编写交易算法等等-所有这些都超出了范围,否则将不适用于本文。 让我们看一个具体的例子-我有一个基于“移动中的股票:用对冲基金动量策略击败市场”一书中描述的交易系统。 交易策略是用Python编写的,不包含任何超复杂元素。 您需要的第一件事是有机会根据历史数据测试该策略。 我讨论经纪人的选择没有问题,我使用了交互式经纪人的服务,他们已经拥有适用于Python的本机API。 但是,即使在付费数据订阅中也没有提供回测的可能性。 这是我设法找到的回测内容:

1)每个人都在听-Quantopian.com

仅支持python 2.7,可以免费构建和测试交易系统,可以使用免费的历史数据(美国股票和期货),可以在线使用,不能进行本地安装。 我不会写冗长的评论,我将立即概述甚至在基本级别上发现的问题区域:由于它们消除了链接到经纪账户的可能性,因此无法使用经过开发和测试的交易系统进行实时交易。 这立即施加了限制(其中一些将有助于解决zipline-live,更多信息请参见下文),因为 Quantopian基于zipline库,此外,有些功能仅在其系统内部起作用,因此,当您要将自编写和经过测试的系统从代理转移到同一本机API时,您将不得不重写其中一半才能工作,并且还决定如何处理基于zipline的代码段。 减号(对于某些系统)也可以被视为禁止动态行情自动收录器,但目前我们不对本论文进行详细介绍。

Quantopian(IMHO)的主要优点(除了用于测试和历史数据的免费系统之外)是一个非常活跃的社区,有很多关于分析的信息以及建筑系统的细微差别。 重要提示:那里可用的历史数据考虑了一些问题(您不仅可以与有生命的公司合作,还可以获取过去几年的索引列表以考虑退出,破产等),还考虑了拆分,甚至(!)总收益数据集,也就是说,您可以将获利能力指标与股息一起使用。

2)确实希望被所有人听到,但尚未听到-Backtrader.com

支持Python 2.7、3.2-3.6,仅在本地计算机上可用。
似乎已经与经纪人进行了集成,并且可以使用最少的集成工作量就可以使用该库启动系统。 坦率地说-非常令人怀疑,我还没有看到任何活生生的例子,社区几乎已经死了-论坛上一片沉默。 该库的作者正在Quora和其他资源上积极推广它。 没有历史数据,因此您必须购买或寻找免费资源-但是,“幸存者”,股息(无论是否包括在数据中),分红和其他问题开始出现。 我将很高兴收到有关使用此库的实践的真实反馈。

3)QuantConnect -quantconnect.com

这是一个在线平台(分别支持Python),提供数据,回测和与流行经纪人的集成。 但是同时,假设要能够通过Interactive Brokers进行实时交易,您需要每月至少支付20美元才能订阅QuantConnect,并且这并未考虑对经纪人数据的订阅等。
我的主观意见是,该平台对于经常使用不是很方便,某种程度上一切都太拥挤和不便,加上付费,再加上它最初是用C#编写的,只是包装好以便您可以使用Python。 因此,在尝试测试几种策略之后,我拒绝进一步使用它。 尽管我们必须致敬-社区的活跃性较差,但论坛上的材料很多,可以快速解决问题。 如果您分享真实的评论,我会很高兴-也许我只是没有用户体验。

4)QuantRocket -quantrocket.com

从描述来看-它只是“歌曲”。 有一切-在线和本地安装以及回测和历史数据,可以从代理收集或由您自己提供(每月9美元),并可以与代理立即集成,并且集成是如此之好,以至于他们承诺不重写任何内容我将不得不...而且他们甚至承诺,如果您以前沉迷于Quantopian并且在zipline上写了一些东西,它们将帮助过渡到其平台和内部库(Moonshot),这将使通过经纪人进行的实时交易能够以最小的努力实现...全部听起来很完美,如果不是一个 大约“但是”-每月至少30美元,以便有机会像大家一样真正地进行测试。 我不敢,因为有些月份不需要您参与市场(例如,进入市场的所有过滤器都显示“坐着”),然后收取30美元的费用来检验假设似乎是不合理的。 但是,我将不胜感激真正的评论-尝试过的人,有什么优缺点等等。 另一个令人尴尬的地方是绑定到平台和仅用于其上的库,然后充满了“切换成本”的增加,即 明天,他们将以30美元的价格代替全部30美元的简单关税,然后将其绑定到其独特的Moonshot库,并通过其平台进行部署...正如他们所说,您的鸡蛋放在一个篮子里...)

5)Zipline和Zipline-live(http: //www.zipline.io,www.zipline-live.io

它在本地安装,适用于Zipline的Python 2.7和3.5,适用于zipline-live的仅2.7。
我们找到了珍贵的捆绑包,据我的观察,该捆绑包最常用于家庭自动交易系统的爱好者社区。
我们拥有的是:zipline库,它是Quantopian引擎(请参见第1点)的基础,而其弟弟zipline-live,它支持与Interactive Brokers集成,并允许您以最小的修改运行在生产中使用zipline创建的算法。 简要介绍此问题的历史-几年前,他们在Quantopian决定放弃实时交易时,社区变得动荡不安,水势汹涌,并且集体努力的结果诞生了(包括Quantopian团队,该团队承诺以无私的方式支持实时图书馆的发展)。 此后,Zipline-live实际上成为唯一免费的(?)免费方式(无需注册:),使通过Quantopian(或本地zipline)测试的系统通过Interactive Brokers(具有集成但没有编号)进行真实交易。一些重要而不是zipline函数)。 关于这堆可以说些什么:

  • 如果您有可靠的历史数据源,或者需要足够免费的内置在库中的quandl数据集,则zipline适合本地用户。 应该记住的是,该库不支持在线数据转换,您必须先下载它,然后再上传以进行回测( 在此处您可以找到更多详细信息)
  • 如果可以正常实现与IB的集成,则从理论上讲zipline-live是合适的,并且由于未在zipline-live中实现的功能,从Quantopian传输的算法不需要进行大量处理和修整。

6) QsTrader-github.com/mhallsmoore/qstrader

这是一个由门户网站quantstart的创建者,一个社区以及一系列教育资料,讲座等组成的图书馆。 在本地安装,使用Python 3及更高版本。 通过经纪人没有真正的交易机会,但他们承诺会增加。 在很大程度上依赖于通常的数据科学Python堆栈-pandas,numpy,scipy等,因此您必须一次安装所有这些。 我无法客观地估算出该库的使用率,我会坦率地说-我没有在实践中尝试过,因为从更新历史来看,该库的工作处于不活动状态,未添加功能,这意味着它对于完整甚至“家庭”的系统都不起作用合适,但是如果有使用结果并形成个人意见-分享,这种解决方案突然会比其他解决方案更好。

7)接下来,我将列出我设法找到的库,但是我不能说太多。 大多数情况下,它们仅由创建它们的博客的作者唯一支持,并且它们不具有与经纪人集成的能力,这意味着它只是回测而没有在战斗中使用的能力,没有社区且发展速度缓慢,即 不能满足所有分配的任务。

-bt(Python的回测)
-pysystem贸易

总结中间结果,我分享主观结论:

  • 如果您不介意使用已经过时的Python 2.7的在线平台,并且您策略中的目标工具是美国站点(和IB经纪人)上的股票/期货,那么Quantopian + zipline-live的组合将非常方便且绝对免费(!)使用您将获得免费的历史数据(符合质量标准的±),免费的用于测试假设的IDE,以及一个本地库,该库可让您将成就与经纪帐户集成,并考虑所有条款,在战斗中启动系统 和已被限制的组合公开在上文。 就个人而言,由于方便,免费的基本功能和非常活跃的社区,我为您选择了此选项。 在下一篇文章中,我将告诉您测试动量股票策略并将其从Quantopian在线转移到本地机器上的zipline-live是多么容易(或不容易),如何与该库中IB的经纪账户进行集成,以及共享使用本机的详细信息IB的Python API。
  • 如果优先级是本地安装,则可以完全控制系统,而不必担心需要以数据包的形式下载历史数据以测试假设,或者如果有此数据源或没有限制,则可能的解决方案是Zipline + Zipline-live包,该包您可以通过IB在本地计算机上对历史数据(自己的或免费的)实施经过测试的策略,而在指定的库和Python API代理的功能框架内,所有这些都是免费的。

  • 如果您不能或不想在Interactive Brokers上开设帐户,那么上述大部分都可以使用,因为 例如,QuantConnect与其他也支持外汇/加密交易等的经纪商合作。 并且,如果从原则上讲这些任务不需要通过经纪人进行实时交易,那么您可以尝试上述所有库/平台进行回测,然后选择最能满足您任务的库/平台。

PS最后,我想指出的是,选择平台/库的重要性不仅在于便利,还在于系统的“可扩展性”。 假设我开发了一些可理解的内容,并在zipline上进行了测试。 然后,他决定在没有经纪人通过他的API进行回溯测试的情况下实现它-从这里开始,您将获得一百万个其他细节,在沙盒模式下您将不会考虑这些细节-订单执行方式,系统在不同交易模式下的处理方式以及在季度报告等之后有一个缺口/交易后的超高压会议,依此类推...因此,在我的主观意见中,选择这样的程序集以使代码既可以用于回溯测试又可以用于交易系统的实施非常重要,然后它将找出缺陷,h 同时提高质量。

Source: https://habr.com/ru/post/zh-CN434244/


All Articles