P paper2skillsPlaybook
AI 路线图 →

大促实时售罄模拟与流量协同 — 电商大促中实时预测与紧急资源调配

Skill-Flash-Sale-Realtime-Sellthrough-Forecast · 04-供应链

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

1. 解决的问题

大促爆款提前售罄或滞销品无人干预——Bayesian实时售罄模拟+流量协同将大促GMV提升$3.5万/次,年化两次大促防损$7-11万

2. 核心算法逻辑

业务背景(陈凤霞实战经验):大促(Prime Day / 双11 / Black Friday)的核心难题是"时间压缩的不确定性"——平时30天的销量在2472小时内发生,任何预测偏差都会被极度放大。书中强调实时监控必须做到:每小时追踪售罄率、模拟剩余库存能撑多久、判断是否触发"流量协同"(压广告/转流量)。

3. 业务应用场景

场景A:Prime Day吸奶器实时售罄监控

- 业务问题:2024年Prime Day某母婴品牌旗舰吸奶器备货800件,大促开始后前3小时已销售450件,若按此速率大促结束前将售罄,损失后续12小时的销售机会 - 数据要求:大促前小时粒度历史销售数据(至少2次大促)、实时库存API、广告平台竞价API - 算法应用: 1. 大促开始后每小时Bayesian更新销售速率 2. 3小时后预测:按当前r=150件/小时,剩余350件库存在2.3小时后售罄(大促还剩21小时) 3. 触发流量协同:将吸奶器SP广告出价从$1.5降至$0.8(减少40%流量) 4. 同时将流量导向配套产品(吸奶器配件/储奶袋),带动关联销售$2万 5. 吸奶器最终

- **业务问题**:黑色星期五备货了500件UV消毒盒,大促进行8小时只卖了15件,明显滞销 - **算法应用**:实时检测售罄率仅3%(远低于预期20%),触发:①站内优惠券发放(-15%)②Vine计划加速评论③广告出价提升50%引流;大促后12小时销售量提升至45件,最终售罄率28%(vs无干预的3%)

4. 输入数据要求

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

5. 输出结果

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

6. 业务价值 / ROI

  • ROI 预估:年2次大促(Prime Day + Q4),每次爆款提前售罄损失$3-5万机会成本,滞销积压$2-3万;实时监控减少损失70%,年化收益$7-11万;系统建设成本$3万,ROI≈250-350%
  • 实施难度:⭐⭐⭐☆☆(Bayesian更新算法简单,难点在于获取实时小时粒度销售数据API和广告平台API集成)
  • 优先级:⭐⭐⭐⭐⭐(大促是全年最高价值时段,实时干预的边际价值极高)
  • 适用规模:参与大促且单次大促GMV>$5万的卖家
  • 数据依赖:历史大促小时销售数据(至少2次)、实时库存API、广告平台竞价API

7. 代码模板

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

"""
大促实时售罄模拟与流量协同系统
功能:Bayesian实时销售速率估算 + 售罄模拟 + 流量协同决策
"""
import numpy as np
import pandas as pd
from dataclasses import dataclass, field
from typing import List, Dict, Optional, Tuple
import warnings
warnings.filterwarnings('ignore')


@dataclass
class PromoSKU:
    """大促SKU状态"""
    sku_id: str
    initial_stock: int          # 大促前库存
    current_stock: int          # 当前库存
    target_sellthrough: float   # 目标售罄率(如0.85)
    prior_hourly_sales: float   # 先验每小时销量(基于历史大促)
    prior_confidence: float = 0.3  # 先验置信度(0-1)
    hourly_sales_history: List[float] = field(default_factory=list)


class BayesianSalesRateEstimator:
    """Bayesian实时销售速率估算"""
    
    def __init__(self, prior_mean: float, prior_std: float):
        self.mu = prior_mean      # 均值
        self.sigma2 = prior_std ** 2  # 方差
        self.observations = []
    
    def update(self, observed_sales: float, obs_noise_std: float = None) -> Tuple[float, float]:
        """Bayesian更新"""
        if obs_noise_std is None:
            obs_noise_std = max(self.mu * 0.3, 1.0)
        
        obs_sigma2 = obs_noise_std ** 2
        
        # Bayesian更新公式
        prior_precision = 1 / self.sigma2
        obs_precision = 1 / obs_sigma2
        
        new_precision = prior_precision + obs_precision
        new_mu = (prior_precision * self.mu + obs_precision * observed_sales) / new_precision
        new_sigma2 = 1 / new_precision
        
        self.mu = new_mu
        self.sigma2 = new_sigma2
        self.observations.append(observed_sales)
        
        return self.mu, np.sqrt(self.sigma2)
    
    @property
    def current_rate(self) -> float:
        return max(self.mu, 0.1)
    
    @property
    def uncertainty(self) -> float:
        return np.sqrt(self.sigma2)

8. 论文来源

  • 2401.12038