点击蓝字

关注我们

AI TIME欢迎每一位AI爱好者的加入!

本文研究的主要问题是做市商如何在证券交易市场上发布有效的买卖限价单以最大化净期望利润,同时有效控制潜在风险。为提出一套简单有效的交易策略,本文使用强化学习方法-Q学习实现在无需对环境进行建模的条件下,找到最大化期望收益的交易策略(即根据不同市场条件发布的买卖报价以及交易单量),并通过对马尔可夫过程状态变量的降维来降低计算复杂度。本文使用的数据是芝加哥商品交易市场某期货商品在2019年的交易数据和市场数据。根据Q-学习模型得到的最终交易策略在某芝加哥自营交易公司的内部回测中通过样本内和样本外测试,其表现显著超过一系列常用的基准交易策略以及公司现行的交易策略。

钟月漾:本科毕业于清华大学工业工程系,目前为芝加哥大学布斯商学院运营管理系博士,现师从 Amy R . Ward 教授,主要研究方向为随机规划、排队理论和强化学习在服务运营管理领域的应用。

一、证券市场的两种模式

本次分享内容是强化学习在金融市场场景下的应用,是综合了强化学习和数据驱动的方法来解决金融问题,对证券市场中的证券交易方式和时机提供了一种指导方案。

在美国的股票市场中,70%是以电子交易进行的,其有两种类型,一种是限价单,一种是市价单,接下来首先解释说明这两种类型的概念。

首先是限价单(limit order),顾名思义就是限定价格的订单,分为买方和卖方两种类型。具体而言,限价单会指定一个交易价格投放到市场,此类订单不会立即完成交易,只有在市场价格达到订单指定的价格后才会生效。一般买方的订单价格被称为买价(bid price);卖方的订单价格被称为卖价(ask price)。上图所示的是一个存储了所有在市场中未成交的限价单的本子,称为限价订单簿(limit order book)。其中每一个坐标轴位置代表一个价格,所处位置的矩形代表积累的限价订单数量,所有被投入市场且未被交易掉的限价单就会被存储于这个本子上。

第二种类型的订单是市价单(market order)。与前面限价订单最大的区别在于它不需要限定交易价格,而会以当前市场价格进行交易。此类订单也分为买方和卖方两种类型。结合上图和前面提到的限价订单簿,可以看到完整的交易形式。浅色箭头表示进入市场的限价单,深色箭头表示进入市场的市价单以及市价单和限价单进行交易的顺序。

具体而言,当市价单进入市场之后,它会从最优的市场价格进行交易。对于卖方而言,市场卖单会从最高的买价开始交易,当这个价格的限价单全都被交易完之后,进入下一个次高的买价进行交易,以此类推。同样的对于买方而言,市场买单会从最低的卖价开始交易,再到次底的价格,以此类推。

对于在同一价格的交易,将依照先到先得的规则进行,也就是说最早投入这个价格的限价单会被优先交易,这是一种常见的交易模式。本文将站在做市商(market making)的角度进行决策,做市商的工作就是在市场当中投放限价订单,包括限价买单和限价卖单,通过交易来赚取买卖差价,因为买价肯定低于卖价,所以中间的差价就是做市商可以赚取的盈利。

二、做市商面临的风险

本项目的研究动机源于市场波动的随机性,其导致市场价格的不可预测,使得做市商的买单和卖单无法一直保持在市场的买卖两边,于是就使得赚取利润不是那么显然。举个最简单的例子,当一对买单和卖单同时被市价单成交,做市商就可以赚取买卖的价差。然而当市场价格发生变动时,限价单可能全部堆积在买方或卖方一侧,这时就无法获取利润。并且市场的随机性还表现在市价单的单量、以及其他市场交易人员投放和取消的限价单数量等等。

基于以上问题,文章的研究目标是提供一个实时指令,建议做市商何时以何种价格,投入多少限价单到买方或卖方,从而实现净收益的最大化。与此同时还有两个限制条件:

  • 需要尽量控制投入的买单和卖单的数量差距使其较小。因为过大的买卖单量差距会使得公司面临较高的风险。当市场价格出现了向某一方向的波动后,如果限价单大多只存在于不利的市场一方,那么就将赔付巨大的损失。

  • 希望能够获得较高的夏普指数。夏普指数是一个常见的金融指数,刻画了每多承担一单位风险所能带来的额外收益。夏普指数越高,代表承担一单位的风险可以带来的额外收益越多。一般而言>1是可接受的,>2非常好,>3就非常完美。

