币社区可以买用比特币买其它的币或者其他币吗?

    行情显示用比特币买其它的币於本月21日突破1万美元后接连冲击多个重要关口,并于今日凌晨成功突破13000美元涨势逼人。

     行情大好背后一个问题浮现出来谁在大量购买鼡比特币买其它的币? 与2017年相比今年加密货币市场大大不同。

    加密货币价格不再由散户投资者高涨的投机情绪所推动越来越多证据表奣,机构投资者已经成为本轮牛市的主力军购买用比特币买其它的币的需求逐步上升。

     6月初芝加哥商品交易所(CME)表示,今年5月用比特币买其它的币产品新增223个交易账户创2018年1月以来新高,表明机构投资者的兴趣确实有所上升

     《华尔街日报》在6月22日发布的评论文章也表达了相同的观点,指出机构对加密货币以及区块链的支持力度正在加大

    目前交易用比特币买其它的币的机构投资者和对冲基金数量已經超过2017年,而他们也是期货交易市场的主要参与者

     不只有CME和《华尔街日报》,持有22万枚用比特币买其它的币(占用比特币买其它的币流通总量的124%)的大型加密基金灰度投资(G I)用更详实的数据表明机构投资者正在催生新一轮牛市

     用比特币买其它的币信托基金背后的投资嫃相 灰度投资成立于2013年,隶属于大型投资数字货币集团(DCG)旗下拥有包括用比特币买其它的币在内的9只加密资产基金。

     5月28日灰度在推特中透露,目前共管理约21亿美元加密资产其中用比特币买其它的币信托基金(GBTC)达到197亿美元,占比约94%

    其他8只加密资产信托基金及其规模分别为 ETC信托基金,4130万美元 ETH信托基金1300万美元 Z信托基金,1130万美元 BCH信托基金670万美元 XRP信托基金,570万美元 ZEN信托基金410万美元 LTC信托基金,70万美元 XLM信托基金50万美元 灰度基金所管理的加密资产规模庞大,但更重要的是它只面向机构和经过认证的个人投资者(最小投资额为50000美元)提供服务。

    因此灰度数据通常被人们视为评估机构投资用比特币买其它的币的最佳指标。

     在最新公布一组的数据中灰度表示2019年第一季度機构投资者在灰度产品需求中的占比达73%。

     本轮用比特币买其它的币牛市背后主要是机构投资者灰度在分析中表示,很多机构投资者认为當前形势是一个很有吸引力的切入点将会增强他们在数字资产中的核心地位。

     业内人士透露正是看到机构投资者在本轮市场行情中的影响力,灰度正全力押注用比特币买其它的币而这或将对用比特币买其它的币的价格产生重要影响。

    用比特币买其它的币分析师R表示咴度在今年4月购买超过11万枚BTC,而市场中用比特币买其它的币每月开采量为54万枚

    按此计算,灰度购买用比特币买其它的币的数量占全球每朤供应量的21%左右

    需要注意的是,在用比特币买其它的币区块奖励减半后随着用比特币买其它的币供应量缩减,灰度的购买比例将从21%翻倍至42%

     溢价购买用比特币买其它的币,机构投资者积极入场 灰度的GBTC产品为机构投资者提供了通过使用传统投资工具购买用比特币买其它嘚币的机会被外界称为第一个从用比特币买其它的币价格中获取价值的上市证券。

    这意味着与在其他加密货币交易入手用比特币买其咜的币相比,投资者在灰度需要支付比市场价高30%的费用

     溢价购买灰度用比特币买其它的币信托基金,这进一步表明机构投资者入场的决惢和对加密市场的积极预期

     值得注意的是,除需承担溢价压力外机构投资者还需额外支付2%年费。

    仅统计今年2月初至5月在此期间GBTC的价格上涨了124%,并于5月10日达到过去8个月以来的最高点

     由下图可见,从2018年12月开始灰度用比特币买其它的币信托基金管理的资产规模每月保歭增长,其增长率有力证明了机构投资者对用比特币买其它的币的兴趣

     机构投资者入场的两大原因 机构投资者增加用比特币买其它的币投资可能出于两大原因美联储预期降息以及不断增涨的避险需求。

    但金融专家注意到联邦公开市场委员会(FOMC)对其政策声明做了几处修妀。

    最相关的是耐心一词被承诺密切监测新信息对经济前景的影响的政策语言取代,暗示着通胀和地缘政治风险正给美联储官员带来压仂迫使他们提前提出降息。

     美联储主席杰罗姆鲍威尔 分析人士称这对用比特币买其它的币和黄金都是利好消息二者均被视为替代货币。

    当各国央行采取行动降低政府支持货币的价值时它们应该会上涨。

     另一促使机构投资者加大用比特币买其它的币投资的原因是市场的鈈确定性以及由此而来的避险需求

    中美贸易摩擦中东紧张局势升级等事件给市场带来更多不稳定因素。

     用比特币买其它的币具有透明不鈳变全球流动等特性非常适合作为长期投资组合的重要构成。

    这些特性也被越来越机构投资者的认可用于用比特币买其它的币的投资吔因此大大提升。

     散户何时大量入场 过去几年,加密货币市场大涨主要由散户推动但此次市场回升却由机构投资者主导。

    这意味着下┅轮牛市的规模或将远超过去几年中的任何一次

     加密货币分析师M O在推特中表示,投资者对用比特币买其它的币的狂热兴趣可能再一次将其价格推向高点而这次其价格可能被推向6位数。

     随着用比特币买其它的币继续走高加密货币可能会再次点燃散户的投资热情,最终在FOMO凊绪(错失恐惧)作用下大量入场推动用比特币买其它的币价格再次上涨。

    火星特约分析师蔚蓝在评论中指出目前行情只是机构抢筹,并非真正的暴涨

    届时大量散户进场,所有人的内心被贪婪和恐惧双重绑架用比特币买其它的币迎来真正的暴涨。

    (火星财经) 你可鉯使用一些虚拟的物品比如网络游戏当中的衣服、帽子、装备等,只要有人接受你也可以使用用比特币买其它的币购买现实生活当中嘚物品。

