在过去三年里,我以供应链顾问的身份参与了超过40家电商企业的库存整改项目。几乎每一次启动会,老板都会指着仓库照片问我:“这些死货能不能少点?但爆款别断货。”这个看似矛盾的要求,恰恰是所有库存管理者的终极诉求。经过大量实践,我得出了一个与主流观点不太一样的结论:推拉结合的核心不是找到一个固定的混合比例,而是建立一套基于概率的动态决策机制。简单说,你不可能准确预测明天卖多少,但你能算清楚断货和压货各自的风险,然后选择一个损失最小的平衡点。这篇文章,我会从理论到实战,完整还原这套方法,包括我踩过的坑、拟合过的公式、以及在不同品类上验证过的效果。你可以直接拿来用。
推式(Push)补货,提前备大量库存到渠道,最大的问题是用确定性成本应对不确定性需求。你为预测偏差付出的代价是资金占用和仓储贬值。拉式(Pull)补货,根据实际销售触发采购,等于把不确定全抛给供应链,可一旦交期波动或需求飙涨,缺货损失立刻反噬。两者各自假设了一个“完美条件”:推式假设预测准确,拉式假设供应无限且即时。现实中这两个假设都不成立。
我的核心观点是:推拉结合应该理解为一个连续光谱,推的比例由供需双方的随机性共同决定。需求越稳定、供应越可靠,就可以越“拉”;反之,就需要越“推”。而量化这一比例的工具,是概率论里的安全库存模型。它不追求消灭不确定性,而是让你接受一个可接受的缺货概率,然后反推出需要储备多少缓冲库存。这个缓冲库存就是“推”的成分,其余按需补货就是“拉”的成分。
这里只先提结论,后面会展开计算过程。安全库存(SS)= Z × σ × √L,其中Z是服务水平对应的概率系数,σ是单位时间需求标准差,L是补货提前期。补货点(ROP)= 平均日需求 × L + SS。而补货量则取决于你设定的目标库存水平。明白这三条公式,推拉结合就有了数学锚点,不再靠拍脑袋。我后面会用一个真实店铺的完整数据演示每一步。

来源: 示意数据
2018年我接手一家主营节日礼品的店铺。老板为双11备了3倍量的库存,结果两个爆款SKU转化率不及预期,压了价值80万的货,占用了全店60%的流动资金。第二个月供应商要账期,不得不低价清仓,毛利直接变成负数。事后复盘,根本原因是用“乐观预测”代替了“概率预估”。如果当时每天记录需求标准差,就会知道波动有多大,安全库存只需要加0.5倍而不是2倍。
另一家客户是做季节性强、交期短的日用品。他们追求极致“零库存”,系统每日抓取销量,自动向供应商下单。前半年库存周转确实快,现金流漂亮。但进入旺季,供应商产能出现波动,交付周期从3天拉长到7天。系统完全没预警,导致连续断货21天,活动流量全部浪费,平台权重腰斩。这让我意识到:拉式之所以脆弱,是因为它假设提前期和需求都是常数。只要引入一个合理的概率区间,就能避免这种悲剧。
这两个案例促使我开始在Excel里搭概率模型。最初只是按安全库存公式算一个值,手工调整。当发现缺货率显著下降后,我开始把它写成标准化流程,后来用FineBI和九数云搭了自动化看板。2019年用这套方法帮一家母婴店实现了缺货率从15%到3%的下降,库存周转天数从65天降到40天。从那以后,概率决策就成了我所有库存项目的底层逻辑。

来源: 项目实际数据,已脱敏
最常见的误区是把“推”和“拉”当成两种互补策略,按品类或时间简单划分。例如“爆款用拉,长尾用推”。这个划分忽略了推拉的本质差异在风险偏好而不是品类。一件爆款,如果它符合需求稳定、供应及时的特点,完全可以高比例拉式补货;但如果它处在推广期,需求不可预测,就应该暂时调高推式比例。关键是按需求的不确定性动态切换,而不是静态分类。
很多团队设定了安全库存后半年不改一次。但需求波动和供应商表现是变化的。我的做法是每两周滚动计算一次σ和L,重新生成安全库存值。有一次一个客户发现安全库存自动从500降到了300,起初不信,一查发现是因为供应商优化了物流,提前期从10天缩短到5天。如果继续用旧值,就会多压两周的货。动态调整才是概率模型的前提。
店铺每个月平均卖1000件,这只是半个答案。如果日需求分布在±100之间,安全库存只要备1.65倍标准差就能覆盖95%的情况;但如果是±300,同样的服务水平需要备将近三倍的标准差。不懂σ,只看d,等于闭着眼做补货。很多老板抱怨“安全库存公式没用”,其实是因为他们直接用销售额倒推,没算过真正的波动。
概率模型对输入数据很敏感。电商后台容易有大量异常订单、退款、刷单等。如果不做清洗,直接拖进公式,算出来的安全库存可能偏大30%以上。我的经验是:先花70%精力做好订单拆解和异常剔除,再花30%精力建模。数据质量比模型精度更重要。

来源: 模拟数据
我从实践中归纳出三个输入参数。第一是单位时间(通常为天)的平均需求 d。第二是单位时间需求的标准差 σ,如果数据太少,可以用预测误差的RMSE代替。第三是补货提前期 L,最好取供应商近三个月的实际交付天数,不要看合同承诺。这三个输入构成最简模型。如果同时考虑提前期的不确定性(σ_L),可以用更复杂的公式 SS = Z × √(L × σ² + d² × σ_L²)。但刚开始,只用一个σ已经能覆盖多数电商场景。
服务水平(Cycle Service Level)是指在一个补货周期内不缺货的概率。设定99%意味着100个补货周期里只允许1次缺货。提高一个点,安全库存会大幅增加。我通常建议的参考值是:A类高毛利热销品设95%-99%,B类常规品设90%-95%,C类低毛利长尾品设80%-90%。这个分层本身就是在做个成本取舍。如果你有精确的缺货成本(订单流失率×客单价)和库存持有成本,也可以反解最优服务水平。
电商的订单分布通常不是完美正态,所以我会在原始数据上做一个对数变换,或者在计算σ时剔除极值(比如双11那天的数据)。更关键的是,对于季节性产品,要用最近30天的滚动窗口代替全历史数据。以前一个女装客户用全历史σ算出来2000件安全库存,但近期波动只有800件,白白压了1200件的资金。改用30天滚动窗口后,安全库存才贴近真实需求。
决策树是我在每次启动项目时和团队一起画的。节点包括:
根据这三个维度,可以分到三种场景:偏推式、偏拉式、推拉结合。例如CV=0.2、提前期3天、毛利率30%,视为拉式主导,安全库存只需用95%服务水平的一个小值。又如CV=0.8、提前期45天、毛利率60%,必须推式主导,安全库存要用99%服务水平的大值,并且每两周动态调整。

来源: 行业建议基准,示意数据
2023年我辅导一家主营女装的淘宝C店,月销售额约80万元,SKU约200个。当时他们的痛点很典型:缺货率15%以上,尤其是A类爆款经常断货;同时仓库里有价值超60万的库存超过90天没动。老板认为补货完全是“凭感觉”,有时候供应商催一下、客服抱怨一下,就加量。数据完全没有被用来指导决策。
首先从后台拉取了最近6个月的订单明细,做了三步清洗:
(1)剔除退款、刷单、异常大单(超过均值3σ的)。
(2)按SKU聚合到每日需求,形成时间序列。
(3)和供应商确认每款的平均提前期及波动。结果很惊讶:部分供应商合同写的7天,实际平均11天,个别长到20天。我们取实际交付天数计算L。
以其中最热的一款连衣裙为例:
根据ABC分类,A类SKU(前20%贡献80%销售额)普遍设95%服务水平,B类设90%,C类设85%。然后为每一类单独计算安全库存和补货点。对于A类,我们用推式储备安全库存(这部分库存是“推”的成分),日常按ROP拉式补货。整体拉式的比例占70%,推式(安全库存)占30%。随着需求稳定度的变化,每两周重新跑一次参数,推的比例在20%~40%之间波动。
经过3个月的运行:
这些数据是店铺真实财务统计。老板决定把Excel模型迁移到九数云,做实时看板,让运营每天自动看到补货建议。