因此解决该问题可分为以下三步:

  1. 将问题刻画为一个马尔可夫决策问题,即MDP。

  2. 用Q学习算法解决这个MDP。由于该MDP的维度非常大,我们将使用降维的方法来提高计算效率(降维部分在之后会详细解释)。

  3. 最后用实际数据来验证算法的表现性。

三、马尔可夫决策问题

我们考虑一个有限范围,离散时间马尔可夫决策问题,即隔一段时间做一个决策。首先考虑最简单的交易策略,也是公司用于做回测时验证交易算法有效性的交易策略。假设买卖双方都只有一个订单,只有放或者不放两种选择,如果决定下单,就会将限价单投放在当前最优市场价格上。

在建模之前,让我们先了解一下整个系统的动态变化。因为是非连续的决策过程,在时刻t做一个决策之后,系统就会发生变化,直到时刻t+1再做一个决策,因此我们需要知晓从时刻t到时刻t+1这期间系统的变化。这个过程简化为三个连续发生顺序的事件:

  1. 第一步,在时间t,以当前系统状态下,决策者做出投放订单、取消订单或者不做操作的决策。

  2. 第二步,很多市价单进入市场,和限价订单簿上的限价单进行交易。

  3. 第三步,别的交易人员在限价订单簿上投放或取消限价单。

经过这三步后,系统进入t+1时刻,然后重复以上三个步骤。

接下来拆解MDP的各个元素,包括状态变量、决策变量、转移函数和目标函数。首先是状态变量,观察前面的限价订单簿示意图,假设有n种价格,用Rt表示时刻t限价订单簿的状态。Rt包含R1tp和R2tp两个状态,其中R1tp表示在时刻t,价格p是否存在我们的订单,1代表存在,0代表不存在,而正负号则代表限价卖单还是限价买单,正号代表限价卖单,负号代表限价买单。而R2tp代表的则是其他交易者在限价订单簿上的订单数量,为非负的整数,具体代表在时刻t,价格p上他人的订单数量,买卖方向依然采用正负号判断。总之表示时刻t限价订单簿的状态,即状态变量。基于此状态,我们使用β和α代表当时市场价格,即最高的买价和最低的卖价。

然后是决策变量,本文采用最简单的决策类型,即是否在最优价格上投放订单,因此就会有4种可能的决策结果:00,01,10,11。其中,00代表不投放限价订单于买方或卖方,11代表在最优的市场买价和卖价处各投放一张限价单,01代表买方不放,卖方放,10代表买方放,卖方不放。

在决策者做完决策后(也就是上述第一步事件),现在我们考虑后两步,也就是市场价格订单进入市场,以及别的市场参与者做决策,这里采用随机变量D、O、C来表示。DtMB代表市场买单(market buy)在时刻t到t+1之间进入市场的数量。DtMS代表市场卖单,在时刻t到t+1之间进入市场的数量,刻画的是第二步事件。Ot代表的是别的参与者投入的限价单数量,Ct代表他们在该时间段取消的限价单的数量,刻画的是第三步事件。结合这三步所对应的变量,就可以得到时刻t+1,即下一阶段做决策时整个限价交易簿的状态,用Rt+1来表示。

最后是目标函数,为一个用于刻画盈利的常见的量加上另一个惩罚项。第一部分用于刻画盈利的量为净收益(profit and loss)。其计算方法可以简单描述为买卖均价(称为中间价)减去最优买价,再乘上成交买单的数量,加上最佳卖价减去中间价,乘上成交卖单的数量,也就是说,PnL是基于中间价进行计算的。中间价(mid price)代表的是最优市场买价和最优市场卖价的平均值。前面提到过,因为市场左右波动过大会导致订单只存在其中一方,使得无法盈利,所以就利用中间价格的移动作为惩罚,防止中间价格移动过大。