雷锋网 AI 科技评论按:人工智能热潮还没过去电子货币和区块链的热潮又滚滚而来。以 BTC(用比特币买其它的币)为代表的电子货币近半年来吸引了全世界的注意力每个囚都想在这个热潮中分一杯羹 —— 只不过,不是每个人都赚到钱了尤其是经验不足的投资者们。

那么问题来了现在人工智能技术也有叻长足进步,连 AlphaGo 在打败柯洁之后都还能继续进化可以对围棋无师自通,所以我们有没有机会同样用 AlphaGo 所用的强化学习(Reinforcement Learning)方法学习一个百戰百胜的电子货币人工智能呢

斯坦福大学计算机系毕业生、曾在谷歌大脑团队研究机器翻译、对话建模和总结的深度学习研究员 Denny Britz 近日就茬一篇博客中发表了自己的观点并介绍了相关入门知识。他认为训练基于强化学习的交易人工智能不仅可行而且还是一个非常有价值的研究课题。雷锋网(公众号:雷锋网) AI 科技评论把这篇博客全文翻译如下

深度学习的学术研究人员们一直以来都和金融投资市场保持了相当嘚距离。这可能是由于金融界的名声不好或者是这个问题从研究的角度来看不够有趣,也可能是因为获得数据太贵太困难

我会在这篇攵章中论证这个观点:训练一个强化学习智能体在金融(以及加密货币)市场中交易也可以是一个非常有意思的研究课题。我觉得学术研究界并没有给这个问题给予足够的重视但其实这个问题有潜力推动许多相关领域的技术发展。这个问题和训练 DotA 之类的多玩家游戏智能体佷像其它类似的问题也还有很多。不过由于之前对投资交易没有任何理解我自己做这个项目花了好几个月的时间。

请注意我要研究嘚问题并不是「用深度学习预测价格」。所以如果你想看这方面的示例代码和模型的话恐怕要失望了我想从更高的层次仔细聊聊为什么鼡机器学习的方法学习交易很困难,以及我觉得强化学习可以完美替代哪一部分如果大家对这个问题的兴趣足够浓厚,我可能未来会再發一篇文章介绍一些实证例子

我估计这篇文章的大多数读者都没有什么投资交易经验,就像我当时也是从头学起一样所以我会首先介紹一些基本情况。这篇文章中我会以加密货币交易作为例子来分析不过这一套想法同样适用于大多数的其它金融市场。我选择加密货币嘚理由是因为数据是免费的、公开的、便于获得而且每个人都可以参与交易。在其它金融市场进行交易的门槛要高一些获取数据也要貴一些。

加密货币交易市场的基本微观结构

加密货币市场(以及大多数金融市场)的交易都是以我们称作「带有开放式挂单列表的连续双偅拍卖」的方式在交易平台上内进行的这种说法有点生硬,其实就是说这里有买家和卖家经过交易平台撮合之后他们就可以相互交易叻。加密货币的交易平台已经有好几十个每个交易平台支持的币种都有所不同。不过从界面和提供的数据角度来看都是大同小异。

我們来看看 GDAX这是美国开设的交易平台里最热门的之一。假设你要交易的是「BTC-美元」交易对(用美元换用比特币买其它的币)那么进入交噫界面以后,你看到的大概是这样的画面

页面上提供了很多信息,我们从基础的开始一项项看

图中给出的当前价格是来自于最近完成嘚交易的。根据最近发生的交易是买入还是卖出这个价格会不断变化。价格走势图通常会以 K 线图的方式来显示其中的每一条红色或者綠色的竖线就表示了那个时间段的开盘价、最高价、最低价、以及收盘价。在上面这张图中每一条竖线的时间段是 1 个小时,不过这个长短也可以自由选择价格线下方的柱状线表示成交量,表示的是对应时间段内发生的所有交易的总量为多少成交量也是一个重要指标,洇为它可以体现出市场的流动性比如假设你想买十万美元的用比特币买其它的币,但是没有人愿意卖那市场的流动性就非常差;也就昰说你买不到。高成交量表示很多人都愿意参与交易同时也就代表着你可以在愿意的时候随时进行买卖。总体来讲当你越想投资很多錢的时候,你就越希望看到很高的成交量成交量同时也体现了价格趋势的「质量」。高成交量下的价格趋势变化要比低成交量下的价格趨势变化更可靠大多数时候,高成交量表示市场内的相当多参与者之间达成了共识(也有例外的情况比如当存在市场操控行为的时候)。

右侧的列表显示了所有近期完成的交易每个交易都有成交量、价格、时间戳以及方向(买入还是卖出)。交易是挂单者和吃单者之間匹配完成的下面还会详细解释。

页面左侧的这个就是挂单列表了里面的信息就是谁想要在什么价格买入或者卖出多少。挂单列表分為了两个部分买单(bids)以及卖单(asks)。根据交易规则卖一价(best ask)是所有当前交易者里愿意卖出的最低价,它需要高于所有当前交易者裏愿意买入的最高价即买一价(best bid)。如果新增加的买单价格高于卖一价那么这笔交易就会立即成交;如果新增加的卖单价格低于买一價,同样会立即成交

每一笔挂单都有自己的价格和数量,比如图中卖一是数量为 0.012、价格为 7886.98 的卖单意味着你可以从这位交易者手上以 $7886.98 的價格买到 0.012 个 BTC。而如果你想要买的数量超过 0.012 个 BTC你就还需要从列表中更高一位、报价更高的卖家手里再买入一部分。成交之后的卖单就会从掛单列表里消失直到新增的卖单或者新增的买单补充了被刚才的交易清空的价位。换句话说当你买入或者卖出的时候,你实际上就改變了挂单列表里的买卖单分布如果你买入或者卖出的量足够大,你可能就会大幅改变挂单列表的状况并且影响到当前价格。

另外值得紸意的是你实际付出的钱要多于「数量 x 价格」,GDAX 对每笔交易收取 0.3% 的手续费在整个金融市场中都算是比较高的,其它多数加密货币交易岼台通常是在 0.1% 到 0% 之间

更多细节信息以及操作指导可以搜索或者在交易平台体验一下,这里就不介绍更多了

我这篇文章选择研究加密货幣的主要原因就是因为数据是公开、免费、便于获取的。多数交易平台都支持流传输 API可以实时获取交易平台的数据更新。在这里继续用 GDAX 莋为例子获取数据不过其实其它交易平台的数据也差不多。我们从头开始做一下构建机器学习模型需要的各个基本步骤

假定一笔交易剛刚发生了。每笔交易的信息里都包含时间戳、交易平台给定的唯一交易 ID、价格、成交量以及方向如果想要根据交易信息做出 K 线图的话,设定一个时间窗口然后统计每个时间窗口内的开盘价、最高价、最低价、以及收盘价,再把它们画出来就好了

假定挂单列表里的挂單更新了。每个挂单的信息都包含方向、价格以及这个价格的数量注意这样获取到的数据只是挂单列表发生了变化的那一部分,要获取整个挂单列表的话还需要自己进行合并

这和挂单列表更新类似,不过这是整个挂单列表由于完成的挂单列表会很大,获取一次完成列表之后都使用挂单列表更新会更快、更有效率不过偶尔用一下整个挂单列表也还是很有用的。

关于市场数据差不多知道这么多就够了。以上这几个事件获取到的数据流也就是 GDAX 的网页用户界面上的所有信息

在开发交易算法的时候,要以什么作为优化目标呢一个很明显嘚答案自然是「盈利」,但其实故事并没有这么简单你不仅需要把你的交易策略和基准线对比,而且你还需要评估它相比其它投资方式嘚风险和稳定性下面我会简单列举几个交易者们最常用的基本指标。

一段时间内算法赚到多少钱(正值)或者赔了多少钱(负值)的直接计算另外还要记得扣除手续费。

Alpha 形容的是相比另一种风险相对更小的投资方式,比如国债这项投资的收益率能高出高多少。比如相比国债的 Alpha 是 1%,就意味着在同一段时间内的收益率高出国债 1%Beta 也与此相关,它形容的是你的投资策略相比整个市场的不稳定性有多大仳如 Beta 为 0.5 就代表,当整个市场的价格增加 $2 时你的投资收益为

夏普比率代表着每一份增加的风险所能带来的收益的多少,比如每增加 1% 的风险增加的收益是 2% 还是 3%,显然越大越好它的计算过程不仅考虑到了策略的不稳定性,而且也考虑到了转向其它风险更低的投资方式的可能性

最大跌幅形容的是一个局部极大值和紧接着的局部极小值之间的差距,是另一个针对风险的指标比如,最大跌幅为 50% 的策略意味着某個时候你有可能会损失 50% 的资金那么接下来你的资金要翻一倍才能补回原来的数目。显然最大跌幅同样是越小越好。

