近日,谷歌人工智能学者Denny Britz发表了一篇文章《 AI 》,对其使用强化学习技术,学习如何构建有利可图的算法交易系统的经验进行了总结。
Denny表示,人工智能的优势显而易见,但是也不能忽视良好的基础设施:市场、数据、延迟、模型、执行,必不可少;同时,强化学习比监督学习难度要小些。
原文如下:
人工智能已经相当商品化了,它比优秀的基础设施工程、数据收集或领域知识的归纳偏差更商品化。现在,你可以轻松下载最先进的模型,并在你的数据上运行它们。除非你处于相关研究的前沿,否则不太可能仅仅通过训练一个好的模型就获得显著优势。
当人们意识到他们的花哨的人工智能模型是建立在蹩脚的基础设施上,用蹩脚的数据(同时也被其他人使用)训练不起作用时,他们就会放弃。
人工智能可以给你一些优势,但这些优势没有好到让你忽略其他因素。你仍然需要构建良好的基础设施、获取良好的数据、适当的延迟等等。
很少有人愿意花时间在这些事情上。每一个因素都是乘数,如果某一个因素为零,那你的AI模型多好都没有用。
那么,其他的因素是什么呢?
市场——选择正确的市场进行交易。不要随大流,选择每个人都默认选择的。从法律上和技术上进入市场越难,发现机会的可能性就越大。流动性较弱的市场可能无法被成熟的基金所忽视,因为它们无法适应其资产管理规模。同样,这对于追求“优质API”的工程师通常是违反直觉的——优质API通常意味着受欢迎,流行通常意味着商品化。
数据——考虑其他人无法访问或不愿使用的数据源。例如,由于复杂的速率限制和IP禁令,可能存在难以抓取的数据。大多数人会在这里放弃,但这是你的一个机会,要对流行的API和开源软件持怀疑态度,所有人使用的数据都是一样的。
延迟——你可能不打算与HFT交易员竞争,但这并不意味着你可以完全忽略延迟。好的延迟能使执行更容易以及更少的滑点。要注意在何处托管系统、如何发送数据、如何序列化数据等等。
模型——一般来说,好的数据比好的模型更重要,但是更好的模型也能给你带来优势。注意,你经常在模型复杂性和延迟之间进行权衡。
执行力——如果不能执行,好的模型就没有多大意义。你收集的历史数据可能和交易所实际发生的情况看起来很不一样,直到开始交易,你才会知道实际发生的情况。
强化学习
在上一篇文章发表两年之后,我还认为强化学习是市场交易的正确方法。然而,我承认,在工作时很多技巧工也是必要的。
强化学习的主要好处是您不需要设置可区分的损失函数。相反,你可以在某个时间范围内直接优化盈亏。通过建立良好的仿真,模型可以学习到对延迟、抖动、滑点以及实际市场中可能发生的其他情况的鲁棒性。
在监督学习中,这就困难多了。你需要获得许多超参数才能得到“刚刚好”——什么时间范围优化?要优化什么?如何处理由于延迟、被拒绝的订单、API问题等引起的随机情况?如何处理非iid数据等等。
我相信如果你努力的话可以做到,但是依靠基于仿真的方法似乎是更有原则的解决方案。
我也相信市场模拟是一个很好的强化学习算法的测试平台。它有着今天许多技术都难以克服的特性:
稀疏的积极反馈。在随机探索和奖励的情况下,你很难发现发现好的政策。
需要归纳到未来的日期。在RL中,研究者“对训练集进行测试”时,往往忽略了泛化。
有了一个好的模拟器,环境就可以以延迟、抖动、API问题、滑点等形式提供许多随机性。
非平稳性。市场数据分布随时间变化,agent必须学会处理它。
观察到的低信噪比。
优化迭代速度
由于其他agent会适应你的策略,因此大多数效率低下的问题都会转瞬即逝,这些问题会根据你交易的地点和方式,可能持续几毫秒、几秒、几分钟、几小时、几天、几周或几个月。
持续盈利的方法就是始终善于发现稍纵即逝的机会。这基本上就是元学习。
训练模型时优化外循环速度,在发现新策略和调整模型和基础设施方面,迭代的速度越快,效果就越好。围绕这一点构建基础设施。
查询和加载批量历史数据来处理要尽可能快一点。要特别注意反序列化的成本。在使用匹配引擎构建市场模拟器时,要对其进行广泛的基准测试。
最小化RPC和网络往返。我们这里讨论的是数量级。我最近的一个模拟器比第一个模拟器快了约50倍。
由于模型是在仿真中训练的,这意味着在训练时迭代速度快了50倍。
自动化数据可视化,这样当您得到意想不到的结果时,就可以很容易地查看它们。
当市场下跌时你无法赚钱
我从不太了解交易的人那里听到一个常见的论点和误解——我很幸运,因为市场上涨而获利。
实际上,好几个月以来,我的PnL图表看起来是这样的:
那么,我是否只是做空资产?不,我没有做空任何事情,因为在我所交易的市场中不可能做空。市场很少会一直下跌。当人们说市场下跌时,他们说的是一个特定的时间范围。市场可能在每日或每小时的范围内上呈下降趋势。
这并不意味着在更短的时间尺度上只有向下的运动。它可能会有相当大的波动。一旦你开始放大到秒和毫秒,总是会有上升和下降,仍然有可能从中获利,而无需做空任何东西。
就个人而言,在下降趋势(按小时或每天的比例)期间,我总是赚得更多。我仍然不知道为什么会这样。可能是因为市场那边有更多的流动性,或者是因为当价格开始下跌时,有很多不知情的交易员提交幼稚的指令进入市场。
了解交易
如果向来自不同背景的十几个交易员提出相同的问题,那你会得到十几个不同的意见。
请注意,我使用的是“意见”一词,而不是答案或事实。由于交易是一个秘密领域,因此很少有被广泛接受的真理。
人们没有相同的背景知识,他们在不同的地方使用不同的术语。如果你想学习交易,这很难。我不知道有什么在线资源能很好地教授算法交易。
你在网上找到的大多数课程和教程都是大师们写的——他们通过教学赚钱,但自己从来没有建立过一个盈利的系统。他们可能会向你推销他们的SaaS产品。
研究论文也是如此。我订阅了arXiv的q-fin,但与机器学习等领域相比,其质量比较低。偶尔也会有一些有趣的点子,但绝大多数都是人们为了找工作和把一些东西写进简历而做的实验——这些想法在现实世界中都站不住脚。
显然,运行一个盈利系统的人是不会发表与它有关的论文。《交易与交易所:从业者的市场微观结构》( and : 微观结构)和《金融机器学习的进步》( in )等书是一个不错的起点,但我的经验是,没有什么比边做边学或找导师更好的了。