机器学习(非传统统计方法如回归)在量化金融方面有哪些应用? - 诺米粒 - 2024最新贷款口子论坛
登录 or

机器学习(非传统统计方法如回归)在量化金融方面有哪些应用?

机器学习和统计很难隔离,这里排除传统统计方法是想知道现代机器学习方法在量化金融的应用,如有困难请忽略此要求。

本题已收录知乎圆桌 »金融科技浪潮 ,更多「金融科技」话题讨论欢迎关注
已邀请:

白米Ⅲ级

赞同来自:

尝试回答一下这个问题,也算是对自己阅读的一些论文的总结,顺带谈下一点自己的思考。前一阵子被吐槽说中英夹杂,也不是为了装逼,因为其实翻译过来,意思反而有了偏差。
如果你去搜索早期的神经网络、SVM的相关论文,会发现不少是做股票预测的。原因很简单,因为似乎我们可以天然地把股票投资的问题看成一个分类问题或者回归问题。回归的角度,我们可以根据之前的历史数据,预测下一个时间点的股价;分类的角度,我们可以根据历史数据,预测下一个时间点股价的正负。看起机器学习的方法可以完美适用了。不过这个结论显然是错的,因为如果真的完美适用,那么机器学习的大牛们怕是已经赚发了以致无心学术。
那么,问题在哪里?我个人的观点,大家没有太多关注机器学习算法能够奏效的假设(assumption)。以分类问题为例,分类算法能够奏效的假设是在同一类下,样本数据应该是独立同分布(i.i.d).的。而股票价格数据特点就是,股票收益率曲线的自相关性(autocorrelation)极低,噪声大,而且不稳定(stationary)。如果明白了这两点,我们再回过头去看这类文章的思路,就发现了问题。绝大部分文章在提取特征方面基本没下什么功夫,就靠股票的return的信息来构成pattern。这样,因为股票收益曲线的不稳定、高噪声、低相关性,使得最终做成的模式(pattern)没法满足在同一类的情况下i.i.d的条件,因此,这类方法的失败也是必然的。如果你仔细观察,会发现这类文章喜欢使用IBM啊MSFT啊这样的股票做实验,为什么?因为这种顶级公司股票的价格比较稳定,噪声少,相关性强。
不过,近年来已经有一些研究者开始从别的角度思考问题。传统的机器学习方法使用的基本是是股票的日线图和月线图。实际的股票交易大部分是使用限价订单(limit order book)的,一些能够得到数据的研究者,开始思考将机器学习的方法应用于限价订单层次的数据上,典型的论文就是今年新晋的ACM fellow,Michael Kearns在ICML06上发表的Reinforcement learning for optimized trade execution 不同于之前的论文,这篇文章试图为历史数据的每一个时间点构建状态(state),这样可以将增强学习的框架应用其中。这提供了与以前截然不同的思路,不过也并没有从假设的层面证实文章的方法确实是适应限价订单数据性质的。
在种种的失败之后,开始有一些机器学习领域的研究者认识到,如果想在股票投资的问题上成功,似乎不能够独立于股票数据固有的性质。于是开始有一些方法,试图利用股票数据既有的性质,来设计在线学习(online learning)的算法。典型的是之前NTU计算机系的PhD, Bin Li在ICML,IJCAI的一系列论文。他的核心其实就是抓住了股票的均值回归(mean reversion)的性质。简单的理解,均值回归认为股票有它自己的隐含价值,股价在这个值附近波动。他的这一系列论文,其实就是在怎么找这个'均值'方面有些许变化。在时间点t,最开始他认为这个均值就是t-1的股价,后来他又认为这个均值是过去一个窗口时间上的均值。这些论文的思路、算法都很简单容易理解,但是包含的思想是前人不曾有过的,就是利用股票数据的性质设计算法,而不是硬将数据往既有的机器学习算法里套。他现在已经凭借这些论文在武大金融系当上了副教授。
一家基金公司,通常会同时运行好多种策略进行投资。这就产生了另外一个问题,应该如何给这些策略动态地分配权值?机器学习领域有很多类似的问题,比如我要做一个分类问题,我有好多个分类器,如何集成(ensemble)它们使得它们的表现比较好?关于多种策略的权值问题,Das在KDD11的paper,Meta optimization and its application to portfolio selection中有详细的讨论。这类方法被称为Meta-Learning Algorithm。
现如今的股票交易已经比几十年前要复杂的多,催生了很多新的交易场所和交易类型。这也给机器学习的专家们很多的机会。典型的例子是Michael Kearns在UAI09年发表的Censored exploration and the dark pool problem。这篇文章是描述暗池交易的,我在另一个回答里也提到过。向某个暗池提交v股的交易量,如果实际成交量小于v,我们知道其容量;而如果实际交易量就是v,则只能知道其实际容量是大于v的。假使在某时刻,我们需要在K个暗池中交易V手股票,我们就需要根据历史数据推断哪些暗池的容量大,在这些暗池里我们就多投入。如果暗池的容量都stochastic的,是不是就是另外一个更复杂的故事了?事实上已经有很多后续的工作来讲述这个故事,不过不是机器学习界,而来自主流的金融工程界和运筹学界。
那么机器学习界最为红火的深度学习(deep learning)在这个问题上是否有所斩获?前一阵子看新闻说,已经有几个人利用DL的技术开了家对冲基金公司,赚了很多钱。那么DL问题在交易上的作用可能体现在哪里?我自己没事儿也YY过这个问题,我觉得可能是在统计套利方面。最简单的统计套利方法是看股价的相关性,比如A和B两只股票价差一向稳定在10块钱,某天价差突然跌倒5块钱,统计套利就假设,这个价差会恢复到10块钱,那么我们就可以就此设计交易策略。如果股价价差真的恢复了,那么就可以实现套利。但是显然,这样的关系可能不是那么明显地存在于股票的价格中,可能存在于收益曲线中或者方差曲线中,甚至更高复杂度的统计量中。DL提供了将原数据投影到另一个特征空间中的方法,而且是高度非线性的。那么,原数据中没有体现出来的相关性,会不会在这种高度非线性的投影空间中体现出来呢?如果有体现,是不是能够设计交易策略实现套利呢?这是我自己的一点点思考。

