paper2skills Playbook

Markdown Optimization(折扣清仓定价优化)

Skill-Markdown-Optimization · 17-价格优化

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

1. 解决的问题

S1 吸奶器库存 500 件,成本 $60,原价 $129

2. 核心算法逻辑

清仓不是"打最低折卖完就行",而是在库存生命周期内最大化总回收价值——太早打高折扣损失利润,太晚打低折扣剩库存。核心是找到每条折扣曲线上的最优折扣路径。

3. 业务应用场景

业务问题:S1 吸奶器库存 500 件,成本 $60,原价 $129。新款 S2 3 个月后上市。需要在 12 周内清完 S1 库存,最大化回收价值。太早深度打折会影响品牌形象且被亚马逊算法降权。

数据要求:历史清仓数据(同类产品不同折扣下的周销量曲线)

预期产出: - 最优路径:Week 1-6 维持 $119(-8%),Week 7-9 降到 $99(-23%),Week 10-12 降到 $79(-39%) - 预计回收 $46,500(vs 全价估算 $64,500,残值 $15,000) - 库存清零率 95%+

4. 输入数据要求

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

5. 输出结果

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

6. 业务价值 / ROI

  • ROI 预估:每批清仓多回收 15-40%;母婴年均 3-5 批清仓,年化 20-50 万元
  • 实施难度:⭐⭐☆☆☆(2 星)
  • 优先级评分:⭐⭐⭐☆☆(3 星)— 季末高频需求

7. 代码模板

代码块数量:1 · 路径:paper2skills-code/pricing/markdown_optimization

"""Markdown Optimization — 动态清仓定价"""

import numpy as np
from typing import List, Tuple


def markdown_optimize(
    inventory: int, cost: float, full_price: float,
    weeks: int, salvage_ratio: float = 0.25,
    elasticity: float = -1.5,
    base_demand: float = None
) -> List[Tuple[int, float, float]]:
    """
    逆向归纳清仓优化
    
    Returns: [(week, price, expected_sales), ...]
    """
    base_demand = base_demand or inventory / (weeks * 0.4)
    salvage_value = cost * salvage_ratio
    discounts = np.linspace(0, 0.6, 13)  # 0%-60% 折扣
    
    # 简化为贪心周度决策
    plan = []
    remaining = inventory
    
    for w in range(1, weeks + 1):
        weeks_left = weeks - w + 1
        # 目标周销量 = 剩余库存 / 剩余周数
        target_sales = remaining / weeks_left
        
        # 找最小折扣满足目标销量
        best_d = 0.0
        for d in discounts:
            price = full_price * (1 - d)
            estimated_demand = base_demand * ((price / full_price) ** elasticity)
            if estimated_demand >= target_sales * 0.4:  # 允许略低于
                best_d = d
                break
        
        price = full_price * (1 - best_d)
        sales = min(base_demand * ((price / full_price) ** elasticity), remaining)
        sales = max(sales, target_sales * 0.3)  # 底线
        sales = min(sales, remaining)
        
        plan.append((w, round(price, 2), round(sales)))
        remaining -= sales
        
        if remaining <= 0:
            break
    
    total_rev = sum(p * s for _, p, s in plan)
    total_rev += remaining * salvage_value
    return plan, total_rev


if __name__ == '__main__':
    plan, revenue = markdown_optimize(
        inventory=500, cost=60, full_price=129,
        weeks=12, salvage_ratio=0.25, elasticity=-1.5
    )

8. 论文来源

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