兴业证券 <<高频研究系列>> 收益率分布因子构建
篇分享研报中提及的几个由高频数据构建的因子,以及由当天1分钟K线的形态偏离正态的假设做的检定值构建的因子
研报重点分享
高频因子 v.s. 高频因子低频化
高频策略通常是基于level2的行情数据包含个股分钟 K 线、盘口快照、委托队列、成交明细等,在实盘利用实时数据计算结果后在极小时间内做买卖。
高频因子相较于低频因子的挑战有以下幾點
- IC衰减快,需要更频繁的更新因子值以捕捉高频信息,带来的代价是==换手率的增加==。
下图为研报中对收益率方差的高低频衰减对比,可以看到不管在IC还是收益率上,前四天的斜率(衰减速度)都较低频大。

- 杂讯大,在高频的数据下随机性会被放大,提取信息的难度也提升
- 自相关,原始高频数据在时序上具有高度自相关的特性,这使得传统的统计分析方法难以直接应用,且因子的构造在数学性质上的要求更严格。
本篇的思路是以高频数据作出低频化处理(日频及以上),希望可以高频数据中提取出更多信息,还有可交易性
低频化思路
研报中提到AttilioMeucci 在《Risk and Asset Allocation》中写到,应该面向市场中的不变量进行建模。对于独立同分布的高频数据而言,我们认为它的不变量就是总体分布的统计特征,研报依据构造的类型及数学特性分为四类
- 分布信息,指标(因子/特征)对于重排序不敏感,举例来说一天中分钟收益率的方差,$\sigma^2 = \frac{1}{N} \sum_{i=1}^{n} (x_i - \bar{x})^2$,由于求和符号 $\sum$ 的运算具有交换律,因此方差 $\sigma^2$ 的值不受數據 $x_1, x_2, \ldots, x_n$ 排列順序的影響。若 $X'$ 是 $X$ 的任意排列,則 $s^2(X) = s^2(X')$.
- 时间信息,指标对于重排序敏感(例:时序收益率自相关性),许多时序方法都可以提取对应的时间信息。
- 关联信息,对于对应关系敏感(例:量价关系),许多指标都用到这类思路,像是大单对应的收益率、成交金额等等
- 另类信息,研报中定义为需要提前定义的概念,如:大单、尾盘等等
多空指标构建
研报中对于多空的构建是采用中位数法,将因子值以中位数分割,大于中位数的所有标的以因子值等权方式构造做多部位,空单部位则是小于中位数的标的。
我自已复现则是采用基础的五分组,保持和其他因子的方式相同,维持一致性。
复现
特殊处理
- 不偏要求
对于截面上的因子值有不偏的要求,先采用boxcox变换,如果变换后偏度仍过大就采用rank
一般来说boxcox变换应该如下$y(\lambda)=
\begin{cases}
\dfrac{y_i^{\lambda}-1}{\lambda}, & \lambda \neq 0, \[6pt]
\ln(y_i), & \lambda = 0.
\end{cases}$这里对因子值以最小值为标准归零后再加一的位移$F_i - \min(F) + 1$,保证了不会出现虚数($\lambda \in [0,1]$)以及变换后的最小值依旧为$0$
$F_{i}^{*} = \begin{cases} \frac{(F_i - \min(F) + 1)^{\lambda} - 1}{\lambda} & \text{if } \lambda \neq 0 \ \ln(F_i - \min(F) + 1) & \text{if } \lambda = 0 \end{cases}$
常见收益率分布因子
本篇以日内分钟K线收益率的分布状况做了七种依据不同统计指标的因子,以及两个针对收益率偏离因子
统计指标
- rtn5_mean 5 分钟收益率的均值
- rtn1_var 已实现方差(一分钟收益率)
- rtn1_skew 收益率偏度(一分钟收益率)
- rtn1_kurt 收益率峰度(一分钟收益率)
- rv_up 上行收益率已实现方差
- rv_down 下行收益率已实现方差
- rv_umd 上下行已实现方差之差除以已实现方差
| 因子名称 | IC | IC IR | Rank IC | T 值 | 夏普 |
|---|---|---|---|---|---|
| rtn5_mean | 0.04 | 0.36 | 0.04 | 14.87 | 5.71 |
| real_var | 0.03 | 0.26 | 0.03 | 10.61 | 4.08 |
| rtn_skew | 0.02 | 0.36 | 0.03 | 14.72 | 5.66 |
| rtn_kurt | 0.02 | 0.33 | 0.02 | 13.64 | 5.24 |
| rv_up | 0.03 | 0.34 | 0.03 | 13.99 | 5.38 |
| rv_down | 0.02 | 0.27 | 0.02 | 11.28 | 5.38 |
| rv_umd | 0.02 | 0.23 | 0.03 | 9.63 | 3.70 |