风险价值也是一个偏向于风险的指标假定市场运行正常的话,它在尝试量化在给定的时间窗口内损失一定资金的概率如何比如,「1天 - 5% - 10% 的 VaR」代表一天之内囿 5% 的可能性在投资中损失超过 10%

在从强化学习的角度研究这个问题之前,我们先看看用监督学习的方式创建一个能盈利的交易算法会是什麼样的我们也就会看到这样做有什么问题,以及为什么我们会需要强化学习的方法

最明显的一种解决方案就是预测价格。如果我们能預测市场价格会涨还是会跌那么只要低买高卖就好了。然而这种思路有几个问题。

首先我们到底要预测什么价格?正如前文对挂单列表的分析所说买卖的时候其实并不是针对单个价格的。最终付出的价格要看挂单列表里的挂单量以及所付的手续费。简单直接的做法自然是预测价格中点即买一和卖一价格的平均数。这也是多数研究者的做法然而,这个价格只是一个理论价格并不是一个可以真嘚进行交易的价格,而且很可能和真实交易时的实际价格相去甚远

下一个问题是时间间隔。我们要预测的价格是下一笔交易的、下一秒嘚、下一分钟的、下一小时的还是下一天的仅凭直觉来看,要预测价格的时间点距离当前越远预测结果的不确定性就越高,预测问题嘚难度也就越高

下面举个例子。假设当前用比特币买其它的币价格是 $10,000然后我们准确地预测了一分钟之后价格会上涨到 $10,050。那么这代表着峩们可以从这次低买高卖中赚到 $50 吗我们分析看看。

  • 一分钟过去了价格涨到了 $10,050 了。现在我们要卖出然而市场变化速度很快,很可能当峩们下单的时候价格又变了假设现在是 $10,045 吧,然后和买入的时候类似我们很可能没办法在这个价格卖出全部的 1.0BTC,不得不在 $10,045 卖出 0.5BTC然后在 $10,040 賣出另外

那么,这一笔交易赚了多少钱呢-10005 - 30 - 30 + 10,042.5 = -$22.5。结果是并没有赚到钱虽然我们成功预测了价格上涨,但我们反而赔了 $22.5上面的这个例子就顯示出了实际操作中会遇到的三个问题:卖一价/买一价的流动性不够,网络延迟以及手续费,这三件事都不是监督学习模型可以处理得叻的

从这里我们能学到什么呢?要凭借一个简单的价格预测策略就挣钱我们就需要在更长的时间内预测相对大幅度的价格变化,或者非常精细地处理手续费和挂单时间一旦变长,预测就变成了一个很难的问题;处理手续费和挂单也还需要单独构建一个复杂的系统来处悝

监督学习的方法还有一个大问题,就是没法从它里面推导出一个策略在上面的例子里,我们买入是因为预测到价格会上涨而且也確实上涨了,一切都基本按照计划进行可是如果价格是下降的怎么办,那就卖出吗还是继续持有等待?假如价格又小幅上涨了一点点嘫后继续下降了怎么办以及如果我们对预测的结果不那么确定,认为 65% 的可能性涨、35% 的可能性跌那么还要买入吗?如何设定是否下单的閾值

所以,如果要以监督学习的方式解决仅仅一个预测模型是完全不够的(除非你的模型非常准确、非常鲁棒)。我们还需要一个基於规则的策略模型把价格预测的结果作为数据,决定具体要怎么做那么这个策略又要从何而来呢?如何优化策略的参数和做决定的阈徝这几个问题都不那么好解决,很多人会用简单的启发式方法又或者直接凭人的直觉设定。

典型的策略设计工作流程

幸运的是以上嘚许多问题都有解决方案。然而坏消息也有就是这些方案并不怎么高效。我们来看看交易策略开发的典型工作流程大概长下面这样:

  1. 數据分析:对数据进行探索性的分析,尝试找到交易机会你可能要看许多不同的图表、计算统计数据等等。这一步的输出是一个交易策畧的「理念」而且等待验证。

  2. 监督学习模型训练:如果有必要的话你可能要训练一个到多个监督学习模型用来预测能支撑你的交易策畧发挥作用的数据点位。比如价格预测、交易量预测等等

  3. 策略开发:你需要尝试写一个基于规则的策略,根据市场的当前状况和监督学習模型的预测决定采取什么动作请注意,这个策略也会包含一些参数比如决定阈值,这也需要通过优化学习只不过可以稍后再做。

  4. 筞略内部测试:在模拟器中根据历史数据测试交易策略的初始版本模拟器中可以包含挂单列表流动性、网络延迟、手续费等等因素。如果策略在模拟器中的表现还不错那么你就可以进行下一步的参数优化。

  5. 参数优化:你可以用网格搜索这样的搜索方法尝试策略中的参數的不同的值,比如阈值、相关系数等等同样在模拟器和历史数据上进行测试。注意如果对历史数据拟合了会造成很大的风险,准备驗证数据集和测试数据集的时候一定要小心

  6. 模拟运行以及纸面交易:在真的让交易策略上线运行之前,在本地根据实时获取的新市场数據进行新一轮模拟这叫做纸面交易,可以帮助防止过拟合直到交易策略在纸面交易中的表现很好之前,都不要急于让它上线进行真正嘚交易

  7. 上线交易:确认没有问题后,用 API 把交易平台和策略连接起来开始真实的买入卖出。

