方正因子潮汐时刻 (hf_bar1m_c_fz_tide)

数据描述:

文档
数据简介

# hf_bar1m_c_fz_tide ## 文献来源 - **标题**: 《个股成交量的潮汐变化及“潮汐”因子构建——多因子选股系列研究之二》 - **作者**: 曹春晓 - **机构**: 方正证券 - **时间**: 2022-05-08 研报把个股日内成交量由低到高再回到低位的一次更替称为一次「潮汐」:以邻域成交量的最高点为「顶峰时刻」,其前后各自的邻域成交量最低点为「涨潮时刻」与「退潮时刻」。潮汐过程中股价变动越快,说明投资者抛售或建仓越急切、越容易反应过度,未来越可能反向修正。研报进一步以顶峰时刻为界把潮汐拆成两个「半潮汐」,按起止点邻域成交量的高低判定哪一半需要更强的力量推动(强势半潮汐),哪一半相对平和(弱势半潮汐)。 本表基于 `cn_stock_bar1m_c` 输出 5 个因子:`full_tide`(研报 3.2 节)、`strong_half_tide`(3.3 节 (2))、`aggressive_weak_half_tide` 与 `stable_weak_half_tide`(3.3 节 (3)),以及研报最终合成的 `complete_tide`(3.4 节)。全部因子共用同一次分钟线扫描与同一组潮汐切点,故合并为一张表。 ## 表结构 - **表名**: `hf_bar1m_c_fz_tide` - **主键**: `date` + `instrument` - **记录粒度**: 每个交易日每只股票一条记录 | 字段 | 类型 | 可空 | 含义 | | ---- | ---- | ---- | ---- | | `date` | `PlDatetime` | 否 | 交易日期 | | `instrument` | `PlString` | 否 | 股票代码 | | `full_tide` | `PlFloat64` | 是 | 全潮汐:过去 20 个交易日「涨潮时刻到退潮时刻」价格变动速率的均值,值越大说明投资者买卖意愿越急切、越容易反应过度,因子值越小越好 | | `strong_half_tide` | `PlFloat64` | 是 | 强势半潮汐:过去 20 个交易日「强势半潮汐」价格变动速率的均值,因子值越小越好 | | `aggressive_weak_half_tide` | `PlFloat64` | 是 | 激进弱势半潮汐:过去 20 个交易日「弱势半潮汐」价格变动速率的均值,因子值越小越好 | | `stable_weak_half_tide` | `PlFloat64` | 是 | 稳定弱势半潮汐:过去 20 个交易日「弱势半潮汐」价格变动速率的标准差,值越小说明成交量蓄势与消退阶段越平稳,因子值越小越好 | | `complete_tide` | `PlFloat64` | 是 | 完整潮汐:`strong_half_tide` 与 `stable_weak_half_tide` 截面标准化后等权合成,因子值越小越好 | ## 依赖数据 | 依赖表 | 频率 | 用到的字段 | 用途 | | ---- | ---- | ---- | ---- | | `cn_stock_bar1m_c` | 1 分钟 | `date`、`instrument`、`close`、`volume` | `volume` 算 9 分钟邻域成交量,据此定出顶峰、涨潮、退潮三个时刻;`close` 取三个时刻的收盘价,算潮汐过程的价格变动速率 | 只读取 09:31~14:57 共 237 根连续竞价分钟(剔除 09:25 开盘集合竞价与 14:58~15:00 收盘集合竞价),实测各年代该区间的 bar 数都是 237 根。 因子回溯 20 个交易日,单日增量实际读取约 20 个交易日的分钟数据,扫描量约为输出区间的 20 倍。 ## 因子列表 ### full_tide **中文名**: 全潮汐 **描述**: 一次完整潮汐过程(涨潮时刻到退潮时刻)的价格变动速率在过去 20 个交易日的均值,作为投资者出售或购买股票意愿强烈程度的代理变量。速率越大越容易反应过度,因子值越小越好。 **构建逻辑**: 先逐日定出潮汐的三个切点并算出全潮汐价格变动速率,再取过去 20 个交易日的均值。 1. 剔除开盘和收盘数据,仅考虑日内分钟频数据。为减小个别异常点的影响,先算每分钟及其前后各 4 分钟共 9 分钟的成交量总和,作为该分钟的「邻域成交量」: ```math NV_i = \sum_{j=i-4}^{i+4} V_j ``` 2. 邻域成交量最高的第 $t$ 分钟称为「顶峰时刻」。 3. 在第 5 ~ $t-1$ 分钟里,邻域成交量最低点发生在第 $m$ 分钟,其邻域成交量为 $V_m$、收盘价为 $C_m$,这一分钟称为「涨潮时刻」,从涨潮时刻到顶峰时刻的过程为「涨潮」。 4. 在第 $t+1$ 分钟至邻域成交量可算的最后一分钟里,邻域成交量最低点发生在第 $n$ 分钟,其邻域成交量为 $V_n$、收盘价为 $C_n$,这一分钟称为「退潮时刻」,从顶峰时刻到退潮时刻的过程为「退潮」。 5. 从涨潮时刻到退潮时刻的全过程为一次「潮汐」,其价格变化率为 $(C_n - C_m)/C_m$,价格变动速率为该变化率除以持续分钟数: ```math \text{FullTide}_d = \frac{C_n - C_m}{C_m \cdot (n - m)} ``` 6. 取最近 20 个交易日价格变动速率的平均值,即为本因子。 **项目实现说明**: - 计算频率:研报原文为每月月底计算,本项目按项目规范改为每个交易日计算 - 日内分钟范围与搜索区间:研报「剔除开盘和收盘数据」在本项目落为剔除 09:25 开盘集合竞价与 14:58~15:00 收盘集合竞价,保留 09:31~14:57 共 237 根连续竞价分钟。邻域成交量需要前后各 4 分钟,故可算区间为第 5 ~ 233 分钟,与研报把退潮时刻搜索区间写为「第 $t+1$ ~ 233 分钟」完全一致(237 − 4 = 233),顶峰、涨潮、退潮三个时刻均在此区间内搜索 - 顶峰时刻贴界:顶峰时刻落在可算区间下界(第 5 分钟)时,涨潮时刻的搜索区间 $[5, t-1]$ 为空,当日没有完整潮汐,五个因子的当日速率一律记为空值(缺退潮时刻同理)。研报未说明这种情形的处理 - 并列取值:邻域成交量出现并列时统一取更早的那一分钟,保证给定输入的结果可复现;$V_m = V_n$ 时(研报只定义了 $V_m < V_n$ 与 $V_m > V_n$)并入「退潮为强势半潮汐」分支 - 20 个交易日窗口的空值处理:窗口按**交易日**步进(无潮汐的交易日保留为空值行),均值与标准差在窗口内的可用值上计算。若按「有潮汐的日子」步进,20 行窗口会跨越远多于 20 个交易日 ### strong_half_tide **中文名**: 强势半潮汐 **描述**: 以顶峰时刻为界把潮汐拆成两半,起止点成交量跨度更大的那一半需要更强的力量推动、信息密度更高,取其价格变动速率在过去 20 个交易日的均值。因子值越小越好。 **构建逻辑**: 共用 `full_tide` 第 1~5 步定出的 $m$、$t$、$n$ 与 $V_m$、$V_n$。 1. 若 $V_m < V_n$,涨潮过程的起点更低、推动涨潮的力量需要更强,定义「涨潮」为强势半潮汐(区间 $m \to t$);反之若 $V_m > V_n$,定义「退潮」为强势半潮汐(区间 $t \to n$)。 2. 计算强势半潮汐起止收盘价的涨跌幅,再除以该半潮汐持续的分钟数,得到当日强势半潮汐的价格变动速率。 3. 取最近 20 个交易日该速率的平均值,即为本因子。 **项目实现说明**: - 计算频率:研报原文为每月月底计算,本项目按项目规范改为每个交易日计算 ### aggressive_weak_half_tide **中文名**: 激进弱势半潮汐 **描述**: 与强势半潮汐相对的另一半(成交量跨度较小、推动力量相对较弱的那一段)的价格变动速率在过去 20 个交易日的均值,作为投资者买卖意愿相对较弱时段交易热情的代理变量。因子值越小越好。 **构建逻辑**: 共用 `strong_half_tide` 的强弱判定结果,取未被判定为强势的那一半为「弱势半潮汐」。 1. 计算弱势半潮汐起止收盘价的涨跌幅,再除以该半潮汐持续的分钟数,得到当日弱势半潮汐的价格变动速率。 2. 取最近 20 个交易日该速率的平均值,即为本因子。 **项目实现说明**: - 计算频率:研报原文为每月月底计算,本项目按项目规范改为每个交易日计算 ### stable_weak_half_tide **中文名**: 稳定弱势半潮汐 **描述**: 弱势半潮汐价格变动速率在过去 20 个交易日的标准差。把弱势半潮汐视作成交量蓄势或消退的过程,越希望它逐日保持稳定,为强势半潮汐做足准备或做好收尾。因子值越小越好。 **构建逻辑**: 与 `aggressive_weak_half_tide` 共用弱势半潮汐价格变动速率,第 2 步改为取最近 20 个交易日该速率的标准差。 **项目实现说明**: - 计算频率:研报原文为每月月底计算,本项目按项目规范改为每个交易日计算 ### complete_tide **中文名**: 完整潮汐 **描述**: 研报最终合成的因子,取交易热情高涨时段的「强势半潮汐」与交易冷淡时段的「稳定弱势半潮汐」两个表现更好的分量合成。因子值越小越好。 **构建逻辑**: 将 `strong_half_tide` 与 `stable_weak_half_tide` 等权合成。研报未纳入表现较弱的 `aggressive_weak_half_tide`。 **项目实现说明**: - 计算频率:研报原文为每月月底计算,本项目按项目规范改为每个交易日计算 - 等权合成口径:研报只写「等权合成」,未说明是否先标准化。两个分量量纲不同(速率均值与速率标准差),直接相加会由量纲更大的一方主导,因此本项目统一实现为「先做截面 z-score 标准化,再等权平均」 ## 复现核对 **核对口径**: 2013-04-01 ~ 2015-12-31(已入库区间,671 个交易日 / 33 个月末截面,占研报样本期 2013-04 ~ 2022-02 的约三成);全市场不做任何股票过滤,未做行业与市值中性化;前向收益取次日开盘到 21 个交易日后开盘(`cn_stock_prefactors.open` 已是后复权价);rankIC 按截面计算,由 `hfwarehouse.utils.ic.validate_factor_ic` 得出;研报为月末截面、本项目逐日,故同时给出月末子样本与逐日全样本两列。ICIR 一列同时给出原始值(IC 均值 / IC 标准差)与年化值(月末乘 $\sqrt{12}$、逐日乘 $\sqrt{252}$)。 | 因子 | 本项目(研报口径,月末) | 本项目(逐日全样本) | 研报原文 | 出处 | | ---- | ---- | ---- | ---- | ---- | | `full_tide` | Rank IC -6.48%,ICIR -0.53(年化 -1.84) | Rank IC -6.62%,ICIR -0.66(年化 -10.43) | Rank IC -7.09%,Rank ICIR -3.73,多空年化 27.11%,信息比 2.94,月度胜率 84.91% | 研报 3.2 节 | | `strong_half_tide` | Rank IC -4.61%,ICIR -0.56(年化 -1.94) | Rank IC -4.47%,ICIR -0.65(年化 -10.31) | Rank IC -4.88%,Rank ICIR -4.40,多空年化 21.01%,信息比 3.38,月度胜率 83.02% | 研报 3.3 节 (2) | | `aggressive_weak_half_tide` | Rank IC -2.48%,ICIR -0.35(年化 -1.21) | Rank IC -3.10%,ICIR -0.49(年化 -7.81) | Rank IC -2.69%,Rank ICIR -2.35,多空年化 5.81%,信息比 1.40,月度胜率 71.70% | 研报 3.3 节 (3) | | `stable_weak_half_tide` | Rank IC -3.37%,ICIR -0.25(年化 -0.88) | Rank IC -4.85%,ICIR -0.37(年化 -5.82) | Rank IC -6.97%,Rank ICIR -3.14,多空年化 19.28%,信息比 1.82,月度胜率 74.53% | 研报 3.3 节 (3) | | `complete_tide` | Rank IC -5.69%,ICIR -0.46(年化 -1.59) | Rank IC -6.42%,ICIR -0.56(年化 -8.96) | Rank IC -7.90%,Rank ICIR -4.13,多空年化 27.09%,信息比 3.08,月度胜率 83.96% | 研报摘要与 3.4 节 | **差异说明**: - **样本期只覆盖研报的前三成,且正好是波动最极端的一段**。本表连续入库区间为 2013-04-01 ~ 2015-12-31,包含 2015 年牛市与股灾(另有 2026-09-29 一天的增量数据,不在本小节的 IC 区间内)。这段区间截面波动远高于研报全样本期,IC 标准差被显著放大,是 ICIR 绝对值全面低于研报的主要原因。中间区间 2016-01-01 ~ 2026-09-28 尚未回填,回填后须重跑本小节。 - **Rank IC 方向与量级基本对得上**:`full_tide`(-6.48% vs -7.09%)、`strong_half_tide`(-4.61% vs -4.88%)、`aggressive_weak_half_tide`(-2.48% vs -2.69%)三个因子的月末 IC 与研报相差均在 0.7 个百分点以内,五个因子符号全部为负,与研报「价格变动速率越大越容易反应过度」的反转方向一致;因子间强弱排序也与研报一致(`full_tide` 最强、`aggressive_weak_half_tide` 最弱)。切点定位与速率计算可认为复现无误。 - **`stable_weak_half_tide` 明显弱于研报(-3.37% vs -6.97%),差约 3.6 个百分点,是本次复现最大的对不上项**,并连带拉低由它参与合成的 `complete_tide`(-5.69% vs -7.90%)。两个可能来源:一是标准差类因子对样本期更敏感,2015 年的极端波动使弱势半潮汐速率的时序标准差在截面上趋同、区分度下降;二是研报未说明 20 日标准差用样本标准差还是总体标准差,本项目取 `m_nanstd`(样本标准差)。待历史回填完成、在完整样本期上重算后再判断是样本期效应还是口径差异,**现阶段不调整实现去凑研报**。 - **ICIR 不可直接比较,差异未定**:研报只写「Rank ICIR」,未说明是否年化、是否对因子做行业市值中性化。本项目月末口径的年化 ICIR 为 -1.84(`full_tide`),研报为 -3.73,相差约一倍;逐日口径按 $\sqrt{252}$ 年化后为 -10.43,与研报数量级不可比。除样本期因素外,研报大概率在中性化后的因子上计算 IC(中性化会大幅压低 IC 波动、抬高 ICIR),本项目按仓库规范不做任何中性化与股票过滤。此项标记为**待确认**。 - **多空年化、信息比、月度胜率三项未核对**:这三个指标需要分组多空组合回测,`validate_factor_ic` 只出 IC 类指标。需要时运行 notebook 第四段的 `AlphaMiner.single_factor_backtest()` 补齐。注意研报的「月度胜率」指多空组合的月度胜率,与 IC 符号一致的月份占比不是同一个指标,不可混用。 - **前向收益取开盘口径而非收盘口径**:本因子是反转类,用收盘价算前向收益会把当日反转带进收益、系统性放大表现。研报未说明其收益对齐方式,若研报用的是收盘口径,本项目数值会偏保守。 ## 示例数据 按 `date`、`instrument` 排序后的前 5 行与后 5 行,由 `update_docs()` 推送文档时自动填充。 | date | instrument | full_tide | strong_half_tide | aggressive_weak_half_tide | stable_weak_half_tide | complete_tide | |---------------------|------------|-----------|------------------|---------------------------|-----------------------|---------------| | 2026-09-29 00:00:00 | 000001.SZ | 0.000001 | 0.000014 | -0.000282 | 0.000428 | -0.537066 | | 2026-09-29 00:00:00 | 000002.SZ | 0.000274 | 0.000088 | 0.002259 | 0.004081 | 0.910279 | | 2026-09-29 00:00:00 | 000006.SZ | 0.000098 | -0.000054 | 0.001317 | 0.001510 | -0.383389 | | 2026-09-29 00:00:00 | 000007.SZ | -0.000046 | -0.000134 | 0.000093 | 0.001464 | -0.643507 | | 2026-09-29 00:00:00 | 000008.SZ | 0.000006 | 0.000002 | 0.000192 | 0.001297 | -0.282598 | | 2026-09-29 00:00:00 | 920978.BJ | 0.000007 | -0.000056 | 0.000297 | 0.001190 | -0.497519 | | 2026-09-29 00:00:00 | 920981.BJ | 0.000019 | -0.000051 | 0.002078 | 0.002357 | -0.091025 | | 2026-09-29 00:00:00 | 920982.BJ | 0.000070 | 0.000097 | 0.000961 | 0.002462 | 0.396513 | | 2026-09-29 00:00:00 | 920985.BJ | -0.000005 | -0.000031 | -0.000076 | 0.001043 | -0.469419 | | 2026-09-29 00:00:00 | 920992.BJ | 0.000168 | 0.000205 | 0.000083 | 0.002508 | 0.743157 |

