3、基础指标计算:涨跌比(ADR)、新高新低比(NH/NL)、成交量变化率
好,咱们进入实战环节了。
前面聊了情绪数据的获取和清洗,现在终于轮到算指标了。我个人习惯把基础指标分成三类:宽度类、极端类、动能类。今天要讲的三个——涨跌比、新高新低比、成交量变化率——正好各占一类。
说白了,这三个指标就是市场情绪的「体温计、血压计和心率计」。你想想看,一个病人光看体温不够吧?还得看血压稳不稳,心跳有没有异常。市场也一样。
3.1 涨跌比(ADR)——市场宽度
涨跌比,英文叫 Advance-Decline Ratio,简称 ADR。计算方式极其简单:
ADR = 上涨家数 / 下跌家数
嗯,就这么一行。但别小看它。
我在项目中遇到过好几次这样的情况:大盘指数涨了1.5%,看起来一片红火,结果ADR只有0.6。什么意思?说明只有少数权重股在拉指数,大部分股票其实在跌。这种「虚假繁荣」我见过太多次了。
- ADR > 1:上涨家数多于下跌家数,市场偏强
- ADR < 1:下跌家数占优,市场偏弱
- ADR 连续 < 0.5:极度恐慌,可能超跌反弹
- ADR 连续 > 2.0:极度亢奋,小心回调
实际计算时,我建议用5日均线平滑一下。单日数据太毛躁,容易误判。
def calc_adr(advance, decline):
"""
计算涨跌比
advance: 上涨家数序列
decline: 下跌家数序列
"""
ratio = advance / decline
# 5日平滑
smooth_ratio = ratio.rolling(window=5).mean()
return smooth_ratio
3.2 新高新低比(NH/NL)——极端情绪
这个指标比ADR更敏感。它只看那些创出52周新高和新低的股票。
NH/NL Ratio = 创52周新高家数 / 创52周新低家数
为什么会这样?因为普通投资者往往只关注指数涨跌,但真正的聪明钱在看「突破」和「破位」的数量。
我记得有一次做量化回测,发现一个很有意思的规律:当NH/NL比值连续3天低于0.1时,后续5天大盘上涨的概率超过70%。这就是极端情绪带来的均值回归机会。
我曾经犯过一个错误——直接用当日新高家数除以新低家数。结果遇到新股上市首日,一下子多了几十个新高,比值瞬间飙到10以上,差点触发假信号。
后来我加了一个处理:剔除上市不足60天的股票。这样数据干净多了。
计算代码也很简单:
def calc_nh_nl(high_52w, low_52w):
"""
计算新高新低比
high_52w: 创52周新高家数
low_52w: 创52周新低家数
"""
# 避免除零
low_52w = low_52w.replace(0, 1)
ratio = high_52w / low_52w
# 同样做平滑
return ratio.rolling(window=3).mean()
3.3 成交量变化率——动能确认
最后一个指标,成交量变化率。这个指标不单独用,它是用来「确认」前面两个指标的信号的。
你想想看:如果ADR显示上涨家数很多,但成交量在萎缩,说明什么?说明上涨没有资金配合,很可能是虚涨。反过来,如果ADR上涨且成交量放大,那这个上涨就有底气了。
计算方式:
Volume Change Rate = (今日成交量 - 前N日均量) / 前N日均量
我个人习惯用5日均量作为基准。N太小容易受单日异常影响,N太大又反应太慢。5日是个不错的平衡点。
def calc_volume_change_rate(volume, window=5):
"""
计算成交量变化率
volume: 成交量序列
window: 基准均线窗口,默认5日
"""
avg_volume = volume.rolling(window=window).mean()
change_rate = (volume - avg_volume) / avg_volume
return change_rate
| ADR信号 | 成交量变化率 | 结论 |
|---|---|---|
| ADR > 1.5 | > 20% | 强势上涨,可参与 |
| ADR > 1.5 | < -10% | 量价背离,警惕回调 |
| ADR < 0.5 | > 30% | 恐慌放量,可能见底 |
| ADR < 0.5 | < -20% | 缩量阴跌,继续观望 |
3.4 三个指标的关系——一张图说清楚
下面这张图是我自己总结的,三个指标各自扮演什么角色,一目了然:
这张图想表达的核心思想就一句话:ADR和NH/NL告诉你「方向对不对」,成交量变化率告诉你「力度够不够」。缺一不可。
刚开始做情绪指标的时候,我只看ADR。后来发现经常被假突破骗进去。加了成交量变化率之后,过滤掉了大概30%的假信号。再后来加上NH/NL,又能提前一两天捕捉到市场拐点。
这三个指标组合起来,就是一个非常实用的情绪监控系统了。
好了,基础指标的计算就讲到这里。代码都给了,逻辑也拆清楚了。下一步就是把这些指标组合起来,构建一个综合的情绪评分系统——那才是真正出效果的地方。
公众号:蓝海资料掘金营,微信deep3321