如何将深度学习应用于什么是量化交易系统

作者:Weicong Liu
前些天,谷歌的AlphaGo战胜了围棋大神李世石,使得人工智能的相关话题一下子在媒体上火爆起来。这次胜利确实很让人意外。我的一些朋友在机器学习方面颇有建树,赛前,他们都一致认为李世石会获胜。当AlphaGo战胜李世石之后,大家对于机器学习的威力似乎有了一个新的认识。知乎上也出现了这样的话题:AlphaGo 的学习决策模型是否能用于股票市场的交易?
我看了这个问题下的所有回答。大神们各抒己见,高屋建瓴,从概念层面讲解了他们的观点,言之凿凿,令人仰慕。我才疏学浅,从概念层面讲不出富有哲理的话,所以决定另辟蹊径,讲讲AlphaGo使用的关键技术之一——增强学习,在量化投资中具体应用的论文。本文选择的两篇论文[1]和[2]分别来自KDD98和ICML06。照例,我会在文章的最后,谈一谈自己个人的一些看法。
本人并非机器学习专家,也非量化投资大神,写文章纯粹是为了讨论和分享。文中如果有错误,望各位海涵。
1. 传统的视角:优化夏普比率
做股票投资的人大多会为自己设定一个目标。有的人敢打敢拼,追求最大的年化收益;有的人性格沉稳,追求较低的风险。而大部分的投资者都试图在收益与风险中寻找一个平衡点,因此夏普比率成了人们考量投资结果好坏的一个重要度量。文献[1]就试图以优化夏普比率为目标,提出了一个将增强学习应用于股票的投资的框架。为了简单起见,我们考虑单个股票的投资问题,并假设这个股票的价格序列为\{z_t\}。
投资单个股票的时候,投资者有3种选择,做多、做空,和不投资。我们用1, -1, 和0分别表示这三种行为,那么action space就定义为F_t\in\{1,0,-1\}。在每一个时间点,我们都需要决定选择什么样的投资行为,用函数的表达方式即为F_t=F(\theta_t;F_{t-1},I_t)。这里,\theta_t表示在t时刻(学习到)的系统变量,而I_t则表示到t时刻为止,所有的历史信息的集合。历史信息的集合包含股票历史价格在内的所有历史信息。
为了学习到这个参数\theta_t,我们需要构建一个目标函数U(),通过优化这个目标函数学习到系统的参数。在不同的投资情形下,目标函数的构建方式可能各有不同:
累加利润(Additive profits)。这一目标函数适合于那种每次投资固定股票数目的投资方式。假使我们将资产投资于一直股票股票,与一个risk-free的资产(价格序列为{z_t^f})。在累加利润情况下,有r_t=z_t-z_{t-1}和r_t^f=z_t^f-z_{t-1}^f。那么,对于这两者来说,在时间长度为T的区间上,在固定交易数目为\mu的情况下,累计收益为P_T=\mu\sum_{t=1}^{T}{R_t}=\mu\sum_{t=1}^{T}{\{r_t^f+F_{t-1}(r_t)-r_t^f-\delta\vert F_t-F_{t-1}\vert\}}。其中
累乘利润(Multiplicative profits)。累乘利润按照复利计算,有r_t=\frac{z_t}{z_{t-1}}-1,而r_t^f=\frac{z_t^f}{z_{t-1}^f}-1。此时,初始投资为W_0时,累计收益为W_T=W_0\prod_{t=1}^{T}\{1+R_t\}=W_0\prod_{t=1}^{T}\{1+(1-F_{t-1})r_t^f-\delta\vert F_t-F_{t-1}\vert\}。
微分夏普比率(Differential Sharpe Ratio)。这是文献[1]使用的目标函数,其核心是给夏普比率做一个微分,以便于在线地更新参数,获得最优的夏普比率。形式稍微有点儿复杂,在此略过。
事实上,到目前为止,这个问题并非一个增强学习的问题。我们可以通过最优化目标函数,得到\theta_t,显式地决定下一个时间点的action,这更像一个分类问题。但是,文献[1]的末尾指出,我们可以通过value iteration的方式,利用Q-Learning,隐式地学习到在不同状态下不同action对应的Q函数。利用学到的Q函数,我们便可以在每一个状态下,选择Q值最大的那个action。
在98年以后相当长的一段时间里,将增强学习应用于量化投资的论文,基本上采取了与[1]类似的思路。这是自然而然的。增强学习的框架太像一个投资问题了,我们站在每个时间点,根据我们所处的状态,在几个action中寻找一个期望收益最大的action,这简直与我们在投资中做决定一模一样。似乎,这就是完美的配合了。
2. 视角的转变:最优执行问题
如果咱们延续文献[1]中的思路,那么也只能做跟这些20年前的paper类似的事儿了。文献[2]则讨论了一个不同的问题,我们称作”最优执行问题“。轻松一下,我决定使用一个颇具隐喻的故事而不是枯燥的公式,来讲解这篇文章:)
有一天,我的上司来到公司,对我说:”hi,伟聪,现在交给你一个任务,在xx小时内,帮我把这10,000,000股XX公司的股票给卖了。记得卖个好价钱,否则你的实习生位置就保不住了。“我一听就慌了,我一个做期权量化交易的实习研究员,怎么就被调去交易股票了呢?人的成功当然要靠自我奋斗,但是也要考虑历史的进程。我们公司之前的政治斗争中,两任总裁被董事会拉下马,他们手下的交易员也走了大半,导致现在交易员非常吃紧。既然中央已经决定了,那我就担起这个任务吧。(除了人名,以上纯属虚构:-D)
冷静下来,我开始分析这个问题:
其一,在每个时间点,我能观察到所有的历史数据,以及当前时间点的限价订单簿的情况(包括bid,ask,以及对应的交易量)。我们把这些信息称为”市场变量“。另外,我当然还得对自己所剩余的股票量,以及剩余的时间了然于胸。这两个量被称为”私有变量“,因为它们与市场无关。有了市场变量和私有变量,我们便可以构建状态向量。
其二,我需要考虑如何挂我的卖出订单。如果我挂出一个市价订单,这可能不是一个好的选择,因为我将失去对成交价格的控制。但是,如果时间已经快耗尽,而我仍然有一些股票没有卖完,挂出市价订单可以让我保证卖出,这时候,我不得不这么做。如果我挂出一个限价订单,我应该选择价格呢?我的价格可能比订单簿上的ask高,也可能比订单簿上的ask低。注意到,挂单的价格其实是一个离散变量,因为价格必须是股票价格最小变化量(比如,0.0001元,记为一个tick)的整数倍。根据这个特点,我们可以设计离散的action space。假设我们挂出的价格为p(t)而当前的ask价格为ask(t),我们所采取的action被定义为:a(t)=\frac{ask(t)-p(t)}{tick} 。比如,如果现有的ask价格是12.3456元,如果我挂出的卖单价格为12.3455,则a(t)=1。类似的,如果我挂出的卖单价格为12.3457,则a(t)=-1。
其三,我需要考虑,如何度量我的收益。这里,因为我考虑的是执行问题,用卖出的绝对价格去度量收益并不适合。市场条件千变万化,绝对价格很低的时候,我无论如何也无法以一个很高的卖出价格的。因此,我对收益的度量,是以当前的市场价格为基准的(比如bid和ask的中间值)。如果我能够以比市场价格高的价格卖出,那么我就执行的非常好,哪怕卖出的绝对价格很低。
以上,我们其实就是做了三件事。第一件搞清了状态向量的建立问题,第二件搞清了action space的具体形式,而第三件,则说明了reward function的形式。这三件事可不是微小的工作,它们使得最优执行的问题得以在增强学习的框架中解决。文献[2]给出了一个快速算法,有兴趣的朋友可以具体看看。
在看论文的实验结果之前,我们可以想想,如果让我们手动卖出,我们会如何挂单?我想以下两点是大家都会比较认同的:
当时间还很充裕的时候,我们应该敢于给卖单挂比较高的价格。即使挂出的卖单不能成交,因为时间充裕,我们仍然有信心在剩下的时间内以比较好的价格卖出股票。
当所剩时间固定的时候,未卖出的股票越多,我们挂单的时候,就会把价格降得更低。因为未卖出的股票给了我们更大的卖压,我们必须降价以图卖出。
观察文章中用增强学习学到的state-action对应关系,我们会发现,算法的结果与我们的想法不谋而合:)
现在,让我们再看看文章一开始提到的那个知乎问题:AlphaGo 的学习决策模型是否能用于股票市场的交易?
回答这个问题本身并不难。AlphaGo的学习决策模型大框架[3]已经发表在了Nature上。我们需要分析一下,AlphaGo所用的模型能成功的要素是什么、围棋模型框架具有哪些具体的假设。如果这些要素和假设在交易问题上并不符合,那么我就可以比较轻易地做出判断了:不能用于股票交易。在那个知乎问题下面,就有人采取了类似的分析方法回答这个问题。
这样的答案,回答的其实是“套用AlphaGo模型用于股票交易,能否成功“。AlphaGo中使用到的增强学习技术,深度学习技术等等,能用在量化投资上吗?这就是另外一个问题了,更具体也更有意义。
量化投资是一个非常广阔的领域,里面有很多细小的具体问题。我相信,对增强学习有一定了解的朋友,应该都能想到类似[1]的思路。但扪心自问,看到[2]之前,我们能想到增强学习可以用在最优执行问题上吗?我个人的观点,不是机器学习不能用,而是我们往往不知道把它用在那儿,也不知道如何使用它。
不过,我非常反对那种”我一定要把机器学习用在量化投资上“的思路。这往往容易让人走上歪路。我认为一个比较好的路子是:在做量化投资的过程中,我发现其中的某一步或者某一个具体问题,似乎与某些机器学习中的问题或者模型相符合或者相类似,于是我寻找两者之间的联系,成功地利用机器学习方法解决了这个投资中的问题。当然啦,说说容易,做起来就难了,能够看到事物之间的联系的人,往往需要同时对两者都有足够深刻的了解。
废话略多,到此为止。轻拍。
[1] Moody, John E., et al. “Reinforcement Learning for Trading Systems and Portfolios.” KDD. 1998.
[2] Nevmyvaka, Yuriy, Yi Feng, and Michael Kearns. “Reinforcement learning for optimized trade execution.” Proceedings of the 23rd international conference on Machine learning. ACM, 2006.
[3] Silver, David, et al. “Mastering the game of Go with deep neural networks and tree search.” Nature 529.): 484-489.
同系列之:
转载请注明来自36大数据(): &
除非特别注明,本站所有文章均不代表本站观点。报道中出现的商标属于其合法持有人。请遵守理性,宽容,换位思考的原则。更多公众号:LTLHMarket量通量化商城公众号,武汉量化学院公众号最新文章相关推荐搜狗:感谢您阅读机器学习怎样应用于量化交易(一),本文可能来自网络,如果侵犯了您的相关权益,请联系管理员。QQ:

我要回帖

更多关于 什么是量化交易系统 的文章

 

随机推荐