《高/低位放量:从事件驱动到选股因子》研报复现
  18958283423 10天前 55 0

报告原文下载链接:https://pan.baidu.com/s/165I89OfDhxVeoCdtWDylDA 提取码:cryy

高、低位放量是技术分析中经典的价量形态,通常被用于择时或事件驱动类型的研究,本篇报告尝试将其拓展到横截面选股领域,构建有效的选股因子。按常理来说,若股价触发“高位放量”形态,往往预示着主力资金开始出货,股票未来下跌的概率较大;反之若触发“低位放量”形态,则通常表明主力资金开始进场,股票未来有正向超额。
image.png

在本篇研报中,标签有每日开盘价、收盘价、最高价、最低价、每日成交量、换手率、分钟级价格和波动率等未经加工的底层市场数据;特征有过去120日收盘价的10%分位数(定义“低位”)、过去120日收盘价的90%分位数(定义“高位”)等从原始标签中提取的尚未验证预测能力的中间变量。因子有低位放量事件因子、高位放量事件因子、日频_高位波动占比因子、日频_低位波动占比因子、日频_高波价格占比因子、日频_低波价格占比因子等具有显著的预测能力的选股指标。

由于获取数据上的限制,我在复现研报时只采用了 2024-03-20 至 2024-08-20 的 10 只股票的数据,但是这30只股票只来自于能源和材料两个行业,这样方便后续进行行业中性化处理。总体上逻辑和原研报保持一致。本文章中的所有数值仅供参考。

一、基于日频数据的选股因子

高低位放量本质是一个事件驱动型信号,其核心依赖个股自身的历史状态(价格和成交量的时间序列变化),因此天然适合时序分析。但是由于在同一时间横截面上只有少数股票满足条件,这使得高低位放量更适用于个股择时或事件驱动策略,而非全市场横向比较。

但是通过以下,我们可以将时序事件转化为截面变量:
(1)每月月底,将每只股票过去20个交易日的换手率,按照每日的收盘价、从低到高进行排序,等分为5组;
(2)每组计算组内4个交易日换手率之和,除以20日换手率总和,再各自做横截面市值中性化处理,得到5个局部换手率占比因子,因子1对应的收盘价较低,因子5对应的收盘价较高。

通过这样,将原始的时序信号换手率转化为可在全市场横向比较的因子。对于“是否放量”的判断,我们的依据是“换手率是否异常放大”。但换手率放大只是交易量层面的信号,很多情况下我们会观察到,量的放大最终未必能够引起价格的有效波动。因此,我们不妨寻找更为直接的能够反映“价格异常变化”的指标,用“股价波动率放大”替换前文的“换手率放大”,修改触发事件的条件,得到以下因子构建逻辑

(1)每月月底,将每只股票过去20个交易日的波动率,按照每日的收盘价、从低到高进行排序,等分为5组;
(2)每组计算组内4个交易日波动率之和,除以20日波动率的平均值(波动率之和没有意义,因此改为求平均),再各自做横截面市值中性化处理,得到5个局部波动率占比因子,因子 1 对应的收盘价较低,因子5对应的收盘价较高;其中,每日波动率为当日1分钟收益率序列的标准差。我们将因子5定义为“日频_高位波动占比”因子,因子1定义为“日频_低位波动占比”因子。

代码实现:
image.png

结果输出:
“日频_低位波动占比”因子

image.png
image.png
image.png
image.png

“日频_高位波动占比”因子
image.png
image.png
image.png
image.png

二、基于分钟数据的选股因子

更进一步,我们也可以在更高频的维度上,比较不同价格水平对应的波动率大小情况,通过更高频的信息捕捉市场微观结构的细节,从而提升因子的信息含量和选股能力。接下来我们以一分钟频率为例。

