paper2skills Playbook

Promotion Logistics Surge Forecast — 大促物流爆仓预测:营销-履约联动容量规划

Skill-Promotion-Logistics-Surge-Forecast · 15-营销投放分析

causalexperimentforecastingfraud_detection广告与投放供应链与补货风控与合规WF-A 智能补货WF-B 广告优化WF-D 选品扫描WF-F 动态定价WF-H 复购增长
年化 ROI20-40 万
实现难度⭐⭐⭐☆☆
业务视角
适用角色CMO / 营销负责人 · 广告优化师 · CEO
适用平台Amazon + TikTok + Meta + KOL 四渠道 · Prime Day / Black Friday 预算前置
什么情况下用同时跑 Amazon 广告/TikTok/网红投放/邮件,不知道整体预算怎么分配最高效;网红投放花了大钱但不知道带来多少真实 GMV
成功是什么样的建立全渠道营销归因模型(MMM),每个渠道真实 ROI 可量化,大促前做预算优化模拟
业务痛点
多渠道预算分配靠感觉网红带货效果不知道怎么量化渠道之间互相抢功劳数据打架整体营销 ROI 算不清楚

1. 解决的问题

基于营销投放数据提前 3-7 天预测物流需求峰值,驱动仓储/运力的前置性扩容决策。

2. 核心算法逻辑

大促期间(黑五/Prime Day/双十一),营销投放与物流履约之间存在数据孤岛:营销团队在广告平台上看到 ROAS 飙升,但仓库团队直到订单涌入才发现已超容,导致延误和差评。Promotion Logistics Surge Forecast 解决的核心问题是:基于营销投放数据提前 37 天预测物流需求峰值,驱动仓储/运力的前置性扩容决策。

3. 业务应用场景

业务背景:某母婴品牌黑五前 2 周开始提升广告预算,Sponsored Products 预算从 $5,000/日提升至 $28,000/日。历史经验表明黑五 GMV 约为平日 4.5 倍,但今年新增 TikTok Shop 渠道,实际 GMV 达到平日 7.2 倍,导致 DHL Express 运力严重不足,延误率 34%。

量化收益: - 避免延误率从 34% 降至 8%,减少差评 ≈ 1,240 条 - 按每条差评影响 BSR 降权 ≈ $180 GMV 损失,节省 $223,200 - 提前预订运力节省紧急加价 ≈ $38,000(旺季紧急运力溢价通常 30-50%) - 单次大促 ROI ≈ $261,200

业务背景:轻便折叠婴儿车有 12 个 SKU(颜色×尺寸),Prime Day 期间某些颜色(如薰衣草紫)历史转化率是标准黑色的 2.3 倍,但备货比例未反映这一差异,导致爆款 SKU 断货。

4. 输入数据要求

  • 广告平台数据:Amazon AMS / TikTok Ads 每日预算、CTR、CVR(过去 90 天)
  • 历史促销数据:历届大促 GMV 倍数、折扣深度、持续天数
  • 仓储数据:当前库存、日均运力、ERP 出库记录
  • 大促前 T-14天:第一次全量预测,识别高风险 SKU
  • 大促前 T-7天:第二次预测(结合实时投放数据更新),触发补仓决策

5. 输出结果

  • 广告平台数据:Amazon AMS / TikTok Ads 每日预算、CTR、CVR(过去 90 天)
  • 历史促销数据:历届大促 GMV 倍数、折扣深度、持续天数
  • 仓储数据:当前库存、日均运力、ERP 出库记录
  • 大促前 T-14天:第一次全量预测,识别高风险 SKU
  • 大促前 T-7天:第二次预测(结合实时投放数据更新),触发补仓决策

6. 业务价值 / ROI

20-40 万

7. 代码模板

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

"""
Promotion Logistics Surge Forecast
整合促销需求涌浪预测 + CVaR 容量规划 + 动态扩容决策
CampaignSurge (arXiv:2411.09283) + FulfillCap (arXiv:2502.16071) + DemandDecomp-Promo (arXiv:2409.18512)
"""

import numpy as np
from dataclasses import dataclass, field
from typing import Dict, List, Optional, Tuple
from enum import Enum
import warnings
warnings.filterwarnings("ignore")


class RiskLevel(Enum):
    LOW = "low"          # CVaR < 80% 容量
    MEDIUM = "medium"    # 80% <= CVaR < 100%
    HIGH = "high"        # 100% <= CVaR < 150%
    CRITICAL = "critical"  # CVaR >= 150%


@dataclass
class CampaignConfig:
    """大促活动配置"""
    name: str                           # 活动名(黑五/Prime Day/双十一)
    start_date: str                     # 活动开始日
    duration_days: int                  # 活动持续天数
    budget_usd_daily: float             # 日均广告预算(美元)
    discount_rate: float                # 折扣深度(0~1,0.3表示7折)
    channel_weights: Dict[str, float] = field(default_factory=lambda: {"amazon": 1.0})


@dataclass
class WarehouseCapacity:
    """仓储容量配置"""
    warehouse_id: str
    current_stock: int                  # 当前库存件数
    daily_inbound_capacity: int         # 日均入库容量
    daily_outbound_capacity: int        # 日均发货容量(运力上限)
    safety_stock_ratio: float = 0.15    # 安全库存比例


@dataclass
class SKUDemandProfile:
    """SKU 需求特征"""
    sku_id: str
    baseline_daily: float               # 平日日均需求
    promo_elasticity: float             # 促销弹性(β1)
    discount_elasticity: float          # 折扣弹性(β2)
    decay_rate: float = 0.15            # 促销衰减率 γ
    historical_std: float = 0.2         # 历史需求标准差/均值


class DemandDecomposer:
    """
    促销需求分解器
    arXiv:2409.18512 DemandDecomp-Promo
    分离 baseline / promotional / spillover 三组分
    """

8. 论文来源

  • 2409.18512
  • 2411.09283
  • 2502.16071