白米Ⅲ级

赞同来自:

个人认为ml是各种工具里面最好用也最实用的工具,没有之一。我自己原本是交易员转型quant在撸ml,所以下面的探讨充满很多个人的偏见和幼稚的想法,各位大牛请轻轻地扔砖;

开篇先讲几个选择上的问题:
1. 非监督学习VS监督学习:因为本身可以用t+1的returns矩阵来完成类似于分类标记的工作,所以我倾向于认为对于我们来说,监督性学习绝对应该是首选,而非监督性学习是耍流氓;
2. 分类VS回归:如果是预测单纯的方向,那就是分类问题,如果是预测returns或者相对涨跌的幅度,那就是回归问题;
3. 简单VS复杂:奥卡姆剃刀原理决基本适用,越复杂的模型假设条件越多,参数越多,overfitting的风险也就越大;
4. 线性VS非线性:交易的世界里面,以量价类因子为例,线性因子都相对很好找。而真实的交易环境里,线性因子的比例妥妥低于10%。这个和奥卡姆剃刀即矛盾也不矛盾,矛盾是指非线性因子肯定不能用线性模型来描述,不矛盾是指在非线性模型这个集内部,奥卡姆剃刀依然适用;

下面简单介绍下机器学习在quant世界里的几个应用层次问题,按难度依次递进。
首先,最简单的当然是对因子和数据的预处理了,如何normalize,如何/什么时候winsorize,如何/什么时候threshold,如何做bootstrapping,如何做cross_validation。这个坑不大也不小,没搞对后面都是白瞎;
其次,那就到了如何调参了。这个应用范围就很广了,对quant来说,主要包括两个方面的应用,一个是为了最大化提取不管是根据行业经验人为提取特征或机器选出来的特征的信息而撸参,一个是在搞模型时根据各种实际情况和假设条件灵活而优雅的撸参,说白了就是选一个不是那么深的坑跳进去。总之是涉及到参数的选择问题都得撸上一发。正所谓撸前淫如魔,撸后圣如佛;
再次,就涉及到如何选择模型的问题了,根据本人实地撸的经验和各种YY来说,以下几个撸法很适合quant行业,OLS,lasso,group lasso,ridge,elastic net,nnls,svm,svr,markov,hmm,gbdt,neural network,generic algorithm, decision tree, random forest,PCA,DL。貌似都写进来了,哈哈。其实真的上面的东西都有用,关键是如何根据实际情况选择最合适的撸法,很大程度上决定了你后面的成功率。而最最最关键的问题又在于不去试试,你又压根不知道哪种最合适,YY是没用的,不去里面试试你永远不知道深浅;
再再次,当然就涉及到因子组合的问题了,这里面分为2个,1是降维,2是分配weight,这个我就不说太细了;
最后,当然就是深度神经网络和DL了,这是理想中的彼岸花。确定好目标,自动寻找筛选组合特征一气呵成,听起来很好,实际在交易中确实不太现实。但是嘛,你要知道,人,理想总是要有的,万一实现了呢?

最后贴几个ml做的cta策略的图,镇楼:
1. 全样本训练绩效

2. 肯定知道你们会说全样本训练得到的绩效有卵用,所以上个交叉验证图

3. 还是知道你们会说交叉验证也没有卵用的,于是上某小段实盘绩效

4.最后还是知道你们还是会说历史业绩有个卵用我又不知道未来还会怎样,所以请各位关注我们明汯未来绩效,爱信不信。国内CTA领域的头把交椅问题,we r not just say say。

最后再打个招聘广告,有实力的大牛,明汯随时为你敞开大门。

白米Ⅲ级

赞同来自:

我们ML教授曾经说,虽然机器学习研究这么火热,但是在业界90%以上的应用仍然使用的是线性模型,尤其是在Predicative Learning(预测学习)领域。

我见识浅,但是估摸着这句话用在量化交易上也成立。机器学习在量化交易中的应用,仍然是以回归为主,可能还有一些决策树,但线性模型是绝对的主力。特别是主要在市场数据里面找
信号的交易者,对于他们来说线性模型的Model Capacity很少有不够用的时候,找到一个高质量的信号比换一个更复杂的模型更有利可图。更何况市场数据的信噪比极低,稍微复杂一点的模型就有 Overfitting 的风险。

那是不是说其他机器学习方法在交易里面就没有应用了呢?也不是。对于数据源不仅局限于市场数据,而是什么都挖(包括但不限于Twitter,互联网流量,天气,各种新闻媒体等等)的矿工们来讲,线性模型显然就不够用了。比如做 Behavioral Strategy 的,做 Event Driven Strategy的,做 Index Arbitrage 的,由于无法确定数据之间是怎样的关系,就会把ML里一些复杂的甚至比较新的研究成果往上招呼。有些时候交易者们还需要自己做NLP(自然语言处理)和CV/PR(模式识别),这就更是机器学习的重镇了。

总体来讲,现在高频交易(做市)还是线性模型称王,统计套利要更丰富一些,而更一般(中低频)的算法/量化交易所使用的机器学习则会更加多样化。
匿名用户

匿名用户 白米Ⅲ级