来源: 项目数据,已做比例缩放
以推为主、拉为辅。新品没有历史数据,需求方差巨大。我建议的做法是:先用一个保守的预测(比如按行业同类新品首月销量中位数)作为均值,设定非常高的服务水平(99%),安全库存倍数取3以上。一旦销售进入第二个月,立刻切换到30天滚动窗口,降低推的比例。如果发现数据方差下降,就可以转为拉为主。这个过程要快,否则容易压货。我见过一个客户用这个方法,新品断货率从40%降到5%,且清仓损失也减少了。
以拉为主、推作缓冲。当SKU平稳销售超过3个月,需求波动趋于稳定,可以直接用本文的概率模型动态计算。通常安全库存占比(推式部分)在20%~30%就足够。注意每两周检查一次σ和L的变化。如果发现供应商开始不稳定(比如交付时长变异增大),就要临时提高Z值。
先推后拉,分阶段调整。大促前4~6周,采用推式大量备货(按预期峰值的安全库存倍数);大促进行时,切换为拉式,每小时刷新销售数据,低于ROP自动补单到供应商;大促结束后,立刻恢复拉式并降低安全库存。这个分段策略需要提前和供应商锁定产能。我曾经帮一个家电店铺设计了一套“大促补货沙盘”,用历史大促倍率乘以日均需求,再用1.96的Z值(97.5%服务水平)算出备货量,最后比他们往年缺货率下降了70%,同时没有产生额外积压。
推式主导,拉式监控。跨境海运提前期30~60天,需求波动在途期间根本无法调整。这时候推式占比必须超过70%,安全库存很可能要备到2~3个月的需求。同时,要在货发出后持续监控实际销售,一旦发现偏离,立即启动调整措施(如降价清仓或紧急空运补货)。我建议在概率模型中加入“提前期标准差”,计算总安全库存时同时考虑需求波动和供应波动。对于长提前期品类,Z值至少要取2(对应97.7%),否则一旦缺货,补货时间窗口太长。

来源: 经验基准
这是最常出现的矛盾。店铺现金流紧张,又想保持高服务水平(如99%)。解决方案是精细化分层:把80%的服务水平预算集中在20%的A类SKU上,C类只用85%甚至更低。这样缺货损失大头被控制,同时资金占用不会爆炸。我试过一个极端案例:一个资金紧张的客户按这个逻辑调整后,总安全库存金额下降了35%,而缺货损失只增加了5%。本质上是用统计学把资源配给了最需要的地方。
供应商经常推迟交付、质量波动大,怎么办?第一道防线是提高安全库存,第二道是开发备用供应商。在概率模型里,这意味着要把L的实际90分位数作为输入,而不是平均值。这样算出来的安全库存会很大,但至少保证了95%的服务水平。同时,通过历史数据计算出供应商延迟概率,还可以用“风险调整后的服务水平”来设定Z值。客户容忍度高的品类(如标品、非时效品),可以降低服务水平,容忍低(如生鲜、应季品)则必须高。
很多小团队只有几个月的销售数据,或者数据质量很差。但业务不能等。我的建议是先用最短周期(比如30天)估算粗略的d和σ,加上一个经验系数(比如乘1.2作为安全系数)来启动。哪怕模型粗糙,也比拍脑袋强。等数据积累到6个月以上,再逐步精化。这种取舍在概率思维下是允许的,因为你知道你的模型有误差,但你知道误差方向,并留了冗余。等数据充足后,你可以回溯之前的误差,调整参数。
人工跑Excel算安全库存虽然有效,但随着SKU增多、更新频率加快,人工成本会过高。这时候需要上BI工具(如九数云、FineBI)或者WMS内置的补货模块。但如果预算不足,可以先锁定最关键的20个SKU做人工滚动。我辅导过一家卖家,只用Excel加每周一次的更新,把缺货率从20%降到5%。关键不是工具,而是是否真正接纳了“基于概率”这个决策逻辑。系统只是放大这个逻辑的效率。