用例
表结构
字段 字段类型 字段描述
aggressive_weak_half_tide double 激进弱势半潮汐:过去 20 个交易日「弱势半潮汐」价格变动速率的均值,因子值越小越好。来源:曹春晓. 2022-05-08. 《个股成交量的潮汐变化及“潮汐”因子构建——多因子选股系列研究之二》. 方正证券
stable_weak_half_tide double 稳定弱势半潮汐:过去 20 个交易日「弱势半潮汐」价格变动速率的标准差,值越小说明成交量蓄势与消退阶段越平稳,因子值越小越好。来源:曹春晓. 2022-05-08. 《个股成交量的潮汐变化及“潮汐”因子构建——多因子选股系列研究之二》. 方正证券
complete_tide double 完整潮汐:strong_half_tide 与 stable_weak_half_tide 截面标准化后等权合成,因子值越小越好。来源:曹春晓. 2022-05-08. 《个股成交量的潮汐变化及“潮汐”因子构建——多因子选股系列研究之二》. 方正证券
full_tide double 全潮汐:过去 20 个交易日「涨潮时刻到退潮时刻」价格变动速率的均值,值越大说明投资者买卖意愿越急切、越容易反应过度,因子值越小越好。来源:曹春晓. 2022-05-08. 《个股成交量的潮汐变化及“潮汐”因子构建——多因子选股系列研究之二》. 方正证券
date timestamp[ns] 交易日期
strong_half_tide double 强势半潮汐:过去 20 个交易日「强势半潮汐」价格变动速率的均值,因子值越小越好。来源:曹春晓. 2022-05-08. 《个股成交量的潮汐变化及“潮汐”因子构建——多因子选股系列研究之二》. 方正证券
instrument string 股票代码
__PARTITION__ string -

表名:hf_bar1m_c_fz_tide

起始时间:

最近更新时间: