安全库存算错了3年,我才发现公式少了两个变量
算安全库存这件事,我前3年都是用教科书公式的:
安全库存 = Z × σd × √L
Z是服务水平对应的Z值,σd是需求标准差,L是提前期。
算出来的结果呢?有些SKU库存总是不够,频繁缺货;有些SKU库存积了一堆,半年都消化不完。
后来我仔细研究了一下,发现问题出在两个被忽略的变量上。
被忽略的变量一:供应波动
教科书公式只考虑了需求波动(σd),但供应也是波动的。
供应商说提前期7天,但实际上:
- 7天准时交付的概率只有60%
- 8-10天交付的概率30%
- 超过10天的概率10%
有一次供应商设备故障,提前期变成了21天。我的安全库存只按7天算的,直接断货2周。
正确的安全库存公式应该同时考虑需求波动和供应波动:
安全库存 = Z × √(L × σd² + d² × σL²)
其中σL是提前期的标准差,d是日均需求量。
这个公式意味着:不仅要考虑需求的不确定性,还要考虑供应的不确定性,而且两者是叠加的。
算一笔账:
| 参数 | 值 |
|---|---|
| 日均需求d | 100个 |
| 需求标准差σd | 25个 |
| 名义提前期L | 7天 |
| 提前期标准差σL | 3天 |
| 目标服务水平 | 95%(Z=1.65) |
只考虑需求波动: 安全库存 = 1.65 × 25 × √7 = 109个
同时考虑需求和供应波动: 安全库存 = 1.65 × √(7 × 25² + 100² × 3²) = 1.65 × √(4375 + 90000) = 1.65 × 308 = 508个
差了将近5倍! 这就是为什么按教科书公式算出来的安全库存总是不够——你忽略了供应波动这个大头。
被忽略的变量二:需求相关性
教科书公式假设每天的需求是独立的(互不影响),但实际业务中,需求往往有相关性。
举个例子:一个做建材的客户,他不是每天随机买一点,而是隔一段时间集中采购一批。这种需求模式叫"批量需求"。
批量需求的特点是:有需求的时候需求量很大,没有需求的时候为零。 这种模式下,用标准差来衡量需求波动会被严重低估。
还有一种情况更常见:季节性。 夏天的饮料需求是冬天的3倍。如果你用全年的需求标准差来算安全库存,夏天一定不够、冬天一定太多。
怎么处理:
- 批量需求:用Croston方法或SBA方法替代传统的标准差计算,专门处理间歇性需求
- 季节性需求:按季节分别计算安全库存,或者用季节因子调整预测后再算标准差
- 促销需求:促销期间的安全库存要单独计算,不能用常规需求的标准差
实操改良方案
我把安全库存的计算流程改成了4步:
第1步:计算需求安全库存(考虑需求波动和相关性)
- 稳定需求:用标准公式
- 季节性需求:用去季节化后的标准差
- 间歇性需求:用Croston方法
第2步:计算供应安全库存(考虑提前期波动)
- 统计供应商历史交付数据
- 计算提前期标准差σL
- 用公式 Z × d × σL 算出供应安全库存
第3步:合并 总安全库存 = 需求安全库存 + 供应安全库存
(注意:这里用的是相加而不是开根号,因为需求波动和供应波动往往是相关的——旺季的时候需求大,供应商也忙,提前期也更长。)
第4步:设置上下限
- 安全库存上限:不超过3个月的平均用量(防止呆滞)
- 安全库存下限:不低于1周的用量(防止断货)
改良前后对比
| 指标 | 改良前 | 改良后 | 变化 |
|---|---|---|---|
| 库存总额 | 2200万 | 1580万 | -28% |
| 缺货率 | 4.5% | 1.8% | -60% |
| 呆滞库存占比 | 22% | 9% | -59% |
| 库存周转率 | 3.8次/年 | 5.6次/年 | +47% |
库存降了28%,缺货率反而降了60%。 这就是"算对安全库存"的力量。
核心认知
安全库存不是"多备一点"这么简单。它是一个数学问题,但课本上的公式省略了两个重要的现实变量:供应波动和需求相关性。
你忽略的变量不会因为被忽略就不存在。 它们只是在暗处偷偷影响你的库存水平——让你该多的不多,不该多的特别多。
把供应波动和需求相关性纳入计算,安全库存才能从"拍脑袋"变成"有依据"。
算对了,库存就是你的缓冲;算错了,库存就是你的负担。