案例 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 目标函数

期望口径下逐单独立,总成本可以直接拆开,也可以写成"期望赔付减保费":

\[\min\ Z_{1}=\sum_{i=1}^{N}\Big[p\,z_{i}+(f-D\,z_{i})\,\bar{q}_{i}\Big], \qquad \bar{q}_{i}=\frac{1}{M}\sum_{s=1}^{M}\ell_{is}\tag{1}\]

风险口径换成最差 \((1-\beta)\) 尾部的条件期望:

\[\min\ Z_{2}=\eta+\frac{1}{(1-\beta)M}\sum_{s=1}^{M}u_{s}\tag{2} \]

2.3 约束条件

第 \(s\) 个情景的成本对 \(z\) 线性,把常数项提出来后只剩 12 项:

\[C_{s}=f\sum_{i=1}^{N}\ell_{is}+\sum_{i=1}^{N}\big(p-D\,\ell_{is}\big)z_{i},\qquad \forall s\tag{3} \]

CVaR 的线性化靠两条不等式,\(u_{s}\) 在最小化下自动取到正部:

\[u_{s}\ge C_{s}-\eta,\qquad u_{s}\ge 0,\qquad \forall s\tag{4} \]

决策变量是纯 0-1:

\[z_{i}\in\{0,1\},\qquad i=1,\dots,N\tag{5} \]

临界概率由式 (1) 的一阶条件得到——买与不买的期望成本相等时 \(p=D\,q\):

\[q^{*}=\frac{p}{D}\tag{6} \]

把式 (2) 的尾部期望对单笔展开,一条独立风险的 CVaR 等于 \(a\min\{1,q/(1-\beta)\}\),代入得风险厌恶下的门槛:

\[q^{*}_{\beta}=(1-\beta)\,\frac{p}{D}\tag{7} \]

式 (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 结论

  1. 期望口径的门槛是 \(p/D=0.667\),只有超时率高于它的 3 单值得投保,一天省 0.86 元;低于门槛的单,保费必然吃掉全部期望赔付。

  2. 风险厌恶把门槛降到 \((1-\beta)p/D\),\(\beta=0.90\) 时理论值 0.067;实证最优集合是 5 单,CVaR 从 26.2 元降到 22.6 元,代价是期望成本多 0.90 元。

  3. 全买是最差的策略:期望 26.2 元、CVaR 27.7 元,两项都垫底。保险的边际价值随投保单数递减,越过门槛就变负。

  4. 二维热图说明保费与风险厌恶并不等价:保费是主因,\(\beta\) 只在保费极低(\(p=1\))时把投保单数从 8 推到 12。组合分散让单笔的尾部理论门槛失效,共同冲击(雨天)又保留了一部分风险厌恶的作用。

  5. 按题目原始的日险口径(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/

posted @ 2026-11-11 18:02  小青蛙电气  阅读(1)  评论(0)    收藏  举报