3. 支出集中度基础:赫芬达尔-赫希曼指数(HHI)原理与计算

在供应商支出分析中,赫芬达尔-赫希曼指数(Herfindahl-Hirschman Index, HHI)是衡量采购支出集中度的核心指标。它通过计算供应商支出份额的平方和,量化支出在供应商之间的分布集中程度,帮助采购团队快速识别“单一供应商依赖”或“过度分散”的风险。

3.1 HHI 的定义与数学原理

HHI 的计算公式如下:

HHI = Σ (Sᵢ)² × 10000

其中:

  • Sᵢ = 第 i 个供应商的支出金额占总支出金额的百分比(以小数表示,如 0.35 代表 35%)
  • Σ = 对所有供应商的份额平方求和
  • × 10000 = 将结果放大,使指数落在 0 到 10000 之间,便于直观比较
关键理解: HHI 对份额较大的供应商赋予更高的权重(平方效应)。一个占 50% 份额的供应商,其贡献值为 0.25(0.5²),而一个占 10% 的供应商仅贡献 0.01(0.1²)。因此,HHI 对头部供应商的集中度变化极为敏感。

3.2 HHI 数值的解读区间

根据美国司法部(DOJ)和联邦贸易委员会(FTC)在反垄断领域的标准,结合采购管理实践,HHI 通常按以下区间解读:

HHI 区间 集中度等级 采购风险特征 建议行动
0 – 1000 低度集中(分散) 供应商数量多,单一供应商依赖度低;但可能管理成本高、议价能力分散 评估整合机会,识别战略供应商进行集中采购
1000 – 2500 中度集中 少数供应商占据较大份额,存在一定依赖风险,但仍有替代选择 建立供应商分级管理,对头部供应商制定风险预案
2500 – 10000 高度集中 极少数供应商(甚至单一供应商)主导支出,断供风险极高,议价空间受限 立即启动供应商多元化计划,开发备选资源
注意: 采购场景下的 HHI 阈值可根据品类特性调整。对于关键战略物料,即使 HHI 在 1500 以下,若头部供应商为唯一具备技术能力的厂商,仍需按高度集中管理。

3.3 手工计算示例:从原始数据到 HHI

假设某品类年度支出数据如下,共 5 家供应商:

供应商 支出金额(万元) 支出占比(小数) 份额平方
A 450 0.45 0.2025
B 250 0.25 0.0625
C 150 0.15 0.0225
D 100 0.10 0.0100
E 50 0.05 0.0025
合计 1000 1.00 0.3000

计算步骤:

  1. 计算各供应商支出占比:450/1000 = 0.45,250/1000 = 0.25,以此类推。
  2. 对每个占比求平方:0.45² = 0.2025,0.25² = 0.0625,0.15² = 0.0225,0.10² = 0.0100,0.05² = 0.0025。
  3. 求和:0.2025 + 0.0625 + 0.0225 + 0.0100 + 0.0025 = 0.3000。
  4. 乘以 10000:0.3000 × 10000 = 3000。

该品类 HHI = 3000,属于高度集中区间,供应商 A 占 45% 份额,需重点关注单一依赖风险。

3.4 HHI 计算流程与逻辑架构

以下 SVG 图展示了从原始支出数据到 HHI 输出及风险判定的完整计算流程:

HHI 计算流程与风险判定逻辑 原始支出数据 供应商列表 + 支出金额 计算支出占比 Sᵢ = 支出ᵢ / 总支出 平方求和 Σ (Sᵢ)² 放大 ×10000 输出 HHI 值 风险等级判定 低 / 中 / 高 集中度 输出采购策略建议 💡 平方效应放大头部依赖 份额越大,对 HHI 贡献呈指数增长

3.5 使用 Python 批量计算 HHI

当供应商数量较多(如数百家)时,手工计算效率低下。以下代码演示如何用 Python 快速计算 HHI:

import pandas as pd
import numpy as np

def calculate_hhi(expenditure_series):
    """
    计算赫芬达尔-赫希曼指数 (HHI)
    
    参数:
        expenditure_series: pandas Series, 各供应商支出金额
    
    返回:
        hhi: float, HHI 值 (0-10000)
        shares: pandas Series, 各供应商支出占比
    """
    total = expenditure_series.sum()
    shares = expenditure_series / total
    hhi = (shares ** 2).sum() * 10000
    return round(hhi, 2), shares

# 示例数据
data = {
    '供应商': ['A', 'B', 'C', 'D', 'E'],
    '支出金额': [450, 250, 150, 100, 50]
}
df = pd.DataFrame(data)

hhi_value, share_series = calculate_hhi(df['支出金额'])
print(f"HHI = {hhi_value}")
print("各供应商支出占比:")
print(share_series.round(4))

# 输出:
# HHI = 3000.0
# 各供应商支出占比:
# 0    0.45
# 1    0.25
# 2    0.15
# 3    0.10
# 4    0.05
# dtype: float64

3.6 HHI 在采购分析中的典型应用场景

  • 品类组合风险扫描: 按品类分别计算 HHI,快速定位“单一供应商依赖”的高风险品类。
  • 供应商整合效果评估: 对比整合前后的 HHI 变化,量化集中度提升幅度。
  • 采购组合优化: 设定目标 HHI 区间(如 1500-2500),指导供应商数量与份额分配。
  • 价格方差异常定位: 结合 HHI 与价格方差,识别“高度集中 + 高价格方差”的异常供应商组合。
实践建议: 在月度或季度采购报告中,将 HHI 作为固定监控指标。当 HHI 单月环比上升超过 200 点时,触发预警,要求采购经理提交集中度变化说明。

3.7 HHI 的局限性及补充指标

局限性 说明 补充方案
忽略供应商间替代性 HHI 仅看份额,不区分供应商是否可替代 结合供应商技术能力、认证状态做定性评估
对极小型供应商不敏感 大量微小供应商的平方和贡献极小,可能掩盖“长尾风险” 同时计算 CR4(前4家集中度)或 CR8 作为辅助
静态指标 反映某一时点的集中度,无法体现趋势 绘制 HHI 时间序列折线图,监控变化方向
不反映价格合理性 高集中度不一定意味着价格异常 引入价格方差分析,定位“集中 + 高价”组合