赞同来自:

今天thesis答辩,私信回复不及时请见谅。
- - - - - - - - - -
我来贡献几个具体的例子吧,涉及四个方面,主要包括机器学习在做市商业务(market making)或者自营交易(prop trading)中的应用,当然这只是在理论上的探讨,也夹杂个人的小想法,并不是啥机密,希望compliance不要找我麻烦哈哈。
(1) 第一个例子是分类方法(classification)的一个应用。我们都知道交易公司或者券商的对手家(counterparties)有好多不同的“段位”,例如有比较弱鸡的散户(retail flow),也有比较牛逼的其他玩家(Citadel、Two Sigma、Virtu、Hudson River等)。从信息学上讲,散户的订单(order)所携带的信息不多,随机噪音居多,而大玩家的单子就体现了他们所掌握的信息、和对市场行情的判断,因此一个聪明的trader肯定想要区分出来那些野鸡retail flow和身经百战的Citadel,以防被搞。这里,我们就可以很自然的使用到classification,至于用什么变量去分类,用什么分类方法,怎么调节模型系数,以及分完类之后的信息可以怎么使用,大家可以自己动一动脑筋啦。
(2)证券买卖的定价模型(pricing model)。大家都知道金融工具例如股票(equity)、债券(bond)、国债(Treasury)和各种交换(swaps)的价格都包括一个中间价(mid price),和在中间价两边的买家和卖家价(bid price 和 ask price)。通常,尚未执行的订单中,bid price < mid price < ask price。当然,在固定收益类的产品中,价格可以是利率(rates)、差价(spread)等等,但总之,这里关键的概念是bid、mid和ask的关系。这三个价格的关系可由下图直观表现:

那么,对于trader来讲,一个定价模型起码应该包括两个部分:一个mid price模型、和一个bid-ask spread模型,两者组合起来就可以对顾客进行简单的报价。对于mid price,数据的来源可以是交易所即时发布的交易或挂单情况,对于北美市场,也可以是来自于consolidated tape的成交信息。
然而,这些数据源的噪音巨大,而且数据更新的频率很快,大多在毫秒甚至微秒级别。因此各种降噪手法(noise reduction)在这个情景中可以大展身手,我们希望通过降噪来获得一条平稳的mid price曲线。为此,我们可以使用很多非线性方法,首先是各种样条函数(spline methods),尤其是B-splines,其中knots和degree的选择需要认真调节。更加精彩的方法包括各种滤波(filter),例如卡尔曼滤波(Kalman filter)。
卡尔曼滤波把过程(process)分为两类,一类是可以被观测到的测量值(measurement),一类是隐藏的状态变量(state)。建模者需要指定描述这两类变量的函数关系(
),此外,我们还需要指定隐藏变量关于时间的变化(
),这里面可以使用简单的时间序列模型(time series)。下图描述了一个卡尔曼滤波的基本逻辑。卡尔曼滤波的一个经典应用是军事中对导弹飞行轨迹的估计。这里,我们的数据源(measurement)是雷达对导弹位置的测量,但雷达的测量是有偏差/噪音的,导弹的飞行也有抛物线和流体力学之外的噪音,所以我们需要根据雷达测量来推测导弹的实际位置(state)。


价格的模型原理也一样,我们只不过把数据源从雷达信号替换成了交易信息,把隐藏变量从导弹的真实位置替换成了mid price。当然,这种模型的缺点就是没有基本面和经济逻辑,当市场的判断出现系统性偏差时,这个模型生产的价格也就毫无意义。下图是一个卡尔曼滤波为正弦函数降噪的实例,黑线是正弦函数,蓝点是带噪音的被观测到值,红线是过滤后的估计值,可见效果还不错:


(2) 差价模型(bid-ask spread)。有了中间价格,我们需要还需要一个差价模型。这可以是一个运筹学中的优化问题,我们的(极度简化版本)目标函数是:
其中,
代表定价为
时顾客购买的概率,
代表成本。当然,真实的模型要复杂得多,比如成本是一个未知的变量(有很多estimators),
要被
所替代,这里,

直觉上,我们很好理解,报价
(或者差价
)越大,顾客越不愿意与其进行交易,就好比一个西瓜大概值个5块钱,我说6块卖给你,你说行,但我如果要价100,你肯定不干...... 所以
是一个关于
的递减的概率密度函数。具体的估计有很多手法,其中很多non-parametric的方法,同时还要注意各种统计问题,例如数据不全(incomplete data)、控制各种变量等等。
(4)最后再说一种很浮夸的玩法,跟trading就没有太大关系了。加州Mountain View有一个Google Venture投资的科技公司叫Orbital Insight。他们专门用神经网络和深度学习去识别商业卫星拍摄的图片(我猜测大部分是和object recognition相关的技术),然后推测出很多和经济/金融相关的数据/信号。比如他们用卫星拍摄的沃尔玛门前的停车场图片,查一查汽车的数量,去推测这个季度沃尔玛的销售情况:


或者拍摄炼油厂和储油罐的照片进行分析,来推测现在市场上的石油供应量,如下图:

详细信息可以看我的另外一个回答:有哪些「神奇」的数据获取方式? - 知乎
匿名用户

匿名用户 白米Ⅲ级

赞同来自:

机器学习在量化金融里的应用很多,不可能一一详细解答, 你在网上搜索的话相关论文上千篇,我这里随便给你几个链接做参考吧。
A Machine-Learning View of Quantitative Finance
http://www.qminitiative.org/UserFiles/files/S_Cl%C3%A9men%C3%A7on_ML.pdf

