大数据文摘作品
编译:王一丁、修竹、阮雪妮、丁慧、钱天培
英伟达昨天一边发布“全球最大的gpu”,一边经历股价跳水20多美元,到今天发稿时间也没恢复过来。无数同学在后台问文摘菌,要不要抄一波底嘞?
今天用深度学习的序列模型预测股价已经取得了不错的效果,尤其是在对冲基金中。股价数据是典型的时间序列数据。
什么是序列数据呢?语音、文字等这些前后关联、存在内有顺序的数据都可以被视为序列数据。
将序列模型应用于语音和文字,深度学习在语音识别、阅读理解、机器翻译等任务上取得了惊人的成就。
具体怎么操作?效果又如何呢?来看文摘菌今天带来的这篇深度学习炒股指南。
对冲基金是深度学习应用中具有吸引力的领域之一,也是投资基金的一种形式。不少金融组织从投资者那里筹集资金后对其进行管理,并通过分析时间序列数据来做出一些预测。在深度学习中,有一种适用于时间序列分析的架构是:递归神经网络(rnns),更具体地说,是一种特殊类型的递归神经网络:长短期记忆网络(lstm)。
rnns维基解释:
https://en.wikipedia.org/wiki/recurrent_neural_network
lstm 维基解释:
https://en.wikipedia.org/wiki/long_short-term_memory
lstms能够从时间序列数据中捕捉最重要的特征并进行关联建模。股票价格预测模型是关于对冲基金如何使用此类系统的典型案例,使用了python编写的pytorch框架进行训练,设计实验并绘制结果。
在介绍真实案例之前,我们先了解一下深度学习的基础:
首先,引入深度学习这个抽象概念。其次,引入rnns(或更具体地说是lstms)以及它们如何进行时间序列分析。接着,让读者熟悉适合深度学习模型的金融数据。接着,举一个实例来说明一支对冲基金如何使用深度学习预测股票价格。最后,就如何使用深度学习来提高对现有或新购对冲基金的表现提供可操作的建议。
介绍用深度学习进行交易的案例
金融行业最具挑战性和令人兴奋的任务之一便是:预测未来股价是上涨还是下跌。据我们所知,深度学习算法非常擅长解决复杂的任务,因此深度学习系统是否能够成功地解决预测未来价格这个问题是值得尝试的。
股价预测:
https://toptal/machine-learning/s-p-500-automated-trading
人工神经网络这个概念已经存在了很长一段时间,但由于硬件受限,一直无法进行深度学习方面的快速实验。十年前,nvidia为其tesla系列产品研发的高速计算的图形处理单元(gpus)促进了深度学习网络的发展。除了在游戏和专业设计程序中提供更高质量的图形显示外,高度并行化的gpus也可以计算其他数据,而且在很多情况下,它们的表现远优于cpus。
nvidia tesla维基解释:
https://en.wikipedia.org/wiki/nvidia_tesla
在金融领域应用深度学习的科学论文并不多,但是金融公司对深度学习专家却有很大的需求,显然,这些公司认识到了深度学习的应用前景。
本文将尝试说明:为什么深度学习在用金融数据来构建深度学习系统时越来越受欢迎,同时也会介绍lstms这种特殊的递归神经网络。我们将概述如何使用递归神经网络解决金融相关问题。
本文还以对冲基金如何使用深度学习系统为例进行典型案例分析,并展示实验过程及结果。同时我们将分析如何提高深度学习系统性能,以及如何通过引进人才(如需要什么样背景的深度学习人才)来搭建应用于对冲基金的深度学习系统。
是什么使对冲基金与众不同
在我们进入这个问题的技术层面之前,我们需要解释的是什么使对冲基金与众不同。首先要明白的是,什么是对冲基金?
对冲基金是一种投资基金,金融组织从投资者筹集资金并将其投入短期和长期投资项目或者不同金融产品。它的形式一般是有限合伙企业或有限责任公司。
对冲基金的目标是最大化回报,回报是其在特定时间段内净值的收益或损失。普遍认为,投资风险越大,相应的回报或损失也越大。
为了获得良好的回报,对冲基金依赖各种投资策略,试图通过利用市场低效率来赚钱。由于对冲基金有普通投资基金所不允许的各种投资策略,其并未被认定为一般基金,也不像其他基金那样由国家监管。
因此他们不需要公布他们的投资策略和业务结果,这可能会使相关经营活动充满风险。虽然一些对冲基金产生的收益超过市场平均水平,但也有一些损失了资金。其中一些的损失无法挽回,也有一些对冲基金的结果是可逆的。
通过投资对冲基金,投资者可以增加基金的净值。不过,并不是所有人都可以投资于对冲基金,它只适用于少数富有的投资者。通常,想要参与对冲基金投资的人需要获得认证。
这意味着他们必须在金融监管法律方面拥有特殊地位。不同国家对于“特殊地位”的认定有所不同。通常,投资者的净资产需要非常高——不仅是个人,而且银行和大公司也可以在对冲基金中运作。该认证旨在让那些有必要投资知识的个人才能参与其中,从而保护经验不足的小型投资者免受风险。
美国是全球金融市场最发达的国家,因此本文主要参考美国的监管体系。在美利坚合众国,美国证券交易委员会(sec)的d规则501规定了“认可投资者”一词。
根据这一规定,认可的投资者可以是:
银行私营企业组织机构提供或出售证券的发行机构的董事,执行官和普通合伙人个人净资产或与该人配偶合资净值超过1,000,000美元的自然人自然人在最近两年每个年度的个人收入超过20万美元,或与该人的配偶每年在该年度的共同收入超过30万美元,并且当年的预期收入也达到相同的水平。信托资产总额超过5,000,000美元所有股权拥有者均为认可投资者的实体
对冲基金管理者管理对冲基金时必须要找到一种方法形成竞争优势从而取得成功,即需比竞争对手更具创造力,带来更大价值。这是一个非常有吸引力的职业选择,因为如果一个人擅长管理基金,就可能从中获利许多。
另一方面,如果很多对冲基金管理者的决定很糟糕,他们不仅不会获得收益,还会造成负面影响。最好的对冲基金管理者可以获得行业中薪酬最高的职位。
除了管理费外,对冲基金管理者还可以从资金获利中抽成。这种补偿方式使对冲基金管理者更积极地投资以获得更高的回报,但与此同时,这也会使投资者承担更多风险。
对冲基金简史
第一支对冲基金出现于1949年,由作家和社会学家alfred winslow jones创立。1948,alfred就当时的投资趋势发表了一篇文章。
他在资金管理方面获得了巨大的成功。利用他的投资创新筹集资金,这种投资创新现在被广泛称为多/空投股票。该策略目前在对冲基金中仍非常受欢迎。股票可以被买入(买入:买多)或卖出(卖出:卖空)。
当股价低但预计股价将会走高时,买入股票(多头),一旦达到高价时并卖出(空头),这正是alfred所创理论的核心——对预计将升值的股票中持仓多头,对预计将下跌的股票持仓空头。
金融数据和数据集
金融数据属于时间序列数据。时间序列是一系列按时间顺序排列的数据点。通常,时间序列是连续、等间隔的时间序列:即离散时间序列数据。举例来说,海洋潮汐的高度,太阳黑子的数量以及道琼斯工业平均指数的每日收盘价都是时间序列。
这里的历史数据是指过去的时间序列数据。这是预测未来价格走向最重要和最有价值的部分。
网上有一些公开可用的数据集,但通常情况下,数据缺少很多特征——如间隔1天的数据,间隔1小时的数据或间隔1分钟的数据。
具有更丰富特征和更小时间间隔的数据集通常不公开,并且需要高价购买。
更小的间隔意味着更多的时间序列数据在一个固定的时间段内——一年内有365(或366)天,所以最多有365个(或366个)天数据点可用。每天有24小时,所以在一年内有8,760(或8,784)小时数据点,每天有86,400分钟,所以在一年内有525,600(或527,040)分钟的数据点可用。
越多的数据意味着越多的可用信息,也意味着可以更好地判断下一刻会发生什么——当然,如果数据包含足够的特征也可以泛化的很好。
在全球金融危机高峰时期,2007年至2008年的股价数据由于存在偏差,所以可能无法预测近期价格趋势。越小的时间间隔,在固定的时间间隔内就会有更多数据点,从而更容易地预测接下来会发生什么。
如果我们拥有n年内每一纳秒的数据,那么很容易预测下一纳秒会发生什么,同理在股市中,有了一定时间内的数据,在对接下来的情况作预测就容易的多。
当然,这也并不意味通过一系列数据后,只有所作的短期预测才是正确的,长期预测也可以是正确的。
每个短期预测都会产生误差,因此通过链接多个预测,长期预测最终将产生更大的误差而导致预测无效。以下是雅虎财经在线提供的间隔为1天的google股票数据示例。
数据集中只有日期,开盘价,最高价,最低价和平仓价等五列数据,分别表示交易开放时证券首先交易的价格,即证券在给定交易日上达到的最高价格,给定交易日的最低价格以及当天交易证券的最终价格。
通常,此类数据集中还有两列——“调整后收盘价”和“成交量”,但它们在这里并不相关。调整后收盘价是指调整适用分割和股息分配后的收盘价,而成交量指是在给定时间段内在市场上交易的股票数量。
可以看到数据中缺失了部分日期。这些是证券交易所休市的日子(一般是在周末和假日)。
为了演示深度学习算法,休市的日子使用之前的交易日价格。例如,2010-01-16,2010-01-17,2010-01-18的收盘价格将全部为288.126007,因为这就是2010-01-15。对于我们的算法来说,数据没有间隙是非常重要的,所以我们不会混淆它。
深度学习算法可以通过周末和节假日的数据学习——比如说,了解到在五个工作日后,从最后一个工作日起,会有两天的平价。
这是一张自2010-01-04以来谷歌股价变动的图表。要注意的是,图表中只显示了交易日的变化趋势。
什么是深度学习?
深度学习基于数据表示学习,属于机器学习的一个分支。机器学习不是通过编程,而是从数据中学习得到的算法。它本质上是人工智能的一种方法。
深度学习已经应用到了多个领域:计算机视觉,语音识别,自然语言处理,机器翻译,而且在某些任务中,它的表现甚至超过人类。
深度神经网络是深度学习的核心,它最简单、最基本的例子就是前馈神经网络,如下图所示,一个基本的前馈神经网络包括输入层、输出层和隐藏层。
隐藏层是输入层和输出层之间的多个单独层。我们通常说如果一个神经网络隐藏层的个数大于1,那么这个网络就是深度的。
每一层都由不同数量的神经元组成。这个基本前馈神经网络中的层称之为线性层,线性层中的神经元仅仅将1-d(或者2-d,如果数据是分批输入网络的)的输入和合适的权重相乘并求和,作为1-d或2-d输出的最终结果。
前馈网络中通常引入激活函数(activation function)表示非线性关系,进而对更复杂的非线性问题建模。在前馈神经网络中,数据从输入层流向输出层,并不会反向传播。
神经元之间的连接是加权的。这些权重需要调整以便神经网络对于给定输入返回准确的输出。前馈网络将数据从输入空间映射到输出空间。隐藏层从前一层的特征中提取重要的和更抽象的特征。
通用深度学习管道和机器学习管道一样,都包含以下步骤:
数据采集。数据被分成3部分:训练集、验证集和测试集。使用训练集进行多轮(每一轮包含多个迭代过程)训练dnn模型,并在每轮训练后使用验证集进行验证。在不断训练和验证后,测试模型(一个带有固定参数的神经网络实例)。
训练神经网络实际上是通过反向传播算法结合随机梯度下降法来最小化损失函数,以此来不断调整神经元之间的权重。
除了通过学习过程确定的权重,深度学习算法通常还需要设置超参数——一类无法从学习过程获得,但需要在学习过程前确定的参数。如网络层数、网络层中的神经元数、网络层的类型、神经元的类型和初始权重都属于超参数。
在超参数设置中,第一存在硬件限制,目前,在一个gpu上设置一万亿个神经元是不可能的。第二超参数搜索问题属于组合爆炸;彻底搜索所有可能的超参数组合是不可能的,因为这个过程需要无限长的时间。
由于上述原因,超参数的设置通常是随机的,或者采用一些启发式方法和一些论文中提供的知名方法——本文稍后展示一个用于金融数据分析的循环神经网络的超参数设置实例,许多科学家和工程师已经�...