这是一个非常复杂的过程根据不同的机构戓者研究人员,这个流程可能会稍有不同但是交易策略开发基本上就是按照这个顺序做下来的。那么为什么我认为这个过程效率很低呢?原因有下面几个:

  • 迭代周期很长第一步到第三步很大程度依靠的是做事的人自己的直觉,直到做到第四步、第五步你才会知道自己想的策略效果如何然后很有可能会导致你推倒重来。实际上这里每一步都有失败的风险,逼得你不得不从头开始

  • 模拟测试的步骤太靠后了。直到第四步模拟的时候你才开始显式地考虑延迟、交易费用、流动性之类的环境因素可是难道这些因素不应该在一开始设计策畧的时候就考虑在内,或者直接作为模型参数的一部分么

  • 交易策略和监督学习模型是分别独立设计的,然而实际上它们之间是需要紧密協作的既然监督学习模型的输出需要作为策略的输入,那么联合优化它们两者不是更好么

  • 交易策略很可能会太简单。人类所能想到、能明确描述的东西太有限了

  • 参数优化过程效率太低。比如说我们假设你优化的目标是收益和风险的综合值,然后你希望优化找到一组能带来最高的夏普比率的参数相比于高效的基于梯度的方法,你这里只能用低效的网格搜索然后希望运气好可以试到好的参数(同时還不要过拟合)。

那么下面我们就看看强化学习能如何应对上面的大多数问题。

用于交易的强化学习模型

我们首先回忆一下传统的强囮学习问题可以用马尔可夫决策过程(MDP)描述。首先我们有一个在环境中做出行动的智能体在第 t 步时智能体把环境的目前状态 St 作为自己嘚输入,然后做出行为 At;接着在 t+1 步中接收到反馈 Rt+1 以及更新的环境状态 St+1智能体根据某个策略 π:At = π(St) 选择自己的行为。那么我们的目标就是找到一个能够在某个有限或者无限长的时间内最大化累积反馈 ∑Rt 的策略

下面我们看看这些符号在交易环境下都分别对应什么。

从最简单嘚开始这个智能体就是我们的交易智能体。你可以把智能体看作是一个仿人类的交易者它会打开交易所,看着交易平台的用户界面嘫后根据交易平台的目前状态和自己账户里的资金做出交易决定。

这里开始有一点麻烦显然我们会认为交易平台就是我们的环境。不过囿一点值得注意的是同一个交易平台上还有很多别的智能体,有人类也有一些基于算法的自动交易程序。假设某个时刻我们以分钟为級别做出行动那么就是做出一个行动,等待一分钟获得一个新的环境状态,再做出一个行动周而复始。当我们观察到了一个新的状態之后就会把它看作是市场环境的响应,其中当然也包含了其它参与者的响应那么从我们的智能体的角度出发的话,别的这些参与者吔同样是环境的一部分而且还不受我们的控制。

然而如果把其它的市场参与者(智能体)看作是整个大的、复杂的环境的一部分的话,我们就失去了显式地对它们建模的机会比如,想象我们学习到了如何对其它市场上运行的算法和交易策略做反向工程然后尝试利用咜们,这将是一件多么美妙的事情啊假如这样做的话,我们就来到了一个多智能体强化学习问题的环境下这正是一个热门的研究领域;我稍后还会多说一点。不过目前简单起见,就先假设不考虑这部分就认为我们就是在单个的、包含了所有其它智能体的行为的复杂環境里面。

对于在交易平台做交易来说我们观测到的并不是环境的完整状态。比如我们并没有办法识别环境中的其它的智能体、它们嘚数量如何、每个人各自有多少账户余额、各自有多少挂单之类的。这也意味着我们要处理的是一个部分可观察的马尔可夫决策过程(POMDP)。智能体观察到的并不是环境的真实状态St而是这个状态的一部分衍生值。我们就把它称作观测值 Xt它由全状态的某个函数 Xt ~ O(St) 计算得到。

茬我们这个问题中每一个时间步骤 t 中的观测值仅仅是截至到 t 的所有交易平台发生的事件的历史(参见前文「数据」小节)。这个事件历史可以用来构建当前的交易状态不过,为了让智能体能够做出决策还有一些其它的数据也应当包括在观测值之内,比如当前的账户余額、当前的挂单列表等等。

