滚动时间窗的宽度长度跟训练集长度有什么区别呢?

在组装训练数据的时候我们经瑺要用过去的数据来预测当前的值,但过去数据向后去多少位就是一个取数据窗口大小的问题了。

随着数据序列向后偏移我们取的历史数据也要随之向后移动,这种移动的取数据方法就叫做数据滚动窗口。

文中给出了两种取历史数据方法:

1、使用rolling函数自定义长度

2、戓者使用expanding方法,对所有先前值进行取值计算

在我们开始使用机器学习算法之前时间序列数据必须重新构建为监督学习数据集。

时间序列Φ没有输入和输出功能的概念相反,我们必须选择要预测的变量并使用特征工程来构建将用于对未来时间步骤进行预测的所有输入。

茬本教程中您将了解如何使用Python对时间序列数据执行特征工程,以使用机器学习算法对时间序列问题进行建模

特征的目标是在新输入特征和输出特征之间提供强大且理想的简单关系,以便监督学习算法进行建模

实际上,我们正在移动复杂性

输入和输出数据之间的关系存在复杂性。在时间序列的情况下没有输入和输出变量的概念; 我们也必须发明这些并从头开始构建有监督的学习问题。

我们可以依靠复雜模型的能力来破译问题的复杂性如果我们能够更好地揭示数据中输入和输出之间的内在关系,我们可以更容易地使这些模型的工作(甚至使用更简单的模型)

困难在于我们不知道我们试图揭示的输入和输出之间潜在的固有功能关系。如果我们知道我们可能不需要机器学习。

相反我们唯一的反馈是在监督学习数据集上开发的模型的性能或我们创建的问题的“视图”。实际上最好的默认策略是使用所有可用知识从时间序列数据集中创建许多优秀数据集,并使用模型性能(和其他项目要求)来帮助确定问题的优秀特性和良好视图

为清楚起见,我们将重点关注示例中的单变量(一个变量)时间序列数据集但这些方法同样适用于多变量时间序列问题。接下来让我们看一下我们将在本教程中使用的数据集。

在这篇文章中我们将使用最低每日温度数据集。

该数据集描述了澳大利亚墨尔本10年()的最低ㄖ常温度

单位为摄氏度,有3,650个观测值数据来源被称为澳大利亚气象局。

下面是前5行数据的示例包括标题行。

下面是从数据市场获取嘚整个数据集的图表

数据集显示了增长的趋势,可能还有一些季节性成分

注意:下载的文件包含一些问号(“?”)字符在使用数據集之前必须删除这些字符。在文本编辑器中打开文件并删除“”字符。同时删除文件中的任何页脚信息

滞后特征是时间序列预测问題转化为监督学习问题的经典方式。

最简单的方法是在给定前一时间(t-1)的值的情况下预测下一次(t + 1)的值具有移位值的监督学习问题洳下所示:

Pandas库提供以帮助从时间序列数据集创建这些移位或滞后特征。将数据集移动1会创建t-1列为第一行添加NaN(未知)值。没有移位的时間序列数据集表示t + 1 

让我们以一个例子来具体化。温度数据集的前3个值分别为20.7,17.9和18.8因此,前3个观测值的移位和未移位温度列表如下:

我们鈳以使用沿列轴(轴= 1)的将移位列连接到一个新的DataFrame中 

综合这些,下面是为我们的日常温度数据集创建滞后特征的示例从加载的序列中提取值,并创建这些值的移位和未移位列表为清晰起见,每个列也在DataFrame中命名

 
运行该示例将打印具有滞后功能的新数据集的前5行。

您可鉯看到我们必须丢弃第一行才能使用数据集来训练监督学习模型因为它没有足够的数据可供使用。
滞后特征的添加被称为滑动窗口方法在这种情况下窗口宽度为1.就好像我们在每个观察的时间序列中滑动焦点,只关注窗口宽度内的内容
我们可以扩展窗口宽度并包含更多滯后功能。例如下面的上述情况被修改为包括最后3个观察值以预测下一个时间步的值。
 
运行此示例将打印新滞后数据集的前5行

同样,您可以看到我们必须丢弃没有足够数据训练监督模型的前几行
滑动窗口方法的一个难点是为您的问题制作窗口的大小。
也许一个很好的起点是执行灵敏度分析并尝试一组不同的窗口宽度从而创建一组不同的数据集“视图”,并查看哪些结果表现更好的模型会有一个收益递减点。
另外为什么要停止使用线性窗口?也许您需要上周上个月和去年的滞后值。同样这归结于特定领域。
在温度数据集的情況下来自前一年或前几年的同一天的滞后值可能是有用的。
我们可以使用窗口做更多事情而不是包含原始值在下一节中,我们将介绍包含在窗口中汇总统计信息的功能
 
添加原始滞后值之外的步骤是在先前时间步骤中添加值的摘要。
我们可以计算滑动窗口中值的汇总统計数据并将它们作为我们数据集中的要素包含在内。也许最有用的是前几个值的平均值也称为滚动均值。
例如我们可以计算前两个徝的平均值,并使用它来预测下一个值对于温度数据,我们必须等待3个时间步然后才能使用2个值来取平均值,然后才能使用该值来预測第3个值


Pandas提供了一个,它在每个时间步都创建一个带有值窗口的新数据结构然后,我们可以在为每个时间步骤收集的值窗口上执行统計函数例如计算平均值。
首先必须改变系列。然后可以创建滚动数据集并在每个窗口上计算两个值的平均值。
以下是前三个滚动窗ロ中的值:

这表明我们在第3行之前不会有可用的数据
最后,与上一节一样我们可以使用concat()函数构建一个只包含新列的新数据集。
下媔的示例演示了如何使用窗口大小为2的Pandas执行此操作
 
运行该示例将打印新数据集的前5行。我们可以看到前两行没用
  • 第一个NaN是由系列的转變创造的。
  • 第二个因为NaN不能用于计算平均值
  • 最后,第三行显示用于预测18.8系列中第3个值的19.30(平均值20.7和17.9)的预期值
 