Machine Learning and Algorithmic Trading In Fixed Income Markets
http://www.datascienceassn.org/sites/default/files/Machine%20Learning%20and%20Algorithmic%20Trading%20In%20Fixed%20Income%20Markets.pdf

Machine Learning in Financial TradingMachine Learning in Financial Trading

你可以读这本书 "Machine Learning for Financial Engineering"
下载 Machine Learning For Financial Engineering.pdf

另外一本书 "Statistically Sound Machine Learning for Algorithmic Trading of Financial Instruments"
100币求书 - Statistically Sound Machine Learning for Algorithmic Trading

佐治亚理工有门课你可以看看 Machine Learning for Trading
ML4Trading - Quantwiki

Algorithmic Trading Strategies with MATLAB Examples

白米Ⅲ级

赞同来自:

看了上面几位盆友的回答及讨论觉得受益匪浅,同时我也注意到该问题关注者里面有许多让我仰视的前辈,这里也斗胆放上一个初学者的单纯思考与实践结果供大家一起探(yu)讨(le)。
前面几位朋友提到机器学习在金融市场的预测应用,这确实是件让人兴奋的事情。是的,情理上,使用所谓的一些技术手段就想预测市场,毕竟naive,但因为这种情理上甚至逻辑上的“不可能”就放弃自己尝试,那我也不甘心啊。于是决定亲自踩坑,赤膊上阵,结果就当一个血淋淋的栗子吧,正好目前的答案还没人举一个活生生的具体实例。
来,我来举个:


我的研究对象是HS300历史数据,我关心它的涨跌。我的目标是亲自实现验证体会机器学习做市场预测这一构建过程,顺带瞧瞧这玩意儿是不是文献或是研报中“传说”的那么神或是然无卵。
首先我们得熟悉我们的数据,获取过去十年CSI300指数原始数据(代码开发环境Ipython Notebook):
df = rd.get_price('CSI300.INDX', '2005-01-01', '2015-07-25').reset_index()[['OpeningPx', 'ClosingPx']]
有了开收盘价格后,我们把原始数据这般那般后,有了下面三张图:
图一:


图二:

图三:

  • 图一表示过去近2500个交易日,当天是涨是跌天数的统计。
  • 图二表示每日收益率随时间序列的变化。
  • 图三表示涨跌天数的频率分布。
有兴趣的盆友可以仔细看看图,里面有很有趣的东西。

熟悉了数据之后就可以正式开工了,我主要从以下三点来做些尝试:
1.机器学习估计器的选择,即我们使用何种方法进行我们的预测。
2.训练集样本数量的选择,即我们每次预测结果之前使用多少条训练集合的样本。
3.涨跌时间窗口的选择,即我们每个样本中的特征个数,我们训练集每个单元包含连续多少个交易日的涨跌。

下面具体说:
1.根据手头数据的情况及scikit-learn: machine learning in Python中下图所示的引导:


我们选择比较RandomForestClassifier、LinearSVC、KNeighborsClassifier,结果如下:


