《独立开发者的商业指南·合同、应收与风险》6.2 保额、免赔与除外责任

保额只是分子,免赔和除外责任才是实际赔付的减项。本节用 Nord 的 E&O $500K、$10,000 免赔和 $120,000 损失算出 $110,000 赔付,拆解总限额、分项限额与年度累计限额,并把「免赔越高保费越低」换算成 0.08 次/年的盈亏平衡索赔频率。

以下情境为教学假设,人物与数字不代表经核实的真实案例。

保单上最显眼的数字是保额,最容易忽略的是免赔额和除外责任。三者一起决定一次索赔最后能赔多少:保额封顶,免赔先扣,除外责任直接把某些损失从可保范围里拿掉。只看保额,等于只看分子,不看减项。

用 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,0000%
$120,000$500,000$10,000$120,000$110,000$10,00091.7%
$500,000$500,000$10,000$500,000$490,000$10,00098.0%
$620,000$500,000$10,000$500,000$490,000$130,00079.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,5000.12 次/年8.3 年
$5,000 → $10,000$300$5,0000.06 次/年16.7 年
$10,000 → $25,000$600$15,0000.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,00010.0%
取证费用$1,000,000$150,000无$150,00015.0%
法律抗辩$1,000,000$200,000无$200,00020.0%
监管罚款$1,000,000—整体除外$00%
客户数据泄露综合$1,000,000分项合计 $450,000罚款除外$450,00045.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 投保时点与理赔流程 。

常见错误与边界

  1. 先减免赔再封顶。 正确顺序是先取 min(损失, 保额),再减免赔;顺序反了会少算赔付。
  2. 把免赔额当成最大自留。 损失超过保额时,自留 = 免赔 + 超过保额的部分,不只是免赔。
  3. 把总保额当成单项可用额度。 分项限额会把通知、取证、抗辩分别压住;总保额不等于每项都能赔到。
  4. 忽略年度累计限额。 一次大额索赔可能吃掉全年额度,后续索赔没有额度;单次限额和累计限额的风险分布不同。
  5. 只看保费节省,不算盈亏平衡频率。 免赔从 $2,500 提高到 $10,000 只省 $600,但多自留 $7,500;分界是 0.08 次/年。
  6. 把比例免赔当成固定免赔。 比例免赔随损失放大;损失越大,自留越多。
  7. 忽略免赔的计算单位。 每次索赔的免赔会重复扣,年度累计只扣一次;两种写法的年成本不同。
  8. 把除外责任当成小字。 一条除外就能把 $110,000 的赔付变成 $0;除外清单要和保额一样认真读。
  9. 把分项限额简单相加当成总保障。 分项之间可能不独立,也可能共享总限额;加法会高估可用额度。
  10. 用名义保额做风险预算。 实际赔付 = min(损失, 保额) − 免赔,再受分项限额和除外责任约束;预算要按这个公式算。

保额、免赔和除外责任,分别回答「最多赔多少」「最少不赔多少」「哪些根本不赔」。下一节把这三个数字放进时间轴:保单什么时候生效、事故什么时候发生、理赔什么时候报案,决定了这张保单到底有没有机会赔。

继续阅读

探索更多技术文章

浏览归档,发现更多关于系统设计、工具链和工程实践的内容。

全部文章 返回首页

「books」更多文章

  1. 《移动游戏产品的架构·商业化与发行工程》附录 C 商业化与发行评审清单
  2. 《移动游戏产品的架构·商业化与发行工程》附录 B 双案例商业化事实表
  3. 《移动游戏产品的架构·商业化与发行工程》附录 A 商业化与发行术语速查