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) 上涨家数 / 下跌家数 衡量市场宽度 判断整体强弱 新高新低比 新高家数 / 新低家数 衡量极端情绪 捕捉转折点 成交量变化率 (今日量-均量)/均量 衡量动能强弱 确认信号真伪 宽度信号 极端信号 综合判断结论 ADR + NH/NL 提供方向信号 成交量变化率 提供确认信号 三个指标配合使用,胜率远高于单一指标

这张图想表达的核心思想就一句话:ADR和NH/NL告诉你「方向对不对」,成交量变化率告诉你「力度够不够」。缺一不可。

我的实战经验:

刚开始做情绪指标的时候,我只看ADR。后来发现经常被假突破骗进去。加了成交量变化率之后,过滤掉了大概30%的假信号。再后来加上NH/NL,又能提前一两天捕捉到市场拐点。

这三个指标组合起来,就是一个非常实用的情绪监控系统了。

好了,基础指标的计算就讲到这里。代码都给了,逻辑也拆清楚了。下一步就是把这些指标组合起来,构建一个综合的情绪评分系统——那才是真正出效果的地方。


公众号:蓝海资料掘金营,微信deep3321