可以看出,KNeighborsClassifier表现明显逊于RandomForestClassifier、LinearSVC,它的波动较大且胜率与另外两者比也不理想。这结果与JMLR的一篇神奇文章有点类似: [Do we Need Hundreds of Classifiers to Solve Real World Classification Problems?](http://jmlr.org/papers/v15/delgado14a.html),文章测试了179种分类模型在UCI所有的121个数据上的性能,发现Random Forests 和 SVM 性能最好。
2.训练集样本数制约了预测结果的准确性,理想情况下我希望每次做预测的样本数越多越好,但你知道理想很骨感的,训练集样本数一方面受实际总数据量限制,另外,计算资源与时间也是制约因素。我们最终要形成某种程度的妥协,即保证相当程度预测效果下选择最小的训练集样本数量。于是我们计算样本数从1~300范围内的胜率,结果如下:


可以看出,控制其它条件不变,随着样本数增多,胜率逐步提高结果更为稳定并且最后维持在0.52~0.53左右波动,为了节约计算资源及考虑到历史数据总量,我们可以选择100个作为训练样本数。
3.涨跌时间窗口选择,它实际上反映了交易日历史的涨跌对下一个交易日的影响,这个动量是否客观存在,我认为从交易心理上说还是有一定依据的,比如作为交易者如果过去一连10个交易日全部飘红,对于后一天的走势我更愿意谨慎看空。当然,这是个极端的臆想,归根结底的表现怎么样,还是要看数据给的答案:


这样的结果让人抓狂,有点看乱码的感觉。后来我改变了每次回测的起点发现,基本每次结果都差不多,一个共同点是:每次曲线的开端都会存在倒塌式下滑,而后稳定震荡于0.5扔硬币的概率左右。也就是说,动量是存在的,只不过很小(结合前面两节的试验结果其期望处于0.53这个位置),且时间窗口很短,超出这个时间窗口,预测问题就转化为扔硬币问题。
---------------------------------------
上面就是我对机器学习在金融市场的预测应用做的一个小试验,综合三张图的结果来看,其实概率还能勉强说比纯抛硬币好那么丢丢(低于0.5的情况并不多见,调试程序的时候发现0.53是个神奇的数字),但这毕竟是我快速自己实现的一个小Demo,可以想像,如果有更优秀的算法,更丰富的数据,更合理的特征选择,意想不到的结果也会是情理之中。
经过自己的尝试后我想机器学习在金融市场的预测应用既不会那么神,也不能说它无卵用,我相信圣杯的存在,在某一你未发现的细节之中。
最后丢下包含讨论内容细节的链接,包含整个实现过程的Python代码。希望有前辈更多的指点,我会再继续学习下去。
Ipython Notebook Research Alpha下机器学习一瞥,关于跌跌涨涨的思考

京东白条 白米Ⅲ级

赞同来自:

下面以“小白信用”中用户社交关系的评估为例,谈谈我们是如何在量化运营中应用机器学习方法的。
小白信用是根据用户在京东的浏览、购物、投资理财、信用产品使用和履约情况、个人信息完整度等多个维度的数据,通过大数据算法,对用户的信用水平给出的综合评估。评分越高,表明用户的信用越好,可以享受更多权益。
我们应用5角图模型对小白信用进行评分,模型包括:身份、行为偏好、资产、履约和社交关系。其中,行为偏好、履约和社交关系大量用到了机器学习方法。


在社交关系的评估中,我们运用图模型(Graphical Model)来进行构建关系网络,选出社群以及影响力大的个体。在图模型中,每个个体都是一个节点,节点之间的边有对应的权重,可以代表重要性评分或者联系频率等。我们选用“最大似然估计算法”进行模型估计。
具体来说,假设我们有用户的人人网社交数据,例如用户名、好友、与好友之前互动频率,留言条数,最近访问数等。另外我们还有京东商城用户的手机通讯录信息,如姓名、电话,以及商城互相付款信息等。
我们可以将每个用户当作节点,如果两位用户之间互为好友或者在手机通讯录中出现过代付记录等,都可以认为这两位用户之间有边相连。边的权重可以用两人之间的互访数目、留言条数、代付金额等代表。权重也可以是上述各因素的加权平均。
确定节点及边的权重后便可以进行模型估计。由于两用户之间的关系是没有方向的,因此我们在这里运用无向图模型。如果自变量相对较少,可用算法1进行模型估计;如果自变量过多,可用算法2进行模型估计和变量选择。
算法1 对已知结构的无方向高斯图模型的估计算法
1. 初始化
;
2. 对
重复以下操作直至收敛;
(1)将矩阵
划分成第一部分:除第
行和第
列的部分;第二部分:第
行和第
列;
(2)解
,未知数为边的参数
。将
扩充,在相应位置加入0,得到

(3)更新

3. 对每个
得到
,其中

算法2 Graphical Lasso
1. 初始化

2. 对
重复以下操作直至收敛;
(1)将矩阵
划分为第一部分:除第
行和第
列的部分;第二部分:第
行和第
列;
(2)解
,运用循环坐标下降法求解;
(3)更新

3. 对每个
得到
,其中

注:

为样本协方差矩阵,
为协方差矩阵,
为协方差矩阵的逆矩阵的元素,当其为0时,代表两节点间没有边连接。
选择不同的惩罚因子
可能产生不同的结果。自变量选择的自由度比较大,可以选择用户信息如年龄、收入、婚姻状况、登录京东频率、下单频率、购买最多的品类代码等。惩罚因子
的选择根据实际情况而定,如果需要的决定性变量较少,则选择较大的惩罚因子,反之亦然。
不同大小的惩罚因子
导致的不同模型估计结果如下图所示。模型估计完成后,可以给每个节点赋予权重,对影响力大的节点(用户)进行个性化推荐,有针对性地教育高影响力用户。

白米Ⅲ级

赞同来自:

无论你用不用ML的方法在量化金融,首先你的交易逻辑得是正确,人本身对市场的判断是准确,然后用ML的方法来处理一些费时费力的地方。
之前在MilKY:深度学习做股票预测靠谱吗?这个回答里面讲了深度学习用来直接做股票预测的问题。这个帖子里面我讲一个简单的深度学习在量化金融领域的应用。

最近可能会跟Kilian做research,贴一张他最新的densenet的深度学习模型,丰富下回答内容,哈哈哈哈。





背景:
市场是由机构和人以及其行为构成的(机构也是由人构成的),所以按照专业投机原理 (豆瓣)中讲的,可以把参与交易的人,分为三类,短期交易者,中期投机者,长期投资者。大家喜欢说的价值投资就是长期投资者吧。这里的深度学习策略针对的是交易者和投机者。
尽管这里是深度学习在量化金融领域的应用,但是仍然是离不开人性和博弈的,深度学习在这里面更多的是一种工具性质的存在。

方法:
由于大部分散户的冲动和一部分基金从业者的新生力量需要时间磨练,市场上总是存在着因为走势而心情大变的人,心情一变,交易就受到影响,于是就犯错了,然后有老道者就可以抓住机会赚这一波钱。
一个简单情绪分析办法就是:拿到用爬虫爬取的这一天或这一周所有的新闻,以及你公司能够拿到的所有分析报告。然后分别用LSTM模型对新闻和报告进行情绪分析。
为什么这么做呢?首先新闻太多,报告太多,个体交易员或者一般的基金公司根本不可能有时间来全部消化,那么只能用机器来解决,而深度学习中的LSTM模型在自然语言处理领域的不错效果就可以被用在这里做情感分析了。然后用了LSTM之后能怎么样呢?
  1. 新闻:要时刻了解中国大妈们每天在看什么,可能会想什么,进而大概掌握大妈们未来的可能动向,从而设计相应的策略进行狙击。
  2. 报告:分析报告可能不是一般的散户能拿到的,所以拿到报告的大多数是机构,那么我们如果能用深度学习快速得到分析报告能带来信息,是不是可以抢人先机呢。


其实这个就是一个简单的深度学习在量化金融的应用,用到了MilKY:深度学习做股票预测靠谱吗?回答里提到的博弈思想。不是说模型本身自己跟自己博弈或者跟人博弈,而是说你的模型能让你跟市场中的其他人博弈。

白米Ⅲ级

赞同来自:

之前做多因子组合研究的时候,很不幸的发现题主所说的传统统计方法线性回归配以合理的数据处理方法已完胜其他各路强非线性分类器(xgboost,SVM等)。不过,原因大概是因为现在主流的因子挖掘方法本身就是线性的,从而束缚了其他模型的发展空间。
量化里的因子挖掘就是我们以往所说的feature engineering,本身其实是可以有很多tricky的方法的,过去这一步与因子组合割裂现象太严重,并不是什么好事情。所以我最近正在尝试开发一些配合非线性分类器训练的非传统因子挖掘方法。
至于其他的很多策略其实最终都可以归结为因子、信号甚至策略的组合问题(当然交易逻辑和portfolio management也很关键)。整个策略的开发就像是一个造积木和搭积木的过程,而机器学习的模型对应的就是搭积木的方法。
其他的,比如HMM可以做regime switching,以及我还真知道某同学的用LSTM做多因子的策略,目前用了几百万在实盘,但第一周亏损了1%,一切都待观望。
匿名用户

匿名用户 白米Ⅲ级

赞同来自:

有信号的ml模型很多,能越过spread的很少。ML用在交易上不是新鲜事,倒像是隔几年就来一轮炒冷饭的老梗。GP和LP都爱sexy的概念,DL、RBM、LSTM听起来多带劲儿,大概都忘了十几年前大家用logistic regression炒Prepay model的时候也一样。哦,连softmax的公式也似曾相识呢。

不开玩笑了,即使没过spd的信号,也是有用的。

白米Ⅲ级

赞同来自:

谢邀。
机器学习在量化金融方面可以分为两部份 :
(1)市场因子分析与投资决策
(2)大数据计算企业/个人违约概率。
我是做智能投顾(robo advisor,我们自己叫做数字化资产配置,以区别于炒股的“投顾”)模型搭建的,所以详细解释下第一部分。
以市场因子分析为例。传统投资人常用过去的投资经验,或参照某一特定时段的市场状态做出投资决策推论。 当然回归模型也是一种类似的方式。这种方式所追求的精准是最小化经验误差,(例如回归模型是最小化均方误差);
但机器学习在金融上追求的则是最小化泛化误差, 因为在多变的环境与场场中, 能够适应 的变化, 才能获得更好的风险/收益测度。

我们可以简单的将机器学习与传统数量分析在几个维度做出比较:
(1) 资料形态要求: 传统数据输入要求(以回归模型为例),常为连续的数据格式,当处理离散参数时仅能以二元形式存在(O,1);而机器学习, 除了传统连续型数据, 对于类别数据(nominal data)、有序数据(ordinal data)都能做为输入因子, 避免Garbage in, Garbage out。
(2) 算法多样化: 传统数量分析模型以线性方式作出预估判断 但机器学习中则有许不同种算法, 以机器学习的一种SVM(支持向量机)为例,当中的线性核函数、高斯核函数、多项式核函数等就包含了线性与非线性的分类、预估, 而另一种机器学习方法,朴素贝叶斯分类器,则以最大化后验概率为主要判别方式;
(3) 因子筛检: 在传统数理分析中常用stepwise又称逐步回归法—以最少的变量,来达成对应变量最大的预测解释力。在这个过程中,一些不具有统计意义的变量被一步步地排除出来; 而在机器学习中, 我们拿决策树分析(Decision Tree)为例, 则是以信息增益(information gain)作为选择因子的筛选标准, 由于因子在不同时间对于应变数的解释不同, 因此以机器学习保留所有因子, 能成为长期较佳的算法;
作为一种数据分析工 具,机器学习主要还是结合前边介绍的理论进 行计算的。其主要应用范围包括但不限于以下几项:
(1)投资者的行为习惯及风险偏好的分析;
(2)投资组合的选择;
(3)投资标的的选择。
具体而言, 在量化金融部份, 我们能拿不同的因子状态, 作为资产价格的预估,。
有些抽象了,我们以之前做的一次预测欧洲股市为例。当时我们纳入了动能指标、估直指标、情绪指标等十数个因子, 运用支持向量机分类来对欧洲道琼600的价格预估, 在2010-2015年之间的预测值与实际值的涨跌预估准确率超过60% , 有效帮助趋势判断, 且连续预估错误次数不超过三次, 对于运用加码投资策略,提供了更好的辅助方法

如上图,蓝色线为市场的实际走势,橘色线为机器学习做出的走势预估。
再比如, 多数人会问,近期美国加息对于市场的影响。在此我们用支持向量机回归分析作为算法。

如上图,以美国市场为例, 我们从1970年代开始计算因子对于标普500走势的影响, 发现到当升息时(美国基准利率上扬), 对于美股较为不利。
确实,由2017/3/15-2017/3/30,标普500指数大约下跌1%;
于此同时, 当我们分析新兴欧洲股市时却发现,其与加息的正相关达到1.74,也就是说,美国加息有利新兴欧洲市场。
实际上,新兴欧洲市场在本次升息后大涨4.8%(2017/3/15-2017/3/30), 也应正了机器学习的预知性。

上述主要讲到了机器学习在投资端的应用, 在其他领域的应用还有很多,比如在信贷/风控部份, 以个人为例, 可以依据大数据,包含个人资产(房产、存款、薪资收入)、个人负债(房贷、车贷) 、年纪、学历、过往电商消费记录、所在区域、借款用途(分期用途) 计算出该类人群是否属高危人群,并能精准计算其违约率,有效控制信贷端风险。

白米Ⅲ级

赞同来自:

其实机器学习在量化金融方面的应用十分广泛

下面我来说下我的一些认识,

一方面,时间序列研究早就已经是机器学习、数据挖掘的热点。早期的神经网络、SVM等做股票预测,无非是把投资看成是分类或者回归问题,也就是根据历史数据,预测下一个时间点的股票价格变化。

结果很显然,如果机器学习完美适用市场,那当初机器学习的学霸们早就转行做股票,然后一举发家致富走向财富自由了...所以呢,我们来讲讲另一方面..........

另一方面,由于金融市场受到政府的政策、宏观经济形势、社会和自然条件、投资者心理等等因素的影响,股票return一直表现为不稳定、高噪声、低相关性,还有潜在的周期特性。这就使得,在同一类情况下这个必要的假设条件不成立,所以最终做的模型也不适用于市场。

如果你归纳总结一下,就会发现很多关于机器学习和算法交易的论文,都喜欢用MSFT、IBM这类股票做实证研究。原因很简单,这类大公司的股票价格相对稳定,噪声小,相关性强。所以需要写论文做研究,关于机器学习、算法交易之类的可以考虑这些数据,哈哈。

在实际应用中,时间序列研究要先解决相似性查找的问题。也就是给定时间序列A,从历史序列中找到最为符合相似度度量函数的序列B,难点就在于适合的相似度度量函数和海量历史序列的存储和快速查找。

听起来很难,嗯......确实很难
总有牛逼的人已经做出来很好的成果,例如圣菲研宄所的Doyne Farmer和Norman Packard成功的将李雅普诺夫指数用于混沛分类和重构相空间,并且还使用诸如遗传算法、神经网络等其他非线性回归方法建立模型用于投资决策。
不要深究,我也不懂......他们的研究过程没有对外公开......................

这条路搞研究还可以,做实务很难,于是有了另一角度来看待这个问题。首先是从数据层面,传统的机器学习方法使用的基本是是股票的日线图和月线图。实际的股票交易开始将机器学习的方法应用于limit order book层次的数据上, ACM fellow,Michael Kearns发表了einforcement learning for optimized trade execution,这篇文章试图为历史数据的每一个时间点构建state,这样可以将增强学习的框架应用其中。这是其中一种思路。但也没有从assumption的层面证实文章的方法确实是适应limit order book数据性质的。

然后,还可以从股票数据固有的性质着手。例如Bin Li在ICML,IJCAI上写的一系列paper(好像已经是武大金融教授了),这些paper利用了股票的mean reversion的性质。简单的说,股价在这个mean reversion值附近波动,而隐含股价由过去一个是窗口时间上的均值算出。然后再利用机器学习算法建模预测。

目前来讲,一般一家大型的基金公司,通常会同时运行好多种strategy进行投资。什么SLT、多层感知器神经网络、模糊神经网络与支持向量机对时间序列回归啊,构造小波、流行小波等等,建立股指收益和波动预测模型。

这就产生了另外一个问题,应该如何给这些strategy动态地分配权值?机器学习领域有很多类似的问题,比如我要做一个分类问题,我有好多个分类器,如何ensemble它们使得它们的表现比较好?关于多种strategy的权值问题,也有不少论文有讨论。

至于Machine Learning、Deep Learning 是否赚钱,答案是肯定的。关键在于你是否能够发现股票数据中存在的问题,尤其是可以用机器学习解决的问题。

听周围说起过,有团队利用机器学习开了家对冲基金公司,赚了很多钱。但是他们有多大程度上利用机器学习,或者是否是统计套利呢,只能自己YY了。但是肯定是将原始数据投影到另一个特征空间去,可能是return 、Variance或者更高维度的非线性空间,或者需要在高度非线性空间寻找一些correlation,来设计交易策略。

这个问题还需要深入学习,答案未完待续。

白米Ⅲ级

赞同来自:

基于SVM做过高频交易,也基于Hidden Markov Model结合GMM做过日线交易,但交易结果并不是十分理想。原因很简单,因为这些机器学习方法只是提供了方法,而真正起决定因素的变量还需要靠对市场的理解从而进行归纳。

而当模型的假设更符合市场运行的情况时,统计方法才会更好地工作,比如基于协整的统计套利。

白米Ⅲ级

赞同来自:

机器学习算法太多,这里以适用于金融数据预测的常用有监督型机器学习(Supervised Machine Learning)算法:StockRanker为例。假设我们要去预测某个连续变量Y未来的取值,并找到了影响变量Y取值的K 个变量,这些变量也称为特征变量(Feature Variable)。机器学习 即是要找到一个拟合函数f(X1,X2,…,XK|Θ)去描述 Y和特征变量之间的关系,Θ为这个函数的参数。
要找到这样的函数,必须要足够量的观测数据,假设有 N 个样本数据y1,y2,…,yn和x1i,x2i,…,xKi(其中i=1,2,…,ni=1,2,…,n)。然后定义一个函数L来衡量真实观测数据和模型估计数据偏差,函数 L 也称作损失函数(Loss Function)。基于历史观测数据,我们可以求解下列的最化问题来得到参数Θ 的估计值 。

求解上式过程称作模型训练(Model Traing)。基于特征变量的最新观测值和训练出来的模型参数就可以预测y的数值。 接下来,我们以一个具体的AI量化策略看一下用机器学习方法开发策略的具体流程。


  • 首先,确定目标。因为是监督学习,因此需要对收益率数据进行标注。
  • 接着,数据划分。将所有数据划分为训练数据和测试数据,训练数据用来训练模型,测试数据用来检验模型的表现。
  • 然后,特征构造。特征构造是至关重要的一步,特征构造的好将会直接影响模型效果和策略表现。在这一步,你在金融行业的专业知识和投资经验将发挥很大的作用。
  • 然后,训练和预测。在特征构造完毕后,就可以训练好StockRanker算法并进行预测。
  • 最后,策略回测。根据StockRanker预测结果进行策略回测,获取策略表现。
BigQuant - 你的人工智能量化平台上,即使不会编程,也可以通过策略生成器——第一个人工智能量化投资策略 - 文档 | BigQuant就可以使用StockRanker算法进行量化回测,该算法在A股市场上常年表现稳定。

白米Ⅲ级

赞同来自:

前一段时间,看了一篇用Hidden Markov Model去预测Older Flow的论文。虽然预测的模型看上去是可以构建一个能work的order flow,但是,却没有一个reasonable的交易策略。算法只是一个工具,对于好的交易策略来说,最重要的还是交易逻辑。
匿名用户

匿名用户 白米Ⅲ级

赞同来自:

监督学习很不好用, 蒙了一堆数据却无从得知有没过拟合, 也不知道有没有变数是噪声, 反而是让准确度降低的, 交叉验证之流在这问题上没啥用处
非监督学习的结果丢入线性模型, 能避免过拟合又兼顾非线性特徵, 又能跟经典统计产生联系, 好用

另外要区分下平常的时段跟特别的时间点, 市场不是任何时间点都可以预测的, 但同时又有些特别时间点或事件点, 会让可预测性大增
平常的市场像是在赌博一样, 难说有啥规律

白米Ⅲ级

赞同来自:

如有问题,欢迎私信骚扰!

-----------------------------------------------------------------------------------------------------------------------
一、机器学习和量化投资是怎么“认识”的?
对于此问题的解释,我不会从追溯历史的角度进行描述,而是通过简单的专业名词介绍及两者之间的联系来解释这个问题。首先来讲,机器学习是研究计算机模拟或实现人类的学习行为,获取新的知识或技能来改善自身的性能。其次模式识别是对表征事物或现象的各种形式的信息进行处理和分析,并对事物或现象进行描述、辨认、分类和解释的过程。另外人工神经网络是模范动物神经网络行为特征,并进行分布式信息处理的算法数学模型。最后遗传算法主要通过交叉、变异、选择运算实现生成下一代染色体。
量化投资为什么能够用到上面所说的这些方法,一来大数据近年炒得很火,直到谷歌的阿尔法狗打败世界围棋冠军,更是让机器学习成为大家热捧的对象。二来股市从无常胜将军,价格走势变化无常,海量信息如何有效处理?加上赌徒心理,使得传统投资得以与计算机算法联姻。
-----------------------------------------------------------------------------------------------------------------------

二、机器学习在量化投资领域怎么应用——举例
(一)模式识别进行短线择时
长期而言,股票的趋势判断难度较大。但对于短期趋势,投资者收集信息及反映信息的方式有助于判断趋势。知情交易者基于其信息优势很可能对当日最后的交易时段对第二日提前布局。挖掘这些信息可以帮助我们进行短线择时判断。
1、如何从价格波动中分解出投资者预期
我们可以采用价格序列相似性聚类。在两个维度进行衡量:水平偏移分量和相似性分量(具体数学公式省略,详情参考丁鹏的《量化投资策略与技术》)。其分解流程如下:

当然A股市场瞬息万变,投资者预期对第二日市场的影响具有时效性,也就是发觉的适合做多的类别不能长久地适应市场,因此需要做到定期更新。
(二)RBF人工神经网络怎样进行股价预测
股票市场是一个复杂的非线性动态系统,而神经网络既具有强大的非线性映射能力来实现复杂的因果关系,还具有许多优良品质如自学习、自适应和容错等特性。这能够应用于大量的历史数据进行聚类和学习来找到某些行为变化的规律。
该方法的大致步骤如下:
首先是进行数据预处理,将股市看做确定性非线性动力系统,那么股价的历史数据和其他信息蕴含着可用于预测未来股价的信息。
之后运用动态的自适应学习算法,能够对股价进行动态输入模式的在线学习。
以下为中国银行2008年8月的14个交易日股价预测,学习样本为之前的2006年7月至2008年8月519个股票交易日。


由于股票市场的不确定因素太多,比如政策、庄家操控、投资者的情绪等,这造成股价预测难度很大,但是通过径向基函数神经网络进行股票价格预测效果还算不错。
最后想要总结一下。虽然机器学习看似高大上,但是国内第一个依托大数据选股而成立的广发百发大数据精选混合E(001742)业绩并非那么亮眼。下面是晨星公司对该基金的简单业绩评价,与国内一流指数基金业绩还是有些距离的。(数据摘自天天基金网)


金融圈玩钱的手段越来越“高超”,但是并不能成为把散户淘汰的理由。因为散户作为中国股市的“价格决定者”总是领先一步于计算机“价格行为学习者”。如何更好的改善个人的投资业绩,我想大数据说了不算,但是能够发现问题,之后传导到人,怎么改变还是事在人为。
---------------------------------------------------------------------------------------------------------------------
如有疑问,欢迎私信骚扰!

白米Ⅲ级

赞同来自:

数据前处理时有用,拿它们直接预测价格,还是洗洗睡吧

白米Ⅲ级

赞同来自:

个人觉得,搞清楚收益的来源是做出稳健模型的关键。ml做的模型在市场波动发生质变时,非常容易失效,或者是策略相似性太高,波动率一降低就集中回撤。

白米Ⅲ级

赞同来自:

补充一个,处理非结构化数据。政府政策、突发事件,这方面的处理就可以通过机器学习来做。
比如我们采用的是一个事件驱动交易策略,一旦发生某些事件,机器就自动下单。我们的信息源可能相当比例都是新闻文本,这里就需要用机器来读。文本这类非结构化数据用传统方法是处理不了的,需要采用机器学习的方法。
这大概算是一个机器学习在量化方面的应用场景吧

要回复问题请先登录注册

var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();