熔岩热度横截面因子,就是在同一交易日,把全标的熔岩热度指标做横向对比,先通过缩尾或者截尾方式剔除极端异常值,再做横截面标准化,最后和个股换手率做对照校验,用来过滤热度虚高、流动性差的噪声标的,整套 Python 流程覆盖数据读取、极值处理、Z-score 标准化、和换手率联合校验、因子保存输出,适合短线情绪、题材轮动类量化策略,直接用原始熔岩热度会被涨停、异动爆量的极端值带偏,跨标的对比失去意义,所以横截面预处理和流动性对照是这个因子能不能稳定使用的关键。
一、核心概念说明
| 名词 | 解释 |
|---|---|
| 熔岩热度 | 情绪类指标,一般结合涨幅、量比、封单、分时脉冲、板块联动综合算出,用来衡量单标的短期资金关注度 |
| 横截面因子 | 同一天内,全部股票放在一起做统计变换,不是单只股票时序滚动标准化 |
| 去极值 | 对单日横截面的熔岩热度,剔除上下尾部异常值,避免少数极端票扭曲整体分布 |
| 标准化 | 去极值之后做 Z-score,得到当日热度相对分位,正数代表热度高于当日均值,负数代表低于均值 |
| 换手对照 | 把标准化后的熔岩热度和当日换手率放在一起交叉筛选,排除热度很高但换手极低、流动性不足的标的 |
二、整体处理步骤清单
- 读取当日全市场标的数据:股票代码、熔岩热度值、当日换手率、收盘价等
- 横截面去极值:常用两种方案,百分位缩尾(Winsorize)或者 3σ 截尾,行业量化里 Winsorize 更常用
- 横截面标准化:对去极值后的熔岩热度计算当日均值、标准差,算出 Z 值
- 换手对照校验:把标准化热度和换手率做联合散点、相关性计算、设置换手门槛过滤
- 因子存储:输出新因子lava_heat_cs,附带标记是否通过流动性校验
- 批量回测扩展:循环每日数据,按日期分组重复横截面流程
三、Python 关键代码逻辑走读
依赖库:pandas、scipy.stats
import pandas as pd
from scipy.stats import mstats
df 单日横截面数据,每一行是一只股票
lava_heat:原始熔岩热度;turnover:换手率
df = df.dropna(subset=["lava_heat","turnover"])
1. 横截面Winsorize去极值,上下各2%缩尾
df["lava_heat_wins"] = mstats.winsorize(df["lava_heat"], limits=[0.02, 0.02])
2. 横截面Z-score标准化
mean_val = df["lava_heat_wins"].mean()
std_val = df["lava_heat_wins"].std()
df["lava_heat_cs"] = (df["lava_heat_wins"] - mean_val) / std_val
3. 换手对照:计算热度因子和换手率的相关系数
corr = df["lava_heat_cs"].corr(df["turnover"])
简单流动性过滤示例:只保留换手>0.01标的
df["pass_liquid"] = df["turnover"] > 0.01
代码要点拆解
- 必须按日期 groupby 分组,不能把多天数据混在一起标准化,横截面的含义就是同日横向对比;批量写法用df.groupby("trade_date").apply(...)
- Winsorize 缩尾和直接 drop 删除极值不一样:缩尾是把极值拉到边界,不减少样本数量;截尾是直接删掉极端票
- 换手对照不是用来修正热度,而是风控筛选:高热度低换手容易出现流动性陷阱,容易买不进、砸不出
四、两种去极值方案对比
| 方案 | 做法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|---|
| Winsorize 缩尾 | 上下百分位极值替换成边界值 | 样本不丢失,对尾部厚尾分布友好 | 依然保留异常样本,只是压制幅度 | 熔岩热度这类情绪因子,优先推荐 |
| 3σ 截尾 | 剔除均值 ±3σ 以外样本 | 彻底剔除离群点 | 样本变少,分布偏移 | 异常值是脏数据、错误数据时用 |
五、常见使用约束与优化方向
- 停牌、一字涨跌停标的建议提前过滤,这类熔岩热度经常失真,换手接近 0
- 小盘股、ST 股可以单独设置换手门槛,或者单独分组做横截面
- 可以增加分行业横截面:同一行业内部做热度对比,适合行业轮动策略
- 换手对照可以做多维度:同时看成交额、量比,不只用单一换手率
【相关 FAQ】
问题 1:熔岩热度横截面因子做 Python 开发,去极值为什么优先选 Winsorize 缩尾?
回答 1:熔岩热度横截面因子做 Python 开发,Winsorize 缩尾会把尾部极端热度值压缩到边界,不会直接删除标的,保留全部横截面样本,更适合熔岩热度这种情绪分布厚尾的指标,避免单日删掉大量题材标的。
问题 2:熔岩热度横截面因子,标准化是时序标准化还是横截面标准化?
回答 2:熔岩热度横截面因子是同一交易日内全部标的一起做 Z-score 标准化,不是单只股票沿着时间滚动标准化,目的是衡量个股热度在当天全市场里的相对水平。
问题 3:熔岩热度横截面因子里的换手对照,在 Python 代码里起到什么作用?
回答 3:熔岩热度横截面因子里的换手对照,是在 Python 流程里用换手率和标准化熔岩热度交叉校验,过滤热度很高但是换手率极低、流动性差的标的,规避情绪高但是成交稀薄的流动性风险。
问题 4:用 Python 构建熔岩热度横截面因子,能不能直接对原始热度标准化而不去极值?
回答 4:不建议直接对原始熔岩热度标准化,熔岩热度很容易被涨停、异动标的拉出极端值,会扭曲当日横截面均值和标准差,标准化结果失真,所以必须先去极值再标准化。
【参考资料】
[2026-11-08](横截面因子预处理:Winsorize 缩尾与 Z-score 标准化实操)聚宽量化社区
[2026-11-05](情绪类因子构建:熔岩热度指标逻辑与横截面处理)掘金量化
[2026-10-21](Python 量化因子开发:分组横截面变换 groupby apply 示例)优矿技术博客
[2026-09-15](流动性校验:因子搭配换手率做风控筛选的实践)同花顺 iFinD 量化专栏
[2026-08-07](量价情绪因子回测常见坑:横截面与时序标准化混淆)宽客俱乐部
【免责声明】
本文为熔岩热度横截面因子 Python 处理流程的技术走读内容,仅作为量化编程学习参考,不构成任何投资建议。熔岩热度属于情绪类自定义因子,指标原始口径、数据源、参数(缩尾比例、换手阈值)调整都会显著改变回测结果;历史回测表现不代表未来收益,实盘交易请做好充分回测、压力测试与风控。
本文来自作者[锐棱快照]投稿,不代表乌兰科技网立场,如若转载,请注明出处:https://www.wlcbnews.com/rgzn/202611/2281.html
评论列表(4条)
我是乌兰科技网的签约作者“锐棱快照”!
希望本篇文章《熔岩热度横截面因子开发去极值、标准化、换手对照 Python 代码走读》能对你有所帮助!
本站[乌兰科技网]内容主要涵盖:互联网行业的追踪与探索
本文概览:熔岩热度横截面因子,就是在同一交易日,把全标的熔岩热度指标做横向对比,先通过缩尾或者截尾方式剔除极端异常值,再做横截面标准化,最后和个股换手率做对照校验,用来过滤热度虚高、流动性差的噪声标的,整套 Python 流程覆盖数据读取、极值处理、Z-score 标准化、和换手率联合校验、因子保存输出,适合短线情绪、题材轮动类量化策略,直接用原始熔岩热度会被涨停、异动爆量的极端值带偏,跨标的对比失去意义,所以横截面预处理和流动性对照是这个因子能不能稳定使用的关键。