来源: 项目模拟数据
文章写到这里,我想强调一个最让我自己振动的认知转变:库存管理从来都不是预测的艺术,而是风险管理的科学。你不必知道明天卖多少,你只需要知道:如果断货,损失多少;如果压货,损失多少;然后在一个概率框架下做每件事。每个补货决定,本质上都是一次赌博,但概率模型能让你在长期来看赢的比输的多。
如果你今天读完只想做一件事,我建议:拿出你卖得最好的一个SKU过去30天的日销售数据,算一下它的均值、标准差、实际补货提前期。用Excel做一个安全库存和补货点计算。然后严格按照这个结果走一次补货。 对比之前的直觉决策,你会看到变化。这是我从第一天开始就沿用的最小可行动作。等你验证了结果,就可以逐步推广到70%的SKU,再配合BI工具实现自动化。最终,你的库存从“成本中心”变成“利润中心”,而你从“救火队长”变成真正的“供应链操盘手”。
如果你在实践过程中遇到任何具体场景,比如新品没有数据、促销前不知道怎么设安全库存、供应商老是延迟,可以带着数据来和我讨论。我会基于概率模型给你一个可量化的建议。毕竟,解决问题最好的时间是30天前,其次就是现在。

来源: 多个项目归纳示意
我是做小家电的,客单价低但复购高,参考了很多文章都说安全库存要用 Z=1.65,结果按这个算出来的安全库存比我月销量还大,仓库堆不下。我觉得这个参数肯定不是死的,但又不知道怎么根据我的品类调,有没有实战经验能直接告诉我该从哪入手?
你的直觉是对的,Z 值不是普适的圣经,它背后其实是“缺货成本”和“库存持有成本”的博弈。我操盘过一个月销 3000 单的厨房小电店铺,刚用 1.65 时安全库存飙到 800 件,占用了 25 万资金。
后来我们按产品 ABC 分类重新定 Z 值:A 类爆款(月销 1000+,毛利率 35%)用 1.65(对应 95% 服务水平),B 类常规品(月销 300~1000,毛利 20%)降到 1.28(90%),C 类低频品(月销<300,毛利 10%)直接压到 0.84(80%)。
结果整体资金占用下降了 40%,缺货率只从 2% 升到 4%,放在 C 类品上完全可以接受。
具体实操时,你先拉出过去 90 天的订单数据,按销售贡献划分 A/B/C 类,然后用公式:缺货损失 = 日均销量 × 断货天数 × 客单价 × 流失率(首次缺货流失约 30%),库存持有成本 = 库存金额 × 资金成本年化 12% ÷ 365。
令两者相等反解出最优 Z 值,虽然有点繁琐,但用 Excel 跑一次后就能形成你自己的参数库,后面每月微调即可。
我运营的店铺有 200 多个 SKU,之前一直用 JIT 按订单采购,但上个月有个单品突然爆发,供应商交货要 15 天,直接断货 7 天,损失了 3 万销售额。想学推拉结合,但不知道哪些品该推、哪些该拉,有没有一个简单的判断逻辑让我能直接套用?
你的核心问题是缺个“决策树”。我自己的店铺曾用三个月跑通了一套推拉结合规则,核心是三个维度:需求波动性(以变异系数 CV = 标准差/均值 衡量)、补货提前期、产品生命周期阶段。具体做法:先用历史 60 天日均销量和标准差计算每个 SKU 的 CV。
CV > 0.8 且提前期 > 7 天的品,坚决做“推式”,比如我的一款季节性风扇,CV 高达 1.5,提前期 20 天,我就提前备足 45 天安全库存并按周监控;CV < 0.5 且提前期 < 3 天的品,用“纯拉式”,比如日用毛巾,只备 7 天周转量,供应商 2 天能到;
中间状态的品(0.5 ≤ CV ≤ 0.8 或提前期 3~7 天),采取“推拉结合”,建立 30 天动态补货点:补货点 = 日均需求 × (提前期 + 3) + 安全库存 × 0.7。
举个例子:新上架的蓝牙耳机,前 2 周销量不稳定,我不贸然推式至 45 天,而是先用 100 件作为“推式启动库存”,观察 2 周后 CV 稳定在 0.6,再切换成拉式补货点算法。这个决策树在手边打印出来,上新品时对照着打钩,半小时就能定下来,比拍脑袋准得多。
我们用的是最基础的金蝶 ERP,只有销售出库单的日期和数量,没有实时库存表,供应商交期也不准。我尝试自己算安全库存,结果发现缺了提前期的数据就卡住了。到底最少需要哪几个字段?能不能用 Excel 跑起来?
你的 ERP 数据完全可以起步,但需要自己动手清洗和补齐三个关键字段:1)日销量(从销售出库单按日期聚合);2)补货提前期(从下单到入库的天数,如果 ERP 没记录,手工统计最近 5 次补货的平均天数,首次用 7 天做默认值);
3)库存余额(没有实时表的话,用“期初 + 入库 – 出库”推算,每周日盘一次)。我就用 Excel 给一个客户搭过模型,步骤极简:第一步,用透视表生成每日销量表;第二步,计算最近 30 天日均销量和标准差;第三步,在空白列输入提前期(我直接取供应商最近 3 次平均交货天数,比如 10 天);
第四步,套公式安全库存 = 1.65 × 标准差 × SQRT(10),补货点 = 日均销量 × 10 + 安全库存。最关键的一步是设置一个“补货建议”字段:如果当前库存 ≤ 补货点,就触发采购建议,数量 = 目标库存水平(通常是补货点 + 日均销量 × 7) – 当前库存 + 在途量。
我用这个模型给客户的 300 个 SKU 跑了一次,发现 60 个 SKU 之前长期低于补货点,直接避免了下一波缺货。你甚至可以先只选 TOP 20 爆款试跑,一个周末就能落地。
平时用安全库存公式跑的挺顺,但一到双十一数据就崩了,去年提前备了 2 倍货还是不够卖,今年怕备多了又降价清仓。我知道单纯用历史平均值算标准差会低估促销波动,但不知道怎么修正。有什么基于概率的实战技巧能平滑过渡到大促?
大促本质上把需求分布从“近正态”变成了“双峰+长尾”,所以不能直接用上个月的 σ。我常用的方法叫“促销倍数法”:先拉出过往三年大促周期(比如双十一前 7 天 + 后 3 天)的日均销量,除以平时 30 天日均销量,算出每个 SKU 的“促销倍数”。
比如某链接平时日销 50,双十一期间日销 200,倍数就是 4。然后针对大促专门设置独立的概率参数:将安全库存公式中的“日均需求”替换为“平时日均需求 × 促销倍数”;同时将 σ 替换为“平时 σ × 促销倍数 × 1.2(保守系数)”。
补货提前期也要加上大促期间供应商延迟的缓冲天数(通常加 3 天)。举个例子:某爆款平时日均 60、σ 20、提前期 10 天,促销倍数 3.5。日常安全库存 = 1.65×20×√10 ≈ 104,补货点 = 60×10+104=704。
大促调整后:日均=60×3.5=210,σ=20×3.5×1.2=84,安全库存=1.65×84×√(10+3)=1.65×84×3.61≈501,补货点=210×13+501=3231。这相当于把安全库存拉高了近 5 倍,但比凭感觉翻 2 倍更科学。
实际操作中,我会在大促前 30 天启动这个模型,每周更新一次促销倍数(根据预售或收藏数据实时修正),大促结束后立即回退到日常参数。去年双十一我用这个法帮客户控制备货,300 个 SKU 的动销率达 92%,最终清仓折扣商品占比不到 8%,比行业平均低 15 个点。


读者评论
作为电商老板,文中关于推式和拉式缺陷的分析让我意识到自己一直凭感觉补货,特别是安全库存公式和动态调整策略,很值得落地试试。
作者用实际案例展示了概率模型如何量化推拉比例,数据清洗和滚动窗口调参的建议非常务实,对供应链从业者很有参考价值。
文章里动态安全库存与固定值的缺货率对比图很直观,我们团队也在考虑引入类似机制,但数据治理确实是关键前提。
从数据分析角度看,文章点出了忽略分布只看均值的常见误区,以及对数变换处理非正态分布的方法,专业度到位。
虽然公式部分需要一定基础,但整体思路清晰,案例数据真实,让我这种刚入门的人也能理解推拉结合的底层逻辑。