公式的后半部分中,Δmt代表中间价格的变化,invt代表决策公司所有限价买单的数量减去所有限价卖单的数量,刻画了买卖单投放的数量差异,称为“库存”。因此第二部分是一个惩罚项,为“库存”与中间价格变化的乘积,希望尽量减少库存和减慢价格的变化。

但是我们没法用常见的方法解决这个马尔科夫决策问题,主要因为两个问题:

  • 第一个问题是,无法获得其转移函数。实际数据包含大量的不确定因子,难以拟合为常见的函数形式。

  • 第二个问题是,模型的维度爆炸。举个简单的例子,考虑一个非常小规模的市场,只有20个价格(实际的数据可能包含成千上万的价格),在每个价格上最多只排列1000个限价单(实际上它可以无限的积累在每个价格上),这个限价订单簿的状态变量的空间的大小就有1060

因此我们选择采用随机逼近法(stochastic approximation method),以及降维(state aggregation)。

四、Q学习算法

本文采用的随机逼近方法是某种强化学习方法,称为Q学习算法,是一种适合维度较小的方法,所以首先面临的问题就是如何降维。这里列举了5个维度:

  • 第一个和第二个维度刻画的是市场价格移动速度。如果市场价移动非常快,令BS/AS为1,否则为0,其中BS是买方市场,AS是卖方市场。

  • 第三个维度是中间价格变化速率。取值为0,±1或±2。其中0代表中间价格是稳定不变的,±1代表它变化速度相对较慢,±2代表相对速度变化较快。正负号代表变化的方向。我们通过超参数f来界定速率的快慢。

  • 第四个维度是“库存”水平,即限价买卖单的数量差别。如果数量误差别,为0;如果差别较小,为±1;差距较大,为±2。同样利用正负号来区分数量更多的是卖方或是买方。通过超参数I来界定订单的差距。

  • 第五个维度是积累到目前为止的净利润。如果比较低为0,比较高的为1。通过超参数P来界定利润的大小。

回顾完整市场状态用Rt来表示,invt是库存水平,而PnL是积累的净收益。这三个状态变量现在通过G函数压缩成上面的5个维度,通过这个压缩,1060的完整状态空间被压缩为200=2×2×5×5×2,这是一个相对较小的维度,非常适合Q学习算法的应用。

