机器学习用于金融市场预测面临的挑战

论坛 期权论坛 期权     
真格量化   2019-9-12 10:12   7319   0


金融市场已经成为最早的采用机器学习(ML)的应用领域之一。20世纪80年代以来,人们一直在使用ML以发现市场上的规律。尽管ML在预测市场结果方面取得了诸多进展,但最近的深度学习并没有对金融市场的预测有显著提升。虽然深度学习和其他ML技术终于使Alexa,Google Assistant和Google Photos成为可能,但在股票市场上似乎没有取得多大进展。


许多研究者将机器学习应用于现实世界的金融预测问题。尽管有很多论文声称成功应用了深度学习模式,但我们还是持怀疑态度来看待这些结果。有些模型确实有更好的精度。然而,差异的量级往往还不够大。


NLP的改进有助于提高依赖文档分析的定量策略的有效性。这是在金融市场中深度学习模型的一个不可多得的好处。


所有这一切证实了金融市场本质上难以预测的事实。这里有很多原因让人难以预测。我们想强调一些使它变得困难的主要原因:


数据分布(Data Distribution)


数据分布问题至关重要——大多数做金融预测的研究论文都忽略了这一点。


我们可以将金融数据集与图像分类数据集进行对比,以更好地理解这一点。让我们考虑CIFAR-10数据集.它包括了10个类。每个类的训练集中有5000个图像,每个类的测试集中有1000个图像。

我们期望在识别物体训练中,比如我们需要训练模型识别汽车时,像素权重的分布与汽车分类测试集中的分布相似。换而言之,汽车的图像将包含在训练集以及测试集中的汽车。或者简单地说:汽车的图像必须包含汽车。


对于大多数金融数据集来说,这种明显的要求很难满足。我们将来可能看到的市场状况和我们目记录到的市场状况可能有诸多区别。事实上,处理未来和历史的差别是机器学习经常遇到的难题。除了确保测试和训练的数据集具有相似的分布以外,还必须确保只有当未来的数据遵循训练/验证的分布才适合在应用中,比如预测市场的走向时,使用训练过的模型。


虽然大多数研究者都注意不去把预测偏差纳入到他们的研究中,但许多研究者并未解决数据分布问题。


向前优化是解决这个问题的一种可能的选项。许多从业者使用这个方法,但是研究人员常常忘记提及。然而,即使是向前推进优化也不是解决潜在问题的灵丹妙药——它假设未来数据分布将是什么样的。这就是为什么向前优化的方法并不能真正给我们带来高精度的预测——它只是在实践中比较常用。


样本数量不足(Small Sample Sizes)


机器学习经常需要从小数据集做预测。一个例子是劳动力统计,例如失业率和非农业人口收入。我们每个月能得到一个数据点,也没有足够的历史数据。还有一个极端的例子是金融危机—只有少数几个数据点供我们借鉴,或者更极端的911事件,数据点只有一个。









这使得应用自动化的学习方法变得非常困难。许多人最终采取的一种途径是将不太频繁的统计数据与相对频繁的数据结合起来。例如,我们可以结合非农收入与每日股票收益率,并且把相结合的数据集提供给模型。然而,这样做往往需要进行大量的监督和修正工作,以消除对模型质量的怀疑。



难以计算的数据(Unquantifiable Data)


有人可能会说,我们金融市场历史的时间表同人类历史本身一样悠久。不幸的是,转换成量化的数据以让算法能理解的形式是比较困难的。例如,即使我们通过各种历史著述对1930年代大萧条期间发生的事情有一个全面的了解,也很难把它转化成一种可以用于自动化的学习过程的形式,因为当时对市场数据的保存与记录与现在非常不同。


过于复杂的模型(It’s Quite Complex)


各种各样的因素在不同的规模上驱动着资产价格:


· 高频交易和算法交易是短期内价格的主要驱动力(小于1天);


· 开盘价和收盘价都有自己的模式- 包括在股票和期货-这是我们经常研究的两个资产类别;


· 当涉及到多日的价格走势时,新闻和谣言可能成了主要驱动力。意料之外的公司新闻可以在任何时候不预先通知的情况下播报。另外,许多事件的时间表是事先知道的,比如公司的计划报表和宏观经济数据报告;


