algo-sc-bullwhip

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Bullwhip Effect Analysis

牛鞭效应分析

Overview

概述

The bullwhip effect describes how small fluctuations in consumer demand amplify progressively at each upstream stage of the supply chain. A 5% retail demand increase can become a 40% order spike at the manufacturer. Caused by demand signal processing, order batching, price fluctuations, and rationing/shortage gaming.
牛鞭效应指的是终端消费者需求的小幅波动会在供应链的每一个上游环节逐步放大。例如,零售端需求增长5%,到制造商环节可能变成40%的订单激增。其成因包括需求信号处理、订单批量处理、价格波动以及配给/短缺博弈。

When to Use

适用场景

Trigger conditions:
  • Diagnosing why supplier orders are far more volatile than end-consumer demand
  • Quantifying demand amplification across supply chain tiers
  • Designing strategies to reduce order variability
When NOT to use:
  • When demand is genuinely volatile (not amplified) — the issue is demand forecasting
  • For single-echelon inventory optimization (use EOQ or safety stock)
触发条件:
  • 诊断供应商订单波动远大于终端消费者需求的原因
  • 量化供应链各环节的需求放大程度
  • 设计降低订单波动的策略
不适用场景:
  • 当需求本身确实存在剧烈波动(而非放大导致)——此时问题属于需求预测范畴
  • 单层级库存优化(请使用EOQ或安全库存方法)

Algorithm

算法

IRON LAW: Demand Variability Amplifies at EACH Upstream Stage
Bullwhip ratio = Var(orders) / Var(demand). A ratio > 1 at any stage
confirms the bullwhip effect. The four root causes (Lee et al., 1997):
1. Demand signal processing (forecasting with moving averages)
2. Order batching (periodic review, MOQs)
3. Price fluctuations (forward buying during promotions)
4. Rationing and shortage gaming (inflating orders during scarcity)
IRON LAW: Demand Variability Amplifies at EACH Upstream Stage
Bullwhip ratio = Var(orders) / Var(demand). A ratio > 1 at any stage
confirms the bullwhip effect. The four root causes (Lee et al., 1997):
1. Demand signal processing (forecasting with moving averages)
2. Order batching (periodic review, MOQs)
3. Price fluctuations (forward buying during promotions)
4. Rationing and shortage gaming (inflating orders during scarcity)

Phase 1: Input Validation

阶段1:输入验证

Collect: end-consumer demand time series AND order time series at each supply chain stage (retailer → distributor → manufacturer → supplier). Gate: At least 2 tiers of order data, minimum 26 periods.
收集:终端消费者需求时间序列数据,以及供应链各环节的订单时间序列数据(零售商→分销商→制造商→供应商)。 准入要求: 至少2个环节的订单数据,最少26个周期的数据。

Phase 2: Core Algorithm

阶段2:核心算法

  1. Compute variance of demand at each tier
  2. Compute bullwhip ratio per tier: BWR_i = Var(orders_i) / Var(orders_{i-1})
  3. Identify contribution of each cause: batch size analysis, promotion calendar overlap, forecast method evaluation
  4. Quantify cost: excess inventory carrying cost, expediting cost, capacity misallocation
  1. 计算各环节的需求方差
  2. 计算每个环节的牛鞭效应系数:BWR_i = Var(orders_i) / Var(orders_{i-1})
  3. 识别各成因的影响占比:批量规模分析、促销日历重叠分析、预测方法评估
  4. 量化相关成本:过剩库存持有成本、加急成本、产能错配成本

Phase 3: Verification

阶段3:验证

Check: BWR > 1 at upstream stages (confirms bullwhip). Correlate order spikes with identifiable causes (promotions, forecast updates, batch cycles). Gate: Bullwhip quantified and root causes identified.
检查:上游环节的BWR>1(确认存在牛鞭效应)。将订单峰值与可识别的成因(促销活动、预测更新、批量周期)关联。 准入要求: 已量化牛鞭效应并识别出根本原因。

Phase 4: Output

阶段4:输出

