以下情境为教学假设,人物与数字不代表经核实的真实案例。
保单上最显眼的数字是保额,最容易忽略的是免赔额和除外责任。三者一起决定一次索赔最后能赔多少:保额封顶,免赔先扣,除外责任直接把某些损失从可保范围里拿掉。只看保额,等于只看分子,不看减项。
用 Nord 的 E&O 举例:保额 $500,000,免赔 $10,000,一次 $120,000 的索赔,赔付是 $110,000;如果损失是 $620,000,赔付是 $490,000,自留 $130,000。同一个保额,损失落在不同区间,赔付公式的不同部分起作用。这一节把这三个数字放进一个公式,算出赔付、自留和缺口。
这一节不推荐保单,也不判断条款是否可执行;保费与免赔是教学假设。它只回答一个财务问题:保单上写的保额,最后能变成多少现金。
赔付公式:先封顶,再扣免赔
赔付的计算顺序是固定的:
赔付 = max(0, min(损失, 保额) − 免赔额)
自留 = 损失 − 赔付
先取损失和保额的较小值,再减免赔额,最后不低于零。顺序不能反:如果先减免赔再封顶,损失超过保额时,赔付会变成「保额 − 免赔」,等价于让免赔额从保额里再扣一次;实际条款通常不是这样写的。正确的读法是:保额是保险公司最多赔多少,免赔是保险公司最少不赔多少。
| 损失 | 保额 | 免赔 | min(损失, 保额) | 赔付 | 自留 | 赔付 ÷ 损失 |
|---|---|---|---|---|---|---|
| $6,000 | $500,000 | $10,000 | $6,000 | $0 | $6,000 | 0% |
| $120,000 | $500,000 | $10,000 | $120,000 | $110,000 | $10,000 | 91.7% |
| $500,000 | $500,000 | $10,000 | $500,000 | $490,000 | $10,000 | 98.0% |
| $620,000 | $500,000 | $10,000 | $500,000 | $490,000 | $130,000 | 79.0% |
第一行说明免赔额是门槛:损失低于免赔,保险公司不赔,但保费和处理成本照付。第二行是标准情形:赔付 = 120,000 − 10,000 = 110,000。第三行说明损失刚好等于保额时,免赔仍然要扣。第四行说明超过保额的部分全部自留:赔付停在 490,000,自留从 10,000 跳到 130,000。
这张表最重要的不是具体金额,而是自留这一列。自留不是只有免赔额;损失超过保额时,自留 = 免赔 + 超过保额的部分。很多人把「免赔 $10,000」理解成「最多自留 $10,000」,这只在损失不超过保额时成立。
把四个区间画成一条线,会更容易记住:
| 损失区间 | 赔付由什么决定 | 自留由什么决定 |
|---|---|---|
| 0 到免赔额 | 不赔 | 全部损失 |
| 免赔额到保额 | 损失 − 免赔 | 免赔额 |
| 超过保额 | 保额 − 免赔 | 免赔额 + 超过保额的部分 |
| 除外责任内 | 不赔 | 全部损失 + 保费 + 处理成本 |
这条分段线说明,免赔额和保额不是两个独立的数字,它们把损失切成三段:全自留段、保险段、超限段。除外责任则是第四段:不在赔付线上,直接归零。做风险预算时,要先知道自己最可能落在哪一段,再看保单在该段的赔付。
对 Nord,$120,000 的损失落在第二段,赔付 91.7%,自留 10,000;对 LedgerLite,一次 $1,500,000 的数据事件落在第三段,赔付停在 $990,000($1,000,000 − $10,000),自留 $510,000。同一张保单,损失越大,自留占比越高;这不是条款变差,而是封顶机制在起作用。
保额:总限额、单次限额与分项限额
保额有三种常见写法:单次限额(per claim)、年度累计限额(aggregate)、分项限额(sublimit)。单次限额是每次索赔的上限;年度累计限额是一年内所有索赔加起来的上限;分项限额是某个具体项目的上限,比如通知费用、取证费用、法律抗辩。
三者同时存在时,实际可用额度是最小的那个。一张网络安全险写「总保额 $1,000,000,通知费用分项限额 $100,000,免赔 $10,000」,一次 $120,000 的通知费用索赔,计算不是 120,000 − 10,000 = 110,000,而是先被分项限额压到 100,000,再减 10,000,赔付 90,000,自留 30,000。
| 限额层次 | 写法 | 数值 | 对 $120,000 通知费用索赔的影响 |
|---|---|---|---|
| 总保额 | aggregate | $1,000,000 | 不构成约束 |
| 分项限额 | notification sublimit | $100,000 | 把可赔损失压到 $100,000 |
| 免赔额 | per claim | $10,000 | 再扣 $10,000 |
| 实际赔付 | $90,000 | 自留 $30,000 |
这张表说明,「保额 $1,000,000」和「这次能赔 $1,000,000」是两件事。分项限额越高、免赔越低,名义保额才越接近实际可用额度。读保单时,先找总限额,再找分项限额,最后找免赔;三个数字都找到,才算读完保额条款。
年度累计限额还有一个时间维度:一次大额索赔可能吃掉全年额度,后面的索赔就没有额度了。LedgerLite 的 $1,000,000 如果是年度累计,第一次 $900,000 的索赔之后,全年只剩 $110,000 额度;如果第二次索赔 $120,000 发生在同一年,赔付会被剩余额度压住。单次限额没有这个问题,但单次限额通常更低。两种写法的取舍,是把风险分散到多次,还是集中在一次。
| 限额写法 | 第一次索赔 $900,000 | 同年第二次索赔 $120,000 | 全年总赔付 |
|---|---|---|---|
| 单次限额 $1,000,000 | 赔 $890,000 | 赔 $110,000 | $1,000,000 |
| 年度累计 $1,000,000 | 赔 $890,000 | 剩 $110,000 额度,再扣 $10,000,赔 $100,000 | $990,000 |
| 分项限额 $100,000(通知) | 赔 $90,000 | 赔 $90,000(若分项独立) | $180,000 |
这张表里的第三行是另一种结构:分项限额可能独立于总限额,也可能共享总限额。独立时分项可以重复使用,共享时会被总限额压住。两种结构的实际赔付差别很大,读保单时必须确认分项和总限额的关系。
保额还会受到「已赔付金额」和「已发生但未赔付金额」的影响。年度累计限额通常按已赔付加已预留计算;一次索赔还在定损中,额度已经被占用,后面的索赔可能暂时赔不出来。对现金流紧张的公司,这个时间差本身就是风险。
免赔额:自留多少,保费降多少
免赔额是投保人自己承担的第一段损失。它有三个作用:过滤小额索赔、降低保费、把理赔处理成本留在投保人一侧。免赔额越高,保费通常越低,但一次索赔的自留越高。
以 Nord 的 E&O 为例,假设四档免赔与保费如下(教学假设):
| 免赔额 | 年保费 | 相对 $2,500 档的保费节省 | 一次 $120,000 索赔的自留 | 年成本(0 次索赔) | 年成本(0.2 次索赔) |
|---|---|---|---|---|---|
| $2,500 | $5,400 | — | $2,500 | $5,400 | $5,900 |
| $5,000 | $5,100 | $300 | $5,000 | $5,100 | $6,100 |
| $10,000 | $4,800 | $600 | $10,000 | $4,800 | $6,800 |
| $25,000 | $4,200 | $1,200 | $25,000 | $4,200 | $9,200 |
「年成本(0.2 次索赔)」是教学假设下的期望值:年保费 + 0.2 × 免赔额。它假设每次索赔都超过免赔额,且只算免赔,不算保费之外的处理成本。0.2 次/年等于五年一次索赔;这个频率对一人公司是偏高的假设,用来展示方向,不是预测。
在这组假设下,0 次索赔时高免赔最便宜;0.2 次索赔时低免赔最便宜。两者之间的分界点是盈亏平衡索赔频率:
盈亏平衡索赔频率 = 保费节省 ÷ 免赔额增加
把 $2,500 档和 $10,000 档相比:保费节省 $600,免赔额增加 $7,500,盈亏平衡频率 = 600 ÷ 7,500 = 0.08 次/年,也就是平均 12.5 年一次索赔。如果实际索赔频率高于 0.08 次/年,低免赔更划算;低于 0.08 次/年,高免赔更划算。
| 两档比较 | 保费节省 | 免赔额增加 | 盈亏平衡频率 | 相当于几年一次索赔 |
|---|---|---|---|---|
| $2,500 → $5,000 | $300 | $2,500 | 0.12 次/年 | 8.3 年 |
| $5,000 → $10,000 | $300 | $5,000 | 0.06 次/年 | 16.7 年 |
| $10,000 → $25,000 | $600 | $15,000 | 0.04 次/年 | 25.0 年 |
这张表把「免赔额越高保费越低」翻译成一个可比较的数:你是在用更少的保费换更少的理赔次数假设。如果你认为自己十年都不会有一次超过免赔额的索赔,高免赔在算术上更便宜;如果你不确定,免赔额就是你在为确定性付钱。本节不判断哪一档更适合谁,只把取舍写成数字。
免赔额还有两个容易忽略的细节。第一,免赔可能是每次索赔或每年累计;每次索赔的免赔在多次小额索赔时会重复扣,年度累计只扣一次。第二,免赔可能是固定金额或损失的一定比例;比例免赔会随损失放大,损失越大,自留越多。读免赔条款时,要同时看计算单位和计算基数。
| 免赔写法 | 一次 $30,000 索赔 | 同年第二次 $30,000 索赔 | 全年自留 |
|---|---|---|---|
| 每次索赔 $10,000 | 自留 $10,000 | 再自留 $10,000 | $20,000 |
| 年度累计 $10,000 | 自留 $10,000 | 自留 $0 | $10,000 |
| 比例 10%,下限 $5,000 | 自留 $5,000(10% = $3,000,低于下限) | 自留 $5,000 | $10,000 |
| 比例 20%,无下限 | 自留 $6,000 | 自留 $6,000 | $12,000 |
这张表说明,同样是「$10,000 免赔」,每次索赔和年度累计的年自留可以差一倍。比例免赔更隐蔽:损失小的时候有下限保护,损失大的时候自留按比例放大。读免赔条款时,不能只看那个最大的数字。
免赔额还会影响理赔意愿。一次损失 $8,000、免赔 $10,000,保险公司不赔,但投保人仍然要花时间举证、报案、配合定损;理性的选择可能是不报。这个选择本身有财务后果:不报不会降低保费,但会消耗内部记录和客户关系。免赔额的设计,某种程度上是在决定「哪些事故值得进入理赔流程」。
除外责任:把可保损失变成全自留
除外责任是保单里最像法律条款的部分,也是财务后果最大的部分。一条除外责任的作用,等价于把免赔额提高到无限大:某类损失一旦被除外,保险公司赔付为零,全部自留。
常见除外包括:投保前已知的索赔或已知的违约、追溯日之前的行为、合同约定的违约金与罚款、知识产权侵权、未加密数据的泄露、以及部分司法辖区内的监管罚款。不同保单的措辞不同,这里只列常见类型,不判断具体保单。
| 除外类型 | 典型写法 | 对 $120,000 损失的影响 | 自留变化 |
|---|---|---|---|
| 已知索赔 | known claims | 不赔 | $10,000 → $120,000 |
| 追溯日前行为 | prior acts | 不赔 | $10,000 → $120,000 |
| 合同违约金 | contractual penalties | 不赔 | $10,000 → $120,000 |
| 知识产权侵权 | IP infringement | 不赔或需加保 | $10,000 → $120,000 |
| 未加密数据 | unencrypted data | 不赔 | $10,000 → $120,000 |
这张表的自留变化是从「有保险且索赔在范围内」的 $10,000 免赔,变成「除外」的 $120,000 全自留;差额 $110,000,正好是原本的赔付金额。一条除外责任不需要写得很长,就能把一张 $500,000 的保单在这类事故上变成一张 $0 的保单。
除外责任还会和分项限额叠加。一次数据泄露可能同时触发通知费用、取证费用、法律抗辩三个分项,每个分项各有上限,而监管罚款被整体除外。把三项分项限额加起来,可能远低于总保额;把除外项加回去,可能又占掉一半损失。做风险预算时,不能只用总保额乘以覆盖比例,要按事故类型拆开算。
| 事故类型 | 总保额 | 分项限额 | 除外 | 可赔上限 | 相对总保额 |
|---|---|---|---|---|---|
| 通知费用 | $1,000,000 | $100,000 | 无 | $100,000 | 10.0% |
| 取证费用 | $1,000,000 | $150,000 | 无 | $150,000 | 15.0% |
| 法律抗辩 | $1,000,000 | $200,000 | 无 | $200,000 | 20.0% |
| 监管罚款 | $1,000,000 | — | 整体除外 | $0 | 0% |
| 客户数据泄露综合 | $1,000,000 | 分项合计 $450,000 | 罚款除外 | $450,000 | 45.0% |
这张表说明,总保额 $1,000,000 的保单,在一次综合数据事件里可能只有 $450,000 是可用的,剩下的 $550,000 要么被分项限额挡住,要么被除外责任拿掉。名义覆盖率是 100%,实际可用率是 45%。这不是保单「骗人」,而是保额、分项和除外共同作用的结果;做预算时要把三者一起算。
除外责任还可能通过「定义」进入保单。比如「数据泄露」的定义只包括电子数据,不包括纸质文件;「专业服务」的定义只包括咨询服务,不包括软件许可;「雇员」的定义只包括正式员工,不包括外包。定义窄一点,除外就多一点;定义宽一点,保费就高一点。读保单时,定义和除外清单要一起读。
代码:赔付与缺口
下面的 coverage.ts 把公式固化成两个函数。settleClaim 接受损失、保额和免赔,返回封顶损失、赔付、自留和赔付率;compareDeductibles 接受两档免赔与保费,返回保费节省、免赔增加和盈亏平衡索赔频率。金额用整数美分,比率用基点。
// file: src/contract/coverage.ts
// tier: L1
// verify: node --test test/contract/coverage.test.ts
import { type Cents } from "../core/money.ts";
import { type Bps, divide } from "../core/rate.ts";
import { type Result, fail, ok } from "../core/result.ts";
export type CoverageInput = {
lossCents: Cents;
limitCents: Cents;
deductibleCents: Cents;
};
export type CoverageResult = {
lossCents: Cents;
limitCents: Cents;
deductibleCents: Cents;
cappedLossCents: Cents;
payoutCents: Cents;
retainedCents: Cents;
recoveryBps: Bps;
};
export type DeductibleOption = {
deductibleCents: Cents;
annualPremiumCents: Cents;
};
export type DeductibleTradeoff = {
lowerDeductibleCents: Cents;
higherDeductibleCents: Cents;
extraDeductibleCents: Cents;
premiumSavingCents: Cents;
breakEvenClaimsBps: Bps;
};
function validAmount(value: Cents): boolean {
return Number.isInteger(value) && value >= 0;
}
/**
* The limit caps the loss, then the deductible is subtracted from the capped
* amount. The order matters: a loss above the limit cannot use the deductible
* to climb out of the cap. The retained amount is everything the policy did
* not pay, including both the deductible and the excess above the limit.
*/
export function settleClaim(input: CoverageInput): Result<CoverageResult> {
if (!validAmount(input.lossCents)) {
return fail("loss must be a non-negative integer amount in cents");
}
if (!validAmount(input.limitCents)) {
return fail("limit must be a non-negative integer amount in cents");
}
if (!validAmount(input.deductibleCents)) {
return fail("deductible must be a non-negative integer amount in cents");
}
const cappedLossCents = Math.min(input.lossCents, input.limitCents);
const payoutCents = Math.max(0, cappedLossCents - input.deductibleCents);
const retainedCents = input.lossCents - payoutCents;
return ok({
lossCents: input.lossCents,
limitCents: input.limitCents,
deductibleCents: input.deductibleCents,
cappedLossCents,
payoutCents,
retainedCents,
recoveryBps: divide(payoutCents, input.lossCents),
});
}
/**
* A higher deductible buys a lower premium. The saving is only worth it when
* claims are rarer than the break-even frequency: premium saving divided by
* the extra deductible, expressed as claims per year in basis points.
*/
export function compareDeductibles(
lower: DeductibleOption,
higher: DeductibleOption,
): Result<DeductibleTradeoff> {
if (
!validAmount(lower.deductibleCents) ||
!validAmount(lower.annualPremiumCents) ||
!validAmount(higher.deductibleCents) ||
!validAmount(higher.annualPremiumCents)
) {
return fail("deductible and premium must be non-negative integer amounts");
}
if (higher.deductibleCents < lower.deductibleCents) {
return fail("higher option must have the larger deductible");
}
if (higher.annualPremiumCents > lower.annualPremiumCents) {
return fail("higher deductible must not cost more premium");
}
const extraDeductibleCents =
higher.deductibleCents - lower.deductibleCents;
const premiumSavingCents =
lower.annualPremiumCents - higher.annualPremiumCents;
const breakEvenClaimsBps =
extraDeductibleCents === 0
? 0
: Math.round((premiumSavingCents * 10000) / extraDeductibleCents);
return ok({
lowerDeductibleCents: lower.deductibleCents,
higherDeductibleCents: higher.deductibleCents,
extraDeductibleCents,
premiumSavingCents,
breakEvenClaimsBps,
});
}
代码里有三个口径值得注意。第一,cappedLossCents 先取 min(损失, 保额),再减免赔;顺序写反会得到不同的数。第二,retainedCents 是「损失 − 赔付」,包含免赔和超过保额的部分,不只是免赔。第三,breakEvenClaimsBps 用「保费节省 ÷ 免赔增加」乘以 10000,返回的是「每年索赔次数 × 10000」;800 基点等于 0.08 次/年。
compareDeductibles 会拒绝「高免赔却更贵」和「高免赔反而更低」的输入。这两个校验不是数学洁癖:现实报价里偶尔会出现高免赔但保费不降的组合,那通常意味着保单结构不同,不能直接按同一张表比较。
代码不处理分项限额和除外责任,因为这两项不是纯算术:分项限额是「取小」,除外责任是「归零」,两者都要先按事故类型分类。把分类做完,再把每一类的可赔金额传进 settleClaim,才是完整的赔付计算。代码只覆盖公式本身,不替代保单阅读。
小结
- 赔付 = max(0, min(损失, 保额) − 免赔额);自留 = 损失 − 赔付。
- $120,000 损失、$10,000 免赔、$500,000 保额,赔付 $110,000,自留 $10,000。
- $620,000 损失时,赔付停在 $490,000,自留 $130,000;超过保额的部分全部自留。
- 保额有总限额、单次限额、分项限额三层;实际可用额度是三层里最小的那个。
- 免赔额越高,保费越低;盈亏平衡频率 = 保费节省 ÷ 免赔额增加,$2,500 到 $10,000 的分界是 0.08 次/年。
- 除外责任等价于把免赔额提高到无限大;一条除外就能把 $110,000 的赔付变成 $0。
- 只看保额会高估保障;保额、免赔、除外责任三个数字一起看,才是实际赔付。
阅读导航:上一节:6.1 E&O、网络安全险与雇主责任 · 下一节:6.3 投保时点与理赔流程 。
常见错误与边界
- 先减免赔再封顶。 正确顺序是先取 min(损失, 保额),再减免赔;顺序反了会少算赔付。
- 把免赔额当成最大自留。 损失超过保额时,自留 = 免赔 + 超过保额的部分,不只是免赔。
- 把总保额当成单项可用额度。 分项限额会把通知、取证、抗辩分别压住;总保额不等于每项都能赔到。
- 忽略年度累计限额。 一次大额索赔可能吃掉全年额度,后续索赔没有额度;单次限额和累计限额的风险分布不同。
- 只看保费节省,不算盈亏平衡频率。 免赔从 $2,500 提高到 $10,000 只省 $600,但多自留 $7,500;分界是 0.08 次/年。
- 把比例免赔当成固定免赔。 比例免赔随损失放大;损失越大,自留越多。
- 忽略免赔的计算单位。 每次索赔的免赔会重复扣,年度累计只扣一次;两种写法的年成本不同。
- 把除外责任当成小字。 一条除外就能把 $110,000 的赔付变成 $0;除外清单要和保额一样认真读。
- 把分项限额简单相加当成总保障。 分项之间可能不独立,也可能共享总限额;加法会高估可用额度。
- 用名义保额做风险预算。 实际赔付 = min(损失, 保额) − 免赔,再受分项限额和除外责任约束;预算要按这个公式算。
保额、免赔和除外责任,分别回答「最多赔多少」「最少不赔多少」「哪些根本不赔」。下一节把这三个数字放进时间轴:保单什么时候生效、事故什么时候发生、理赔什么时候报案,决定了这张保单到底有没有机会赔。
继续阅读
探索更多技术文章
浏览归档,发现更多关于系统设计、工具链和工程实践的内容。