paper2skills Playbook

Skill-Market-Size-Estimation

Skill-Market-Size-Estimation · 06-增长模型

causalexperimentforecastingpricing广告与投放供应链与补货推荐与搜索定价与利润WF-A 智能补货WF-B 广告优化WF-D 选品扫描WF-F 动态定价
实现难度⭐⭐☆☆☆
业务视角
适用角色CEO / 增长负责人 · CMO · 财务负责人
适用平台Amazon · TikTok Shop · DTC 独立站 · 多市场
什么情况下用公司增长放缓,不知道是市场饱和还是产品问题还是获客太贵;老板要 12 个月 GMV 预测,只能靠感觉
成功是什么样的建立增长拆解模型找到瓶颈,预测未来 6-12 个月营收区间,支撑融资/战略会议
业务痛点
增长放缓不知道问题在哪CAC 越来越高已经高于 LTV新市场要不要进没有数据支撑

1. 解决的问题

核心思想:在选品决策前量化「这个品类有多大、能拿多少」,避免「市场很大」的模糊判断。用两条互相校验的路径(Top-down 和 Bottom-up)估算 TAM/SAM/SOM,并通过 Google Trends 校准和 Monte Carlo 模拟将点估计扩展为置信区间,输出可进入 ROI 模型的数字范围。

2. 核心算法逻辑

核心思想:在选品决策前量化「这个品类有多大、能拿多少」,避免「市场很大」的模糊判断。用两条互相校验的路径(Topdown 和 Bottomup)估算 TAM/SAM/SOM,并通过 Google Trends 校准和 Monte Carlo 模拟将点估计扩展为置信区间,输出可进入 ROI 模型的数字范围。

3. 业务应用场景

场景 A:baby sterilizer 品类进入前 TAM/SAM 完整估算

- 业务问题:考虑推出 UV-C 密闭消毒器,在做选品决策前需要知道这个品类的市场规模和自己的可达市场上限。 - 数据要求: - Google Trends 数据(目标词 + 锚点词,近 24 个月) - Google Keyword Planner 锚点词绝对搜索量 - Amazon 竞品 Top 20 的月度销量估算(JungleScout/Helium10) - 目标 ASP($129-$149) - 预期产出: - 业务价值:SAM $28M-$45M 足够支撑多个品牌,SOM 目标合理,给出进入决策的量化基础

场景 B:新品类快速 TAM 扫描(SOP-A 选品支撑)

4. 输入数据要求

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

5. 输出结果

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

6. 业务价值 / ROI

  • ROI 预估
  • 防止进入太小市场:SAM < $10M 的品类,即使做到 10% 份额也只有 $1M/年,按 baby sterilizer 开发成本 $50K 估算,ROI 不达标。本 Skill 在选品阶段即输出 SKIP 决策,节省 3-6 个月开发+认证时间
  • 防止过度乐观假设:Monte Carlo 把 TAM 点估计转为范围,避免"全球市场 $46B × 1% = $460M 可达"的常见错误(实际 SAM 仅 $30-45M)
  • 与 Skill-Category-Compliance-Prescan 联用:真实 SOM = 估算 SOM - 认证成本 $25-45K,影响进入 ROI 约 15-30%
  • 实施难度:⭐⭐☆☆☆(2/5)— 纯 NumPy,无需外部 API(GT 数据手动输入即可)
  • 优先级评分:⭐⭐⭐⭐⭐(5/5)— WF-D 选品扫描前置输入,缺失则选品 ROI 计算缺乏市场规模基础

7. 代码模板

代码块数量:7 · 路径:paper2skills-code/growth_model/market_size_estimation

"""
Skill-Market-Size-Estimation
基于 G-TAB (arXiv:2007.13861, EPFL) +
    Bass+GT 动态市场潜力 (Hu et al., Kent) +
    Monte Carlo 置信区间 (MDPI Applied Sciences 2023)
母婴跨境电商品类 TAM/SAM/SOM 估算工具
"""

import numpy as np
from dataclasses import dataclass, field
from typing import Optional


@dataclass
class MarketSizeResult:
    category: str
    tam_low: float
    tam_mid: float
    tam_high: float
    sam_low: float
    sam_mid: float
    sam_high: float
    som_target: float
    monthly_search_low: int
    monthly_search_mid: int
    monthly_search_high: int
    peak_month_estimate: Optional[int]
    top_sensitive_params: list[str]
    confidence_note: str
    decision: str


# ── G-TAB 校准:GT 指数 → 绝对搜索量 ─────────────────────
def calibrate_gt_volume(
    target_gt_index: float,
    anchor_keyword_monthly_volume: int,
    anchor_gt_peak: float = 100.0,
    rounding_error_pct: float = 0.30,
) -> tuple[int, int, int]:
    """
    G-TAB 方法:将 GT 相对指数校准为绝对月搜索量。
    返回 (low, mid, high) 置信区间。

    arXiv:2007.13861, EPFL Data Science Lab
    calibrated_volume = GT_raw × (R_anchor / m_anchor)
    """
    mid = int(target_gt_index / anchor_gt_peak * anchor_keyword_monthly_volume)
    low = int(mid * (1 - rounding_error_pct))
    high = int(mid * (1 + rounding_error_pct))
    return low, mid, high


# ── Bass 扩散:动态渗透率曲线 ─────────────────────────────
def bass_diffusion_curve(
    market_potential: float,
    p: float = 0.03,
    q: float = 0.38,
    periods: int = 36,
) -> np.ndarray:
    """

8. 论文来源

  • 2007.13861