Jiangang Han

定价优化入门

四篇短文,一层一层把定价优化的数学骨架搭起来:从单个定价对象,到同时定很多个,到把它们绑在一起的业务约束,最后到互相抢需求的对象。

每一篇都有完整推导、配图,以及「这个参数在你的业务里对应什么、真上线时会踩什么坑」。四篇是递进的,但每一篇都能单独读——想从哪篇进都行。


四篇讲什么

一 · 单对象定价优化 12 分钟

只有一个数要定。价格往上抬,每一单赚得更多,买的人却更少——利润走出一条倒 U 曲线。

求这条曲线的顶点。给出最优价满足的一般条件、线性需求与 Logit 需求两个具体例子,以及「涨价的赚与亏」的边际拆解。

读完能带走:一个可以直接套用的定价公式,和一个不用计算器也能估的基准——最优价大约落在「成本」与「贵到没人买的价格」的中点。

二 · 多对象定价与业务约束 15 分钟

从一个对象变成 N 个,问题并没有变难——它会干净地拆成 N 个互不相干的小问题。真正让它变难的,是那条把所有价格重新绑回一起的业务红线。

先说清楚「无耦合时问题自动分解」这件事,再说明为什么那个解通常不能直接上线。然后加上真实业务里躲不掉的约束,旋钮出现了。

读完能带走:一个标量 \lambda(影子价格),二分它就能拿到最优解;以及这个数本身怎么拿去做投放与预算分配的决策。

三 · 替代品的定价优化 13 分钟

把一个产品的价格抬上去,另一个的销量反而涨了——它们在抢同一批需求。一旦有了这种牵连,价格就不能再一个一个单独定。

用离散选择模型描述替代效应,然后推出这个专题最漂亮的结论:所有产品的「边际 UE」(多卖一单净赚多少)必须被拉平到同一条水位线上。

读完能带走:一个不用重解优化问题、一条 SQL 就能跑的定价健康度诊断;以及一个反直觉的结论——「统一减 X 元」不会破坏最优结构,「统一打 X 折」会。

四 · 大规模定价优化 10 分钟

规模一上来,闭式解就不管用了。这一篇用一点精度换来可解,同时讲清楚:这个近似在什么情况下会悄悄失准。

真实问题是 M 个用户群 × N 个对象加一堆约束,得上运筹求解器。这一篇讲泰勒展开线性化、它的使用边界,以及信任域迭代,最后老实交代整个专题没覆盖的东西。

读完能带走:把非线性定价问题化成线性规划(LP)的标准做法,以及一套判断「线性近似在你的数据上能用到多大幅度」的验证流程。


完整符号表

四篇通用。每篇开头还有一个「本篇新增符号」的折叠小表。

符号含义在你的业务里可能是
i, j定价单元(定价对象)的编号一个 SKU、一个用户分层、一条线路、一个套餐档位
p_i单元 i 的价格,决策变量你真正能调的那个数字
c_i单元 i 的单位成本,已知常数采购成本、边际服务成本、单位交付成本
u_i = p_i - c_i单均毛利每成交一单赚多少
q_i(p_i)成交概率 / 转化率曝光→下单、访问→购买、报价→承保
q_0不成交 / 什么都不买的概率用户划走了
k_i价格系数,越大表示价格一动、转化率掉得越快需求模型里价格项的系数
\Pi总收益(本专题统一指毛利,不是流水)你的优化目标
\lambda约束的拉格朗日乘子影子价格:多换一单要付出多少利润

关于「价格系数」:它和经济学里常说的「价格弹性」有关,但不是一回事。弹性衡量的是两个百分比变化之比,在 Logit 需求下等于 -k\,p\,(1-q)。本专题一律用价格—需求关系 和 价格系数 k 来表述,指的就是那条曲线有多陡。


公式速查

场景最优性条件
单个单元,一般需求p^\star = c + \dfrac{q}{-q'}
单个单元,线性需求 q = a - bpp^\star = \dfrac{a}{2b} + \dfrac{c}{2} = \dfrac{p_{\max} + c}{2}
单个单元,Logit 需求p^\star - c = \dfrac{1}{k\,q_0}
N 个单元,无耦合p_i^\star = c_i + \dfrac{q_i}{-q_i'},各自独立
N 个单元 + 总量约束p_i^\star = c_i - \lambda + \dfrac{q_i}{-q_i'},\lambda 全局共享,二分求解
一张清单(MNL),无约束u_j - \dfrac{1}{k_j} = \Pi,对所有 j 相等
一张清单(MNL)+ 总量约束u_j - \dfrac{1}{k_j} = \Pi - \lambda q_0,对所有 j 相等
MNL 自身导数\dfrac{\partial q_j}{\partial p_j} = -k_jq_j(1-q_j)
MNL 交叉导数\dfrac{\partial q_m}{\partial p_j} = k_jq_jq_m \quad (m\ne j)
MNL 总量导数\sum_m \dfrac{\partial q_m}{\partial p_j} = -k_jq_jq_0
总转化率的海森H_{ij} = \bigl(k_i^2q_i\delta_{ij} - 2k_ik_jq_iq_j\bigr)q_0

这个专题不讲什么

四篇都假设你已经有了一条靠谱的「价格 → 成交概率」曲线,讨论的是「拿到模型之后,价格该怎么定」。

怎么得到那条曲线,其实是全流程里最难、最容易翻车的一步(核心难点是内生性:历史数据里的价格不是随机的)。这部分连同大规模求解的工程实现、跨期效应与博弈、不确定性、合规边界,都在第四篇第 4 节里老实列了出来。


参考文献

  1. Guillermo Gallego, Ruxian Wang. Multiproduct Price Optimization and Competition Under the Nested Logit Model with Product-Differentiated Price Sensitivities. Operations Research, 62(2):450–461, 2014.
  2. Hongmin Li, Woonghee Tim Huh. Pricing Multiple Products with the Multinomial Logit and Nested Logit Models: Concavity and Implications. Manufacturing & Service Operations Management, 13(4):549–563, 2011.

专题里所有图均由代码根据文中模型直接计算生成,非示意图。所有推导都做了数值验证(用有限差分核对梯度和海森矩阵,用两种独立解法交叉验证最优解)。如果你发现哪一步有问题,欢迎指出。