核心公式 目标库存 = (安全天数 + 覆盖天数) × 预测日均   |   安全天数 = K(CFR, COV) × COV × √(7×NRLT)   |   COV = 26周标准差 / 26周周均(零填充,上限 1.5)
ABC 预测 A 类取 high 预测  |  B 类取 neutral 预测  |  C 类取 low 预测
1 · 上传数据文件
2 · 仿真参数
7
3
0
3 · 结果通知
💡 填写邮箱后,提交即可关闭页面;仿真完成后结果会以 HTML 报告发到你的邮箱
📋

暂无当前仿真结果

提交仿真后结果会显示在这里

查看历史记录
KPI 摘要
多场景横向对比
场景对比表
分 SKU 明细
分 SKU 目标库存明细(Top 30)
多维度分析
ABC 分类分析
建议备货清单(按目标库存金额排序 Top 30)
快速开始
  1. 准备 POS 销量数据

    导出 Excel 工作簿,包含一个名为「销售数据」的工作表,至少包含以下列:ids下单时间、8位码、订单数量、门店编码。确保日期格式统一,建议提前去除异常大单。

    ✓ 建议准备至少 6 个月以上的历史数据,效果更准确
  2. 上传 POS 文件(必填)

    在左侧上传区上传 POS Excel 文件,系统会自动读取「销售数据」工作表。上传成功后按钮变绿并显示文件名。

  3. (可选)上传辅助文件

    门店主数据:用于按「客户分类」过滤门店(如剔除大批发)。
    商品主数据:用于接入商品单价,计算库存金额。

  4. 配置仿真参数

    预测区间:设置仿真的起止日期,需在 POS 数据覆盖范围内。
    服务水平:输入 1 个或多个,如 0.90,0.95,0.98,每个水平独立跑一次仿真。
    订货周期 CT:两次下单之间的间隔(天)。
    净补货提前期 NRLT:从下单到可销售入库的净时长(天)。
    覆盖天数:在 COC 基础覆盖之外额外加的保险天数。

  5. 运行仿真,解读结果

    点击「开始仿真」,等待完成后查看各服务水平的 KPI 摘要、场景对比表和分 SKU 明细。可下载 CSV 用于 Excel 进一步分析。

    ✓ 建议从 3 个服务水平开始(90%、95%、98%),对比库存成本与服务水平的权衡
数据准备提示:建议在上传前检查 POS 数据中是否有以下问题:日期格式不统一(混用文本和日期)、重复记录(同一 SKU 同一天有多行)、异常大单(远超平时 10 倍以上),这些问题会影响预测和 COV 的准确性。
典型使用场景
🏭
新品入库评估

新品上线前,根据同类 SKU 的 COV 和销售趋势,预估合理备货量,降低新品滞销风险。

⚖️
服务水平权衡分析

对比不同服务水平下的库存天数和缺货率,找到库存成本与缺货风险的最佳平衡点。

📦
安全库存复盘

用历史真实缺货数据验证安全库存设置是否合理,识别哪些 SKU 需要调高或调低。

仿真参数
参数说明默认值
预测起始日 仿真区间的第一天(包含)。系统会在此日期之后使用 STL 模型计算每日预测。需确保 POS 数据覆盖此日期。 2025-01-01
预测截止日 仿真区间的最后一天(包含)。期间每日计算一次目标库存并进行库存仿真。 2025-08-30
服务水平 循环服务水平(Cycle Service Level),即在补货周期内不发生缺货的概率。取值 0~1,数值越高,安全库存越大,缺货概率越低。可输入多个(逗号分隔),每个值独立跑一次仿真。 0.90, 0.95, 0.98
订货周期 CT(天) 两次下单之间的时间间隔。CT 越长,单次补货需要覆盖的需求越多;同时 CT 会进入 K-Risk 查表目标值计算。 7
净补货提前期 NRLT(天) 从下单到货物可销售入库的净时长。NRLT 一方面用于安全库存计算,另一方面也用于库存仿真中的到货延迟。 3
覆盖天数(cover) 额外希望覆盖的未来销售天数。目标库存 = (安全天数 + 覆盖天数) × 预测日均。CT 和 NRLT 不直接参与目标库存计算。 0
最小历史天数 用于 STL 季节分解预测的最小回溯窗口天数。若某 SKU 有效历史少于该值,则使用 90 天均值(P90D)替代 STL 预测。 90
最小有销量天数 历史数据中实际有销售(订单数量 > 0)的天数要求。若不足,也使用 P90D 替代。 60
剔除门店类型 根据「客户分类」字段过滤门店,不纳入仿真。需配合门店主数据使用。例如填写 大批发,团购 可剔除这两类门店的数据。 大批发, 团购
核心指标计算逻辑

安全天数(COC 方法)