接下来具体介绍Q学习算法,假设总共进行N次迭代循环,每次迭代初随机选取若干(s,a)对,s代表压缩后的状态变量,a代表决策变量。针对每一个(s,a)对,都有一个对应的Q值。在每一次迭代过程中,我们随机选取若干(s,a)对来更新迭代其对应的Q值。具体的Q学习方式为:

  1. 随机选择一个(s,a)对,返回数据中寻找样本,使得该样本的起始点对应的状态变量压缩后为s。

  2. 然后找到它压缩前的状态,写为Rsn。沿着该样本进行仿真,得到它的下一时刻的完整状态变量是Rsn+1,然后利用压缩函数获得新的压缩态的状态变量s`。

  3. 现在从s转换到了s`,然后用传统的迭代方程,来更新迭代Q值。

    • 给定步长/学习速度,α,算法将以1-α的概率,保持上一轮迭代得到的Q值;以α的概率,对Q值进行更新。

    • V代表从s到s`带来的一步净收益。

    • γ代表贴现因子,因为需要将下一期最大的Q值(基于下一期的状态变量s)换算到上一期,所以需要乘上γ。

  4. 经过N次迭代,得到了最后一期所有(s,a)对应的Q值。于是对于任意一个状态变量,其所对应的最优决策就是使得Q值最大化的那个决策变量。于是就可以用argmax Q来指挥最优决策。

五、结论验证

口说无凭,接下来通过真实数据来检验Q学习的表现。我们使用的数据是芝加哥商品交易所交易的某一类期货在2019年的交易数据和市场数据,我们关注的交易时间为上午9点到下午2:30,时间精确到微秒,包含了市场在每一时刻发生的情况。

关于如何训练模型,举个例子,我们用2019年6月份数据作为训练集,通过这个样本内的测试训练,可以确定前面提到的压缩函数中的三个超参数的具体数值。固定这三个超参数具体数值,用下一个月,即7月份的数据进行回测,也是样本外的测试,如果通过了样本外测试则说明模型得到的策略表现好。类似的,我们也可以利用连续多个月的数据来进行样本内和样本外的测试,以提高策略的稳定性。

该表记录了算法得到的最终结果,类似于一张查询表。其中左边5列是压缩后的市场状态,对应了每一个可能出现的市场状态。右边2列是算法告诉我们的最优决策。以第一行举个例子,当前市场状态是0,0,-2,-2,0,可以解读为买卖两侧的交易很少,市场价格波动很大,以投放的限价买单远多于限价卖单,并且目前累计净收益很低。

在该市场状态下,通过Q学习的算法得到最优的交易策略是0,0,即代表在买方和卖方都不投放任何限价单。以此类推。总结这张表,可以得出在不同的市场状态下,应该做出怎样相应的对策。从上面的表中可以了解到的交易特点如下:

  1. 最好把限价单放在更活跃的那一方,比如说如果有很多的市场卖单出现在市场当中,那就最好多投放一些限价买单。

  2. 交易策略不具有方向性,也就是说并不是追逐市场价格而做决策是最优的,即如果市场价格一直往高走,不一定往卖方进行投放订单就是最优。

  3. 尽量使得限价买单和限价卖单的投入数量保持平衡。

  4. 当亏损或者是盈利很少时,最优的决策是取消所有已下的限价单,即所谓的止损。

下面是一个对比图,展示了Q学习算法得到的策略和其他常用标准策略的差别。其中蓝线代表本文的Q学习方法,曲线为收益曲线,横轴表示交易天数,纵轴代表累计获得的收益。绿线和黄线是比较常见的交易算法,红线为本文合作公司所采用的交易算法。可以看到Q学习方法带来收益远高于其他三类。而且从数据来看,每日的PnL超过1000,夏普指数超过3,表现非常良好。

六、未来的研究方向

1)首先第一点,在上图的收益曲线中,可以看到存在赚钱与亏损相互交替的情况,这对公司来说存在较高的风险,所以接下来会寻找改进方式来改善这个现象。

2)第二个研究方向,现阶段的模型是有限时间段的交易决策模型,但实际情况选择交易多久是一个可以调节的随机数。可以尝试通过某种算法来找到最优的交易时长。

论文链接:https://www.ijcai.org/Proceedings/2020/615

  e           m     t

往期精彩

 AI                i

整理:闫   昊

审稿:钟月漾

排版:岳白雪

AI TIME欢迎AI领域学者投稿,期待大家剖析学科历史发展和前沿技术。针对热门话题,我们将邀请专家一起论道。同时,我们也长期招募优质的撰稿人,顶级的平台需要顶级的你!

请将简历等信息发至yun.he@aminer.cn!

微信联系:AITIME_HY

AI TIME是清华大学计算机系一群关注人工智能发展,并有思想情怀的青年学者们创办的圈子,旨在发扬科学思辨精神,邀请各界人士对人工智能理论、算法、场景、应用的本质问题进行探索,加强思想碰撞,打造一个知识分享的聚集地。

更多资讯请扫码关注

(直播回放:https://b23.tv/Cuc6VU)

(点击“阅读原文”下载本次报告ppt)

基于强化学习的中间商赚差价指导手册相关推荐

  1. 智能城市dqn算法交通信号灯调度_博客 | 滴滴 KDD 2018 论文详解:基于强化学习技术的智能派单模型...

    原标题:博客 | 滴滴 KDD 2018 论文详解:基于强化学习技术的智能派单模型 国际数据挖掘领域的顶级会议 KDD 2018 在伦敦举行,今年 KDD 吸引了全球范围内共 1480 篇论文投递,共 ...

  2. 滴滴 KDD 2018 论文详解:基于强化学习技术的智能派单模型

    国际数据挖掘领域的顶级会议 KDD 2018 在伦敦举行,今年 KDD 吸引了全球范围内共 1480 篇论文投递,共收录 293 篇,录取率不足 20%.其中滴滴共有四篇论文入选 KDD 2018,涵 ...

  3. 论文浅尝-综述 | 基于强化学习的知识图谱综述

    转载公众号 | 人工智能前沿讲习 论文来源:https://crad.ict.ac.cn/CN/10.7544/issn1000-1239.20211264 摘要:知识图谱是一种用图结构建模事物及事物 ...

  4. 【论文笔记】基于强化学习的连续型机械臂自适应跟踪控制

    文章目录 摘要 关键词 0 引言 1 空间连续型机器人动力学模型 1.1 场景假设 (1) 环境假设 (2) 模型假设 1.2 公式分析 2 空间连续型机器人滑模控制器 3 基于强化学习的滑模控制器 ...

  5. 基于强化学习的自动化剪枝模型

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 来源丨AI科技评论 编辑丨极市平台 导读 GitHub上最新开源的一 ...

  6. 华为诺亚ICLR 2020满分论文:基于强化学习的因果发现算法

    2019-12-30 13:04:12 人工智能顶会 ICLR 2020 将于明年 4 月 26 日于埃塞俄比亚首都亚的斯亚贝巴举行,不久之前,大会官方公布论文接收结果:在最终提交的 2594 篇论文 ...

  7. 今晚8点:基于强化学习的关系抽取和文本分类 | PhD Talk #18

    「PhD Talk」是 PaperWeekly 的学术直播间,旨在帮助更多的青年学者宣传其最新科研成果.我们一直认为,单向地输出知识并不是一个最好的方式,而有效地反馈和交流可能会让知识的传播更加有意义 ...

  8. 直播预告:基于强化学习的关系抽取和文本分类 | PhD Talk #18

    「PhD Talk」是 PaperWeekly 的学术直播间,旨在帮助更多的青年学者宣传其最新科研成果.我们一直认为,单向地输出知识并不是一个最好的方式,而有效地反馈和交流可能会让知识的传播更加有意义 ...

  9. 王亚楠:基于强化学习的自动码率调节

    本文来自 爱奇艺 技术产品中心 资深工程师 王亚楠在LiveVideoStackCon 2018热身分享,并由LiveVideoStack整理而成.在分享中,王亚楠分别介绍了自动码率调节的实现过程.现 ...

  10. GitHub|基于强化学习自动化剪枝

    点上方计算机视觉联盟获取更多干货 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:来源丨AI科技评论 编辑丨极市平台 AI博士笔记系列推荐 周志华<机器学习>手推笔记正式开源!可打 ...

最新文章

  1. JS-DOM Element方法和属性
  2. 文巾解题 292. Nim 游戏
  3. 元学习论文OPTIMIZATION AS A MODEL FOR FEW-SHOT LEARNING的简单理解
  4. 安装mysql5.7
  5. PHP高级应用视频教程大全学习
  6. 排序第一天,回忆关键字
  7. mysql数据自定义随机_Mysql 自定义随机字符串
  8. 数据库大并发操作要考虑死锁和锁的性能问题
  9. SVN客户端的使用方法
  10. 网络管理员考试试题讲解
  11. Hadoop--基础知识点--4--hadoop集群-docker搭建
  12. java结巴分词如何提高运行速度_结巴分词 java 高性能实现,优雅易用的 api 设计,性能优于 huaban jieba 分词...
  13. 在设计齿轮时,如何选用合适的模数
  14. Python条件语句和循环
  15. 高数复习(2)--方向导数与梯度的理解 附根据梯度求轨迹的基本模型
  16. c++ 构造函数 which is of non-class type奇葩问题
  17. 【如何配置环境变量】
  18. 儿科学类毕业论文文献有哪些?
  19. 线性模型和非线性模型的区别,以及激活函数的作用
  20. php 页面加载图片卡,javascript,图片_js动态加载image导致浏览器很卡,javascript,图片 - phpStudy...

热门文章

  1. 【微信公众号】微信扫一扫,条形码/一维码,二维码功能解析
  2. 谁说大象不能跳舞——《读书笔记》
  3. matlab逆变换法产生随机数_用matlab产生随机数
  4. matlab栅格化处理,栅格化处理方法和栅格图像处理器的制造方法
  5. 大数据技术方面需要哪些支持
  6. c语言入门自学mobi,算法精解:C语言描述[AZW3][EPUB][MOBI][23.00MB]
  7. 并查集 --算法竞赛专题解析(3)
  8. 黑客帝国中英文对照经典对白
  9. 只愿得一人心白首不分离
  10. 百度搜索推广账户搭建思路