案例 046 买不买超时险:保费与赔付之间的两个口径
案例 046 买不买超时险:保费与赔付之间的两个口径
摘要:平台在每单上搭售"超时险"——付 2.0 元保费,超时赔 3.0 元;不买则自担每单 3.5 元罚款。12 单的历史超时率从 0.03 到 0.92 不等,雨天还要整体上浮。本文把投保写成 0-1 规划:\(z_{i}=1\) 表示给第 \(i\) 单投保,目标先取期望成本、再取 CVaR。期望口径的门槛极其干脆——只有 \(q_{i}>p/D=0.667\) 的 3 单值得买,一天只省 0.86 元;风险口径把门槛压到 \((1-\beta)p/D=0.067\),最优集合扩到 5 单,CVaR 从 26.2 元降到 22.6 元而期望成本只多 0.90 元。全买 12 单在两种口径下都最差,说明保险不是买得越多越好,而是买在概率穿过门槛的地方。
关键词:超时险;期望效用;CVaR;0-1 规划;临界概率;风险厌恶
1 问题提出
1.1 问题是什么
午晚高峰共有 12 单要送,平台在派单页弹出一行字:每单 2.0 元投保,超时赔付 3.0 元。骑手心里有一本账——不买,超时罚 3.5 元;买了,超时只净亏 3.5 减 3.0 的差额。可保费付的是确定的一笔钱,赔付换回来的是一个概率事件,两者不能直接比大小。
表 1 逐单超时概率与两个口径的投保决策
| 订单 | 送达点 | 距离 km | 出餐波动 min | 承诺 min | 超时率 | 收入 元 | 期望口径 | CVaR 口径 |
|---|---|---|---|---|---|---|---|---|
| 01 | 石牌村内巷 | 1.2 | 6 | 28 | 0.92 | 7.5 | 是 | 是 |
| 02 | 冼村六楼无梯 | 2.1 | 5 | 30 | 0.85 | 9.0 | 是 | 是 |
| 03 | 员村隧道口 | 2.8 | 4 | 32 | 0.71 | 10.5 | 是 | 是 |
| 04 | 棠下村口 | 1.9 | 3 | 30 | 0.55 | 8.0 | 否 | 是 |
| 05 | 车陂南地铁 | 3.1 | 4 | 35 | 0.48 | 11.0 | 否 | 是 |
| 06 | 珠江新城西塔 | 2.4 | 5 | 33 | 0.34 | 12.0 | 否 | 否 |
| 07 | 岗顶电脑城 | 1.4 | 2 | 28 | 0.26 | 7.0 | 否 | 否 |
| 08 | 天河南一路 | 0.9 | 2 | 25 | 0.18 | 6.5 | 否 | 否 |
| 09 | 猎德大桥南 | 3.4 | 3 | 38 | 0.12 | 10.0 | 否 | 否 |
| 10 | 体育西路 | 1.1 | 1 | 26 | 0.08 | 6.8 | 否 | 否 |
| 11 | 华师后门 | 1.6 | 1 | 27 | 0.05 | 7.2 | 否 | 否 |
| 12 | 龙口西 | 0.7 | 1 | 24 | 0.03 | 6.0 | 否 | 否 |
表 1 的超时率来自历史回单:石牌村内巷 0.92,龙口西只有 0.03,相差 30 倍。同一天里 12 单的风险如此分散,"要么全买、要么全不买"显然不是好答案。
1.2 为什么要优化
第一,保费与赔付都是小数目(2 元对 3 元),但乘以单量就不可忽略:全买 12 单要先付 24 元保费,比一天的期望罚款还高出一大截。
第二,门槛是"概率"而不是"印象"。骑手常说"这单肯定超时",可"肯定"对应的经验概率往往只有 0.4——离 0.667 的门槛还差得远。把门槛算出来,才知道哪些"感觉危险"的单其实不值得保。
第三,期望值不是唯一口径。罚款日结,一次连续超时会把当天净收入打穿,这正是 CVaR 要刻画的东西。
1.3 Gurobi 如何求解
情景法。用雨天共同冲击(概率 0.30,超时率上浮到 1.45 倍)叠加逐单伯努利超时,生成 12 单 × 3000 个情景的超时矩阵;给定投保向量 \(z\),第 \(s\) 个情景的总成本是 \(z\) 的线性函数,于是"最小化 CVaR"可以写成线性规划的标准形式——一个自由变量 \(\eta\) 加 3000 个松弛变量 \(u_{s}\)。二进制只有 12 个,分支定界 1 s 内收敛。灵敏度扫描共 40 余次求解,全程墙钟 11 s。
2 数学模型
2.1 符号说明
\(i=1,\dots,N\) 为订单,\(q_{i}\) 为超时概率,\(p\) 为单笔保费,\(D\) 为超时赔付,\(f\) 为平台罚款,\(z_{i}\in\{0,1\}\) 为投保决策,\(\ell_{is}\in\{0,1\}\) 为第 \(s\) 个情景下第 \(i\) 单是否超时,\(\beta\) 为 CVaR 置信水平,\(\eta\) 为 VaR 阈值,\(u_{s}\) 为超出阈值的部分。
2.2 目标函数
期望口径下逐单独立,总成本可以直接拆开,也可以写成"期望赔付减保费":
风险口径换成最差 \((1-\beta)\) 尾部的条件期望:
2.3 约束条件
第 \(s\) 个情景的成本对 \(z\) 线性,把常数项提出来后只剩 12 项:
CVaR 的线性化靠两条不等式,\(u_{s}\) 在最小化下自动取到正部:
决策变量是纯 0-1:
临界概率由式 (1) 的一阶条件得到——买与不买的期望成本相等时 \(p=D\,q\):
把式 (2) 的尾部期望对单笔展开,一条独立风险的 CVaR 等于 \(a\min\{1,q/(1-\beta)\}\),代入得风险厌恶下的门槛:
式 (7) 说明门槛与风险厌恶程度成反比:\(\beta\) 越高,尾部越窄,越愿意为小概率事件付保费。
2.4 规模与性质
12 个二进制、3000 个连续变量、3000 条 CVaR 约束,是一类"带情景的 0-1 覆盖"问题。特殊结构在于式 (3) 的系数 \(p-D\ell_{is}\) 只有两个取值,最优解必然是"按某个分数阈值切一刀"——这正是式 (6) 的离散版本,也解释了为什么最优集合总是"最危险的前若干单"。
3 Gurobi 求解实现
3.1 建模要点
CVaR 的关键是把"取正部"交给求解器,而不是自己写 \(\max\):
for s in range(M):
e = FINE * NL[s] + gp.quicksum((PREM - PAY * L[s, i]) * z[i] for i in range(N))
m.addConstr(u[s] >= e - eta)
m.setObjective(eta + gp.quicksum(u[s] for s in range(M)) / ((1 - beta) * M), GRB.MINIMIZE)
一个实现细节:\(\eta\) 必须设成自由变量(lb=-GRB.INFINITY)。若图省事取 \(\eta\) 非负,在成本恒为正时结果不变,但一旦把收益写成负成本就会悄悄错位。
3.2 求解结果
表 2 四种投保策略的成本(单位:元)
| 策略 | 投保单数 | 期望成本 | CVaR | 95% 分位 |
|---|---|---|---|---|
| A 不买 | 0 | 15.4 | 26.2 | 24.5 |
| B 全买 | 12 | 26.2 | 27.7 | 27.5 |
| C 期望选投 | 3 | 14.5 | 23.3 | 21.5 |
| D CVaR 选投 | 5 | 15.4 | 22.6 | 22.5 |
| 参考:日险(2 元/天) | 12 | 4.5 | 8.2 | 6.5 |
两个口径给出两个集合:期望口径挑 01、02、03(3 单),CVaR 口径挑 01、02、03、04、05(5 单)。全买 12 单是最差选择,期望 26.2 元、CVaR 27.7 元,两头都不占优。
4 结果分析

