金融模型python_盘点金融领域里常用的深度学习模型

作者 | Sonam Srivastava ,译者 | sambodhi ,编辑 | Vincent ,AI前线出品| ID:ai-front

在今天我们发布的这篇文章中,作者 Sonam Srivastava 介绍了金融中的三种深度学习用例及这些模型优劣的证据。

我们跟随 Sonam Srivastava 的分析,并展望深度学习在金融领域的运用前景。虽然金融是计算密集型最多的领域,但广泛使用的金融模型:监督和无监督模型、基于状态的模型、计量经济学模型甚至随机模型都受到过度拟合和启发式问题带来的影响,抽样结果很差。因为金融生态圈异常复杂,其非线性充斥着大量的相互影响的因素。

要解决这个问题,如果我们考虑到深度学习在图像识别、语音识别或情感分析方面所做的研究,我们就会看到这些模型能够从大规模未标记数据中学习,形成非线性关系的递归结构,可以轻松予以调整以避免发生过度拟合。

如果金融生态圈能够使用这些网络进行建模,应用领域就会深远而广泛。这些模型可用于定价、投资组合构建、风险管理甚至高频交易等领域,让我们来解决这些问题。

收益预测

以预测每日黄金价格的抽样问题为例,我们首先看看传统的方法。

ARIMA 模型

ARIMA 模型(Autoregressive Integrated Moving Average model),差分整合移动平均自回归模型,又称整合移动平均自回归模型(移动也可称作滑动),时间序列预测分析方法之一。ARIMA(p,d,q)中,AR 是“自回归”,p 为自回归项数;MA 为“滑动平均”,q 为滑动平均项数,d 为使之成为平稳序列所做的差分次数(阶数)。“差分”一词虽未出现在 ARIMA 的英文名称中,却是关键步骤。

ARIMA 模型的基本思想是:将预测对象随时间推移而形成的数据序列视为一个随机序列,用一定的数学模型来近似描述这个序列。这个模型一旦被识别后就可以从时间序列的过去值及现在值来预测未来值。现代统计方法、计量经济模型在某种程度上已经能够帮助企业对未来进行预测。利用整合移动平均自回归模型,来尝试预测季节性平稳时间序列,我们得到结果如下图所示:

VAR 模型

VAR 模型,(Vector Autoregression model)向量自回归模型,是一种常用的计量经济模型,由计量经济学家和宏观经济学家 Christopher Sims 提出。它扩充了只能使用一个变量的自回归模型(简称:AR 模型),使容纳大于 1 个变量,因此经常用在多变量时间序列模型的分析上。

如果我们将相关的预测变量添加到我们的自回归模型中并移动到向量自回归模型,我们得到结果如下图所示:

深度回归模型

如果在数据上使用简单的深度回归模型,使用相同的输入,会得到更好的结果,如下图所示:

卷积神经网络

卷积神经网络(Convolutional Neural Network, CNN)是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对于大型图像处理有出色表现。

卷积神经网络由一个或多个卷积层和顶端的全连通层(对应经典的神经网络)组成,同时也包括关联权重和池化层(pooling layer)。这一结构使得卷积神经网络能够利用输入数据的二维结构。与其他深度学习结构相比,卷积神经网络在图像和语音识别方面能够给出更好的结果。这一模型也可以使用反向传播算法进行训练。相比较其他深度、前馈神经网络,卷积神经网络需要考量的参数更少,使之成为一种颇具吸引力的深度学习结构。

修改我的架构,使用卷积神经网络来解决同一个问题,得到结果如下图所示:

所得结果大为改善。但最好的结果还在后头。

长短期记忆网络

长短期记忆网络(Long Short-Term Memory, LSTM)是一种时间递归神经网络 (RNN),论文首次发表于 1997 年。由于独特的设计结构,LSTM 适合于处理和预测时间序列中间隔和延迟非常长的重要事件。

LSTM 的表现通常比时间递归神经网络及隐马尔科夫模型(HMM)更好,比如用在不分段连续手写识别上。2009 年,用 LSTM 构建的人工神经网络模型赢得过 ICDAR 手写识别比赛冠军。LSTM 还普遍用于自主语音识别,2013 年运用 TIMIT 自然演讲数据库达成 17.7% 错误率的纪录。作为非线性模型,LSTM 可作为复杂的非线性单元用于构造更大型深度神经网络。

使用循环神经网络(RNN)的变种后,我得到结果如下所示:

因此,整体来说均方误差的趋势出乎意料。

投资组合构建

