P paper2skillsPlaybook
AI 路线图 →

补货系统4参数动态校准 — 前置期/安全库存/补货点/最大库存的精准化维护体系

Skill-Replenishment-Parameter-Calibration · 04-供应链

experimentforecastingrag供应链与补货知识图谱与RAGWF-A 智能补货
实现难度⭐⭐☆☆☆
业务优先级⭐⭐⭐⭐⭐
业务视角
适用角色供应链负责人 · 采购负责人 · CEO / 运营 VP
适用平台Amazon FBA · 海外仓 · 多国仓位(美/欧/日)
什么情况下用库存周转率低,资金压在海外仓出不来;SKU 断货紧急空运,物流成本吃掉毛利;多仓库存分布不均
成功是什么样的库存周转天数从 90 天降到 60 天,断货率 <3%,海外仓综合成本降低 15-25%
业务痛点
库存周转天数太长资金压死了断货了只能空运救急成本爆了多市场库存分配不均

1. 解决的问题

补货系统6个月前设置的参数从未更新导致前置期漂移10天缺货率从5%升至18%——4参数(前置期/安全库存/ROP/最大库存)+3变量季节指数的动态校准,季度一次维护防损ROI达1800%

2. 核心算法逻辑

书籍核心洞察(陈凤霞):补货系统的准确性取决于参数维护的质量,而大多数团队设置一次参数后就"忘了"——市场在变化,参数没有跟上,导致补货永远不准。书中给出了补货系统的完整参数体系(4+3+2),并明确了每类参数的更新频率和更新依据。

3. 业务应用场景

- 业务问题:某卖家6个月前设置了补货系统参数,但供应商交期从28天延长到38天,系统仍按28天前置期计算,导致缺货率从5%升至18% - 参数漂移检测: 1. 每月计算"实际前置期 vs 系统参数前置期"的偏差 2. 发现平均前置期已经是37.5天(vs 参数28天) 3. 触发参数更新流程:前置期28→38,安全库存从14天→18天,ROP相应更新 4. 缺货率在下一个补货周期恢复至5%

- **业务问题**:补货系统用全年平均日销量计算补货量,Q4旺季时补货量仍按平均水平,导致严重缺货 - **季节指数应用**:计算每月历史销量vs全年均值的比值(季节指数),ROP和Max Stock乘以季节指数→旺季自动多备货

4. 输入数据要求

请查看原始代码模板获取输入规格。

5. 输出结果

请查看原始代码模板获取输出规格。

6. 业务价值 / ROI

  • ROI 预估:前置期参数漂移10天导致缺货率从5%升至18%,每月多损失约$3000;每季度参数校准维护$500工作量→防损$9000,ROI=1800%
  • 实施难度:⭐⭐☆☆☆(公式直接,主要工作是建立参数更新触发机制和历史前置期记录)
  • 优先级:⭐⭐⭐⭐⭐(书中第七章数字化核心,补货系统参数漂移是"低成本、高频率"的缺货根因)
  • 适用规模:所有有补货系统的卖家,建议至少每季度运行一次参数校准
  • 数据依赖:历史日销量(90天+)、实际交期记录(20+批次)、月度销量数据(12个月)

7. 代码模板

代码块数量:2 · 路径:未检测到

"""
补货系统4参数动态校准
基于《全链路管理》陈凤霞 第七章第四节
4基础参数 + 3变量参数 + 2计算参数 + 参数健康诊断
"""
import numpy as np
import pandas as pd
from scipy import stats
from dataclasses import dataclass, field
from typing import Dict, List, Optional, Tuple
import warnings
warnings.filterwarnings('ignore')


@dataclass
class ReplenishmentParameters:
    """补货系统参数集"""
    sku_id: str
    # 4个基础参数
    lead_time_days: float           # 前置期
    safety_stock_days: float        # 安全库存天数
    service_level: float = 0.95     # 目标服务水平
    max_stock_days: float = 60.0    # 最大库存天数
    # 参数设置时间
    param_version: str = '2026-Q1'
    last_calibration: str = '2026-01'


class ReplenishmentParameterCalibrator:
    """补货参数校准器"""

    @staticmethod
    def compute_safety_stock_days(daily_sales: np.ndarray, lead_time: float,
                                   service_level: float = 0.95) -> float:
        """
        安全库存天数 = z × σ_D × √LT / 日均销量
        (书中标准公式)
        """
        if len(daily_sales) < 7:
            return 14.0  # 数据不足时的默认值

        z = stats.norm.ppf(service_level)
        sigma_d = float(np.std(daily_sales))
        avg_d = float(np.mean(daily_sales))

        # 安全库存件数
        safety_units = z * sigma_d * np.sqrt(lead_time)
        # 转化为天数
        safety_days = safety_units / max(avg_d, 0.01)

        return max(round(safety_days, 1), 3.0)  # 最少3天安全库存

    @staticmethod
    def compute_seasonal_index(monthly_sales: List[float]) -> Dict[int, float]:
        """
        计算12个月的季节指数
        季节指数 = 当月销量 / 全年月均销量
        """
        if len(monthly_sales) < 12:
            return {i+1: 1.0 for i in range(12)}

8. 论文来源

未自动抽取;请查看原始 Skill 卡片。