图 1 逐单超时概率与投保集合(虚线为临界概率)
4.1 风险结构与门槛 图 1 把 12 单按超时率降序排开,虚线是 \(p/D=0.667\),橙线是单均净收益 \(D\bar{q}_{i}-p\)。橙线在 03 与 04 之间穿过零点:03 号(员村隧道口)还剩 +0.10 元,04 号(棠下村口)已是 -0.34 元。这就是期望口径只选 3 单的全部理由——门槛不是"感觉危险",而是 0.667 这个具体的数。蓝色(CVaR 口径)一路铺到 05 号,因为风险口径赔的是尾部,不是均值。

图 2 距离—超时概率散点(气泡为单笔收入)
4.2 距离与风险不成正比 图 2 的横轴是距离,气泡是单笔收入。最远的 09 号(3.4 km)超时率只有 0.12,而 1.2 km 的 01 号高达 0.92——决定超时的是"出餐波动加上楼"而不是里程。01 号在石牌村内巷,商家出餐波动 6 min;09 号过桥但出餐稳定。凭距离挑单投保,钱一定花在错的地方。

图 3 四种投保策略的期望与 CVaR 对比
4.3 四种策略 图 3 把期望与 CVaR 并排。A 不买:期望 15.4 元、CVaR 26.2 元;B 全买:24 元保费只换回 4.40 单、共 13.2 元的期望赔付,期望升到 26.2 元(比 A 高 10.8 元),CVaR 也最高;C 期望选投 3 单:期望 14.5 元(最低)、CVaR 23.3 元;D 多保 2 单、多付 4 元保费:期望 15.4 元(比 C 高 0.90 元),CVaR 却降到 22.6 元(比 C 低 0.76 元)。C 省均值、D 省尾部,两者只差 0.90 元期望,却差 0.76 元尾部——这就是风险厌恶的标价。

图 4 按超时率降序投保的累计净收益阶梯
4.4 累计缺口 图 4 把"按超时率降序投保 \(k\) 单"的累计净收益(期望赔付减保费)画成阶梯:它在第 3 单处见顶 0.88 元,之后一路转负,到 12 单时已亏 10.8 元。这就是"该买几单"的图形答案——峰值左边是买少了,右边是买多了,而门槛 \(p/D\) 恰好落在峰值那一格。

图 5 保费灵敏度:期望成本与投保单数
4.5 主灵敏度:保费 图 5 让保费从 0.8 扫到 3.2 元。期望成本从 9.2 元单调升到 15.4 元,投保单数则从 6 单阶梯式降到 0 单。拐点在 \(p\approx2.4\):门槛升到 0.8,只剩 01 号一单可买;\(p\ge2.8\) 时门槛 0.93,连 01 号也不买,成本完全回到"不买"的水平。保费涨 40%,投保单数掉一半——薄利业务对定价最敏感的地方就在这里。

图 6 保费 × CVaR 置信水平的投保单数热图
4.6 二维:保费 × 置信水平 图 6 是 4×5 的投保单数热图,纵向条纹很干净:同一列内只有零星变化,说明保费是主因,风险厌恶是次因。最强的一列是 \(p=1\):\(\beta\) 从 0.50 升到 0.95,投保单数从 8 单推到 12 单,保费便宜到 1 元时,风险厌恶才真正加码。\(p\ge3\) 的两列全是 0——定价已经高于赔付,再保守的骑手也不会碰。本案星标(\(p=2\)、\(\beta=0.90\))落在 5 单。

