DeepAlpha短周期因子系列研究之:Transformer在量化选股中的应用
由sgwang创建,最终由sgwang 被浏览 438 用户
\
一、引言
Google在2017年发布了Transformer,截止2022年5月,《Attention is all you need》论文的引用量已经超过了4万,可以说是近5年最热门的论文。
Transformer最初发布是用于时序任务和NLP任务,在近年来也有不少Transformer在CV应用比较出色的研究,我们有理由相信Transformer也可以应用于量化投资领域。
二、Transformer
Transformer的基本思想可以从平台之前发布的文章中看到,本文就不再进行重述。
https://bigquant.com/wiki/doc/moxing-zhineng-celve-4wqCcaD41I
三、实验
基于BigQuant人工智能量化投资平台(https://bigquant.com/),对Transformer在量化选股中的应用进行了研究。
3.1 实验方法
为了保证研究的客观性,我们采用《DeepAlpha短周期因子系列研究之一:DNN在量化选股中的应用》中同样的方法,利用基础量价因子预测股票未来5日的收益率。
3.2 数据准备
3.2.1 数据
选择2015年1月1日到2021年12月31日A股全市场的日线股票数据作为训练数据,股票未来5日的收益率为训练的Label。
3.2.2 因子
我们使用了开盘价、最高价、最低价、收盘价、换手率、当日收益率、成交量这7个基础数据,在量价行情基础数据中构建了98个因子。如下表所示:
表达式 | 含义 | 说明 |
---|---|---|
mean | 时序平均 | 共生成7个衍生因子,例如mean(close_0, 5) |
ts_max | 时序求最大 | 共生成7个衍生因子,例如ts_max(close_0, 5) |
ts_min | 时序求最小 | 共生成7个衍生因子,例如ts_min(close_0, 5) |
std | 时序标准差 | 共生成7个衍生因子,例如std(close_0, 5) |
ts_rank | 时序排序 | 共生成7个衍生因子,例如ts_rank(close_0, 5) |
decay_linear | 时序加权平均 | 共生成7个衍生因子,例如decay_linear(close_0, 5) |
correlation | 时序相关性 | 生成21个个衍生因子,例如correlation(close_0, volume_0, 5) |
向前偏移 | 7*5=35个,例如close_4 | |
衍生因子数 | 共计98个 (7*6+21+35) |
3.2.3 数据预处理
(1)Label预处理
短周期选股策略的目标是预测股票未来5日的收益率,并选择预测出收益率较高的股票进行买入。
- 极值处理:用1%和99%分位的值做clip
- 标准化处理:ZScoreNorm截面标准化
(2)因子预处理
- 标准化处理:ZScoreNorm截面标准化
- 缺失数据处理:fillna
- 极值处理:特征值剪裁{-3, 3}
- 序列窗口滚动:向前取5日的特征
3.2 基准模型
我们用2011年1月1日到2013年12月31日的数据对Transformer的超参数进行超参数寻优,并将该参数用于后期的滚动训练中。