· 价值投资和经济周期在涉及年级别价格变化时可能更为重要。


不同领域的专家可以被请来联合研究不同规模的模型,但这也是一个难题。(联合专家团队是把不同时间级别模型进行组合的一个很常见的研究方法—几乎所有量化资产管理公司都采用。)


部分可见的马尔科夫决策过程(Partially Observable Markov Decision Process)


研究者乐于考虑把价格的时间序列作为部分可见马尔科夫决策过程(POMDP)。没有人在任何时间点都有完全的知识和信息。我们大多数情况下不知道明天会发生什么——但我们仍然要对交易做出决定。我们得到的信息非常少。同时,数据的分布也在不断变化。


研究者已尝试将强化学习方法应用于金融市场预测问题。不过很多时候我们把问题(即状态和行为空间)简化了,导致模型学不到有用的东西。很多研究者花了几个星期对于为什么模型不工作而进行各种调查和调试—结果可能是强化学习算法需要足够的可预测性。


推荐系统的相似性(Similarities to Recommender Systems)


机器学习技术可应用于非常广泛的领域。在所有这些中,研究者认为“推荐系统”是比较接近金融市场预测问题的。通过对比分析我们可以指出潜在问题的难点。例如金融推荐系统跟娱乐领域的推荐系统比较:


· 两者都有相对较低的精度.让我们考虑一下Netflix的例子。Netflix在主页上至少显示了20种电影选项。因此,对于每个建议,选择观看电影的用户的平均可能性小于1/20。有一个“小于号”,是因为用户可能只是不看任何东西就离开了。同样地,金融时间序列中的大多数涨跌分类问题的准确率已经徘徊在50%左右了。


· 两者的数据都有很多的噪音(noise).在这两种情况下,信噪比都很高。在金融时间序列里噪音的比例较高,因为我们都知道很多不同的因素同时在影响着价格。娱乐推荐系统也需要处理各种“噪音”,因为用户的浏览通常是受多种因素影响的-用户可以(仅仅因为无聊)访问五花八门的亚马逊产品页面,而完全无意从这些产品中购买任何东西—这就为我们的统计模型增添了大量噪音。





· 两者的数据集都有季节性。重要节日Amazon的购买模式将与一年的其它时间段不同。这同样可能出现在其他的领域,例如对电影或Youtube视频的挑选。金融市场数据也是有季节性的,最常见的季节性问题是经济周期以及大宗商品本身的供需季节性。


·两者都必须处理“前无古人”的“事件/商品”.亚马逊不断在其目录中添加新商品,Netflix不断充实其影视库,每一分钟都有大量新的视频都被上传到YouTube或其他视频网站上。推荐系统必须应对这个问题——如何推荐那些不是训练集一部分的商品。正如数据分布部分所提到的,金融市场数据也经常包含与模型训练期间可用的历史事件完全不同的事件。



· 两者都必须结合不同类型的数据进行模型训练. YouTube上有对各种类型数据的统计,比如离散类型的数据“最后N个看过的视频列表”,也有连续连续类型数据的统计“最后一个视频的观看时长”。同样,金融数据集可以由较高的频率价格以及较低的频率宏观经济数据组成。


结束部分的思考:


如果我们需要总结一下机器学习模型预测金融市场的困难,我们可以这样说,金融市场时间序列是一个部分信息博弈(POMDP)过程,甚至对于人类也是极具挑战的,我们不应该期望的机器和算法在这个领域突然超越人的能力。


我们现有的算法擅长的是发现一个相对固定的、“硬编码”的模式并应用。这是一把双刃剑,在有些场景很管用,在其他一些场景可能用处不大。机器学习在绝大多数的简单模式识别的实例都已经被详细讨论了也有不错的解决方案。而通过无监督学习在金融市场时间序列中识别各种模式,仍是研究者面临的重大挑战。


— — — — — — E N D — — — — — —



真格量化可访问:
https://quant.pobo.net.cn


真格量化微信公众号,长按关注:

遇到了技术问题?欢迎加入真格量化Python技术交流QQ群  726895887






