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