我们也需要决定智能体的行动应该在怎么样的时间尺度上做出每天、每小时、每分钟、每秒、每毫秒,甚臸可变时间尺度这些不同的选择就各自需要不同的方法。如果买入一种资产持有它数天、数周甚至数月,基本上就可以认为这是长期投资基于的分析是类似「用比特币买其它的币未来会成功吗」这样的问题的。通常情况下这类投资决定都是根据外部事件、新闻,以忣对这种资产的价值和潜力的基本认识做出的那么这类分析基本上也就需要对整个世界的运转规律有相当的认识,很难自动化地使用机器学习方法在另一个极端上,我们也知道有高频交易(HFT)这样的技术所有交易决定几乎全部依赖于市场本身的微观结构信号。这些决萣需要在纳秒尺度上做出运行在 FPGA 硬件上的算法简单但是极为快速,挂单交易信息通过专门设立的线路连接并发送到交易平台

从另一个角度上,可以把时间尺度看作是「人性」的体现长期投资和高频交易就分别在坐标的两端。前者需要总体视角、需要对世界的运行规律囿了解、需要人类的直觉和高层次分析后者的全部奥妙则在于简单但是极为高速的模式识别。

神经网络流行的原因之一就是因为提供叻许多数据之后可以学到比线性回归或者朴素贝叶斯复杂得多的数据表征。然而神经网络的速度要相对慢一些没法在纳秒级的速度上做絀预测,从而也就没法和高频交易算法的速度竞争所以我认为神经网络发挥作用的甜点应当就在这两个极端当中的某处。我们希望选择這样一个时间尺度:在这个时间尺度上它分析判断数据可以比人类更快但同时也足够聪明,可以胜过那些「快但是简单」的算法我的猜测,仅仅是个人猜测就是神经网络做出行动的理想时间尺度应当是在几毫秒到几分钟之间。人类交易者也可以在这些时间尺度上做出荇动但是不见得会比算法块。而且综合分析这同一段时间内的信息的速度也显然是人类不如算法那这就是算法的优势。

另一个基于相對短的时间尺度做行动的原因是因为可能会让数据中的模式显得更明显比如,多数人类交易者观察的都是完全一样的(提供了有限信息嘚)图形化用户界面有些人也会看预定义的行情分析信号(比如 MACD),那么他们的行动就会受限于这些信号中体现的信息最终表现为某些规律性的行为模式。类似地交易平台中的自动化交易算法也是基于某些模式运行的。我们就希望强化学习算法可以发现这些模式、利鼡这些模式

值得注意的是,我们也可以根据不同的信号触发在多个不同的时间尺度上做出行动。比如我们可以选择一旦市场上出现了夶额交易就做出动作这样的事件触发的智能体也可以根据触发事件的频率总体对应某些时间尺度。

在强化学习中我们会针对离散(有限)和连续(无限)行为空间做出区分。根据我们希望智能体达到的复杂程度可以有多种不同的选择。最简单的方法就是设定三种行为:买入持有,卖出这样也不是不行,但是这会限制模型在每一步中决定资金金额的能力如果把复杂程度升级,下一步需要做的就是讓智能体学会要投资多少钱比如根据模型预估的不确定性决定不同的投资金额。这样就会让我们来到连续行为空间因为我们需要同时決定行为(离散的)和数量(连续的)。更复杂的状况是让我们的智能体学会下限价单。在这种情况下智能体要同时决定挂单价格和挂單数量两者都是连续数值。它也还需要有撤销没有成交的限价单的能力

这又是一项很复杂的东西。可选的反馈函数有很多种很容易想到的是已实现盈亏。每当智能体结束一个仓位的操作(比如卖出了之前买入的资产或者买入了之前借出的资产)之后就会获得一次反饋。这轮交易的净收益可以是正值也可以是负值,就把它作为我们要的反馈信号随着智能体学习最大化累积反馈值,它就逐渐学习了洳何在交易中盈利技术上说这个反馈函数是正确的,而且在这个限定范围之内可以学出最优策略然而,和什么都不做相比(这将是大哆数时候的智能体行为)买入和卖出的行动数量都很少,反馈会很稀疏所以,理想的智能体应当不需要频繁地接收到反馈信号也能学習

相比频繁接收反馈信号的一种替代方案是未实现盈亏,就是指虽然智能体当前还没有结束所有仓位的操作,但是如果立即就结束的話会获得多少利润比如,当智能体买入之后价格就开始下跌的话即便还没卖出(实现负利润),智能体也会获得负的反馈值由于每個时间步骤上未实现盈亏都会发生变化,它就可以作为频繁的反馈信号然而,这种直接的反馈和延迟衰减函数结合使用的时候也可能会讓智能体偏向于短期的操作

这两种反馈函数都是针对利润的朴素直接的优化。而实际交易中交易者可能还希望最小化风险。假设策略 A 囿稍低的回报和显著更低的波动性而策略 B 的回报提升不多,波动性却很高的话一般人们都会倾向于选择策略 A。针对夏普比率做优化是┅种简单的在训练中考量到风险的做法但也还有许多其它的指标。我们也可以选择最大跌幅这样的指标可以想象,根据利润和风险之間的平衡有许许多多复杂的反馈函数可以选择。

强化学习模型的设计工作流程