我们可以计算出更多的統计数据,甚至可以用不同的数学方法来计算“窗口”的定义
下面是另一个示例,显示窗口宽度为3数据集包含更多摘要统计信息,特別是窗口中的最小值平均值和最大值。
您可以在代码中看到我们明确指定滑动窗口宽度为命名变量这使我们可以在计算系列的正确移位和将窗口宽度指定为rolling()函数时使用它。
在这种情况下窗口宽度为3表示我们必须将系列向前移动2个时间步长。这使得前两行NaN接下来,我们需要计算窗口统计信息每个窗口有3个值。在我们甚至从窗口中的系列中获得足够的数据以开始计算统计数据之前它需要3行。前5個窗口中的值如下:

这表明我们不会期望至少在第5行(数组索引4)之前可用的数据
# 分别取过去四天的最小值均值,最大值
 
运行代码将打茚新数据集的前5行
我们可以检查第5行(数组索引4)上值的正确性。我们可以看到确实17.9是最小值20.7是[20.7,17.9,18.8]窗口中值的最大值。


另一种可能有用嘚窗口包括该系列中的所有先前数据
这称为扩展窗口,可以帮助跟踪可观察数据的边界与DataFrame上的rolling()函数一样,Pandas提供了一个expanded 该收集每個时间步的所有先前值的集合。
可以汇总这些先前数字列表并将其作为新功能包括在内例如,下面是该系列的前5个步骤的展开窗口中的數字列表:

同样您可以看到我们必须转换系列一次性步骤,以确保我们希望预测的输出值从这些窗口值中排除因此输入窗口如下所示:

值得庆幸的是,统计计算不包括扩展窗口中的NaN值这意味着不需要进一步修改。
下面是计算每日温度数据集上展开窗口的最小值平均徝和最大值的示例。
# 使用expanding方法对先前所有值进行统计
 
运行该示例将打印数据集的前5行。
检查扩展的最小值平均值和最大值的点显示具囿预期效果的示例。
}

真假序列识别的意义和研究思路

夲文从一个相对新颖的研究问题——真假价量序列识别入手以机器学习为研究工具,考察真实市场价量序列是否包含显著区别于随机生荿的虚假市场价量序列的信息从反向的逻辑检验市场交易信息是否存在规律,并进一步探讨基于交易信息的技术分析的可靠性结果表奣,单纯基于价的技术分析可靠性存疑量可能比价更有用。

本研究选择收益率作为“价”信息的代表换手率作为“量”信息的代表,選择4只宽基指数和29只一级指数作为样本标的选择60个交易日作为样本长度。通过随机打乱收益率和换手率的时间顺序生成虚假序列同时保证同一交易日的收益率和换手率对应。收益率及价格的真假序列仅凭肉眼观察几乎难以分辨真实换手率序列相比于虚假换手率序列表現出更强的趋势性和平滑性。

卷积神经网络模型模型表现突出优于其它机器学习模型

模型初筛的结果表明,卷积神经网络(CNN)对真假价量序列的识别能力突出表现显著优于其它模型;支持向量机和全连接神经网络表现出一定的识别能力,但总体较弱;而逻辑回归、随机森林、XGBoost等模型几乎没有识别能力我们推测其原因在于传统分类器依赖特征工程,需要人为从原始中提炼特征;而卷积神经网络本身有提取特征的能力并且对图像数据的局部特征有较强的识别能力,因此适用于类似图像形式的时间序列识别问题

换手率序列识别效果良好,引入技术指标无显著提升

基于收益率和换手率序列的模型对真假序列的识别能力较强说明市场的价量序列包含非随机特征。将收益率囷换手率序列分离并单独测试发现基于收益率序列的模型识别效果不佳,在召回率上存在短板;基于换手率序列的模型识别效果良好甴此推测价量序列的主要信息来源于换手率,而收益率包含的信息较少或者提取难度较大进一步尝试通过技术指标对收益率信息进行定姠提取,发现引入DIF、MACD和PSY指标对识别效果没有显著提升由此推测这些基于价格的技术指标带来的增量信息有限。

单纯基于价的技术分析可靠性存疑量可能比价更有用

本研究测试结果表明,换手率序列存在可识别特征并且在外推时间区间内CNN模型仍有良好识别表现;而基于收益率序列的CNN模型无法识别真假序列。换言之基于量的技术分析或存在合理之处,而单纯基于价的技术分析可靠性存疑量可能比价更囿用。价格、收益率或基于价的技术指标蕴含的信息可能有限可能需要与换手率、成交量或者其它基于量的技术指标结合使用。

神经网絡Grad-CAM可视化:模型识别依靠局部特征

采用Grad-CAM方法对基于换手率序列的CNN模型识别过程进行可视化连续真实序列的热力图显示出显著的连续平移跡象,表明模型识别真假序列主要来源于对换手率序列局部特征的识别将Grad-CAM热力图和部分真实换手率序列结合,发现CNN模型对持续的高换手鉯及换手大幅降低的局部特征有提取作用总的来看,针对模型的识别机制和特征提取方法仍缺乏深入理解难以直观地解释,有待后续進一步研究

风险提示:真假价量序列识别研究是对市场规律的探索,不构成任何投资建议基于换手率序列的卷积神经网络模型能够有效识别真假序列,不代表换手率等成交量相关指标能够直接应用于投资机器学习模型是对历史规律的总结,如果市场规律发生变化模型存在失效的可能。

真假序列识别的意义和研究思路

直面争议:技术分析可靠否

人是视觉的动物。心理学认为视觉主导着我们的感知。金融市场是一个复杂的高维系统人类感知这个系统的简单方式之一就是通过看图、看线——本质是价和量在低维平面上的视觉呈现。佷多人包括笔者在内听到某只,第一反应可能就是打开软件输入股票代码,看一眼近期K线图长什么样更进一步,不少研究者穷经皓艏试图从线里挖掘规律,找寻圣杯圣杯能不能找到,笔者并不知晓但是技术分析就此流传,遍地开花

基本面分析和技术分析是股票研究的两大主题。技术分析关注市场交易得到的价量信息以及从中衍生出的各种指标,目标是发现历史价量序列之中蕴含的形态和规律有效市场理论认为,即使在弱有效的市场价格也能充分反映历史价量隐含的信息,因此技术分析无法带来超额收益但是从实际市場表现来看,投资者可能并不是如假设中的完全理性市场信息存在相当程度的不对称性。短期的供需波动、突发信息的传导以及投资者嘚心理效应等因素的影响持续释放使市场交易呈现出一定的形态和规律。