Return bullwhip ratios with root cause attribution and mitigation recommendations.
返回带有根本原因归因和缓解建议的牛鞭效应系数。

Output Format

输出格式

json
{
  "bullwhip_ratios": [{"tier": "retailer→distributor", "ratio": 1.8}, {"tier": "distributor→manufacturer", "ratio": 2.3}],
  "root_causes": [{"cause": "order_batching", "contribution_pct": 40}, {"cause": "demand_signal_processing", "contribution_pct": 35}],
  "metadata": {"periods": 52, "tiers_analyzed": 3}
}
json
{
  "bullwhip_ratios": [{"tier": "retailer→distributor", "ratio": 1.8}, {"tier": "distributor→manufacturer", "ratio": 2.3}],
  "root_causes": [{"cause": "order_batching", "contribution_pct": 40}, {"cause": "demand_signal_processing", "contribution_pct": 35}],
  "metadata": {"periods": 52, "tiers_analyzed": 3}
}

Examples

示例

Sample I/O

示例输入输出

Input: Consumer demand CV=0.10, Retailer orders CV=0.18, Distributor orders CV=0.32 Expected: BWR retailer=3.24 (0.18²/0.10²), BWR distributor=3.16 (0.32²/0.18²). Strong bullwhip confirmed.
输入: 消费者需求变异系数CV=0.10,零售商订单变异系数CV=0.18,分销商订单变异系数CV=0.32 预期输出: 零售商环节牛鞭效应系数=3.24(0.18²/0.10²),分销商环节牛鞭效应系数=3.16(0.32²/0.18²)。确认存在明显的牛鞭效应。

Edge Cases

边缘情况

InputExpectedWhy
BWR < 1Smoothing effectInformation sharing or VMI may dampen variability
Promotional periodsSpike in BWRForward buying amplifies orders
Single tier onlyCannot measure amplificationNeed at least 2 tiers for comparison
输入预期结果原因
BWR < 1平滑效应信息共享或供应商管理库存(VMI)可能会抑制波动
促销周期BWR激增提前采购会放大订单规模
仅单层级数据无法测量放大效应至少需要2个层级的数据用于对比

Gotchas

注意事项

  • Data granularity: Weekly vs monthly data can show different bullwhip magnitudes. Use consistent time buckets across tiers.
  • VMI and CPFR: Vendor-managed inventory and collaborative planning reduce bullwhip by sharing demand data. But they require trust and IT integration.
  • Information sharing ≠ bullwhip elimination: Even with POS data sharing, lead times and batch constraints still cause some amplification.
  • Shortage gaming is hardest to fix: During shortages, customers inflate orders. When supply recovers, cancellations flood in. Only committed-quantity allocations prevent this.
  • Measurement challenges: True consumer demand is often unobserved (only POS data). Lost sales from stockouts are invisible, understating true demand variability.
  • 数据粒度: 周度数据与月度数据显示的牛鞭效应幅度可能不同。需在各环节使用一致的时间区间。
  • VMI与CPFR: 供应商管理库存(VMI)和协同规划、预测与补货(CPFR)通过共享需求数据减少牛鞭效应,但需要信任和IT系统集成支持。
  • 信息共享≠消除牛鞭效应: 即使共享POS数据,提前期和批量约束仍会导致一定程度的放大。
  • 短缺博弈最难解决: 短缺期间,客户会夸大订单量。当供应恢复时,大量取消订单的情况会涌现。只有采用承诺数量分配机制才能避免这种情况。
  • 测量挑战: 真实的消费者需求通常难以直接获取(仅能获取POS数据)。缺货导致的损失销量不可见,会低估真实的需求波动。

References

参考文献

  • For Lee-Padmanabhan-Whang formal model, see
    references/bullwhip-model.md
  • For information sharing strategies, see
    references/information-sharing.md
  • 关于Lee-Padmanabhan-Whang的正式模型,请参阅
    references/bullwhip-model.md
  • 关于信息共享策略,请参阅
    references/information-sharing.md