paper2skills Playbook

Dynamic Pricing with Demand Elasticity(动态定价与需求弹性)

Skill-Dynamic-Pricing-Elasticity · 17-价格优化

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

1. 解决的问题

吸奶器在美国定价 $129,德国 €119,英国 £99

2. 核心算法逻辑

价格不是固定数字,而是杠杆——通过估计每个 SKU/市场/时段的需求价格弹性,找到利润最大化的动态定价策略。核心公式:最优价格 $P^ = \frac{\epsilon}{\epsilon+1} \cdot MC$,其中 $\epsilon$ 是需求价格弹性,$MC$ 是边际成本。

3. 业务应用场景

业务问题:吸奶器在美国定价 $129,德国 €119,英国 £99。但美国市场竞品 Momcozy 经常在亚马逊闪电促销降价到 $99,导致我们的转化率周期性波动。需要动态调价策略——竞品降价时跟多少?竞品恢复后涨回去吗?

数据要求: - 各市场 12 个月日销量 + 价格历史 - 竞品价格(Momcozy/Medela/Spectra 等 3-5 个竞品)每日监测 - 各市场价格弹性估计(来自历史 A/B 测试或准实验)

预期产出: - 弹性矩阵:美国 $|\epsilon|=1.5$(高度弹性→不宜轻易涨价)、德国 $|\epsilon|=1.1$(中等)、英国 $|\epsilon|=0.9$(偏非弹性→涨价空间大) - DRL 策略:竞品降价 15% 时,我们跟降 8-12%(而非完全匹配)以平衡利润和份额 - 最优价格区间:美国 $119-135 / 德国 €109-125 / 英国 £95-108

4. 输入数据要求

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

5. 输出结果

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

6. 业务价值 / ROI

  • ROI 预估:利润率 +8-12%,月 GMV $50 万 → 年化 50-80 万元
  • 实施难度:⭐⭐⭐☆☆(3 星)— 需要持续竞品监测 + A/B 验证
  • 优先级评分:⭐⭐⭐⭐⭐(5 星)— 定价是电商四大杠杆之首(定价 > 流量 > 转化率 > 复购率)
  • 评估依据:价格弹性估计是所有定价决策的基础,新领域 17-价格优化的第一张核心卡片

7. 代码模板

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

"""
Dynamic Pricing with Demand Elasticity — DRL + Bayesian 弹性估计
"""

import numpy as np
from scipy.optimize import minimize_scalar
from typing import Dict, Tuple


class DemandElasticityEstimator:
    """需求价格弹性估计"""
    
    def __init__(self, prior_elasticity: float = -1.5, prior_std: float = 0.5):
        self.elasticity = prior_elasticity
        self.std = prior_std
        self.n_obs = 0
    
    def update(self, price_change_pct: float, demand_change_pct: float):
        """贝叶斯更新弹性估计"""
        if abs(price_change_pct) < 0.001:
            return
        new_obs = demand_change_pct / price_change_pct
        self.n_obs += 1
        alpha = 1.0 / (1.0 + self.n_obs)
        self.elasticity = (1 - alpha) * self.elasticity + alpha * new_obs
        self.std *= 0.95  # 随观测增加不确定性递减
    
    def optimal_price(self, cost: float, current_price: float,
                      competitor_price: float = None) -> float:
        """计算最优价格"""
        eps = abs(self.elasticity)
        if eps <= 1.0:
            # 非弹性需求 → 涨价
            return current_price * 1.05
        margin = (eps - 1) / eps
        optimal = cost / (1 - margin) if margin > 0 else cost * 2
        
        if competitor_price and competitor_price < optimal:
            # 竞品约束:不高于竞品 15% 以上
            optimal = min(optimal, competitor_price * 1.15)
        
        # 调价幅度限制
        return np.clip(optimal, current_price * 0.8, current_price * 1.2)


class DynamicPricingAgent:
    """简化 DRL 动态定价 Agent"""
    
    def __init__(self, cost: float, elasticity_estimator: DemandElasticityEstimator):
        self.cost = cost
        self.elasticity = elasticity_estimator
        self.price_history = []
        self.demand_history = []
    
    def decide_price(self, current_price: float, inventory: int,
                     demand_forecast: float, competitor_price: float) -> float:
        """
        定价决策
        
        Args:

8. 论文来源

未自动抽取;请查看原始 Skill 卡片。