我们尝试使用深度学习解决的第二个金融问题是投资组合构建。在这个问题上,深度学习的实际应用效果很好。我的研究灵感来自这篇论文:《深度投资组合》(https://0x9.me/8uOBt)

这篇论文的作者尝试构建自动编码器,将时间序列映射到自身。使用这些自动编码器的预测误差成为股票测试版(与市场相关)的代用指标,自动编码器用作市场的模型。

自动编码器(auto-encoder),是一种无监督的学习算法,主要用于数据的降维或者特征的抽取,在深度学习中,自动编码器可用于在训练阶段开始前,确定权重矩阵 W 的初始值。基于上述自动编码器的误差选择不同的股票,我们可以使用另一个深度神经网络来构建深度指标,结果相当不错,如下图所示:

深度神经网络已成为利用股票复制指数的指数构建方法。

但这只是它的开始!如果我们应用智能索引,在我去掉指数的极端下降期,并在智能索引上训练我的指数映射深度神经网络时,我就能以惊人的速度超过指数!

这种技术在证券投资组合领域有着巨大的潜力!

结论

目前金融业的趋势是朝更复杂、更健全的的模式发展。随着大量数据科学家涌入该行业,对所有银行来说,技术是一个巨大的压力。像 RelTec、Worldquant 这样的对冲基金,在其交易中已经使用这种技术。由于这些复杂模型在其他领域所表现出的优异结果,以及在金融建模领域的巨大差距,将会有一系列的戏剧性的创新涌现!

更好地解决金融和贸易领域的关键问题,将会提高效率、提高透明度、加强风险管理和新的创新。

译者感言

深度学习的一大优势在于可以大幅减少人工参与的特征工程去“拟合”训练数据,但这也不是说完全不需要人去参与特征的选取,尤其是金融市场,数据简直是海量,并且大都高噪声,非稳定,所以除非你能够清楚哪些数据具有潜在价值、如何做适当的预处理和如何转化并达成哪些目标,否则深度学习在金融领域是无法应用的。

如果设计得当,增加神经网络的深度可以对更复杂的模式进行映射,因此可对金融数据的训练产生更好效果。

例如 CNN 适合处理图像一类的大数据,不一定直接适用于金融数据。金融数据虽然也可以很大,但通常不在一个数量级上——一幅图像中的样本数(像素、颜色)很容易上百万,要训练一个模型又要用到成千上万个图像,为了找到高效办法提取特征,于是计算机科学家想出了卷积神经网络通过抽取特征值来简化运算复杂度。而我们处理的金融时间序列数据,单组样本的数量常在百万以下,规模上往往不需要卷积。进一步比较,相对于金融数据,图像识别的特点是数据量庞大、特征明显、特征重复次数多、特征组合性强、出现的次序性、特征呈现的方向性有时不强,这与金融数据噪音大、数量较小的特点有所不同。因此,在训练金融数据时很有必要设计有针对性的深度机器学习模型。

本文涉及到的代码可在作者的 GitHub Repo 中找到

https://0x9.me/P5ahd

原文链接

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/339990.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Qute模板与Quarkus

Quarkus附带了自己的模板引擎Qute,该引擎已经包含了一组有趣的功能。 在下面的视频中,我将展示基于动作的MVC与JAX-RS的基本用法,该动作将我们的请求转发到HTML模板。 要自己尝试Qute,请查看以下资源: 示例项目 Qut…

linux 7启动文件夹在哪里设置密码,RHEL7 or CentOS7 的系统密码如何重置

导读RHEL7 的世界发生了变化,重置 root 密码的方式也一样。虽然中断引导过程的旧方法(init/bin/bash)仍然有效,但它不再是推荐的。“Systemd” 使用 “rd.break” 来中断引导。让我们快速浏览下整个过程。介绍目的在 RHEL7/CentOS7/Scientific Linux 7 中…

里氏替换原则_代码需要有单一职责,还要开闭,里氏替换又是什么鬼?

目录单一职责原则:开闭原则:里氏替换原则:单一职责原则:每一个系统中的功能都表示一个职责,这些职责可以映射到模块(类)中,且尽可能的保证这些类中没有功能上的重复,设计…

linux bind日志级别,BIND日志相关(一)

对于排除DNS故障来说,日志文件是极其重要的工具,DNS日志可以记录服务器CPU占用时间,查询统计信息以及配置中存在的问题。经常分析日志可以了解服务器的负荷,性能安全性,从而及时采取措施纠正错误。BIND在默认情况下&am…

junit:junit_简而言之,JUnit:测试结构

junit:junit尽管存在有关JUnit测试的书籍和文章,但我仍然经常遇到程序员,他们至多对这个工具及其正确用法都不甚了解。 因此,我想到了编写多部分教程的想法,从我的角度解释了要点。 也许在本微型系列文章中采用的动手方法可能适合…

联想打印机7256显示更换墨盒_惠普打印机涉嫌垄断?只认自家“昂贵”墨盒,成本太高招架不住...

近日,有人爆料称,所在公司购买的惠普打印机使用原装墨盒时可正常打印,更换其他品牌墨盒后也不能正常使用,因此认为惠普公司有行业垄断的嫌疑。从细节来看,该公司购买了惠普同一型号但不同批次的两台打印机,…

linux mcelog 运行,服务器硬件检测(采用mcelog)

mt 内存监控:mcecheck.pyraid监控: check-raidmcelog 是 x86 的 Linux 系统上用来检查硬件错误,特别是内存和CPU错误的工具。安装方式yum install mcelog运行mcelog查看日志方式/var/log/mcelogMCE 0HARDWARE ERROR. This is NOT a software …

动手选择值

由于冠状病毒的存在,可选的东西在空中,一切都变得可选,例如可选的公共聚会,可选的在家工作,可选的旅行等。 我现在是时候谈论处理NULL引用的软件工程中真正的“ 可选 ”了。 托尼霍尔(Tony Hoare&#xf…

python mysql操作_Python的MySQL操作

Python的DB-API,为大多数的数据库实现了接口,使用它连接各数据库后,就可以用相同的方式操作各数据库。Python DB-API使用流程:引入API模块。获取与数据库的连接。执行SQL语句和存储过程。关闭数据库连接。一、安装MySQL客户端MySQLdb 是用于Python链接Mysql数据库的接口&#x…

linux下的遥控器软件下载,Linux操作系统下遥控器的配置及使用方法

你有没有想象过能够坐在沙发上,或者躺在床上,拿着遥控器像操作电视一样来操作电脑?可能你已经见到过市场上出现的那种电脑遥控器,不过它们都是基于windows下的。其实,通过一定的配置,在linux平台上&#xf…

wincc历史数据库_WinCC系统的基本功能介绍——自动化工程师必备

写在面前前面讲解了西门子的TIA Portal Wincc, Wincc Classic和Wincc OA (一文带你了解西门子Wincc),介绍了西门子的超大型/分布式SCADA系统Wincc OA(初识西门子Wincc OA——超大型/分布式SCADA),还介绍了Wincc Classic的典型架构和选型指南(WinCC V7.5典型架构及选…

apache.camel_Apache Camel 2.14中的更多指标

apache.camelApache Camel 2.14将于本月晚些时候发布。 由于正在解决某些Apache基础结构问题,因此存在一些问题。 这篇博客文章讨论的是我们添加到此版本中的新功能之一。 感谢Lauri Kimmel捐赠了骆驼指标组件,我们将其与出色的Codehale指标库集成在一起…

获取linux详细信息,Linux 获取网口详细信息

一般来说,研究 ifconfig.c 源代码就可以达到目的了。但是Linux已经提供了比较方便的获取网口信息的方式:[philipcatonbj ~]$ cat /sys/class/net/em1/statistics/rx_bytes3911191274在/sys/class/net/INTERFACE/statistics/ 目录下有所有网口的状态&…

python魔法方法str_8.9.魔法方法 - str()方法

# \_\_str\_\_()方法~~~class Car(object):"""定义了一个车类,可以启动和炸街"""def __init__(self, name, max_speed, vehicle_length):""" __init__() 方法,用来做变量初始化 或 赋值 操作""&…

依赖管理和Maven

Maven伟大而成熟。 几乎所有事物都总有解决方案。 您可能在组织项目上遇到的主要情况是依赖管理。 而不是每个项目都没有自己的依赖关系,您需要一种集中化的方式来继承那些依赖关系。 在这种情况下,您可以在父舞会上声明托管依赖项。 在我的示例中&…

linux ps 代码,Linux ps命令详解(示例代码)

ps命令是Process Status的缩写, 用来列出系统中当前运行的那些进程. ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进程信息,就可以使用top命令ps常见命令参数********* simple selection ******…

python hadoop streaming_Hadoop Streaming 使用及参数设置

1. MapReduce 与 HDFS 简介什么是 Hadoop ?Google 为自己的业务需要提出了编程模型 MapReduce 和分布式文件系统 Google File System,并发布了相关论文(可在 Google Research 的网站上获得:GFS、MapReduce)。Doug Cutting 和 Mike Cafarella …

neo4j set 多个值_Neo4j:收集多个值

neo4j set 多个值在Neo4j的密码查询语言中,我最喜欢的功能之一是COLLECT,它使我们能够将项目分组到一个数组中以备后用。 但是,我注意到人们有时难以确定如何使用COLLECT收集多个项目,并且很难找到一种方法。 考虑以下数据集&am…

linux继续执行上一个命令快捷键,整理了上linux 命令行上常用的 快捷键

整理了下linux 命令行下常用的 快捷键整理了下linux 命令行下常用的 快捷键1.CTRL u 删除正行你敲的命令。例如 : find . -name hoho按下CTRL U 后 正行都会被删除2.若是你只是想删除一个局部的命令的话,那么可以用CTRL w 以空格为分隔符 删除你的命令…

shell字段拼接日期_shell 脚本字符串拼接

在编写shell脚本的时候,难免会使用shell脚本的字符串拼接,不经常使用的话真的会忘记。本人写着一篇的目的也就是记录以下,到时候回过头来不用找的太麻烦。首先变量与变量拼接str1"123"str2"456"echo $str1$str2结果输出1…