因子构建逻辑:
(1)每个交易日,计算每只股票的分钟收益率,每分钟计算过去5分钟收益率的标准差,作为这只股票当前分钟波动率的代理变量;
(2)月底回看过去20个交易日,选取分钟收盘价最高的20%分钟,定义为“高位时间段”,计算高位时间段的波动率平均值/当月所有分钟的波动率平均值,做横截面市值中性化处理,得到“分钟_高位波动占比”因子;
(3)类似地,选取分钟收盘价最低的20%的分钟,定义为“低位时间段”,计算低位时间段的波动率平均值/当月所有分钟的波动率平均值,做横截面市值中性化处理,得到“分钟_低位波动占比”因子。

代码实现:
image.png

结果输出:
“分钟_高位波动占比”因子

image.png
image.png
image.png
image.png

“分钟_低位波动占比”因子
image.png
image.png
image.png
image.png

相比于之前的日频因子,分钟频率因子的另一个好处是扩大了因子的选股范围。在日频条件下,“日频_低位波动占比”因子的选股范围仅是全市场中价格处于低位(后20%)的股票,而“分钟_低位波动占比”因子可以对任何一只股票进行打分(每一只股票在过去20日都会有“低位时间段”)。

三、因子的另一种构造方式

我们讨论高、低位放量,无论是事件研究、还是选股因子,主要涉及的都是以下两个元素:价格处于高/低位、波动率的大小。在进行最初的事件研究时,先考察“高/低位”还是先考察“波动增大”,对事件的识别没有影响,因为必须同时满足两个条件才被认定为触发事件。但在构建选股因子时,如果我们观测价格水平、波动率的先后顺序不同,会导致得到的因子存在差异。前文构造因子,都是计算不同价格水平下的波动率占比,如果我们改为计算不同波动率水平下的价格占比,也可以构建一些不同的因子。

1. 日频维度

因子构建逻辑:
(1)每月月底,将每只股票过去20个交易日的收盘价,按照每日的波动率、从低到高进行排序,等分为5组;
(2)每组计算组内4个交易日收盘价的均值,除以20日收盘价均值,再各自做横截面市值中性化处理,得到5个局部价格占比因子,因子1对应的波动率较低,因子5对应的波动率较高。
(3)取因子5定义为“日频_高波价格占比”因子,因子1定义为“日频_低波价格占比”因子。

代码实现:
image.png

结果输出:
“日频_高波价格占比”因子:

image.png
image.png
image.png
image.png

“日频_低波价格占比”因子:
image.png
image.png
image.png
image.png

2. 分钟频维度

因子构建逻辑:
(1)每个交易日,计算每只股票的分钟收益率,每分钟计算过去5分钟收益率的波动率,作为这只股票当前分钟的波动率;
(2)月底回看过去20个交易日,选取分钟波动率最高的20%分钟,定义为“高波时间段”,计算高波时间段的收盘价平均值/当月所有分钟的收盘价平均值,做横截面市值中性化处理,得到“分钟_高波价格占比”因子;
(3)类似地,选取分钟波动率最低的20%分钟,定义为“低波时间段”,计算低波时间段的收盘价平均值/当月所有分钟的收盘价平均值,做横截面市值中性化处理,得到“分钟_低波价格占比”因子。

代码实现:
image.png

结果输出:
“分钟_高波价格占比”因子:

image.png
image.png
image.png
image.png

“分钟_低波价格占比”因子:
image.png
image.png
image.png
image.png

四、综合因子

构建逻辑:
在综合考虑因子的回测效果、相关性以及计算复杂度之后,我们选取“日频_高位波动占比”、“日频_高波价格占比”,每月月底各自横截面标准化、剔除行业干扰、等权合成高/低位放量综合因子。
公式:综合因子= zscore(日频_高位波动占比) + zscore(日频_高波价格占比)

代码实现:
image.png

结果输出:
image.png
image.png
image.png
image.png

五、因子失效风险

高低位放量因子的本质是反转因子,当市场风格又反转转为动量时,该因子面临失效风险。我们可通过因子IC的值来判断市场风格是否发生变化,当反转因子IC转弱,动量因子IC增强时,可能意味着动量风格将占主导,那么高低位放量因子将面临失效风险。

最后一次编辑于 10天前 1

暂无评论

推荐阅读