长久以来海内外技术分析研究者总结出了大量的市场形态和規律,简明者如“顶底背离”、“跳空必补缺”、“金叉买死叉卖”成体系者如“波浪理论”、“江恩理论”,玄妙者如“缠论”并甴此衍生出各种相关的择时和选股策略。这些策略直观形象易于传播,被不少投资者追捧

然而,技术分析源于对历史数据的观察归納总结提炼规律,有唯结果论和数据挖掘之嫌一定程度上缺乏统计意义,技术分析的理论基础和可靠性长期以来备受争议本文从一个楿对新颖的研究问题——真假市场价量序列识别入手,以机器学习为研究工具考察真实市场价量序列是否包含显著区别于虚假市场价量序列的信息,最终的目标是回答如下问题:市场交易信息是否存在规律基于交易信息的技术分析是否可靠?

通过伪造价量序列反向验证

當前的技术分析理论大部分是对于价量和验证指标规律的正向发掘,存在主观误差以及数据挖掘的风险本文尝试从另一种思路出发,對市场交易信息蕴含的规律进行反向检验从而探讨技术分析及相关的可靠性。

从逻辑上来看倘若市场交易信息存在特定的规律和形态,那么真实的市场价量序列并不只是简单的随机波动和随机生成的序列相比应存在明显差异。基于这种想法我们通过构造随机的“虚假序列”,并使用机器学习方法尝试对真假序列进行区分从反方向检验市场规律的存在性。

反向验证的逻辑如下倘若机器学习模型无法有效识别真假序列的差异,则说明市场交易信息可能不存在所谓的“规律”那么基于交易信息的技术分析理论的可靠性存疑。倘若机器学习模型能够有效识别真假序列的差异则我们能进一步观察模型的判断机制,从而提取市场中的有效信息并尝试构造相应的投资策略

本文作为系列研究的开篇,主要内容包含:真假价量序列的生成和预处理机器学习模型初步筛选,模型调参和测试模型可视化等。夲系列研究将递进式地探索期望得到具有实践意义的结论。

特征选择:日收益率和日换手率

基础的市场交易信息不外乎价与量各种技術指标大部分均为价量信息的衍生和提取产物。传统的技术指标大多依赖K线但价格序列直接作为机器学习的特征并不合理,主要原因是:1)价格并非单位化变量不同价格序列之间缺乏可比性;2)价格序列不具有良好的平稳性。成交量序列亦存在类似问题

基于上述考虑,我们选取日收益率和日换手率两个单位化序列的日频数据作为特征以收益率作为“价”信息的代表,以换手率作为“量”信息的代表由于收益率和价格是一一对应的,我们认为收益率序列能够充分包含价格序列的信息;换手率会受流通股本数变动的影响但在短时间內影响较小。

样本选择:宽基指数和行业指数

的特异性风险较大容易受到突发事件的影响而造成异常波动,同时也存在停牌可能将增加数据清洗的难度和模型训练的误差。基于以上考虑我们将选用指数而非个股作为训练和测试样本。

首先选取上证综指、深证成指、沪罙300、中证500四只有代表性的宽基指数提取2007年1月15日~2014年12月31日的历史价量数据作为训练集和验证集,训练集和验证集按7:3的比例随机划分

其次选取不同指数(29个中信一级行业指数)相同时间区间的价量数据,相同指数不同时间区间(2015年1月5日~2019年7月31日)的价量数据不同指数不同时间區间的价量数据作为测试集。同时生成白噪声测试集进一步考察模型识别能力训练集、验证集和测试集样本指数和时间段选择如下表所礻。

真实序列样本生成:60个交易日滚动采样

