P paper2skillsPlaybook
AI 路线图 →

Real-Time Competitive Repricing — 竞品价格监测与深度强化学习自动重定价

Skill-Real-Time-Competitive-Repricing · 17-价格优化

causalexperimentoptimizationragmulti_agentpricing广告与投放供应链与补货推荐与搜索MAS与智能体工程定价与利润WF-A 智能补货WF-B 广告优化WF-D 选品扫描WF-F 动态定价WF-I 智能体工程WF-J DTC 独立站增长
年化 ROI1000 万
实现难度⭐⭐⭐☆☆
业务视角
适用角色定价负责人 / 运营负责人 · 选品负责人 · CEO
适用平台Amazon Buy Box 竞价策略 · 多市场价格协调 · Prime Day / Coupon 折扣优化
什么情况下用竞品突然降价,不知道该不该跟,跟了怕伤利润不跟怕丢 BSR;大促期间不知道折扣给多少,给多了利润没了
成功是什么样的实时监控竞品价格并自动触发调价,毛利率保持在目标区间,BSR 排名和利润同时兼顾
业务痛点
竞品降价了不知道要不要跟大促折扣给多少没有依据手动盯价格太累反应不及时新品上线定价高了还是低了

1. 解决的问题

Momcozy M5 与 3 个竞品争夺 Buy Box,"永远低于 Elvie $5"策略导致旺季每件少赚 $10——DRL 动态重定价识别最优价格窗口,旺季 Buy Box 持有率保持 >85% 同时 ASP 提升 8-12%,年化 GMV 增量 30-60 万元

2. 核心算法逻辑

传统规则型重定价("比竞品低 $2")有两个致命缺陷:反应慢(竞品改价后才响应)和无利润意识(只追求 Buy Box,可能把利润打穿)。深度强化学习(DRL)把重定价建模为马尔可夫决策过程:Agent 不断观察市场状态,学习在不同竞争环境下最大化累积利润(而非单次销售)。

3. 业务应用场景

业务问题:Momcozy M5 在 Amazon 与 3 个竞品共享 Buy Box,当前策略是"永远低于 Elvie $5",导致旺季明明可以卖 $94.99 却只卖 $84.99,每件少赚 $10。

DRL 重定价的优势: - 旺季(黑五前 2 周):竞品也在备货,对价格不敏感 → DRL 学到可以提价 $8-12 而不失 Buy Box - 平日夜间(0-6 点):流量低,Buy Box 争夺不激烈 → DRL 可以轻微提价保护毛利 - 竞品缺货时:DRL 快速抬价,临时垄断利润

业务问题:新品上架时不知道应该定多少价——定低了利润薄,定高了转化差。

4. 输入数据要求

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

5. 输出结果

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

6. 业务价值 / ROI

  • ROI 预估
  • 旺季不再错过提价机会:月增 GMV 3-8%,1000 万 GMV 规模 → ¥30-80 万/年
  • 停止无意义价格战:避免非高峰期无效降价损失毛利 ¥10-30 万/年
  • 新品定价学习加速:30 天内找到最优价格区间(vs 手动 90 天)
  • 年化综合 ROI:¥50-150 万
  • 实施难度:⭐⭐⭐☆☆(需要 Keepa API + Q-learning 实现;生产级 DQN 需要 PyTorch,2-3 周)

7. 代码模板

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

"""
Real-Time Competitive Repricing — DRL 竞品重定价简化实现
基于 arXiv: 1912.02572 (Alibaba/Tmall DRL Pricing)

依赖: numpy, dataclasses (标准库)
生产环境: 替换 MockMarketEnv 为实际 Keepa/Seller Central API
"""

from dataclasses import dataclass, field
import numpy as np


@dataclass
class MarketState:
    """当前市场状态(MDP 状态向量)"""
    our_price: float
    competitor_prices: list          # 竞品价格列表
    inventory_days: float            # 库存天数
    conversion_rate_7d: float        # 近7天转化率
    hour_of_day: int                 # 当前时段
    day_of_week: int                 # 星期几(0=周一)
    price_floor: float               # SKU 最低盈亏平衡价
    price_ceiling: float             # 最高心理价位

    @property
    def competitor_min(self) -> float:
        return min(self.competitor_prices) if self.competitor_prices else self.our_price

    @property
    def price_ratio(self) -> float:
        return self.our_price / max(self.competitor_min, 0.01)

    def to_vector(self) -> np.ndarray:
        """状态向量化"""
        peak_hour = 1.0 if 18 <= self.hour_of_day <= 22 else 0.0
        weekend = 1.0 if self.day_of_week >= 5 else 0.0
        return np.array([
            self.price_ratio,
            self.our_price / self.price_floor if self.price_floor > 0 else 1.0,
            min(1.0, self.inventory_days / 60),
            self.conversion_rate_7d,
            peak_hour,
            weekend,
            min(1.0, len(self.competitor_prices) / 5),
        ])


@dataclass
class RepricingDecision:
    """重定价决策"""
    new_price: float
    price_change: float
    confidence: float
    reason: str


class SimpleQLearner:
    """
    简化版 Q-Learning 重定价策略

8. 论文来源

  • 1802.03050
  • 1912.02572