卷积神经网络与量化交易
2023-10-17
卷积神经网络与量化交易
在处理时间序列数据时,人们通常会使用LSTM模型,卷积神经网络CNN模型使用的较少,因为CNN主要被用于处理图像。但随着CNN在图像处理上被更广泛地使用和研究,或许将时间序列数据通过合理的方式以图像传入CNN来进行分析、预测也会有意想不到的效果。本文将简单介绍CNN的原理以及在量化交易中使用CNN的三个案例。
一.卷积神经网络 CNN
卷积神经网络(Convolutional Neural Network,CNN)是一种用于图像和语音识别、自然语言处理等任务的深度学习模型。与传统的全连接神经网络相比,卷积神经网络在处理图像等二维数据时具有更好的效果。
卷积神经网络的核心思想是利用卷积运算和池化操作对图像进行特征提取。具体来说,卷积神经网络通过多个卷积层和池化层级联组成,其中卷积层用于提取图像中的局部特征,而池化层则用于减小特征空间的大小,从而降低计算复杂度。
卷积层:
卷积运算可以理解为由原图和滤镜的相组合,提取出一个包含图像局部特征的特征图。假设有如下图所示的由0和1组成的5*5矩阵(原图)和3*3矩阵(滤镜):
将两个矩阵相乘,得到下图右侧的特征图。
实际效果:
池化层:
池化操作包括最大池化(Max Pooling)、平均池化(Average Pooling)与和池化(Sum Pooling),最大池化在每个池化区域内选择最大的特征值作为其输出,忽略其他特征值,通常用于提取输入数据中的最显著特征,例如物体的边缘和角点等。
平均池化在每个池化区域内计算特征值的平均值作为其输出,通常用于平滑输入数据,减少特征图中的噪声和冗余信息。和池化在每个池化区域内计算特征值的和作为其输出,与平均池化类似,但更少使用,通常用于对输入数据的特定情况进行建模。
在卷积和池化之后,将得到矩阵摊平成矢量传入全连接层,将特征映射到预测结果上。
由卷积层、池化层、全连接层组成的卷积层神经网络结构如下:
除了以上介绍的层外,卷积神经网络还可以包括其他类型的层,如批量归一化层、Dropout层等。批量归一化层用于加速训练过程和改善模型效果,Dropout层则用于防止过拟合。总体来说,卷积神经网络通过对图像进行卷积操作和池化操作实现对图像特征的提取和压缩,有效地降低了神经网络模型的复杂度,提升了模型的性能和鲁棒性,成为了当今图像识别领域最广泛应用的深度学习模型之一。
二.CNN在量化交易中的运用
案例一 使用CNN预测股票价格
O.B. Sezer与A.M.Ozbayoglu 将15个常用的技术分析指标(RSI, Williams %R, WMA, EMA, SMA, HMA, Triple EMA, CCI, CMO, MACD, PPO, ROC, CMFI, DMI, PSI)在DOW 30中的30支股票和常见的9支ETF从2002至2017的每日收盘价上应用,并将每15天的输出(1,0,-1 分别对应买入、持有、卖出),作为一个15*15的矩阵作为input放入CNN中,进行训练。
input生成的图像如下:
CNN使用的两个卷积操作的公式如下(t代表time, I代表image, K代表kernel)
最后将CNN模型预测的买入、持有、卖出操作的值代入实际价格,将回测的年化利率与Buy & Hold(BaH)策略, RSI (14天,70-30)策略,SMA(50天)策略,LSTM,MLP回归策略回测的年化利率进行比较,结果如下:
ETFs
DOW 30中的股票
可见CNN对该实验中的大部分标的资产的预测能力相比其他常见的策略有显著的优势。
案例二 使用CNN分析LOB,并预测短期价格
在这项研究中,Tsantekidis使用的数据是limit order book上从买10到卖10的二十档的价格和成交量,用于测试的是10天5支股票共450万个LOB数据。再将数据进行z-score标准化后,将前中间价和下一个中间价进行平滑处理。
之后对所有数据按如下方式打标签,其中α是可以保证价格被判断为上涨或下跌的最小变动数。
进行以上数据处理之后,将n个100*40的矩阵作为input输入如下图的CNN模型(100指每个价格的预测用前100组数据,40是20档乘以2(价格、成交量)),以此预测mid price。
最终输出的结果的错误率(cost)、查准率(f1)和精确度(kappa)如下:
将CNN预测的结果与SVM和MLP模型进行比较:
我们发现CNN在绝大多数情况下的预测精准度明显高于SVM和MLP,不过此研究仅测试了5支股票10天的LOB数据,使用CNN的方法有一定参考性,但实际应用还需要更多的测试和比较。
案例三 使用CNN与LSTM构建一个GAN来预测股票价格
生成对抗网络(generativeadversarialnetwork, GAN)由一个生成器(generator)和判别器(discriminator)组成,其中生成器用来生成与真实样本相似的合成数据,判别器用来评估给定数据是否是真实数据还是生成的数据。GAN的训练过程是通过Generator和Discriminator之间的博弈来实现的。Generator试图生成更逼真的合成数据以欺骗Discriminator,而Discriminator则努力区分真实数据和合成数据。这个过程是一个动态的竞争和学习过程,最终目标是找到一个平衡点,使得生成器能够生成高质量的合成数据,并且判别器无法准确区分真实数据和合成数据。Staffini的深度卷积生成对抗网络(Deep Convolutional Generative AdversarialNetwork (DCGAN))使用CNN和LSTM构建了生成器,使用两个CNN构建了判别器,并使用这套模型在意大利的FTSE MIB指数中的10支股票从2005年至2021年的收盘价、开盘价、最高最低价、和成交量和一系列技术指标的结果(和案例一相似)上进行训练,并预测的收盘价。使用DCGAN可以模拟一个交易员的成长历程,从做出不切实际的股价预测(最初的生成器),通过自我矫正以及常年累月学习正确的研究方法(判别器的判别过程),最终成为一个高胜率的交易员(最终的生成器)。
最终将模型预测的结果与差分自回归移动平均模型(ARIMAX)、随机森林、LSTM、常规GAN的预测结果进行比较,结果如下:
可见DCGAN的预测效果更好,错误率明显更低。
从以上三个使用不同方法和数据运用CNN来预测股票价格的案例中我们可以看出,CNN在量化交易的实际运用中有一定的意义和效果,不过仍需要更多的检验。案例一和三中的数据输入均使用了一系列技术指标的结果,最终的预测结果还需要和使用同样指标的多因子模型进行相关性检测;案例二使用了LOB数据作为输入,但由于LOB数据过于庞大,只能使用5支股票10天的数据进行检测,选择的样本可能不具有普适性;案例三虽然选择的时间长度很长,但标的资产都是意大利的股票,该模型对国际主流的标的资产的预测能力还需要进行进一步的测试。
参考文献:
Sezer O.B., Ozbayoglu A.M., 2018, Algorithmic financial trading with deep convolutional neuralnetworks: Time series to image conversion approach
Tsantekidis, A., Passalis, N., Tefas, A., Kanniainen, J., Gabbouj, M., and Iosifidis, A.,2017, “Forecasting stock prices from the limit order book using convolutionalneural networks,” in 19th IEEE Conference on Business Informatics, Vol. 1
(Thessaloniki), 7–12.
Staffini Alessio, 2022, Stock Price Forecasting by a Deep Convolutional Generative Adversarial Network, Front. Artif. Intell.
Prabhu, 2018, ‘Understanding of Convolutional Neural Network (CNN) — Deep Learning,’ https://medium.com/@RaghavPrabhu/understanding-of-convolutional-neural-network-cnn-deep-learning-99760835f148