阿尔法:比特币算法交易策略研究,你与赚钱只需一个量化

数字货币算法交易模型和策略并非易事。更糟糕的是,目前的数字货币状态是高度不稳定和迅速变化的。由于美国证券交易委员会和各种政府针对数字货币交换的规定,市场已成为战区。尽管存在所有负面消息,但许多交易员在日内交易数字货币资产方面做得很好。

我是Charles,目前就职于阿尔法数字货币量化平台(m.aicoinarb.com),主要量化策略分析建模方面工作。在我之前的文章中,我写了关于我们进行短期预测的进展。在这篇文章中,我把它提升到了一个新的水平。我将说明我们如何将预测纳入成功的交易策略。

手动建模

开发算法模型/策略通常首先查看原始数据,但更重要的是分析几个指标,如SMA,MACD,EMA和RSI。整个过程的目的是试图找到一些对人眼来说非常明显的模式,但这些模式在整个历史中都会重演,并希望将来能够继续这样做。

大多数策略都是基于获利,因此人们寻找方法来检测价格波谷,这样他们就可以触发“买入”信号,然后让系统等到有一个峰值触发“卖出”信号。这是有风险的业务,因为没有保证绝对的准确,即:系统无法准确地告知(给定历史事件)该市场价格是否处于谷值 - 它只能进行计算猜测。这就是重点,我们尝试进行计算猜测,即在波谷/峰处触发交易信号(买入或卖出)的合理性。

现实比理论更棘手,一个系统可能表明它在一个山谷,但几分钟后价格甚至更低。

如果您曾为大型软件项目编写过代码,那么您就会知道错误/失败率与每个新增的代码行成比例增长。这意味着你编写的代码越多,你引发的错误就越多 - 人类并不完美,程序员也不管多么精彩。当我们编写代码时,我们通常会有一个明确的目标,因此我们知道输出应该给出一些明确定义的输入。但是尝试使用(数字货币)资产(例如比特币)的波动数据来做这件事,你很快就会意识到这不是一件小事。输入永远不会相同,我们不能简单地依赖一堆“if this - do that”代码。然而,这是计算机理解的唯一语言,它是我们最可靠的工具。

为了使我们的工作更轻松,我们必须引入数学和统计数据来帮助我们。这是通过创建指标来完成的,例如SMA和MACD。指标是一种能够获取原始数据,转换它并吐出新内容的函数。指标使我们的量化交易更容易分析原始市场数据,它们使我们能够检测/看到我们原本不会看到的模式。如果你对交易知之甚少,那么你就不会知道MACD,多头和空头SMA图是多么有用。

由于指标完全基于历史数据,因此它们不善于做出预测,但也不是完全无用的。为了说明这一点,请看下面的图表:

 

手动型(1)

在上面我们将比特币的价格绘制成蜡烛曲线图。然后我根据开盘和收盘价创建了一个大小的指标(EMA)。下一步是使用代码,即“如果这样做 - 那样做”的陈述,提出一个具有正投资回报率(包含交易费用)的基本策略。还记得我之前关于山峰和山谷的故事吗?那么我们在这里看到它在行动。我的算法使用EMA指标生成第一个买入信号(在图表上用'B'表示),在这种情况下,它旨在预测一个山谷,因为雨后通常会出现阳光。然而,在此之后购买没有太阳来,但只有更多的雨(价格不断下降)。然后在某个本地峰值处产生卖出信号。

在此图表中,我们可以清楚地看到简单算法如何做出决策。令人遗憾的是,它的决策并不是最优的,原因很明显,因为在每一步中,算法只能看过去 - 它无法预测未来做出“最佳”决策。另一个令人遗憾的部分是这种简单算法具有硬编码参数,例如指标的参数(例如EMA大小)。对我们人类而言,我们可能会看到这些生成的信号并说出“这是一个多么愚蠢的决定” - 我们根本无法争辩,机器只能做出我们编程的决定。如果参数是次优的,那么结果也是如此。

在图像的下半部分,我指出了生成信号的ROI,略高于94%,这意味着系统损失了大约6% - 原因是:它的售价高于售出的价格,并且更糟糕的是每笔交易收取0.1%的费用。

以下是另一种情况。这次我们使用三个指标,但只显示一个。棕色条代表MACD指标,它由两个不同的EMA指标构成:

 

手动型(2)

使用MACD作为交易策略的基本思想是再次检测峰值和谷值。当您查看买入/卖出信号出现的位置时,即在某个当地MACD的峰值/谷值时,这一点就变得很明显。由于投资回报率超过99%(即它仍然损失了大约1%),这种策略似乎比前一种策略更好 - 但我们可能无法比较两者,因为前面的例子只有两个交易信号而且这个还有更多。

这是第三个也是最后一个例子。下面是一个基于EMA信号的信号图表(就像我们的第一种情况一样)。但这次我选择了不同的地区和更多的数据。

 

手动型(3)

上述投资回报率超过99%,就像我们的MACD一样。仔细观察信号是非常迷人的,它做了两个简短的买入/卖出交易,相隔只有几分钟。在这种情况下,我试图通过利用高波动率让系统在很短的时间内获利。

这三个例子基于非常少的数据。图表上显示的所有内容都是用于生成交易信号和计算ROI的内容。在实践中,我们必须在数天,数周,数月或甚至数年的数据上运行我们的算法,以验证其成功率。不幸的是,很少有这些策略在我们的测试中证明是成功的。实际上,如果没有交易费用,上述所有这些都可以产生超过100%的投资回报率,因为这就是交易所阻止我们成为百万富翁的手段。

