PLUS会员

DeepAlpha短周期因子系列研究之:Transformer在量化选股中的应用

由sgwang创建,最终由sgwang 被浏览 425 用户

\

一、引言

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的超参数进行超参数寻优,并将该参数用于后期的滚动训练中。

标签

DeepAlphaTransformer量化选股
评论
  • scheduler = get_cosine_schedule_with_warmup(optimizer=opt, num_warmup_steps=4000, num_training_steps=100000) 这里num_training_steps是否需要根据训练集大小来设定?还是固定一个常数就好了
{link}