P paper2skillsPlaybook
AI 路线图 →

Ad Spend Inventory Sync — 广告投放与库存联动的协同优化

Skill-Ad-Spend-Inventory-Sync · 13-广告分析

causalexperimentforecastingoptimization广告与投放供应链与补货定价与利润WF-A 智能补货WF-B 广告优化WF-D 选品扫描WF-F 动态定价WF-J DTC 独立站增长
年化 ROI20-40 万元
实现难度⭐⭐⭐☆☆
业务优先级⭐⭐⭐⭐☆
业务视角
适用角色广告优化师 / 投放负责人 · CMO · 运营负责人
适用平台Amazon PPC(SP/SB/SD)· TikTok Ads · Meta 广告 · 多平台归因
什么情况下用广告账户几十个系列,不知道哪个在真正赚钱;ROAS 看起来好看但实际利润没有提升;预算有限想集中打高价值用户
成功是什么样的每分广告预算有明确 ROI 追踪,砍掉低效渠道后同等预算 ROAS 提升 30-50%
业务痛点
ROAS 好看但利润没有涨不知道哪个素材真的有效归因窗口期不同数据打架TikTok/Meta/Amazon 广告数据整合不了

1. 解决的问题

母婴品牌大促前加大广告投放却因库存不足导致缺货差评——广告-库存联动优化将广告预算分配与 FBA 可发货量硬绑定,将缺货率从 12% 降至 4%,年化减少缺货损失 20-60 万元

2. 核心算法逻辑

核心思想:广告出价→需求预测→库存补货三角联动,用库存可发货量作为广告预算分配的硬约束,防止"广告打爆但缺货"的致命失误。

3. 业务应用场景

场景A:黑五大促广告预算实时调控 - 业务问题:大促期间 10 个 SKU 竞争 10 万广告预算,吸奶器库存告急(仅剩 500 件),但尿布裤库存充足(5000 件),继续均摊预算会导致吸奶器缺货差评 - 数据要求:各 SKU 历史广告出价→订单量数据(30天)、当前 FBA 库存量、到货 ETA、商品毛利率 - 预期产出:最优预算分配方案(如:尿布裤追加 2 万,吸奶器削减至库存能支撑的上限) - 业务价值:避免吸奶器 500 件缺货造成约 8 万元损失(500件 × 160元利润),同时尿布裤增量订单带来 +15 万销售额,ROI 净增益约 23 万/次大促

**场景B:日常多 SKU 周度预算滚动优化** - **业务问题**:品类经理每周一手动分配广告预算,凭经验决策,库存与广告脱节 - **数据要求**:周度销售数据、补货在途数量、各 SKU ACOS 历史数据 - **预期产出**:自动化周度预算建议报表,标注库存受限 SKU 和安全可追投 SKU - **业务价值**:运营人力节省 30%,预算浪费(打超发缺货的广告)减少 20-40%,年化节省 20-60 万元

4. 输入数据要求

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

5. 输出结果

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

6. 业务价值 / ROI

20-40 万元

7. 代码模板

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

"""
广告投放-库存联动协同优化
场景:5 个母婴 SKU,总预算 10 万,输出满足库存约束的最优广告预算分配
依赖:numpy, scipy(标准库)
"""

import numpy as np
from scipy.optimize import linprog

# ============================================================
# 数据准备:5 个母婴 SKU
# ============================================================
np.random.seed(42)

SKU_NAMES = ["吸奶器Pro", "尿布裤XL", "婴儿奶粉A2", "防水隔尿垫", "婴儿湿巾"]
N_SKU = len(SKU_NAMES)

# 基准出价 (元/点击)、基准日销量 (件/天)
BASE_BID = np.array([3.5, 1.2, 4.0, 0.8, 0.5])
BASE_DEMAND = np.array([80, 300, 50, 200, 500])

# 广告需求弹性系数 α(出价翻倍,需求增长 α×ln2 倍)
ELASTICITY = np.array([0.35, 0.20, 0.40, 0.15, 0.10])

# 当前 FBA 可发货库存(件)- 吸奶器库存告急
INVENTORY = np.array([400, 2000, 300, 1500, 4000])

# 各 SKU 单件利润(元)
PROFIT_PER_UNIT = np.array([160, 25, 80, 15, 8])

# 广告点击成本(元/件转化,CPC/CVR 综合)
COST_PER_CONVERSION = np.array([28, 6, 35, 4, 2])

TOTAL_BUDGET = 100000  # 总广告预算 10 万元
CAMPAIGN_DAYS = 7  # 规划周期(7天)
N_LEVELS = 20  # 预算离散化档位数


# ============================================================
# Step 1:广告需求弹性模型
# ============================================================

def estimate_demand(budget_per_sku: np.ndarray) -> np.ndarray:
    """
    基于广告预算估算各 SKU 需求量(整个规划周期)
    公式:d_i = base_d_i * days * (1 + alpha_i * ln(bid_i / base_bid_i))
    其中 bid_i = budget_i / (base_demand_i * days * cost_per_conv_i) 的近似反算
    """
    # 将预算转化为等效出价倍率
    base_spend = BASE_DEMAND * CAMPAIGN_DAYS * COST_PER_CONVERSION
    bid_ratio = np.where(base_spend > 0, budget_per_sku / base_spend, 1.0)
    bid_ratio = np.maximum(bid_ratio, 0.01)  # 防止 log(0)

    demand_multiplier = 1 + ELASTICITY * np.log(bid_ratio)
    demand_multiplier = np.maximum(demand_multiplier, 0.1)  # 不低于基准 10%

    estimated_demand = BASE_DEMAND * CAMPAIGN_DAYS * demand_multiplier
    return estimated_demand

8. 论文来源

  • 2003.01452