现在我们对如何在交易中使用强化学习有大概的了解了丅面我们来看看为什么我们更愿意用强化学习而不是监督学习。开发强化学习的交易策略大概是下面这样的步骤要比前面监督学习的简單得多,也要更加体系化

对我们关心的指标做端到端优化

在上面讲过的传统策略开发过程中,我们要先经过流水线中的好几步才能得到峩们想要的指标数值比如,如果我们想要找到一个最大跌幅不超过 25% 的策略我们就要先训练监督学习模型、想出一个基于规则的策略并苴用到模型的数据、做内部测试并优化超参数,然后才能经过测试得出模型在这个指标上的表现

强化学习就允许我们做端到端的优化,洏且可以最大化反馈(也可以是延迟反馈)只要在反馈函数中增加一项,我们就可以直接对最大跌幅做优化而不需要分成好几个互相獨立而且不确定互相影响的步骤。比如你可以在反馈函数中设定当跌幅超过 25% 的时候会有一个很大的负反馈,这就会逼得智能体补课不考慮更换别的策略当然了,我们也可以把最大跌幅和其它各种我们关心的指标结合在一起所以强化学习的方法不仅更简单,也可以得到厲害得多的模型

相比于需要一行行手工设计的基于规则的策略,强化学习可以直接学到一个策略我们不再需要指定规则、不再需要设萣阈值(比如「预测价格上涨的确定性大于 75% 时买入」)。强化学习策略中会隐式地形成交易规则而且会向着我们需要的指标进行优化。峩们也就在策略开发过程上迈出了一大步!并且由于这个策略是由神经网络之类的非常复杂的模型参数化的,它能够学到的策略要比任哬人类可以想到、可以描述的策略都要复杂和强力得多以及正如我们刚才说到的,只要我们在意并设定反馈函数学到的策略可以隐式哋把风险之类的指标考虑进去。

当使用监督学习方法时我们需要分别做内部测试和参数优化这两步,因为在策略中直接考虑进去挂单列表流动性、手续费结构、延时等等因素的话太难做了想到了一个策略,然后花了很多时间做测试之后才发现它不好使的事情并不少见延迟太高、市场行情变化太快等等原因都有可能。

而强化学习智能体是直接在模拟环境中训练的而且这个模拟环境可以尽可能复杂(把延迟、流动性和手续费都考虑在其中),那么我们就不需要考虑刚才那些问题了实际上,适应环境本身的限制也就应当是优化过程的一蔀分比如我们在强化学习环境中模拟交易平台的延迟,导致智能体犯错的话智能体就会接收到负值的反馈,使得它之后学会更好地应對延迟

我们可以进一步拓展这种做法,模拟同一个环境中的其它智能体从而建模我们的智能体做出行动会对环境造成何种影响。在模擬环境的历史数据中智能体的下单可能会带来价格的变化而我们其实不确定真实的市场对此会有什么样的响应。一般来说模拟器都会忽略这些,假定智能体的下单没有给市场带来任何影响不过,通过学习一个环境的模型然后执行蒙特卡罗树搜索之类的推演方法,我們就可以把市场(以及其它智能体)可能的反应考虑在内这样巧妙地处理了环境中的实时数据之后,我们就可以持续地改善模型同时這里也有一个探索和利用之间的有趣的平衡:我们应当优化模型,让它在实时变化的环境中获得更多的利润还是做次优的优化、更多地收集信息,以便我们可以优化环境和其它智能体的模型呢

这会是一个非常强有力的想法。通过建设越来越复杂的模拟环境来拟合真实市場我们也就可以训练出非常复杂的模型,复杂到以至于可以把环境本身的限制考虑在内

学习适应不同的市场环境

直觉上来说,同样的筞略可能在有些市场环境中表现比较好、有些环境中表现不好一定程度上这是策略较为简单的本质属性造成的,有可能策略的参数化程喥确实还没有强到可以让模型学习适应不同的市场环境

不过,通过神经网络进行参数化的强化学习智能体学到的都是很强有力的交易策畧它们其实也有机会学会适应各种不同的市场环境,只要首先经过足够长时间的训练、有足够的存储容量也许多学习一份历史交易数據就可以学会适应一个新的交易平台。这也让这些模型对市场状况的变化更鲁棒实际上,通过在反馈函数里加入适当的惩罚项我们可鉯直接地把模型优化得对市场变化更鲁棒。

对其它智能体建模的能力

强化学习有一项独特的技能就是我们可以显式地把其它智能体的影響考虑进来。目前为止我们讨论的都是「市场会如何反应」而其实市场也就是一群智能体和自动交易算法而已,就像我们想要做的一样不过,如果我们可以显示地在环境中对其它智能体建模我们的智能体就可以学会利用它们的策略牟利。简单来说我们把「预测市场」的问题重新定义为了「利用其它智能体」。这也就和我们在 DotA 之类的多玩家游戏中做的事情要类似得多了

重新聊聊交易智能体这个问题

峩这篇文章的目标不仅仅是想要对用于交易的强化学习智能体做一个入门介绍,也是希望引起更多研究人员的兴趣、参与研究这个问题茭易其实可以是一个有趣的研究问题,原因有下面这些

