P paper2skillsPlaybook
AI 路线图 →

EventCast — LLM 事件感知需求预测:大促/节假日场景 MAE-57%

Skill-EventCast-LLM-Event-Forecasting · 03-时间序列

causalexperimentforecastingpricing供应链与补货定价与利润WF-A 智能补货WF-F 动态定价WF-I 智能体工程
年化 ROI100 万
实现难度⭐⭐☆☆☆
业务优先级⭐⭐⭐⭐⭐
业务视角
适用角色供应链负责人 / 采购负责人 · 运营负责人 · 财务负责人
适用平台Amazon FBA · 海外仓 · 多市场多仓
什么情况下用大促前备货总是不是多了就是少了;新品上线第一个月断货,再补又积压;年底预算不知道各月目标怎么定
成功是什么样的提前 4-8 周准确预判各 SKU 需求峰值,库存积压减少 30%,断货率降低 50%
业务痛点
备货总是压货或断货旺季淡季波动太大预测不准补货周期 30 天但预测只看 7 天

1. 解决的问题

某母婴品牌618大促备货奶粉 SKU(如 A2 奶粉 900g),需提前 7 天向供应商下 PO

2. 核心算法逻辑

核心思想:传统时序模型(ARIMA、Prophet、TFT)在大促/节假日期间严重失效,原因是分布偏移——大促期的需求量级、峰值形态与日常完全不同,历史模式无法外推。EventCast 的解法是:让 LLM 做语义推理(不做数值预测),将运营事件转化为结构化特征,再喂给专门的预测模型。

3. 业务应用场景

业务问题:某母婴品牌618大促备货奶粉 SKU(如 A2 奶粉 900g),需提前 7 天向供应商下 PO。传统 Prophet 模型因无法感知"满 300 减 100 + 直播预告 + 平台流量加持",备货量误差高达 40%,导致要么断货要么积压。

数据要求: | 类型 | 字段 | 说明 | |------|------|------| | 历史数值 | daily_sales, price, stock_level | 过去 90 天销量/价格/库存 | | 促销事件 | promo_type, discount_rate, start_date, duration | 内部运营日历 | | 直播事件 | host_name, expected_viewers, time_slot | 直播排期表 | | 平台事件 | platform_flow_bonus, category_rank | Amazon/Tmall 活动数据 |

预期产出: - 大促期间(活动前 3 天 + 活动中 + 活动后 2 天)逐日需求预测 - P10/P50/P90 预测区间(用于安全库存计算) - 事件贡献度分解(促销提升量 vs 直播提升量 vs 平台流量提升量)

4. 输入数据要求

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

5. 输出结果

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

6. 业务价值 / ROI

100 万

7. 代码模板

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

"""
EventCast: LLM 事件感知需求预测
论文: arXiv 2602.07695 | 2026-02
场景: 618/双11 大促备货 + 跨境节假日需求预测
"""
from __future__ import annotations
from dataclasses import dataclass, field
from typing import Dict, List, Optional, Tuple
import numpy as np
from datetime import date, timedelta
from enum import Enum


class EventType(Enum):
    PROMOTION = "promotion"
    HOLIDAY = "holiday"
    LIVESTREAM = "livestream"
    PLATFORM_CAMPAIGN = "platform_campaign"


@dataclass
class BusinessEvent:
    """业务事件(LLM 推理的输入单元)"""
    event_type: EventType
    date: date
    description: str
    affected_regions: List[str]
    expected_lift: float           # 预期需求提升倍数(如 2.5 = 提升 150%)
    discount_rate: float = 0.0     # 折扣率(0.0-1.0)
    duration_days: int = 1
    confidence: float = 0.8        # 预期估计置信度


class EventKnowledgeBase:
    """事件知识库:存储和查询促销/节假日事件"""

    def __init__(self):
        self._events: List[BusinessEvent] = []

    def add_event(self, event: BusinessEvent) -> None:
        self._events.append(event)

    def query_events(
        self,
        start_date: date,
        end_date: date,
        regions: Optional[List[str]] = None,
        event_types: Optional[List[EventType]] = None,
    ) -> List[BusinessEvent]:
        """查询指定日期范围和地区的事件"""
        results = []
        for evt in self._events:
            evt_end = evt.date + timedelta(days=evt.duration_days - 1)
            if not (evt.date <= end_date and evt_end >= start_date):
                continue
            if regions and not any(r in evt.affected_regions for r in regions):
                continue
            if event_types and evt.event_type not in event_types:
                continue
            results.append(evt)

8. 论文来源

  • 2602.07695