图 7 临界概率随 β 的下降与投保单数台阶
4.7 第三维:门槛与 β 图 7 把式 (7) 画出来。理论门槛从 \(\beta=0.50\) 的 0.333 线性降到 \(\beta=0.99\) 的 0.007,降了 50 倍;实证的投保单数却只是从 3 单慢慢爬到 8 单,而且 \(\beta\) 在 0.80 到 0.90 之间还是平的。组合分散削弱了保险的价值:12 单同时超时的概率远小于任一张单的边缘概率,尾部不再由某一单主导,门槛的下降就不那么灵了。雨天这个共同冲击又把分散的效果往回拉——网格里 \(\beta\) 的作用始终存在,只是不强。

图 8 投保单数—期望—CVaR 的帕累托前沿
4.8 帕累托前沿 图 8 的每个点是一个"恰好投保 \(n\) 单"的最优解,横轴期望、纵轴 CVaR,颜色是 \(n\)。期望最优在 \(n=3\)(14.53 元),CVaR 最优在 \(n=5\)(22.59 元),两个最优点相差 2 单,中间隔着的就是"风险溢价"。\(n>5\) 之后两条指标同时变差,再买纯属浪费。灰区是单日尾部预算 23.0 元的不可行区:只有投保 4 到 7 单的方案能守住,A、B 两方案都掉在里面。

图 9 三种策略的每日成本累计分布
4.9 成本分布 图 9 是三条累计分布。低分位处 A(灰)反而最便宜——不超时的日子一分不花,D 却要先付 10 元保费;一旦当天超时超过 4 单,D(蓝)就反超并一路压低,95% 分位 22.5 元,比 A 的 24.5 元低 2 元。C(橙)夹在中间。保险买的不是平均,是把左尾的钱挪到右尾。

图 10 逐单对 CVaR 的边际贡献
4.10 逐单边际 图 10 是"加入该单后 CVaR 的下降"(对已投保的单则是"移出它的损失")。01 号贡献 +0.83 元,05 号只剩 +0.18 元,06 号已经是 -0.05 元,12 号 -1.72 元。绿柱与红柱的分界落在 05 与 06 之间,与图 1 的蓝色边界完全一致。投保决策的本质是给每单标一个价格:保费除以赔付额,再和它的超时概率比大小。
5 结论
-
期望口径的门槛是 \(p/D=0.667\),只有超时率高于它的 3 单值得投保,一天省 0.86 元;低于门槛的单,保费必然吃掉全部期望赔付。
-
风险厌恶把门槛降到 \((1-\beta)p/D\),\(\beta=0.90\) 时理论值 0.067;实证最优集合是 5 单,CVaR 从 26.2 元降到 22.6 元,代价是期望成本多 0.90 元。
-
全买是最差的策略:期望 26.2 元、CVaR 27.7 元,两项都垫底。保险的边际价值随投保单数递减,越过门槛就变负。
-
二维热图说明保费与风险厌恶并不等价:保费是主因,\(\beta\) 只在保费极低(\(p=1\))时把投保单数从 8 推到 12。组合分散让单笔的尾部理论门槛失效,共同冲击(雨天)又保留了一部分风险厌恶的作用。
-
按题目原始的日险口径(2 元/天、超时赔 3 元、日封顶 20 元),其期望成本只有 4.5 元,远优于按单险的任何子集。当平台提供日险时,"买不买"就不再是逐单问题,而是一道"团购还是零售"的定价题。
参考文献
[1] Gurobi Optimization LLC. Gurobi Optimizer Reference Manual[Z]. 2024.
[2] Kellerer H, Pferschy U, Pisinger D. Knapsack Problems[M]. Berlin: Springer, 2004.
[3] Martello S, Toth P. Knapsack Problems: Algorithms and Computer Implementations[M]. Chichester: John Wiley & Sons, 1990.
[4] 司守奎, 孙玺菁. 数学建模算法与应用[M]. 3 版. 北京: 国防工业出版社, 2021.
复现方式:python batch_046.py;数据与结果见同目录 .csv / .json,图见 figs/

浙公网安备 33010602011771号