可以看到整体的表现还可以,而相关系数矩阵则揭示了一些有趣信息
- 偏度和风度间的相关性达60%,可能是因为这两个计算方式分别是三/四阶标准化中心矩(moment)
2. 不同方式刻画方差的方式之间都存在一定程度的相关性动差(或称原点矩,Raw Moment)是描述随机变量或其概率分布特性的量,它通常是围绕原点$0$计算的。对于随机变量 $X$,其**$k$阶动差**($k$-th moment)定义为随机变量 $X^k$ 的期望值,记为 $\mu'_k$:
$$\mu'_k = E[X^k]$$中心动差(中心矩, Central Moment)中心动差是描述随机变量或其概率分布特性的量,它通常是围绕其平均值 $\mu = E[X]$ 计算的。中心动差相比原动差能更好地反映分布的形状,因为它不受分布位置的影响。对于随机变量 $X$,其 $k$阶中心动差($k$-th central moment)定义为随机变量 $(X - \mu)^k$ 的期望值记为 $\mu_k$
$$\mu_k = E[(X - \mu)^k]$$而峰度和偏度的计算方式分别为
$$\text{Skewness(偏度)} =
\frac{ \frac{1}{N}\sum_{i=1}^N (x_i - \bar{x})^3 }
{\left( \frac{1}{N}\sum_{i=1}^N (x_i - \bar{x})^2 \right)^{3/2}}
$$$$
\text{Kurtosis(峰度)} =
\frac{ \frac{1}{N}\sum_{i=1}^N (x_i - \bar{x})^4 }
{\left( \frac{1}{N}\sum_{i=1}^N (x_i - \bar{x})^2 \right)^2}
$$
收益率偏离因子(noise/nos)
构建方法
衡量股票的分钟收益率噪音(即观测到的收益率偏离预期收益率的差值)偏离正态分布的程度
| 条件 | 理论推断 | nos 表现 |
|---|---|---|
| 高流动性 (正常市场) |
许多微小交易量撮合,误差相互抵消 | nos接近正态分布 |
| 低流动性 (价格跳动小) |
价格变动集中在 $\pm 1$ 个基点内 | nos偏离正态分布 |
| 存在大额投资者 | 大额买卖单对收益率产生统计上显著的差异影响 | nos偏离正态分布 |
| 本篇提出两个统计量分别是SW(Shapiro-Wilk test)以及GS(可能是general_skew或gearys_stat) |
Shapiro-Wilk test
- $W$ 统计量衡量的是样本数据的顺序统计量(即排序后的数据)与理论正态分布的期望顺序统计量之间的相似程度(相关性)。
- 对于给定样本数据 $x_1, x_2, \ldots, x_n$(已从小到大排序),其 $W$ 统计量的计算公式为:
$$W = \frac{\left(\sum_{i=1}^{n} a_i x_{(i)}\right)^2}{\sum_{i=1}^{n} (x_i - \bar{x})^2}$$ - $W$ 统计量的取值范围是 $[0, 1]$
- $W$ 越接近 1: 表示样本数据与正态分布的拟合程度越好,数据越接近正态分布。
- 最初设计给小样本($3 < n < 50$),现经过修正后可以适配更大样本数($n < 5000$)
补充
图形检验法QQ Plot(quantile-quantile plot)也是常用的检验数据是否服从常态分配的检验方法,概念上是绘制样本分位数和理论常态分位数的散点图
$W$统计量为拟合程度的二元量化指标(像or不像),较QQ plot客观但无法给出偏离的细节信习
General Skew test
- $Z$ 统计量表示您观察到的样本偏度 ($g_1$) 距离理论值 $0$(即完全对称)有多少个标准误差。
- 计算公式: $Z_{\text{skew}} = \frac{\text{样本偏度} \ (g_1)}{\text{偏度标准误差} \ (\text{se}_{g1})}$
def general_skew(x):
g1 = stats.skew(x, bias=False)
n= len(x)
se_g1 = np.sqrt(6*n*(n-1)/((n-2)*(n+1)*(n+3)))
return g1 / se_g1
- 正值 ($Z > 0$) : 您的样本偏度 $g_1$ 为正,分布为右偏态(尾巴向右拉伸)
- 负值 ($Z < 0$) : 您的样本偏度 $g_1$ 为负,分布为左偏态(尾巴向左拉伸)
- 绝对值越大 : 表明观测到的偏度 $g_1$ 越远离 $0$,偏离对称性的程度越高。
Gearys stat test
- $Z$ 统计量表示您观察到的样本偏度 ($g_1$) 距离理论值 $0$(即完全对称)有多少个标准误差。
- 计算公式: $Z_{\text{skew}} = \frac{\text{样本偏度} \ (g_1)}{\text{偏度标准误差} \ (\text{se}_{g1})}$
def general_skew(x):
g1 = stats.skew(x, bias=False)
n= len(x)
se_g1 = np.sqrt(6*n*(n-1)/((n-2)*(n+1)*(n+3)))
return g1 / se_g1
- 正值 ($Z > 0$) : 您的样本偏度 $g_1$ 为正,分布为右偏态(尾巴向右拉伸)
- 负值 ($Z < 0$) : 您的样本偏度 $g_1$ 为负,分布为左偏态(尾巴向左拉伸)
- 绝对值越大 : 表明观测到的偏度 $g_1$ 越远离 $0$,偏离对称性的程度越高。
回测表现
Shapiro-Wilk test
|IC|IC IR |Rank IC|T 值|夏普|
|:---------:|:---------:|:---------:|:--------:|:--------:|:--------:|
|0.00|0.04|0.00|1.73|0.70|

效果较差的一组,几乎没有什么预测性,IC mean也几乎是零,与文中差异较大,反复看过程式逻辑应该没有错,可能是选股域或是数据源本身的问题
General Skew test
|IC|IC IR |Rank IC|T 值|夏普|
|:---------:|:---------:|:---------:|:--------:|:--------:|:--------:|
| 0.02|0.30|0.03|11.75|4.75|

效果还可以的一组,整体Sharpe还不错,T值也显著,累积分布图也呈现良好的一致性,但IC值较低只有0.03,可以考虑放到AlphaGen中进行进一步的强化
Gearys stat test
|IC|IC IR |Rank IC|T 值|夏普|
|:---------:|:---------:|:---------:|:--------:|:--------:|:--------:|
| 0.02|0.20|0.02|7.87|3.18|

与General的差异不大,但整体Sharpe和T值较低,可以采用General即可


评论