为了增加样本的随机性和多样性我们对训练集进行随机取样,采用滚动切片的方式提取时间序列片段作为样本具体方法如下:选定固定的样本窗口长度(L = 60个交易日),设定滑动步长(训练集和验证集取T = 5测试集取T = 0对窗口滚動采样选用较小的步长可以得到更多样本,而改变起始点可以得到非重叠的样本序列

需要指出的是,指数倾向于反映市场的整体走势在相同区间内可能高度同质化,易导致模型直接“记忆”窗口特征随后在验证集或测试集中“按图索骥”,寻找相同时间段的样本唎如,假设2007年1月15日~2007年4月16日(共60个交易日)的沪深300和中证500价量数据分属训练集和验证集两者高度相似,模型可能“记住”了训练样本在第13、15、27个交易日大跌其余交易日单边上涨的沪深300真序列的特点,从而较容易在测试样本中识别出与之接近的中证500真序列本质上是一种过擬合。

因此我们并不直接对指数序列切片,而是在时间轴上切片得到窗口序列然后对每个窗口随机映射到训练集的四个指数之一,从洏使样本在时间窗口上不存在完全重叠一定程度上避免过拟合的发生。时间切片和随机映射如下面两张图所示

虚假序列样本生成:按ㄖ期重排

作为真实序列的对照,我们将生成虚假序列用于模型训练并测试模型对真假序列的识别能力。我们将真实序列样本按日期随机咑乱重排保持同一交易日内截面数据(收益率和换手率)的对应关系。上述虚假序列的生成方式仅对真实数据的时序结构进行破坏而對其它变量进行控制。虚假序列的分布、数量级、收益率换手率的对应关系等均与真实序列完全相同生成的虚假序列相对“逼真”。以丅我们截取部分真实序列以及相对应的虚假序列进行展示

左上图为真实收益率序列(左侧红色)与虚假收益率序列(右侧灰色)的对比,右上图为由真实收益率生成的真实价格序列(左侧红色)与虚假收益率生成的虚假价格序列(右侧灰色)的对比总的来看,收益率及價格的真假序列仅凭肉眼观察几乎难以分辨

上图为真实换手率序列(左侧红色)与虚假换手率序列(右侧灰色)的对比。总的来看真實换手率序列表现出更强的趋势性和平滑性,不易出现高频的反复波动相对容易直接辨别。打乱顺序对于换手率序列的结构破坏程度更夶我们猜测换手率的真假序列相比于收益率的真假序列更容易为机器学习模型识别。本文的附录部分将讨论采用其它时间序列分析技术能否用于识别真假序列

我们将上述收益率、换手率序列作为机器学习模型训练用的特征。对于标签我们将真实序列标注为1,将虚假序列标注为0将原始问题定义为二分类问题。需要指出的是随机生成的虚假序列可能仅打乱了小部分次序,与真实序列相似性仍旧较高簡单将其标注为虚假序列可能对模型训练造成干扰,引起过拟合另一种数据标注思路为,以虚假序列和真实序列的相关度作为标签将原始问题转化为回归问题。本文仍基于二分类问题进行初步探索上述思路仅供参考。

具体测试过程中对于原始训练集和验证集(样本為4个宽基指数,时间区间为2007年~2014年)真假样本比例设置为1:30;对于测试集(样本外推至29个行业指数,或者时间区间外推至2015年~2019年7月末)真假樣本比例设置为1:10。

预处理:时间序列标准化根据模型选择拼接方式

标准化是机器学习中重要的数据预处理环节。在一般的机器学习过程Φ标准化通常针对每个特征进行操作;但在处理当前问题中的时间序列时,针对每个特征进行标准化有不妥之处

本文探讨的问题中,嫃假序列在时间维度上的结构是最需要关注的信息传统方法以特征为基础,对每个特征进行标准化然而这种方法在处理时间序列时会矗接导致序列的时序结构紊乱。神经网络中常用的批量标准化(Batch Normalization)则以“图片”为单位对整个二维特征矩阵进行标准化,但是本研究中收益率和换手率序列之间存在量纲和数值范围的差异整体标准化会给数据引入偏差。

基于上述考虑本研究中的标准化针对每个时间序列进行操作,即单独对收益率序列进行时序维度的Z-score标准化并单独对换手率序列进行时序维度的Z-score标准化。

在下一章的模型初筛中我们将測试各种经典机器学习模型,多数模型只支持一维向量的特征无法输入高维度变量。因此对于除卷积神经网络外的模型,我们将标准囮收益率序列和标准化换手率序列首尾拼接得到一维向量,作为模型的特征;对于卷积神经网络我们将两组标准化序列纵向组合成类姒图片形式的二维标准化矩阵。序列拼接方法如下图所示

模型初步筛选及测试结果:卷积神经网络胜出

机器学习模型能否识别真假价量序列?不同机器学习模型的识别能力是否有强弱之分我们首先对各种机器学习模型进行初步测试和筛选。机器学习模型包含逻辑回归、支持向量机、随机森林、XGBoost、全连接神经网络和卷积神经网络模型初筛所使用的数据集为原始训练集和验证集,即样本为4个宽基指数(上證综指、深证成指、沪深300、中证500)时间区间为2007年初~2014年末的价量序列。

初步筛选模型的主要参数设置如下此处未采用交叉验证方法调参,参数依据经验设定表格中未列出的参数均采用默认值。

全连接神经网络和卷积神经网络在代码实现层面均采用Keras库网络每层输出后均進行批量标准化。卷积神经网络不进行池化(Pooling)和Dropout操作第2层卷积层和第3层全连接层之间包含一层平铺层(Flatten)。

机器学习模型看似必然的結果背后可能受到偶然因素的影响本研究中的随机性来源包括:1)训练集和验证集按7:3的比例随机划分;2)机器学习算法本身的随机数,尤其是神经网络模型各环节涉及的随机数(参见华泰金工人工智能系列之二十《必然中的偶然:机器学习中的随机数》)为了避免随机性带来的潜在影响,我们共进行10次重复测试每次循环中,首先按7:3的比例随机划分训练集和验证集随后基于新的训练集重新训练模型,基于新的验证集计算模型评价指标最后将10次结果取平均。

模型评价指标主要衡量模型对验证集或测试集中真实样本的识别能力具体评價指标包括精确率(Precision)、召回率(Recall)和F1_score。由于真实样本和虚假样本的比例不均衡(1:30)正确率(Accuracy)指标的意义不大,暂不考虑统计对于嫃实样本而言,各评价指标的详细释义如下:

精确率:被分类为真实的样本中被正确分类的真实样本比例,也称为查准率通俗地说,發射的子弹里有多少比例的子弹命中了目标

召回率:所有真实样本中,被正确分类的真实样本比例也称为查全率。通俗地说全部目標里有多少比例的目标被击中。

F1_score:精确率和召回率的调和平均数是均衡精确率和召回率两个指标的综合度量。

精确率和召回率之间存在┅定的制衡关系:更高的精确率意味着更高的识别可信度因此样本也就更容易被挡在门外而造成召回率低下;相对应的,降低可信度的門槛能选出更多样本但容易造成鱼龙混杂。实践中两者应不同需求而有不同侧重本研究的最终目的是发掘市场的特征,应当在把握一萣精确率的条件下尽可能提升召回率

从下表的结果来看,传统的逻辑回归、随机森林、XGBoost模型几乎没有对于真假序列的识别能力不适用於该类型的数据;支持向量机和全连接神经网络表现出一定的识别能力,但召回率短板显著;卷积神经网络的优势相对明显召回率高于其余模型,可以认为CNN卷积核的特性能够更好地把握时序数据的结构关系下一章我们将继续优化卷积神经网络模型,并进行更细致的测试

卷积神经网络调参及测试结果:各组测试集表现良好

卷积神经网络(下文简称CNN)是一种特殊的神经网络,相比于传统的全连接神经网络CNN通过卷积核提取局部特征,即临近特征(像素)间的结构性关联适用于图像识别等领域。价量序列在时间维度上的结构信息是本研究嘚重点而序列数据可以被视为特殊的二维图像。本研究的序列数据仅包含收益率和换手率两组时间序列无需考虑两者排列顺序的影响。

从上一章模型初筛结果看CNN模型识别真假序列的能力显著优于其它机器学习模型。我们认为CNN是识别真假序列任务相对合理的选择本章峩们将对CNN进行更深入细致的考察。

模型的复杂度和计算成本很大程度取决于层数随层数以乘积的速度上升。对于当前模型模型的可解釋性较为重要,因此我们需要严格控制模型的复杂度从初筛结果来看,两层卷积层加一层全连接层已经有较好的识别效果我们选用该框架作为后续模型训练的基础。

由于模型输入特征的行数目(60个交易日)和列数目(收益率、换手率)相对不平衡且总体样本量不大,峩们在模型中不加入池化层(Pooling)和Dropout层防止对局部信息造成干扰。

卷积核的本质是一个权值连接矩阵卷积核作用于输入图像中每一块固萣大小的局部区域,对于该区域的图片像素值进行加权求和最终生成输出图像中的相应像素值。由于该操作可以看作是滤波卷积核常被称为滤波器(Filter)。本质上卷积核与全连接神经网络中的权值连接矩阵的作用相似但卷积核可以滑动作用于图像的局部区域,对特征的絕对位置依赖性相对较小

卷积核大小的选择一般取决于图像的大小及图像的局部结构特点。首先考虑卷积核的长度卷积核长度不能太長,否则和全连接神经网络无异并且计算量较大。卷积核长度也不能太短过短的时间区间内的价量信息不足以支持真假序列识别。至尐连续多少个交易日的数据包含的信息能够识别真假序列我们选用5个交易日的倍数作为可能的卷积核长度,初步测试后发现长度为15时模型表现较好

其次考虑卷积核的宽度,卷积核宽度应避免显著超过图片宽度而掺杂过多额外信息同时,一般情况下CNN的卷积核长宽均会选擇奇数从而保证卷积核拥有明确的几何中心,使Padding(补足)过程能够维持对称考虑上述几点,卷积核宽度设置为3较为合理

每一个卷积核施加在原图像可以看作是一次滤波,也是一次图像局部信息的提取在卷积核数量的选取上,更多的卷积核代表更多的信息提取同时吔意味着更高的复杂度、训练成本,以及更高的过拟合程度和解释难度我们将保持之前选定的层数框架(即两层卷积层加一层全连接层)不变,对每层网络的卷积核数量进行调参

传统的机器学习模型调参一般采用网格搜索(Grid Search),但在超参数组合较多的情况下传统网格搜索的运算成本随着超参数的数量成倍上升,对于神经网络这类复杂度较高的模型训练难度较大我们考虑在固定全连接层神经元数量的湔提下,首先对卷积层的卷积核数量进行调参;卷积核数量确定后再对全连接层神经元数量进行调参。

我们将第1层卷积层卷积核数量的搜索域设置为[10, 20, 30]第2层卷积层卷积核数量的搜索域设置为[20, 30, 40],同时固定全连接层神经元数量为60(模型初筛使用的参数)进行网格搜索我们仍按7:3的比例随机划分训练集和验证集,重复5次得到模型对真实样本的平均识别能力观察较优的卷积核数量组合。

从上表结果可知[20, 30]的组合岼均F1_score超过0.95,在精确率几乎为1的同时有效提升了召回率拥有较好的表现;同时,继续提升卷积核的数量对模型表现的提升较小综合考虑模型表现和计算开销,我们选取[20, 30]作为前两层卷积层的卷积核数量

类似地,我们对全连接层神经元数量进行调参由于模型的识别能力已經较强,我们着重观察能否进一步降低模型复杂度参数搜索域设置为[30, 40, 50, 60]。

从上表结果可知全连接层神经元数量在30时,模型已经能得到相對较高的F1_score综合以上测试结果,我们将CNN模型的前两层卷积层卷积核数量以及全连接层神经元数量设置为[20, 30, 30]

CNN模型的表现和迭代次数(Epochs)密切楿关,迭代次数过少可能造成欠拟合迭代次数过多可能造成过拟合。我们考察训练集和验证集损失随迭代次数的变化确定合适的迭代佽数。由下图可知验证集损失在迭代次数达到10次时,基本已经收敛进一步增加迭代次数对模型表现无明显提升。因此我们将迭代次数設置为10

这里我们将重申测试集的组成。如下图所示测试集由三部分构成,分别对应:1)相同时间区间不同指数;2)外推时间区间,楿同指数;3)外推时间区间不同指数。测试集的时间切片步长和真假样本比例与训练集及验证集相比略有不同重点关注模型对测试集嫃实样本的识别能力,以精确率、召回率、F1-score三个指标衡量

测试集1:相同时间区间,不同指数

CNN模型对相同时间区间内行业指数的识别表现洳下表所示模型整体识别能力较强,少数识别效果不佳的行业为和非银行金融这一结果本身符合预期,测试集1的行业指数和训练集的寬基指数具有高相关性我们仍需进一步考察模型在外推时间区间的表现。

测试集2:外推时间区间相同指数

CNN模型对外推时间区间内宽基指数的识别表现如下表所示。外推时间区间后CNN模型识别能力有一定下降,主要源于召回率的下降即模型将小部分真实样本误识别为虚假样本,但模型整体识别能力仍处于较高水平

测试集3:外推时间区间,不同指数

CNN模型对外推时间区间内行业指数的识别表现如下表所示和测试集2结果类似,外推时间区间后CNN模型识别能力有一定下降,主要源于召回率的下降即模型将小部分真实样本误识别为虚假样本,但模型整体识别能力仍处于较高水平

三组测试集的汇总结果如下图所示。总的来看CNN模型整体识别能力较强,可以有效把握真实价量序列的特征信息模型对真实样本的识别精确率较高,即虚假样本基本能够被稳定排除;但是模型的召回率和F1_score稍低即仍有小部分的真实樣本会被误认为虚假样本。

上述结果一定程度上符合我们的预期真实序列可能包含少量随机成分,使得模型无法正确识别从而导致召囙率和F1_score下降。而虚假样本很难模拟出真实市场包含的特征信息使得模型精确率稳定在较高水平。

另外比较模型对宽基指数和行业指数嘚识别表现,两者并无明显差异比较模型在相同时间区间和外推时间区间的识别表现,模型在外推时间区间的召回率和F1_score有一定下降

上述结果同样符合预期。宽基指数和行业指数本身具有高相关性改变指数对模型的影响较小。而外推时间区间内的真实市场特征可能与训練集时间区间略有差异改变时间区间会部分削弱模型表现。

除上述测试外我们随机生成服从标准正态分布的收益率序列和换手率序列(由于有后续标准化操作,此处不要求换手率为正数)作为白噪声序列对CNN模型进行测试。在生成的50000次白噪声序列的测试中模型对噪声序列全部识别为虚假序列,可以认为CNN模型具有稳健的抗噪声能力

综合以上测试结果看,CNN模型对于外推时间区间和不同指数的真实样本整體具有较强的识别能力模型对于外推时间区间真实样本的召回率稍有降低,可能原因是外推测试集包含部分训练集未出现的特征信息;哃时模型对于白噪声有较强的抵抗能力。可以认为模型能够有效识别真实市场价量序列中的特征信息

那么,真实市场价量序列中的特征信息究竟是什么它具体存在于收益率序列,还是换手率序列中下一章我们将做进一步探讨。

CNN根据何种信息识别真假价量序列

CNN模型根据何种信息识别出真实和虚假价量序列?换言之真实价量序列究竟在哪些地方有别于虚假价量序列?本章我们尝试进一步对时间序列Φ的特征信息进行提取观察特征信息源于收益率还是换手率,抑或两者的结合作用另外,我们也将尝试以技术分析常用的技术指标结匼收益率作为特征考察技术指标是否有助于识别真假序列。

价量信息单独测试:收益率效果不佳换手率表现出色

首先我们单独使用收益率序列作为特征,考察CNN模型能否根据收益率识别真假样本收益率序列选取连续60个交易日的数据,并经过标准化处理即1×60的收益率向量。除了卷积核宽度缩小至1以外CNN模型其余参数和测试流程均保持不变。

当训练特征为单收益率序列时CNN模型训练集和验证集损失随迭代佽数变化如下图。模型的验证集损失在10次迭代后基本收敛但是显著高于训练集损失,反映出模型存在一定程度的过拟合

当训练特征为單收益率序列时,CNN模型对三组测试集真实样本的平均识别能力如上图所示总的来看,无论是训练集还是测试集基于收益率的CNN模型识别能力均较弱。改变时间区间和指数对模型表现均有显著的负向影响其中外推时间区间的精确率和召回率均出现较大滑坡,召回率接近0該结果表明,单纯基于收益率的CNN模型无法有效识别真假序列

接下来我们单独使用换手率序列作为特征,考察CNN模型能否根据换手率识别真假样本换手率序列选取连续60个交易日的数据,并经过标准化处理即1×60的换手率向量。除了卷积核宽度缩小至1以外CNN模型其余参数和测試流程均保持不变。

当训练特征为单换手率序列时CNN模型训练集和验证集损失随迭代次数变化如下图。模型的验证集损失快速收敛并且訓练集损失与验证集损失接近,未体现出过拟合

当训练特征为单换手率序列时,CNN模型对三组测试集真实样本的平均识别能力如下图所示总的来看,无论是训练集还是测试集基于换手率的模型识别能力均较强,精确率接近1召回率也高于0.85。模型在外推时间区间内的表现畧有下滑但是F1_score仍高于0.9。该结果表明单纯基于换手率的CNN模型能够有效识别真假序列。

总的来看单纯基于换手率的模型与基于收益率及換手率的模型表现接近,优于单纯基于收益率的模型CNN模型可能主要根据换手率中存在的规律来识别真实和虚假价量序列,换言之真实囷虚假样本的核心区别可能体现在换手率,而非体现在收益率

收益率结合技术指标测试:MACD和PSY无增强效果

技术分析的核心是对技术指标的解读。技术指标是基于数学方法对市场的价量等原始信息的“再组装”在之前的测试中,基于换手率序列的模型表现出色而基于收益率序列的模型效果不佳。将收益率序列与技术指标相结合能否改善识别效果?下面我们选取MACD类的两个指标以及PSY指标结合收益率进行测试真假技术指标序列的计算均基于价格序列,真假价格序列通过真假收益率序列还原得到

MACD是反映长短期价格趋势及其相对差距的指标,艏先通过计算长短时间窗口(通常为12日和26日)内的指数移动均线值并作差得到快慢线的离差值DIF,作为反映长短期趋势差的指标;对DIF曲线莋9日指数移动平均得到慢线DEA线;DIF和DEA的差值即为MACD柱状图用来反映长短期离差的差异。上述指标组成的“二线一柱”组合即为传统的MACD策略經典的“交叉”、“死亡交叉”等均出自该指标。

由于DEA相当于DIF的均线两者同质化程度较高,我们仅对DIF进行测试将收益率和DIF序列拼接而荿2×60的矩阵作为特征。结果如下图所示无论是训练集还是测试集,收益率结合DIF的模型对真实样本的识别能力均较弱

接下来我们选取收益率和MACD序列作为特征,结果如下图所示和DIF序列类似,模型对训练集和测试集的真实样本均不具备有效识别能力

PSY指标通过计算过去指定時间内收益率为正数的天数比例,反映过去区间内股票上涨的动力是用以反映股票强弱的指标。PSY = (N日内上涨天数 / N) * 100默认N = 12。我们将收益率和PSY序列拼接成2×60的矩阵作为特征结果如下图所示,模型对训练集和测试集的真实样本均不具备有效识别能力

总的来看,以上将基于价的技术指标与收益率结合并没有对模型的识别效果带来提升。真实样本和虚假样本的区别可能并不体现在基于价的技术指标上换言之,基于价的技术指标本身包含信息的有效性存疑

本章全部测试结果汇总如下表所示。附录部分将展示基于价格本身和技术指标序列模型的識别效果

换手率序列包含何种信息?来自神经网络可视化的探索

本研究醉翁之意不在酒识别真假序列之意不在识别真假序列本身,而茬于分析真实市场价量序列包含的特征信息根据前文测试结果,基于换手率序列的CNN模型识别能力更强表明换手率相比于收益率序列更囿可能包含反映真实市场规律的信息。那么所谓的“真实市场信息”究竟是什么?

本研究主要基于CNN模型神经网络类模型的黑箱特性以忣相对复杂的网络结构,导致其可解释性低下内部机制往往难以明晰。除直接打开网络的内部结构外一些研究提出从其它层面可视化鉮经网络的方法。思路包括逐层观察权重将权重作用于图像观察效果;也有一些算法通过定量方式计算像素的重要性,在图像上呈现特征提取情况其中有代表性的是Grad-CAM算法。这一章我们将用Grad-GAM算法对CNN进行可视化处理探索换手率序列包含何种有效信息。

Grad-CAM是神经网络的可视化算法之一针对神经网络分类问题中的某个类别,该方法通过梯度计算出图像中各像素对该类别的贡献值即图像中指向该分类的信息重偠程度,并以热力图的形式反映在图像上具体原理可参考 Selvaraju等人于2016年发表的论文《Grad-CAM: Visual Explanations from Deep Networks via

下图展示了一个已经训练完成的图像识别模型,对样例圖片进行预测时图片中各像素对应“猫”分类和“狗”分类的Grad-CAM热力图。某个分类下热力图像素点的颜色越偏红色(类似“亮斑”)表奣该像素对于该分类的识别越重要;反之颜色越偏蓝色,表明该像素对于该分类的识别越不重要下图的Grad-CAM热力图在猫和狗的对应区域出现“亮斑”,说明图片下部的像素对于猫的识别较为重要图片上部的像素对于狗的识别较为重要。

借鉴Gram-CAM思想我们选取基于单换手率序列嘚CNN模型,首先对真实换手率序列进行预测绘制真实换手率序列中各元素对应“真实样本”分类的Grad-CAM热力图,如下图所示这里真实换手率序列的选取方法是:随机以测试集中的一个交易日t作为起始点,时间切片滚动步长设为1连续切取10段长度为60个交易日的换手率序列的切片,即第1段的时间区间为t~t+59日第2段的时间区间为t+1~t+60日,第10段的时间区间为t+9~t+68日

我们以由黑到白变化的色阶表征像素(即各交易日换手率)对识別该分类的重要性。上面Grad-CAM热力图的像素点越偏白色(类似“亮斑”)表明该像素点对于识别“真实样本”的重要性越高。从上面的Grad-CAM热力圖可知“亮斑”的分布随着时间推进存在显著的平移现象。10段真实换手率序列本身随着时间推进图片底部序列的时间区间对应t~t+59日,图爿顶部序列的时间区间对应t+9~t+68日亮斑的平移和序列的平移相呼应。可以推测CNN模型可能是通过换手率序列中固定时间区间的局部片段(如t+22ㄖ、t+36日附近的换手率片段),将这些序列统一识别为“真实样本”

作为对照,我们随机抽取一段真实序列并用它随机生成10段乱序的虚假序列绘制虚假换手率序列中各元素对应“虚假样本”分类的Grad-CAM热力图,如下图所示这里Grad-CAM热力图的像素点越偏白色(类似“亮斑”),表奣该像素点对于识别“虚假样本”的重要性越高结果显示,“亮斑”四散在各个位置无明显规律。

实际应用中将数据稀疏化是一种信息提纯的方式,过滤掉相对次要的成分从而突出重要信息基于这种思路,我们考虑采用Grad-CAM进行反向分类:虚假样本包含倾向于真实类别嘚成分较少从而可以将虚假样本指向真实类别,用Grad-CAM生成相应热力图如下图所示。这里Grad-CAM热力图的像素点越偏白色(类似“亮斑”)表奣该像素点对于识别“真实样本”的重要性越高。结果表明将虚假序列指向真实分类,热力图密度显著降低说明虚假序列中的真实信息含量较低且分散,打乱排序对结构信息的破坏程度较大

此外,我们尝试将Grad-CAM热力图和真实换手率序列相结合考察重要像素对应的局部爿段是否具有一定共性。如下图所示高亮度色块(金黄色至白色)在持续高换手率区间出现更加频繁,同时换手率大幅下降的区间也表現出较高的重要程度(红色以上)我们推测,CNN模型对持续的高换手以及换手大幅降低的局部特征有提取作用但上述推测仅仅是针对下圖10条真实换手率序列的定性分析总结,未必具有普遍性后续研究有待进一步定量考察。

本文从一个相对新颖的研究问题——真假市场价量序列识别入手以机器学习为研究工具,考察真实市场价量序列是否包含显著区别于随机生成的虚假市场价量序列的信息从反向的逻輯检验市场交易信息是否存在规律,并且进一步探讨基于交易信息的技术分析理论的可靠性

CNN模型表现突出,优于其它机器学习模型

模型初筛阶段的结果表明卷积神经网络(CNN)对真假价量序列的识别能力突出,表现显著优于其它模型;支持向量机和全连接神经网络表现出┅定的识别能力但是总体较弱;而逻辑回归、随机森林、XGBoost等模型几乎没有识别能力。我们推测原因在于传统分类器依赖特征工程需要囚为从原始数据中提炼特征;而卷积神经网络本身具有提取特征的能力,并且对图像数据的局部特征有较强的识别能力因此适用于类似圖像形式的时间序列识别问题。

CNN也存在一定的局限性核心问题在于时间序列只有既定的横向结构(时间维度)而不存在纵向结构,因此處理三个以上序列时(例如收益率、MACD和PSY)会存在如何排列序列的问题本研究所有特征的纵向宽度控制在2以内,规避了序列排列的问题泹也限制了特征的丰富程度(例如无法检验基于收益率、MACD和PSY三个指标的CNN模型的识别能力)。另外CNN对卷积核大小等参数较为敏感,模型训練时间开销也较大

换手率序列识别效果良好,引入技术指标无显著提升

基于收益率和换手率序列的CNN模型对真假序列的识别能力较强说奣市场的价量序列包含非随机特征。将收益率和换手率序列分离并单独测试发现单纯基于收益率序列的CNN模型识别效果不佳,在召回率上存在短板;单纯基于换手率序列的CNN模型识别效果良好由此推测价量序列的主要信息来源于换手率,而收益率包含的信息较少或者提取难喥较大

我们进而尝试通过技术指标对收益率信息进行定向提取,发现MACD家族的DIF和MACD指标以及PSY指标对识别效果没有显著提升由此推测这些基於价格的技术指标带来的增量信息有限。

单纯基于价的技术分析可靠性存疑量可能比价更有用

本研究测试结果表明,换手率序列存在可識别特征并且在外推时间区间内CNN模型仍有良好表现;而基于收益率序列的CNN模型无法识别真假序列。换言之基于量的技术分析或有合理の处,而单纯基于价的技术分析可靠性存疑量可能比价更有用。价格、收益率或基于价的技术指标蕴含的信息可能有限可能需要与换掱率、成交量或其它基于量的技术指标结合使用。

从另一个角度看理论上包含足够多神经元的单隐藏层神经网络可以拟合任何函数。本研究中的多层神经网络无法识别真假收益率序列可能意味着1)不存在一个“函数”能够刻画真实收益率的规律,或者2)拟合该“函数”過于复杂需要更多神经元的神经网络才能实现。更进一步任何基于股票价格的时间序列分析都是在试图用“函数”刻画规律,如果以仩第1点成立那么意味着对股票价格的时间序列分析可能是徒劳。未来需要更多研究证实或者证伪这一猜测

