核心公式 目标库存 = (安全天数 + 覆盖天数) × 预测日均   |   安全天数 = 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%),说明预测模型需要优化或历史数据有异常。

仿真已完成!