"这个料的安全库存设多少天?""二十一天吧,以前一直是这么设的。"这段对话我在不同公司听过不下十次。安全库存大概是供应链里最容易被拍脑袋定下来、却直接压着现金的一个参数。它平时看不出对错,只在出事那天一次性给你算总账。
一、先把两件事分开:安全库存不是周转库存
很多争论源于概念混用。库存里至少有三样东西,它们的成因不同、解法也不同:
|
|
|
|
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
安全库存只对不确定性负责。把它和周转库存混在一起,就会出现典型的错误动作:库存高就砍安全库存——结果不确定性没变,下次缺料的概率反而上升了。
顺带说一个判断口径:如果你的库存里"不确定性的那部分"从来没被单独算出来过,那你现在的高库存或高缺料,很可能都跟它有关。
二、公式本身:只有一行,但里面三个变量都不好取
安全库存的标准算法(需求与提前期均波动的情形):SS = z × √( L × σ_d² + d̄² × σ_L² )。再订货点:ROP = d̄ × L + SS。
1. d̄:日均需求(件/天)
2. σ_d:日需求的标准差(件/天)
3. L:补货提前期(天)——注意不是合同交期,见第四节
4. σ_L:提前期的标准差(天)
5. z:与服务水平对应的安全系数
服务水平与 z 的对应关系(常用几档):
|
|
|
|
|
|
|
|---|---|---|---|---|---|
|
|
|
|
|
|
|
这个表的含义是:你愿意承受多大的缺料概率。95% 意味着 100 个补货周期里,允许约 5 次缺料。这是管理层要拍的决策,不是采购能自己定的——但采购必须把这个选择的代价算出来给他看(见第五节)。
三、代入一个真实量级的例子:21 天是怎么来的
假设某进口车规器件(长周期、需清关),参数如下(演示口径):日均需求 d̄ = 100 件/天;日需求标准差 σ_d = 30 件/天(波动不算小);补货提前期 L = 90 天;提前期标准差 σ_L = 12.5 天;目标服务水平 95%,z = 1.65。
先算根号里那两项。需求波动项:L × σ_d² = 90 × 30² = 90 × 900 = 81,000。提前期波动项:d̄² × σ_L² = 100² × 12.5² = 10,000 × 156.25 = 1,562,500。合计 81,000 + 1,562,500 = 1,643,500。开方:√1,643,500 ≈ 1,282。乘 z:1.65 × 1,282 ≈ 2,115 件。按日均 100 件折算:2,115 ÷ 100 ≈ 21.2 天。21 天就是这么来的。
现在看最关键的一点——把提前期波动那一项拿掉,只算需求波动:SS(仅需求波动)= z × σ_d × √L = 1.65 × 30 × √90 = 1.65 × 30 × 9.49 ≈ 470 件 ≈ 4.7 天。4.7 天 vs 21 天,差了 4.5 倍。
这就是长周期物料最反直觉的地方:它的安全库存绝大部分不是被需求波动撑起来的,是被提前期波动撑起来的。对短周期料(比如 L=7 天的国产件),需求波动占主导,忽略 σ_L 问题不大;对 L=90 天甚至 52 周交期的进口器件,忽略 σ_L 会把安全库存低算到只剩零头。很多人"算过但还是断了料",问题往往就出在这里——用的是只含需求波动的简化公式。
继续把再订货点算完:ROP = d̄ × L + SS = 100 × 90 + 2,115 = 9,000 + 2,115 = 11,115 件。也就是说:库存降到 11,115 件时下单;理论上库存最低会降到 2,115 件(安全库存线),然后新货到。
四、三个输入的取数坑:错一个,结果就废了
坑一:σ_d 用计划量算。这是最常见的错误。用 MRP 跑出来的计划需求算标准差,会得到一个小得离谱的 σ——因为计划本身就是平滑过的,它掩盖了真实波动。正确做法:用历史实际出库/发料数据,取过去 6–12 个月,按天(或按周再折算)算标准差。数据里有异常值(比如一次性项目拉货)要先剔除,否则 σ 会被个别尖峰拉高。
坑二:L 直接当成合同交期。合同写 90 天,不代表你的补货提前期是 90 天。真正的 L 要拆开加总:L = 订单处理 + 供应商排产 + 生产周期 + 运输 + 清关 + 入厂检验 + 上架可用。这七段里最容易漏的是"订单处理"(内部审批可能就要 3–5 天)和"入厂检验"(车规料可能 2–5 天)。漏掉这两段,你以为 90 天,实际 98 天,安全库存系统性偏低。
坑三:σ_L 干脆没人算。提前期波动是需要单独统计的:取过去 12 次实际到货日期,算"实际到货 − 承诺到货"的标准差。如果你们没有这个记录,那就从现在开始记。σ_L 是长周期物料安全库存里权重最大的一个数,不记它等于放弃管理。一个可行的折中:先用"承诺交期 ± 经验偏差"估一个值(如 ±10%),跑三个月后用真实数据替换。
五、服务水平不是越高越好:把代价算给老板看
继续用上面的例子,把 z 从 1.65 调到 2.33(服务水平 95% → 99%):SS = 2.33 × 1,282 ≈ 2,987 件 ≈ 29.9 天。相比 21 天,多了约 8.7 天的量,即 872 件。
假设单价 86 元(演示口径),多占资金约 7.5 万元;按年持有成本率 20% 计,每年多花约 1.5 万元。这还只是一个料号。如果这类长周期料有 30 个,一年就是约 45 万元的持有成本。
所以服务水平的正确问法不是"我们要不要 99%",而是"这 45 万买的是多少次缺料规避"。给老板的决策建议应该这么写:"服务水平从 95% 提到 99%,这类长周期料要多压约 8.7 天库存,单个料号年增持有成本约 1.5 万,30 个料号约 45 万。对应的收益是缺料概率从约 5% 降到约 1%。建议对停线损失高、无可替代的 A 类料号用 99%,对可替代、交期短的料号维持 95%。"
一刀切的服务水平,本身就是一种浪费。
六、三类物料,三种算法侧重
|
|
|
|
|
|
|---|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
第三类要特别说明:间断型需求(今天要 50 个,接下来三周零需求)不适合用标准差正态模型,硬套会算出很奇怪的数。这类物料更适合用最小-最大库存法(min-max)或者干脆交给寄售。
七、四个一犯就废的误用
其一,算完一次就归档。功率器件交期从 8–12 周拉到 30 周、车规 IGBT/SiC 到 40–52 周,L 变了而你没重算,安全库存立刻失真。建议每季度重算一次,L 发生重大变化时立即重算。
其二,用安全库存掩盖预测问题。需求预测长期偏差 30%,不解决预测,只是一味加安全库存——这是用现金买管理懒惰。安全库存应该覆盖"随机波动",不应该覆盖"系统性偏差"。
其三,全公司一个服务水平。见第五节。A 类停线损失高的料号与可替代料号,不该用同一个 z。
其四,把安全库存当成"库存高"的替罪羊。库存高先查周转库存和呆滞,别急着砍安全库存——那是唯一在替你挡刀的部分。
八、拿到数之后:三件今天就能做的事
第一,挑 5 个最贵的长周期料号,把 L 拆成七段重新算一遍。大概率你会发现实际 L 比合同交期长一周以上。
第二,开始记录实际到货日 vs 承诺到货日。这是 σ_L 的唯一数据来源,记三个月就有可用样本。
第三,把服务水平的选择摆到桌面上。拿第五节那张"成本 vs 缺料概率"的对照,让老板/计划/生产一起定一次。这件事定下来,以后缺料时的责任划分就清楚了。
总结
安全库存不是一个数字,是一组选择。21 天这个结果,来自 100 件/天的用量、30 的波动、90 天的提前期、12.5 天的提前期抖动,以及 95% 这个服务水平。任何一个变了,它就得变。
留四句话:第一,长周期物料的安全库存,主要来自提前期波动,不是需求波动。用简化公式会低算数倍。第二,L 要拆成七段加总,别直接抄合同交期。第三,服务水平是钱换概率,不是越高越好,也不能一刀切。第四,σ_L 必须自己记。没有这个数,长周期物料的安全库存只能是拍出来的。
这套算法我做成了一张《安全库存与再订货点计算表》:填 d̄、σ_d、L、σ_L 和服务水平,自动算安全库存、再订货点、覆盖天数与资金占用;内置 z 值对照、服务水平敏感度分析(95%→99% 多压多少天、多花多少钱),以及一份按本文口径填好的示例。在公众号后台回复关键词【安全库存】,自动发你。
你们公司长周期料的安全库存是多少天?是算出来的还是沿用下来的?留言区或后台说说,我挑典型的算给你看。