往期文章:
Numpy处理tick级别数据技巧
真正赚钱的期权策略曲线是这样的
多品种历史波动率计算
如何实现全市场自动盯盘
AI是怎样看懂研报的
真格量化策略debug秘籍
真格量化对接实盘交易
常见高频交易策略简介

如何用撤单函数改进套利成交

Deque提高处理队列效率

策略编程选Python还是C++

如何用Python继承机制节约代码量

十大机器学习算法
如何调用策略附件数据

如何使用智能单

如何扫描全市场跨月价差

如何筛选策略最适合的品种

活用订单类型规避频繁撤单风险

真格量化回测撮合机制简介

如何调用外部数据

如何处理回测与实盘差别

如何利用趋势必然终结获利

常见量化策略介绍

期权交易“七宗罪”

波动率交易介绍

推高波动率的因素

波动率的预测之道

趋势交易面临挑战
如何构建知识图谱
机器学习就是现代统计学

AI技术在金融行业的应用

如何避免模型过拟合

低延迟交易介绍

架构设计中的编程范式

交易所视角下的套利指令撮合

距离概念与特征识别

气象风险与天气衍生品

设计量化策略的七个“大坑”

云计算在金融行业的应用

机器学习模型评估方法
真格量化制作期权HV-IV价差
另类数据介绍

TensorFlow中的Tensor是什么?

机器学习的经验之谈

用yfinance调用雅虎财经数据

容器技术如何改进交易系统
Python调用C++
如何选择数据库代理
统计套利揭秘

[h1]一个Call搅动市场?让我们温习一下波动率策略[/h1][h1]如何用真格量化设计持仓排名跟踪策略[/h1][h1]还不理解真格量化API设计?我们不妨参考一下CTP平台[/h1][h1]理解同步、异步、阻塞与非阻塞[/h1][h1]隐波相关系数和偏度——高维风险的守望者[/h1]Delta中性还不够?——看看如何设计Gamma中性期权策略

[h1]Python的多线程和多进程——从一个爬虫任务谈起[/h1]线程与进程的区别
皮尔逊相关系数与历史K线匹配

Python2和Python3的兼容写法
Python代码优化技巧

理解Python的上下文管理器

如何写出更好的Python代码?这是Python软件基金会的建议
评估程序化模型时我们容易忽视的指标

看看如何定位Python程序性能瓶颈

什么是Python的GIL

投资研究中的大数据分析趋势及应用

理解CTP中的回调函数

如何围绕隐含波动率设计期权交易策略                    
看看如何用Python进行英文文本的情感分析
算法交易的分类

Python编码的最佳实践总结

什么是波动率锥?如何用波动率锥设计期权策略?
期权的波动率策略与时间价值收集策略对比

期权用于套期保值和无风险套利

隐含波动率对期权策略的影响

卖出期权交易的风险管理原则和技巧
期权交易中的“大头针”风险
期权做市商策略简介

精细化您的交易——交易成本评估与交易执行策略
海外市场交易执行策略的实践
设计期权套期保值方案时应注意的问题
美式期权、欧式期权比较分析——定价与风险管理
构建您的AI时代武器库——常用的机器学习相关Python库
期权波动率“微笑曲线”之谜
运算任务愈发繁重,如何加速Python程序运行?
证券市场微观结构理论模型是什么

是瞬间成交还是漫长等待?——如何衡量市场流动性
波动率指数及其衍生品介绍

Python的异常处理技巧

Python中的阻塞、异步与协程

"香草"之外的更多选择——几种常见的路径依赖奇异期权
什么是CTP?——了解上期所CTP快速交易系统
了解季节性——以谷物和油籽为例
是前因还是后果?——在真格量化中进行格兰杰因果检验

Python导入模块的技巧
Python程序员常犯的十个错误

搜索数据泄露天机?——舆情指数与期货行情关联性分析思路

机器学习常见算法分类汇总

如何使用Data Pipeline 自动化数据处理工作?
CTP API的委托介绍和在真格量化中的订单流控制
高频交易对市场的影响
期货行情及其组织形式——以上期所为例
理解并行与并发
郑商所和大商所套利指令及在真格量化的实现









分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:870
帖子:180
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP