基于“特征工程+深度学习”的高频数据因子挖掘

Aug 11. 2023
【重要提示】本网站所有内容仅用作记录个人研究,不构成对任何人或机构的投资建议或意见。据此操作者,后果完全由其自己承担。
才疏学浅,欢迎指正!


【摘要】

本研究采用“特征工程+深度学习”思路,首先采用人工定义的计算公式将高频信息处理为日频因子,然后在日频因子的基础上,用深层全连接神经网络模型提取股票特征,构建对未来股价走势的预测范式。整体思路如下:

Blog Image

一、高频价量数据

近年来,A股市场机构化趋势明显,量化私募机构的管理规模也迅速扩大,产生了一批管理规模超过百亿的量化私募机构。与此同时,传统的风格因子波动增大,从市场获取超额收益的难度在增加。

因子拥挤是因子收益下降的原因之一。因子代表着市场某方面的非有效性、或者是一段时期内的定价失效。当某类因子收益高的时候,会吸引更多的资金进入,从而出现因子拥挤,降低因子的预期收益。一旦新的因子被公开,套利资金的介入会使得错误定价收窄,因子收益也会跟着下降。因此,在多因子选股模型中,因子的开发和迭代变得越来越重要。

以高频价量数据为基础的因子开发在当下具有更大的收益提升空间。与低频因子相比,高频数据在用于量化投资中存在一定优势。

首先,高频价量数据的体量明显大于低频数据。以分钟行情为例,用压缩效果较好的mat格式存储2020年全市场股票的分钟行情数据(包括分钟频的开高低收价格数据、买卖盘挂单数据等),约为12GB。如果是快照行情(目前上交所和深交所都是3秒一笔)或者level 2行情,数据量要大很多。因此,高频数据因子挖掘对信息处理能力和处理效率的要求较高。而且,日内数据,尤其是level 2数据,一般要额外付费,甚至需要自行下载存储实时行情,在此基础上构建的因子拥挤度较低。

其次,高频价量数据一般是多维的时间序列数据,数据中噪声比例较高,而且与ROE、PE这类低频指标本身就具有选股能力不同的是,原始的高频行情数据一般不能直接用作选股因子,而要通过信号变换、时间序列分析、机器学习等方法从高频数据中构建特征,才能作为选股因子。此类因子与低频信号的相关性较低,而且由于因子开发流程相对复杂,不同投资者构建的因子更具有多样性。

此外,高频数据开发的因子一般调仓周期较短,意味着在检验因子有效性的时候,同一段测试期具有更多的独立样本。例如,在一年的测试期内,只有12个独立的样本段用于检验月频调仓的因子,与之相比,有约50个独立的时段用于检验周频调仓因子,有超过240个独立的时段用于检验日频调仓的因子。独立样本的增多有助于检验高频因子的有效性。

高频数据挖掘因子的难点在于数据维度大、噪声高。凭借专业投资者的经验或者是参阅已发表的文献,可以从高频数据中提炼出一部分有选股能力的特征。此外,机器学习方法擅长从数据中寻找规律和特征,是高频数据因子挖掘的有力工具。

本研究采用“特征工程+深度学习”思路,首先采用人工定义的计算公式将高频信息处理为日频因子,然后在日频因子的基础上,用深层全连接神经网络模型提取股票特征,构建对未来股价走势的预测范式。整体思路如下:

Blog Image

二、特征工程

本文首先采用全市场的分钟频价量数据构建了55个日度因子,各因子定义如下:

2.1 日内价格相关因子

价格数据中蕴含了丰富的股票信息,本研究从日内累积收益率、日内收益率的高阶统计量和日内价格的趋势强度进行考察,确定了10个候选因子,如下表所示:

Blog Image

2.2 成交量相关因子

成交量也是日内行情信息的重要组成部分。一方面,成交量的分布可以反映投资者的行为特征,另一方面,成交量与价格或者价格走势的关系可以确认价格形态的信息。本研究考察的成交量相关因子如下表所示:

Blog Image

2.3 盘前价量因子

盘前价量信息主要包括隔夜收益率(开盘价相对前收盘的收益率)和开盘前集合竞价信息。目前,A股证券交易所在每个交易日的9:15至9:25为开盘集合竞价时间。开盘集合竞价又分为两个阶段,其中第一阶段是9:15至9:20,该阶段允许撤销已经提交的订单;第二阶段是9:20至9:25,该阶段不允许撤销已经提交的订单。集合竞价信息反映出资金的试盘行为和多空双方的博弈。本研究考察隔夜收益率和集合竞价的相关因子如下所示:

Blog Image

2.4 特定时段采样因子

此外,可以将部分时段的数据进行重点分析,产生衍生因子。一般来说,开盘后半小时(9点半至10点)和收盘前半小时(14点半至收盘)的股票成交活跃,多空博弈激烈,蕴含的信息相对较多。本研究针对开盘后半小时和收盘前半小时的价量信息构建了如下因子:

Blog Image

2.5 大成交量相关因子

在不同的成交中,大单成交与主力资金关联较多,蕴含的信息可能更多。本研究将个股在每个交易日的分钟成交量时间序列按照成交量大小排序,将分钟成交量排名前1/3的成交量定义为“大成交量”。针对大成交量对应的时刻的股价信息,可以构建大成交量相关因子:

Blog Image

三、深度学习

在获得上述计算的55个人工定义特征工程计算的日度因子后,采用深度学习模型来对股票因子与未来收益率之间的关系进行建模。本研究采用7层全连接神经网络建立股票预测模型,其中包含输入层X,输出层Y,和隐含层H1、H2、H3、H4、H5,如下表所示。

Blog Image

其中,X是输入层,其节点数为55个,表示股票样本的55个原始因子。Y是输出层,共3个节点,表示股票未来走势的三种可能性:上涨(有超额收益)、平盘(无超额收益)、下跌(负的超额收益)。

在本研究中,用3维的向量表示3种不同的输出类别。\(y = [1\quad 0\quad 0]^T\) 表示上涨样本(每个时间截面上,将全体股票按照未来5个交易日收益率排序,收益率最高的前10%的股票样本标记为“上涨样本”),\(y = [0\quad 1\quad 0]^T\) 表示平盘样本(收益率居中的10%的股票样本),\(y = [0\quad 0\quad 1]^T\) 表示下跌样本(收益率最低的10%的股票样本)。

深度学习模型是对输入向量 \(x\) 和输出向量 \(y\) 的关系进行拟合,建立对输出 \(y\) 的预测模型。记神经网络的参数为 \(w\) ,则神经网络模型可以记成 \(y=f(x;w)\)。隐层采用线性整流函数(ReLU)作为激活函数,输出层采用SoftMax激活函数。

在预测时,输出层SoftMax激活函数的输入向量为 \(z=[z_1\quad z_2\quad z_3]^T\),则经过softmax函数后,预测值为:

\[\begin{align*} \hat{y} &= [\hat{y}_1\quad \hat{y}_2\quad \hat{y}_3]^T \\ & = [\frac{e^{z_1}}{\sum_{i=1,2,3}^{}e^{z_i}}\quad \frac{e^{z_2}}{\sum_{i=1,2,3}^{}e^{z_i}}\quad \frac{e^{z_3}}{\sum_{i=1,2,3}^{}e^{z_i}} ]^T \end{align*}\]

对于分类问题,可以采用交叉熵作为损失函数,进行参数的优化。本报告采用交叉熵损失函数,优化目标为:

\[\begin{align*} E(w) = & - \sum^N_{n=1} \sum^k_{k=1} [y_{nk} \log \hat{y}_{nk} \\ & + (1 - y_{nk}) \log(1 - \hat{y}_{nk})] \end{align*}\]

其中,\( y_{nk} \) 表示第 \(n\) 个样本的第k个输出类别,\( \hat{y}_{nk} \) 表示对该输出的预测值。深度学习模型训练时,一般采用误差反向传播的方式求取梯度,优化参数。

在模型训练完毕后,提取深层神经网络最顶端隐藏层(H5层)的32个特征作为挖掘得到的高频数据因子,将其节点依次编号为0,1,…,31,称之为因子hf0,hf1,…,hf31。

四、特征工程构建的55个因子回测表现