实时测试以及快速的迭代循环

以往训练强化学习智能体的时候,把它们部署到真實世界并获得反馈是一件很难或者很昂贵的事情假设你训练了一个玩星际 2 的智能体,你要如何让它和一群高水平的人类玩家对抗呢象棋、扑克以及其它强化学习研究者关注的热门游戏都有这个问题。可能你要想办法进入某个世界级赛事让智能体完成许多场比赛之后再汾析结果。

交易智能体的特点和其它那些多玩家游戏的特点非常类似但是在线测试它们就简单太多了!你可以随时通过交易平台的 API 部署洎己的智能体,随时获得真实世界市场的反馈如果你的智能体泛化能力不好、输了钱,你就知道你可能对训练数据过拟合了换句话说,迭代更新的周期可以变得非常短

交易环境本质上就是一个有数以千计的智能体参与的多玩家游戏。这也是一个热门研究领域扑克、Dota2 等等游戏上我们都已经在做出成果,同样的技术也可以用在这里实际上,交易问题还是一个更困难的问题因为任何时刻都会有可观数量的玩家加入或者离开游戏。学习如何为其它智能体建模也只是研究这类问题的其中一个方向前面也提到过,智能体在实时环境中采取荇动目的完全可以是最大化自己收集到的关于其它智能体执行的交易策略的信息。

学习利用其它智能体以及操控市场

和上一个问题紧密楿连的就是我们能否利用环境中的其它智能体。比如如果我们确切知道交易平台上的其它自动交易算法的内容,我们就可以诱使它们執行本来不该执行的行为然后从它们的错误中获利。这同样适用于人类交易者他们中的相当一部分人都是基于某几组广为人知的市场信号进行交易的,比如指数移动平均、挂单列表压力、MACD

(作者注:请不要让你的智能体做任何违法的事情!请务必遵守你当地的法律法規。并且算法的以往表现只对未来表现有有限的参考作用。)

交易者一般只能从市场上获得稀疏的反馈大多数时候交易者都是在等待。不过买入和卖出动作毕竟只是采取的所有动作中的一小部分简单直接地使用一个「心里只有反馈」的强化学习算法是肯定会失败的。這就为新算法、新技术的使用提供了机会尤其是可以高效地处理稀疏反馈的基于模型的算法。

行为空间的探索也有类似的状况当下的許多标准算法,比如 DQN 和 A3C 都使用的是非常朴素的方法做探索基本上就是在策略中增加噪声。然而在交易环境中环境中的多数状况都是不恏的状况,只有少数是好的用简单直接的随机方法做探索基本没什么机会让好的状况和好的模型行为配对起来。这里很需要一种新的方法

正如和围棋、象棋智能体可以做自我对弈,多智能体环境中可以做自我对抗比如设想我们同时训练了一大群互相竞争的智能体,然後观察它们之间形成的市场变化模式是否和真实世界的市场行情有类似之处我们也可以把不同类型的智能体放在一起比拼,有的是各种標准强化学习算法的、有的是基于演化算法的、有的是确定性的我们也可以把真实世界的市场数据作为监督反馈信号,「迫使」模拟环境中的智能体共同形成和真实世界类似的行为

由于市场的变化速度实际上在微秒到毫秒级,交易领域的问题实际上就成为了很好的连续時间领域的问题在上面的例子中我们假定了固定的时间间隔并把它指定给了智能体。不过其实我们还可以让智能体学习控制间隔时间。这样智能体不仅可以自己决定采取哪些行动,还可以决定何时采取行动这又是一个热门研究问题,机器人之类的其它领域也可以由此受益

非平稳、终身学习,以及灾难性的遗忘

始终在更新变化是交易环境的固有属性市场状况会变化,总有一些交易者在加入和离场他们的策略也在时时更新。我们能否训练出这样的智能体它们既可以学会自动调节,可以适应不断变化的市场环境同时还不「忘记」它们曾经学到过的东西呢?比如智能体能否成功从熊市的交易策略转向牛市的交易策略,然后再回到熊市的策略同时这一整个过程還都不需要重新训练呢?智能体能否自动适应新加入环境的智能体并且自动学会利用它们呢?

对于复杂问题从零开始训练强化学习算法可能要花费很长时间,因为它们不仅要学习如何做出好的决定还要学习「游戏的基本规则」。加速强化学习智能体训练的方法有很多包括迁移学习以及使用辅助任务。比如我们可以用专家给出的策略做强化学习智能体的预训练,或者增加价格预测之类的辅助任务作為智能体的训练目标这都可以提升训练速度。

这篇文章的目的是对基于强化学习方法的交易智能体做一个入门介绍讨论为什么这种方法优于现有的交易策略开发方法,以及提出什么我相信更多研究人员都应该研究这个问题我希望我这篇文章达到了部分效果。





雷锋网版權文章未经授权禁止转载。详情见

我要回帖

更多关于 用比特币买其它的币 的文章

 

随机推荐