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 卡片。