本研究首先考察通过特征工程构建的55个因子在2020年7月至2023年6月期间的表现,根据当期股票的因子值和方向分为10档,其中前10%和后10%分别作为多头和空头,每5个交易日进行调仓,双边千三计费,并剔除了ST/ST*、涨跌停板、上市未满1年的股票。

在创业板中,55个因子的表现统计如下表所示,其中表现最优的是Amihud_illiq非流动性因子,其Rank_IC均值达8.92%,多头年化收益率和多空年化收益率分别为27.91%和39.72%。

Blog Image

在中证1000板块中,55个因子的表现统计如下表所示,其中表现最优的是real_kurtosis 因子,其Rank_IC均值为-5.06%,多头年化收益率和多空年化收益率分别为10.76%和15.15%;其次是Amihud_illiq非流动性因子,其Rank_IC均值为6.57%,多头年化收益率和多空年化收益率分别为10.07%和22.11%。

Blog Image

五、深度学习特征因子回测表现
深度学习模型训练及回测数据说明
  • 选股范围:创业板,中证1000
  • 股票预处理:剔除非上市、摘牌、ST/*ST、涨跌停板、上市未满1年股票
  • 训练数据:全市场2007年1月~2017年12月
  • 验证数据:全市场2018年1月~2020年6月
  • 2020年7月~2023年6月
  • 调仓周期:每5个交易日
  • 交易费用:千分之三(卖出时收取)

如前文所述,在深度学习模型训练完毕后,观察深层神经网络最顶端隐藏层(H5层)的32个特征,将其节点依次编号为0,1,…,31,称之为因子hf0,hf1,…,hf31。

在创业板中,32个深度学习特征因子在样本外选股表现如下表所示,共有14个因子的多头年化收益率超过了10%,其中hf18因子的多头年化收益率达27.25%最为突出,其Rank_IC为-6.79%,多空年化收益率为39.44%;hf2因子的多空年化收益率达53.21%,Rank_IC为-8.43%。

Blog Image

在创业板中,选取最佳前10的深度学习特征因子计算其相关性,结果如下表所示。整体而言不同的深度学习特征因子之间展现出了一定的非相关性。

Blog Image

在创业板中,选取最佳前5的深度学习特征因子与高频人工因子计算其相关性,结果如下表所示。整体而言,经过神经网络构建的深度学习特征因子与输入的高频因子之间的相关性较低,得到的深度学习特征因子是一组相对独立的新因子。

Blog Image

在中证1000板块中,32个深度学习特征因子在样本外选股表现如下表所示,其中hf13因子的多头年化收益率为11.25%,Rank_IC为6.63%。

Blog Image

在中证1000板块中,选取最佳前10的深度学习特征因子计算其相关性,结果如下表所示。整体而言不同的深度学习特征因子之间展现出了一定的非相关性。

Blog Image

在中证1000板块中,选取最佳前5的深度学习特征因子与高频人工因子计算其相关性,结果如下表所示。整体而言,经过神经网络构建的深度学习特征因子与输入的高频因子之间的相关性较低,得到的深度学习特征因子是一组相对独立的新因子。

Blog Image

六、总结与展望

本研究探讨基于“特征工程+深度学习”的高频数据因子挖掘。在预先将高频信息处理成55个日频因子之后,在日频因子的基础上,用深层全连接神经网络模型提取股票特征。模型采用了55个高频数据低频化的人工因子作为神经网络的输入,在深层神经网络提取特征之后,对特征进行分析并筛选合适的选股因子。

深度学习模型共获得32个特征因子,这些特征因子与模型输入的人工因子具有相对的独立性,在创业板和中证1000股票池中展现出不错的选股性能。每5个交易日进行换仓,双边千三计费后,在模型的训练和验证样本外的过去三年里, hf18因子在创业板股票池中取得了27.25%的多头年化收益率,相对于同期的创业板指数取得了25.50%的超额年化收益率;hf13因子在中证1000股票池中取得了11.25%的多头年化收益率,相对于同期的中证1000指数取得了7.24%的超额年化收益率。

展望未来,可探索更多的人工智能模型,应用于未来股价预测。