使用原始市场数据(例如价格和数量),加上一些指标很少会产生有利可图的交易策略。除非你的算法非常复杂并且设计得很好 - 如果是这样的话,请重新检查所有内容,因为你可能有一个错误或者根本没有计算方案。

经过很长一段时间和无数次的尝试,我确实设法提出了一些有利可图的交易算法。这些是通过利用一些默认指标来实现的,我必须在申请之前以多种方式进行调整。但更重要的是,这是我使用的数据类型,使这些方法成功。它们不再仅基于价格和/或数量,而是考虑其他因素,例如情绪(来自我们的情绪分析)。

 

手动型(4)

在上面的图表中,您可以看到其中一种策略在起作用。密切关注它产生买/卖信号的位置 - 它们似乎比前三个例子更优化,但远非完美。一个更重要的评论是投资回报率,它是正面的(116%),并且平均每天增加1%。

下面是另一个图表,它使用完全相同的策略但在不同的日期/时间。然而,结果是惊人的,ROI为125%,每日增加约3%。

 

手动型(5)

这个策略我继续测试,验证和优化到今天 - 它似乎是迄今为止我能够提出的最好的策略。请注意买卖信号与我们之前的例子相比有多远。在这里他们相隔很多小时甚至几天,而以前只有几分钟或几个小时。在我卖掉肾脏并全押之前,我需要确保它真的有效。希望在几周内我将其插入并写一个显示我的结果的新帖子。

这不是一个简单的开发过程。测试和验证新假设同时调整其众多参数并尝试不同的值非常困难。但是,如果我们可以使用AI来帮助我们提出更好的模型和策略呢?

这个研究领域比创建手动模型更复杂,但它已经是未来 - 如果你没有使用它,你就会落伍。在某些时候,如果还没有,人工智能将做出比人类更好的交易决策(包括长期和短期)。如果您是人工智能研究员/开发人员,您就会确切地知道让系统提出交易策略是多么复杂。它已经足够复杂,可以训练它执行简单的任务,例如识别图片中的物体。

混合建模

直到几周前,我才使用手动设计的策略,该策略使用我们的预测来生成交易信号。结果当时非常“好”,但没有考虑交易费 - 所以他们实际上“不太好”了。

 

旧的预测(1)

其中一个策略是查看最高和最低预测点,并在这些相应的时间间隔产生卖出/买入信号。当你考虑它时,到目前为止它绝对不是一个最佳策略。也许还可以随意开始买卖,并通过它获得更多运气。但我还是不想把这个想法扔进垃圾箱里。在我之前的文章中,我已经说明了我们最近对预测的改进。因此,在一些新数据上重新运行这一旧策略绝对值得一试。

我们想到的是,这些策略是短期的,这意味着它们会使用其预测的任何方式来做出决定。由于我们的预测通常不会超过未来3到15分钟,因此他们需要产生足够大的利润来偿还交易费用,从而产生积极的投资回报率。

我确实添加了一个特定的东西:预测下一个买入/卖出信号。我想教我们的系统预测有价值的买/卖信号,就像我们预测未来价格一样。要做到这一点,我首先必须训练系统的好买和好卖位置。我通过查看所有数据并使用前瞻性概念来做到这一点:给定一个位置't',如果在不久的将来价格会下降很多,那么't'应该表示'卖'信号 - 但如果价格上涨那么't'应该是'买'。不久的将来是由接下来的10个左右的时间间隔来定义的。其他每个't'都表示'无所事事'信号。下面的图表显示了我的努力结果:

 

混合模型(1)

在上图中,我们看到蓝色/黑色烛台图上的价格预测。紫色线是我刚刚解释的信号预测“事物”的结果。我教过系统“卖出”信号等于100的值; 买入等于50,“无所事事”等于零。最后,系统并不完全尊重我的值,所以它会产生接近零,大约50或接近100的东西。但它确实有一些有趣的结果。如果你仔细观察,它确实表明一些有趣的“买入”信号(=值50),然后你必须猜测“卖出”信号与某些“买入”信号相对应的近期间隔。最后,这可能是一个有用的交易策略,但实际上很难解释和理解。我需要做更多的研究和开发来改进它。

这是强化学习(RL)的一种形式,这是一种训练AI来做某些事情的技术。RL是教授机器如何下棋,Go甚至是太空入侵者的诀窍。

如果我们可以教一台机器如何玩Pac Man,那么我们不妨教它生成买/卖信号。这正是我所做的。它背后的逻辑是当它做出一个好的决定时,给予系统一个奖励(就像拍拍背面),如果不是,我们就会惩罚它。奖励/惩罚以数字表示,因此我们训练系统优化自身以获得尽可能高的分数。在开始时,它会进行一系列随机猜测,获得奖励/惩罚,然后根据这些结果学习/重新训练自己。这个过程无限期地持续下去,直到我们告诉它停止。我们不希望系统在输入数据方面过度拟合,但我们也不希望它是超级随机的 - 因此我们必须在经过一定量的迭代后停止它。

Q-learning的实现是通过使用开源项目完成的。我只需要根据我的需要调整和调整它。我还意识到Q学习系统的主干通常基于前馈神经网络,我没有偶然发现任何使用递归神经网络的解决方案(还)。但这就是我所做的。我很快就了解到,通过RL训练系统是一个非常繁琐而漫长的过程,根据迭代次数和其他一些因素,它需要花费数小时/天才能完成。

经过多次痛苦的训练后,我确实看到了一些不错的买入/卖出信号,但对我而言,它们更像是随机而非智能。整体的Q-learning并不是一个成功的技术,随着他的改进,因为我相信它是一个金块。

猜你喜欢

转载自www.cnblogs.com/beitakandian/p/10234631.html
今日推荐