公式
安全天数 = K × COV × √(7 × NRLT)(界面中的 NRLT 用天输入;内部按 COC 口径换算参与 K-Risk 查表)
K 值(查表法)
根据 target = (1-服务水平) × CT / (COV × √(NRLT/7)) 查内置 K-Risk 因子表得到 K 值(系统已锁定出厂表,无需上传)。K 最小取 0,安全天数上限默认 14 天(可调)。
COV
变异系数 = 26周周销量标准差 / 26周周销量均值;缺失周按 0 填充;上限 1.5。若 COV = 0,则安全天数 = 0;若历史不足,则回退到最小安全天数 3 天。

目标库存

公式
目标库存 = (安全天数 + 覆盖天数) × 预测日均(CT 和 NRLT 不直接参与目标库存计算,仅用于安全天数推导)
预测日均(ABC)
根据 ABC 分类选取不同的 STL 预测值:
A 类(占滚动30天销量 ≤ 80%):取 high 预测
B 类(累计 ≤ 95%):取 neutral 预测
C 类(其余):取 low 预测
STL 预测逻辑
neutral = STL 趋势 EWM 平滑值
high = 中位数以上季节因子的均值(偏乐观)
low = 中位数以下季节因子的均值(偏保守)
所有日期列建议使用标准日期格式(如 2025-01-01),避免使用文本格式。商品编码(8位码)建议为数值型,避免前导零丢失。

界面参数输入格式必填

参数类型格式要求示例
服务水平文本0~1 之间的小数,多个值用英文逗号分隔0.90,0.95,0.98
订货周期 CT整数单位:天,范围 1~207
净补货提前期 NRLT整数单位:天,范围 1~103
覆盖天数整数单位:天,范围 0~300

POS 销量历史(必填)必填

列名类型说明示例
ids下单时间日期订单日期2025-01-01
8位码文本/数值商品条码(SKU 唯一标识)6901234567890
订单数量数值当日该 SKU 的销量(件)50
门店编码文本门店唯一标识,用于与门店主数据匹配100001

门店主数据(可选)可选

列名类型说明示例
customer_code文本与 POS 中「门店编码」对应的字段名(系统也会自动匹配含"门店编码"、"customer_code"字样的列)100001
客户分类文本门店分类,用于按类型过滤,如"大批发"、"备库存"、"中小批"、"团购"等备库存
提示:若不上传此文件,系统将使用全部 POS 数据,不做门店过滤。若只上传文件但「剔除门店类型」留空,也不做过滤。

商品主数据(可选)可选

列名类型说明示例
商品条码 (或 Item Code / barcode)文本/数值与 POS 中「8位码」对应的商品条码,用于匹配单价等属性6901234567890
单价 (或其他属性列)数值商品单价(单位:元),用于计算库存金额12.50
核心 KPI 指标说明
实际服务水平

最核心的供货结果指标,表示整体需求里有多少被真正满足。越高越好,适合判断服务水平是否达标。

实际服务水平 = Σ(fulfill) / Σ(actual)
实际缺货率

整体未满足需求占比,等价于 1 - 实际服务水平。它是"总体缺口率",不是"发生缺货时的平均严重程度"。

实际缺货率 = Σ(缺货量) / Σ(总需求) = 1 - 实际服务水平
推荐库存(箱)

这是"全周期平均目标库存箱数",表示在当前服务水平下,组合日均应该持有多少目标库存,不是某一天库存,也不是累计箱数。

推荐库存(箱) = Σ(各 SKU 全周期平均目标库存(支) / packCount)
推荐金额

推荐库存对应的资金占用,也是全周期平均口径。可直接理解为"当前服务水平下建议日均压多少钱在库存里"。

推荐金额 = Σ(各 SKU 平均目标库存箱数 × 单价)
推荐天数

推荐库存折算后可覆盖多少天平均需求。适合和实际天数一起看,判断目标库存是否偏高或偏低。

推荐天数 = 推荐库存(箱) / 组合日均需求(箱)
实际均存(箱) / 实际天数

这两个指标反映仿真结果里真实持有了多少库存、又能覆盖多少天需求。一个看规模,一个看周转。

实际天数 = 实际均存(箱) / 组合日均需求(箱)
平均缺货量(箱)

衡量"缺货一旦发生,平均会缺多少箱"。这里只统计缺货值大于 0 的 SKU-Day,所以反映的是缺货严重程度,不是整体缺货率。

平均缺货量(箱) = Avg(缺货箱数 | 仅统计缺货值 > 0)
平均缺货金额 / 平均缺货天数

前者反映缺货事件的平均资金损失,后者反映发生缺货的 SKU 平均会缺几天。两个指标都用于看缺货"有多痛",不是看缺货"有多常见"。

平均缺货金额 = Avg(缺货箱数 × 单价 | 仅统计缺货值 > 0)
平均缺货天数 = Avg(每个 SKU 的缺货天数 | 仅统计发生缺货的 SKU)
如何选择合适的服务水平
🎯 实际服务水平目标参考

根据行业经验,不同品类的建议服务水平:

普通消费品≥ 95%
医药 / 母婴≥ 98%
工业品 / 配件≥ 93%
长尾 / C 类 SKU≥ 85%
📊 库存天数参考

合理的库存天数取决于补货频率和提前期:

