P paper2skillsPlaybook
AI 路线图 →

促销活动供应侧ROI归因 — 备货成本+促销库存持有成本+尾货损失的全成本核算

Skill-Promo-ROI-Attribution-Supply-Side · 04-供应链

causalexperimentpricing广告与投放供应链与补货定价与利润WF-A 智能补货WF-B 广告优化WF-F 动态定价
年化 ROI15-20万元
实现难度⭐⭐⭐☆☆
业务视角
适用角色供应链负责人 · 采购负责人 · CEO / 运营 VP
适用平台Amazon FBA · 海外仓 · 多国仓位(美/欧/日)
什么情况下用库存周转率低,资金压在海外仓出不来;SKU 断货紧急空运,物流成本吃掉毛利;多仓库存分布不均
成功是什么样的库存周转天数从 90 天降到 60 天,断货率 <3%,海外仓综合成本降低 15-25%
业务痛点
库存周转天数太长资金压死了断货了只能空运救急成本爆了多市场库存分配不均

1. 解决的问题

运营团队面临"大促ROI虚高忽视供应链成本"——备货持有成本+尾货折价+退货增量三段核算,真实ROI比广告ROI低30-50pp,指导更理性备货决策

2. 核心算法逻辑

现有促销Skill(InPromo/PostPromo/PrePromo)都聚焦需求侧(流量/销量/售罄率),但供应侧成本通常被忽视。陈凤霞书中专门强调:促销的真实ROI必须包含供应链成本。

3. 业务应用场景

场景A:Black Friday吸奶器大促完整ROI核算 - 业务问题:大促GMV 300万,毛利率35%,广告花费30万,但不知道供应侧成本多少,也不知道真实ROI - 数据要求: - 大促前备货量 + 实际入仓时间(vs 正常入仓时间) - 大促后剩余库存量 + 实际清仓价格 - 大促期间退货数量 vs 平时退货率 - 预期产出: - 备货持有成本:8万(备货额400万 × 0.5% × 4周) - 尾货折价损失:12万(剩余80万库存 × 15%折扣) - 大促退货增量成本:3万 - 供应侧总成本:23万 - 真实ROI = (300万×35% - 23万 - 30万) / 53万 =

**场景B:全年大促ROI纵向对比(黑五 vs 618 vs 日常)** - **业务问题**:黑五GMV是平时5倍,但供应侧成本也高5倍,真实利润贡献如何? - **数据要求**:黑五/618/日常三个时期的供应侧成本数据 - **预期产出**:黑五供应侧ROI 90% vs 618供应侧ROI 120% vs 日常 150% → 618性价比最高

4. 输入数据要求

请查看原始代码模板获取输入规格。

5. 输出结果

请查看原始代码模板获取输出规格。

6. 业务价值 / ROI

  • ROI预估:识别供应侧成本后,下次大促减少30%备货(精确控制尾货) + 提前期缩短7天 → 年化节省约15-20万元;让管理层看到"真实ROI"(比广告ROI低30-50pp),有助于更理性的大促决策
  • 实施难度:⭐⭐⭐☆☆(需要整合多个数据源:备货账单+销售数据+退货数据)
  • 优先级评分:⭐⭐⭐⭐☆(陈凤霞:"90%的品牌只看广告ROI,忽视供应侧成本,这是战略盲区")
  • 评估依据:大促供应侧成本通常占总促销成本的30-50%,但几乎从不被单独核算,是利润最容易被低估的地方

7. 代码模板

代码块数量:1 · 路径:未检测到

"""
促销活动供应侧 ROI 归因模型
功能:备货成本 / 持有成本 / 尾货损失 / 退货增量成本 / 真实促销ROI计算
输入:大促备货数据 + 销售结果 + 退货数据
输出:供应侧成本拆解 + 真实ROI + 改善建议
"""
import numpy as np
import pandas as pd
import warnings
warnings.filterwarnings('ignore')


def compute_promo_supply_cost(
    backup_gmv_value: float,          # 备货货值(元)
    backup_lead_days: int,            # 提前备货天数(vs正常)
    capital_rate: float = 0.06,       # 年资金成本
    remaining_inventory_pct: float = 0.25,  # 大促后剩余库存比例
    clearance_discount: float = 0.30, # 清仓折扣率(30%=七折)
    promo_return_rate: float = 0.06,  # 大促期间退货率(高于平时)
    normal_return_rate: float = 0.03, # 正常退货率
    promo_gmv: float = 3_000_000,     # 大促GMV
    handling_cost_per_return: float = 80,  # 每次退货处理成本
):
    """计算促销供应侧全成本"""
    
    # 1. 备货持有成本(提前备货的资金占用)
    holding_cost = backup_gmv_value * capital_rate * backup_lead_days / 365
    
    # 2. 尾货折价损失
    remaining_value = backup_gmv_value * remaining_inventory_pct
    clearance_loss = remaining_value * clearance_discount  # 按折扣计算损失
    
    # 3. 大促退货增量成本
    promo_orders = promo_gmv / 150  # 假设均单价150
    incremental_returns = promo_orders * (promo_return_rate - normal_return_rate)
    return_cost = incremental_returns * handling_cost_per_return
    
    # 4. 汇总
    total_supply_cost = holding_cost + clearance_loss + return_cost
    
    return {
        'holding_cost': round(holding_cost),
        'clearance_loss': round(clearance_loss),
        'return_cost': round(return_cost),
        'total_supply_cost': round(total_supply_cost),
        'supply_cost_rate': round(total_supply_cost / promo_gmv * 100, 2),
    }


def compute_true_promo_roi(
    promo_gmv: float,
    gross_margin_rate: float,
    ad_spend: float,
    supply_cost: float,
    baseline_gmv_daily: float,
    promo_days: int = 5,
):
    """计算促销真实ROI(含供应侧成本)"""
    # 增量GMV(大促GMV - 正常同期GMV)
    normal_period_gmv = baseline_gmv_daily * promo_days

8. 论文来源

  • 2307.14923