篇分享研报中提及的几个由高频数据构建的因子,以及由当天1分钟K线的形态偏离正态的假设做的检定值构建的因子
研报重点分享
高频因子 v.s. 高频因子低频化
高频策略通常是基于level2的行情数据包含个股分钟 K 线、盘口快照、委托队列、成交明细等,在实盘利用实时数据计算结果后在极小时间内做买卖。
高频因子相较于低频因子的挑战有以下幾點
- IC衰减快,需要更频繁的更新因子值以捕捉高频信息,带来的代价是换手率的增加。
下图为研报中对收益率方差的高低频衰减对比,可以看到不管在IC还是收益率上,前四天的斜率(衰减速度)都较低频大。
- 杂讯大,在高频的数据下随机性会被放大,提取信息的难度也提升
- 自相关,原始高频数据在时序上具有高度自相关的特性,这使得传统的统计分析方法难以直接应用,且因子的构造在数学性质上的要求更严格。
本篇的思路是以高频数据作出低频化处理(日频及以上),希望可以高频数据中提取出更多信息,还有可交易性
低频化思路
研报中提到AttilioMeucci 在《Risk and Asset Allocation》中写到,应该面向市场中的不变量进行建模。对于独立同分布的高频数据而言,我们认为它的不变量就是总体分布的统计特征,研报依据构造的类型及数学特性分为四类
- 分布信息,指标(因子/特征)对于重排序不敏感,举例来说一天中分钟收益率的方差,,由于求和符号 的运算具有交换律,因此方差 的值不受數據 排列順序的影響。若 是 的任意排列,則 .
- 时间信息,指标对于重排序敏感(例:时序收益率自相关性),许多时序方法都可以提取对应的时间信息。
- 关联信息,对于对应关系敏感(例:量价关系),许多指标都用到这类思路,像是大单对应的收益率、成交金额等等
- 另类信息,研报中定义为需要提前定义的概念,如:大单、尾盘等等
多空指标构建
研报中对于多空的构建是采用中位数法,将因子值以中位数分割,大于中位数的所有标的以因子值等权方式构造做多部位,空单部位则是小于中位数的标的。
我自已复现则是采用基础的五分组,保持和其他因子的方式相同,维持一致性。
复现
特殊处理
- 不偏要求
对于截面上的因子值有不偏的要求,先采用boxcox变换,如果变换后偏度仍过大就采用rank
一般来说boxcox变换应该如下
这里对因子值以最小值为标准归零后再加一的位移,保证了不会出现虚数()以及变换后的最小值依旧为
常见收益率分布因子
本篇以日内分钟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)是描述随机变量或其概率分布特性的量,它通常是围绕原点计算的。对于随机变量 ,其**阶动差**(-th moment)定义为随机变量 的期望值,记为 :
中心动差(中心矩, Central Moment)中心动差是描述随机变量或其概率分布特性的量,它通常是围绕其平均值 计算的。中心动差相比原动差能更好地反映分布的形状,因为它不受分布位置的影响。对于随机变量 ,其 阶中心动差(-th central moment)定义为随机变量 的期望值记为
而峰度和偏度的计算方式分别为
收益率偏离因子(noise/nos)
构建方法
衡量股票的分钟收益率噪音(即观测到的收益率偏离预期收益率的差值)偏离正态分布的程度
| 条件 | 理论推断 | nos 表现 |
|---|---|---|
| 高流动性(正常市场) | 许多微小交易量撮合,误差相互抵消 | nos接近正态分布 |
| 低流动性(价格跳动小) | 价格变动集中在 个基点内 | nos偏离正态分布 |
| 存在大额投资者 | 大额买卖单对收益率产生统计上显著的差异影响 | nos偏离正态分布 |
本篇提出两个统计量分别是SW(Shapiro-Wilk test)以及GS(可能是general_skew或gearys_stat)
Shapiro-Wilk test
- 统计量衡量的是样本数据的顺序统计量(即排序后的数据)与理论正态分布的期望顺序统计量之间的相似程度(相关性)。
- 对于给定样本数据 (已从小到大排序),其 统计量的计算公式为:
- 统计量的取值范围是
- 越接近 1: 表示样本数据与正态分布的拟合程度越好,数据越接近正态分布。
- 最初设计给小样本(),现经过修正后可以适配更大样本数()
补充
图形检验法QQ Plot(quantile-quantile plot)也是常用的检验数据是否服从常态分配的检验方法,概念上是绘制样本分位数和理论常态分位数的散点图
统计量为拟合程度的二元量化指标(像or不像),较QQ plot客观但无法给出偏离的细节信习
General_Skew test
- 统计量表示您观察到的样本偏度 () 距离理论值 (即完全对称)有多少个标准误差。
- 计算公式:
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
- 正值 () : 您的样本偏度 为正,分布为右偏态(尾巴向右拉伸)
- 负值 () : 您的样本偏度 为负,分布为左偏态(尾巴向左拉伸)
- 绝对值越大 : 表明观测到的偏度 越远离 ,偏离对称性的程度越高。
Gearys_stattest
- 统计量表示您观察到的样本偏度 () 距离理论值 (即完全对称)有多少个标准误差。
- 计算公式:
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
- 正值 () : 您的样本偏度 为正,分布为右偏态(尾巴向右拉伸)
- 负值 () : 您的样本偏度 为负,分布为左偏态(尾巴向左拉伸)
- 绝对值越大 : 表明观测到的偏度 越远离 ,偏离对称性的程度越高。