偏低< 提前期 × 1.5
合理提前期 × 1.5 ~ 提前期 × 3
偏高> 提前期 × 3
过高> 提前期 × 5
服务水平 vs 库存成本权衡:每提高 1% 的实际服务水平,库存通常需要增加 5%~15%(视 COV 而定)。建议先用平台跑 3 个以上服务水平,观察实际服务水平和库存天数的增幅曲线,找到边际成本最优点。
ABC 分类对预测的影响
A 类 SKU

贡献 80% 销量的核心 SKU,通常占 10%~20% 的 SKU 数量。

预测取 high(偏乐观)
建议高服务水平(≥ 97%)
B 类 SKU

贡献 15% 销量的次要 SKU,通常占 30%~40% 的 SKU 数量。

预测取 neutral(中性)
建议中等服务水平(93%~97%)
C 类 SKU

贡献 5% 销量的长尾 SKU,通常占 50%~60% 的 SKU 数量。

预测取 low(偏保守)
建议较低服务水平(85%~93%)
为什么我上传 POS 文件后提示「Excel file format cannot be determined」? ▼
这通常是因为 Excel 文件是旧版 .xls 格式(而非 .xlsx 格式),系统未能自动识别。请尝试将文件另存为 .xlsx 格式后再上传。该问题已在 v1.3 中修复,系统已支持自动检测两种格式。
预测截止日需要和 POS 数据最后一天一致吗? ▼
不需要完全一致。系统会在仿真期间使用 actual(实际销量)作为每日需求,同时用 STL 模型计算预测值。actual 来自 POS 数据,所以仿真期间每日的实际需求会自动取真实值。预测截止日可以早于或等于 POS 数据最后一天,但不应晚于 POS 数据最后一天,否则部分日期的实际需求会为 0。
为什么要剔除大批发和团购? ▼
大批发和团购通常是偶发性大批量采购,会显著拉高 COV(变异系数),导致安全库存和目标库存计算过大。上传「门店主数据」并在「剔除门店类型」中填写 大批发,团购,可以将这些异常订单排除,使预测更稳定。
多个服务水平跑完后,如何确定哪个最合适? ▼
关键看两个指标:实际服务水平(服务水平是否达标)和 库存天数(库存成本是否可接受)。

建议对比相邻服务水平(如 95% vs 98%)的差距:如果实际服务水平提升很小(如从 97.2% 到 97.8%),但库存天数大幅增加(如从 18 天到 26 天),说明 95% 是更经济的选点。

参考经验:A 类核心 SKU 建议 ≥ 97%,B 类 93%~97%,C 类 85%~93%。
COV 是什么,为什么有上限? ▼
COV(变异系数)= 26周周销量标准差 / 26周周销量均值,缺失周按 0 填充。COV 越大,说明该 SKU 销量波动越大,需要更高安全库存。

COV 上限设为 1.5,是为了防止某些低销量长尾 SKU 因分母太小而异常放大,导致安全库存过高;如果 COV = 0,系统直接给 0 安全天数。
订货周期 CT、NRLT 和覆盖天数有什么区别? ▼
订货周期 CT:两次下单之间的间隔,用来衡量一次补货需要覆盖多久的常规需求。

NRLT:从下单到可销售入库的净补货提前期,用来衡量补货在途期间的需求波动风险。

覆盖天数(Cover Days):在 CT + NRLT 的基础上,再额外增加的保险覆盖天数。

三者共同决定目标库存:目标库存 = (安全天数 + CT + NRLT + 覆盖天数) × 预测日均。
下载的 CSV 文件有哪些列? ▼
明细 CSV 包含每日每个 SKU 的完整记录,核心列如下:
8位码 / ids下单时间 / actual(实际销量)/ FCST(预测日均)/ safetydays(安全天数)/ COV(变异系数)/ ct_days / nrlt_days / cover_days / label(ABC 分类)/ target_inv(目标库存)/ cycle_service_level(当前服务水平)/ opening_stock / intransit / closing_stock / purorder / fulfill(实际满足量)
仿真的天数很长会卡住吗? ▼
仿真性能主要取决于 SKU 数量 × 仿真天数。

1000 SKU × 240 天 ≈ 10 秒内完成(后台线程运行,不影响 UI)。

若 SKU 数量超过 5000,或仿长时间超过 365 天,建议分批处理或减少仿真天数。仿真在后台线程中运行,页面不会卡死,可以继续浏览使用指南。
为什么 95% 服务水平跑出来的实际服务水平不是 95%? ▼
这是正常的!cycle_service_level(循环服务水平) 是安全库存的设计目标,而实际 实际服务水平 是仿真结果。两者不完全相等,因为:

1. 实际需求波动大于预测误差
2. 补货是离散的(每次补一整批),而非连续补充
3. 安全库存只覆盖需求波动,不覆盖预测偏差

一般实际服务水平会接近但略低于设计服务水平。若差距较大(如设计 98% 但实际服务水平只有 90%),说明预测模型需要优化或历史数据有异常。

仿真已完成!