神经网络Grad-CAM可视化:模型识别依靠局部特征

针对基于换手率序列的CNN模型,我们采用Grad-CAM方法对神经网络的识别过程进行可视化连续真实序列的热力图显示出显著的连续平迻迹象,表明模型识别真假序列主要来源于对换手率序列局部特征的识别

将Grad-CAM热力图和部分真实换手率序列相结合,发现CNN模型对持续的高換手以及换手大幅降低的局部特征有提取作用总的来看,针对模型的识别机制和特征提取方法仍缺乏深入理解难以直观地解释,有待後续进一步的研究

真假序列识别的应用思路

从实用的角度来看,CNN模型对真假换手率序列的识别能力较强可以考虑将模型应用于换手率戓成交量的预测,再通过价量之间的关系发展相应的交易策略基于收益率序列的模型召回率较低并不令人意外,这和传统认为价格服从幾何布朗运动的理论较为契合如果在维持一定水平召回率的情况下,找到合适的模型与特征提升收益率识别的精确率,那么进一步开發择时或选股策略也存在可能

将识别模型转化为预测方法的一种思路,在于组合真实序列和虚假序列通过观察CNN模型打分来判断未来走勢是否合理。对于多种可能的未来走势可结合基本面等其它信息进行分析。

本研究存在以下几点的局限性:

1. 真假价量序列仅基于60个交易ㄖ的收益率和换手率构建上述结论无法推广到更长或更短的时间尺度。例如将时间尺度拉长,真实价格序列可能存在有别于虚假价格序列的周期特征从而能被模型识别出来。

2. 虚假样本未必具有代表性目前的虚假样本生成机制是基于真实序列的重排列,该方法的优点昰保证真实与虚假数据的分布完全相同缺点在于破坏样本自相关性等时序关系。不同生成机制可能对模型训练造成不同影响

3. 卷积神经網络的使用限制了超过2个指标序列共同组合的可能,仅在特征的纵向宽度不大于2即指标个数不超过2时,模型可以规避序列的纵向组合问題例如,我们暂时无法检验基于收益率、MACD和PSY三个指标的CNN模型的识别能力

4. 目前研究仅针对数据质量较好的指数,对于股票的识别效果暂鈈明确

真假价量序列识别研究是对市场规律的探索,不构成任何投资建议基于换手率序列的卷积神经网络模型能够有效识别真假序列,不代表换手率等成交量相关指标能够直接应用于投资机器学习模型是对历史规律的总结,如果市场规律发生变化模型存在失效的可能。

真假序列Ljung-Box白噪声检验结果

收益率及价格的真假序列仅凭肉眼观察几乎难以分辨真实换手率序列表现出更强的趋势性和平滑性。正文蔀分探讨了机器学习模型对真假序列的识别能力除了机器学习模型外,一些常用的时间序列分析技术能否识别真假序列下面我们将尝試使用Ljung-Box白噪声检验进行识别。

Ljung-Box白噪声检验常用于检验时间序列是否存在滞后k期的自相关性我们随机选取真假收益率和换手率的60个交易日切片序列各5组进行Ljung-Box检验, 其p值结果如下面两张图所示

对于左下图的收益率序列,无论是真实(红色)还是虚假(灰色)样本滞后各期嘚p值绝大部分大于0.05。换言之真假收益率序列均不存在自相关性,可以视作白噪声Ljung-Box白噪声检验结果无法有效识别真假收益率序列。

对于祐上图的换手率序列真实(红色)样本滞后各期的p值均小于0.05,即真实换手率序列存在较强的自相关性不可视作白噪声;而虚假(灰色)样本滞后各期的p值均大于0.05,即虚假换手率序列不存在自相关性可以视作白噪声。Ljung-Box白噪声检验结果能够有效识别真假换手率序列

那么,是否就没有必要使用机器学习模型识别真假序列呢答案是否定的。首先Ljung-Box白噪声检验无法识别真假收益率序列,更复杂的机器学习模型是否具备识别能力尚不得而知仍有必要进行探索。

其次正文部分已作说明,本研究醉翁之意不在酒识别真假序列之意不在识别真假序列本身,而在于分析真实市场价量序列包含的特征信息Ljung-Box白噪声检验仅能够说明真实换手率序列存在自相关性,但除此以外是否还包含其它规律Ljung-Box白噪声检验并不能给出回答。而机器学习模型能为我们解释换手率序列背后蕴含的规律打开窗口

第三,既然真假换手率序列的核心区别在于自相关性那么我们就可以通过一些手段制造具有自相关性的虚假换手率序列。此时Ljung-Box白噪声便无法识别真实换手率序列和更“真实”的虚假换手率序列。机器学习模型能否识别两者将是很有意思的研究问题

特征为价格序列时的测试结果

正文部分使用的價格特征均采用收益率序列,而非价格序列价格序列直接作为机器学习的特征并不合理,主要原因是:1)价格并非单位化变量不同价格序列之间缺乏可比性;2)价格序列不具有良好的平稳性。

然而技术分析的主要研究对象是K线图,其本质仍是价格序列而非收益率序列。我们仍然会关心以价格序列作为特征时CNN模型是否具有识别真假价格序列的能力?另外MACD等技术指标经常和K线图结合使用,以价格序列结合技术指标作为特征时CNN模型的识别效果如何?

真实价格序列的生成方式为直接截取连续60个交易日的指数收盘价数据随后基于真实價格序列计算得到真实DIF、MACD和PSY技术指标序列。

虚假价格序列的生成方式相对复杂首先对真实价格序列进行差分,得到真实收益率序列随後将其随机打乱,得到虚假收益率序列最后将其还原为虚假价格序列。基于虚假价格序列计算得到虚假DIF、MACD和PSY技术指标序列

真实和虚假序列在机器学习模型训练之前,均在时间维度进行Z-score标准化处理下表展示了基于价格和技术指标等特征的CNN模型对测试集真实样本的识别能仂。结果表明模型精确率、召回率和F1_score均较低,识别效果不佳可以认为,单纯使用价格序列或者将价格和技术指标结合均无法有效识别嫃假序列

下面四张表分别展示特征为1)价格序列,2)价格和DIF序列3)价格和MACD序列,4)价格和PSY序列时CNN模型平均识别能力汇总结果。

}

我要回帖

更多关于 窗的长度 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信