库龄分段管理与资金成本化 — 库存账龄结构诊断、持有成本精算与阶梯清仓触发
Skill-Inventory-Aging-Cost-Management · 04-供应链
causalexperimentforecastingoptimizationragfraud_detectionpricing广告与投放供应链与补货知识图谱与RAG定价与利润风控与合规WF-A 智能补货WF-B 广告优化WF-D 选品扫描WF-F 动态定价WF-I 智能体工程WF-K 全域风险防御WF-L 内容营销增长
实现难度⭐⭐☆☆☆
业务优先级⭐⭐⭐⭐⭐
业务视角
适用角色供应链负责人 · 采购负责人 · CEO / 运营 VP
适用平台Amazon FBA · 海外仓 · 多国仓位(美/欧/日)
什么情况下用库存周转率低,资金压在海外仓出不来;SKU 断货紧急空运,物流成本吃掉毛利;多仓库存分布不均
成功是什么样的库存周转天数从 90 天降到 60 天,断货率 <3%,海外仓综合成本降低 15-25%
业务痛点
1. 解决的问题
卖家只看"总库存量"不知道其中多少是"时间炸弹"——四段库龄成本精算将90天+高危库存年额外持有成本$9.2/件可视化,主动清仓比被动等待多回收$4250/批(250件规模)
2. 核心算法逻辑
业务背景(陈凤霞实战经验):书中第7章专节阐述健康库存系统的核心要素:库存可视层必须包含"库龄明细",将库存按入库时间分段(030天、3160天、6190天、91180天、180天+),每一段对应不同的风险等级和处置优先级。书中强调:库龄不是一个数字,而是一面镜子——照出选品决策、补货计划、促销执行的真实质量。
3. 业务应用场景
场景A:FBA库存库龄结构诊断与清仓优先级规划
- 业务问题:某母婴卖家FBA有2000件存货,感觉库存"挺多的",但月销只有400件。不知道哪些是新货、哪些是老货,也不知道清哪些能最快释放资金 - 数据要求:FBA库龄报告(Amazon后台可下载,字段:ASIN/FNSKU/库龄区间/数量)、SKU采购成本、历史销量 - 算法应用: 1. 拉取FBA库龄报告,按四段分类:0-30天=800件(40%),31-60天=600件(30%),61-90天=350件(17.5%),90天+=250件(12.5%) 2. 精算各段持有成本:以吸奶器为例,61-90天段已累计持有成本$4.5/件,90天+累计$9.2/件 3. 风险评分:250件90
场景B:季节性品类库龄主动管理(婴儿防晒)
4. 输入数据要求
请查看原始代码模板获取输入规格。
5. 输出结果
请查看原始代码模板获取输出规格。
6. 业务价值 / ROI
- ROI 预估:100件91-180天高危库存(采购成本$38/件),提前60天清仓vs自然到期处置,每件多回收约$12,总多回收$1200;每月处理2-3批这样的批次,年化额外回收$30000+;系统建设成本$2万,ROI≈150%+(首年),后续年ROI远高于此
- 实施难度:⭐⭐☆☆☆(Amazon FBA库龄报告直接可下载,数据基础完善;主要工作是建立触发规则和自动提醒机制)
- 优先级:⭐⭐⭐⭐⭐(所有有FBA库存的卖家必备,Amazon已提供库龄报告,但绝大多数卖家没有系统化行动机制)
- 适用规模:FBA在架SKU>20个的卖家,所有规模均适用
- 数据依赖:Amazon FBA库龄报告(Seller Central > Inventory > FBA Inventory Age)、SKU采购成本、历史日销量
7. 代码模板
代码块数量:3 · 路径:未检测到
"""
库龄分段管理与资金成本化系统
功能:四段库龄分析 + 持有成本精算 + 风险评分 + 阶梯清仓触发
"""
import numpy as np
import pandas as pd
from dataclasses import dataclass, field
from typing import List, Dict, Tuple, Optional
from datetime import datetime, timedelta
import warnings
warnings.filterwarnings('ignore')
# ─── 库龄分段标准 ───────────────────────────────────────────────
AGING_SEGMENTS = {
'FRESH': (0, 30, '🟢新鲜', 0.0, '正常流通,无需干预'),
'WATCH': (31, 60, '🔵观察', 0.30, '销速低于50%时检查竞品价格'),
'ALERT': (61, 90, '🟡预警', 0.60, '触发优惠券-15% + 广告加投'),
'DANGER': (91, 180, '🟠高危', 0.80, '折扣-30%~40% + Deal申请'),
'DEAD': (181, 999,'🔴死库', 1.00, '批量出售/销毁/捐赠非常规处置'),
}
# 清仓行动规则
CLEARANCE_RULES = {
'WATCH': {'discount': 0.05, 'action': '小幅降价5%,增加SP广告'},
'ALERT': {'discount': 0.15, 'action': '优惠券-15% + 站内促销'},
'DANGER': {'discount': 0.35, 'action': '大折扣+Deal申请+Bundle打包'},
'DEAD': {'discount': 0.55, 'action': '批量出售清仓商或销毁申报'},
}
@dataclass
class AgingBatch:
"""库龄批次"""
sku_id: str
batch_id: str
quantity: int
inbound_date: datetime
unit_cost: float # 采购成本($)
current_price: float # 当前售价($)
daily_storage_fee: float # 日均仓储费/件($)
capital_cost_rate_annual: float = 0.20 # 资金年化成本率
shrinkage_rate_annual: float = 0.008 # 年化损耗率
@property
def aging_days(self) -> int:
return (datetime.now() - self.inbound_date).days
@property
def daily_holding_cost(self) -> float:
capital = self.unit_cost * self.capital_cost_rate_annual / 365
shrinkage = self.unit_cost * self.shrinkage_rate_annual / 365
return capital + self.daily_storage_fee + shrinkage
@property
def cumulative_holding_cost(self) -> float:
return self.daily_holding_cost * self.aging_days
@property
def net_residual_value(self) -> float:8. 论文来源
- 2402.09812