三个参数
第1章 赔付率只有3.7%
贺峥第一次注意到那款产品,是因为一个不该出现的数字。
那是下午四点十七分,办公室里的人已经走了一半。精算部在三十七楼,落地窗外是城市的天际线,灰蒙蒙的,像被谁蒙了一层毛玻璃。
贺峥没抬头。
他的面前摆着三样东西:一台显示器,一本翻到第六十三页的《精算学》,还有一台卡西欧老式计算器。计算器是九十年代的型号,灰黑色外壳,液晶屏泛着幽绿的光。公司里没人用这种东西,实习生连Excel都用不熟,更别说手算。
但贺峥习惯手算。
倒不是他守旧。是有些数,只有亲手按过一遍,才知道它到底对不对。
事情是这样的。上午十点,部门例会上,风控部丢过来一份复核需求。泰安人寿今年卖得最好的一款产品“康宁终身重大疾病保险”,年度赔付率复核。
按流程,每款产品在上市满一年后,精算部要出一份经验分析报告。看看实际赔付和定价假设差了多少,需不需要调整准备金。
正常的活儿,例行公事。
贺峥本来不该接这个任务。他手上有两个新产品的定价项目,排期排到了下个月。但老周——精算部的老前辈周明德——在会上把文件推到了他面前。
“小贺,你来。”
老周的语气很淡,像随口一说。但贺峥注意到,他没看自己。
这是第一条反常。
老周是公司里资历最深的精算师,今年五十七岁,头发白了一半,但脑子一点没糊。他带过三任总精算师,按理说这种复核的活轮不到他亲自安排。更轮不到指定人。
贺峥没问为什么,接了。
他就是这样的人。别人觉得他闷,话少,不合群。但他在心里算了三遍:风控部主动要求复核康宁,不正常。康宁是公司的明星产品,去年卖了四十七个亿,今年前两个季度又做了三十亿。这种产品,风控部通常睁一只眼闭一只眼——赚这么多钱,谁复核?
第二条反常。
贺峥打开系统,调出康宁的产品档案。
屏幕上的数据一行一行铺开。产品名称、上市日期、保障期限、缴费方式、定价利率……他的目光一行行往下走,像在医院看化验单。数字本身不会说谎,但写数字的人会。
他停在了“年度赔付率”那一栏。
3.7%。
贺峥的手指停在键盘上。
他看了三秒。然后拿起计算器,手动按了一遍。
3.7%。
没按错。
重疾险的行业平均赔付率,大概在30%到45%之间。也就是说,收进来一百块保费,行业平均水平是赔出去三十到四十五块。剩下的才是费用、利润和准备金。
康宁赔3.7%。
这不是偏低,这是离谱。
贺峥往后靠进椅背,盯着天花板想了大概半分钟。他的思路很清晰:赔付率这么低,只有三种可能
第一,产品设计极度保守,疾病定义极其狭窄,导致大量理赔申请被拒。
第二,定价假设严重偏离实际,发病率被大幅低估。
第三,数据造假。
他倾向于第二种。第一种需要产品部配合设计极窄条款,第三种风险太大,不太可能。第二种是最“聪明”的做法——你不需要造假,你只需要用一个不那么准确的假设,利润就自己长出来了。
贺峥打开了定价假设表。
第一页,第一行:发病率基准——2019年行业经验表(中国人身保险业重大疾病经验发生率表,2013-2019)。
他盯着那行字看了很久。
2019年。
现在是2024年。
五年前的发病率数据,还在用。
这不是疏忽。没人会“忘记”更新发病率表。中国精算师协会每三到五年更新一次经验表,这是行业基础数据,相当于天气预报的温度计。你不能用五年前的温度计来报今天的天气。
贺峥打开抽屉,抽出一份纸质文件。那是他上个月打印的中国精算师协会最新版重大疾病经验发生率表(2021-2023年编制)。他把两张纸并排放在桌上。
同样年龄、同样性别、同样保额。
新表的发病率,比2019年表平均高出23.6%。
在某些年龄段——比如三十到三十五岁女性——高出将近40%。
贺峥把两张纸翻过来,拿起笔,在2019年表的背面写了三个字:
太低了。
他没急着下结论。3.7%的赔付率虽然异常,但单一指标说明不了全部。也许是今年的数据还没沉淀,理赔有滞后性。也许康宁的客户群体确实更健康——虽然这个可能性微乎其微。
他需要更多数据。
贺峥打开数据库,调出了康宁的全部理赔记录。四十七亿的保费,对应的理赔支出。
他按了几下计算器。
“不对。”
声音很轻,但办公室里剩下的两三个人都看了过来。
贺峥没注意到。他的全部注意力都在屏幕上那串数字上。
理赔支出是对的——至少和3.7%的赔付率对得上。问题不在这里。
问题在于拒赔率。
康宁今年的理赔申请总数是8427件,其中赔付3126件,拒赔5301件。拒赔率62.9%。
重疾险的正常拒赔率在15%到25%之间。超过30%就极其罕见了,那通常是产品有严重争议,被投诉到监管的程度。
62.9%。
这个数字像一根钉子,钉在贺峥的视网膜上。
他翻看了拒赔原因的分类。排在第一位的是“不符合疾病定义”3814件,占拒赔总数的71.9%。
“不符合疾病定义。”
贺峥念出这几个字,声音很轻。但他知道这意味着什么。
重疾险的“重大疾病”不是医生说了算。不是你确诊了癌症就能赔。每一款产品都有一份几十页的疾病定义清单,精确到病理分级、手术方式、指标阈值。差一个指标,就可能被拒赔。
比如,同样是做了冠状动脉介入手术,开胸搭桥算重疾,微创的不算。同样是甲状腺癌,超过特定尺寸算,没超过就不算。
这些定义在行业内被称为“缝隙”。客户的病情掉进缝隙里,就赔不了。
贺峥打开康宁的条款文档,翻到疾病定义部分。他要看的是——这些缝隙,是“行业常规水平”,还是被人刻意挖深了。
他的目光落在了“冠状动脉搭桥术”这一条上。
标准重疾定义是:指为治疗严重的冠心病,实际实施了开胸进行的冠状动脉血管旁路移植手术。
康宁的条款写的是:指为治疗严重的冠心病,实际实施了开胸进行的冠状动脉血管旁路移植手术。且不包括微创冠状动脉介入术、经皮冠状动脉成形术、支架植入术等其他非开胸治疗方式。
后面那一句附加排除,是康宁独有的。
贺峥翻了三款同类产品的条款做对比。同类产品的“冠状动脉搭桥术”定义,只写了标准部分,没有附加排除。因为标准定义本身已经限定了“开胸”,“微创”自然不在范围内,不需要额外说明。
额外说明什么?
说明康宁的产品经理,或者说,写这个条款的人,非常担心有人钻空子。担心到要把每一扇门都关死。
担心到不正常。
贺峥继续往下翻。
“恶性肿瘤”排除早期甲状腺癌(TNM分期为I期或更轻)行业常规。
“急性心肌梗塞”要求同时满足至少三项诊断标准——比行业标准多一项。
“脑中风后遗症”要求确诊180天后仍存在永久不可逆的功能障碍——行业标准是180天,但康宁额外加了“且日常生活活动能力评定不超过3分”。
每一条,都比行业标准窄一圈。
单独看,每一条都可以解释为“审慎定价”。但放在一起,就像一栋房子的地基被一圈一圈地挖空——你说不清是哪一铲挖塌的,但整栋楼确实在倾斜。
贺峥靠回椅背,摘下降噪耳机。
办公室里安静得只剩空调的嗡嗡声。
他想起了一件事。三年前,他写过一份产品模型的框架代码。那是他刚升高级精算师的时候,做的一个开源定价模型,初衷是让中小保险公司也能用上规范的定价工具。他把代码放在了公司内部的共享平台上。
后来那个项目不了了之,公司采购了商业定价软件,他的模型被遗忘了。
但此刻,看着康宁的条款结构和定价逻辑,贺峥有一种非常奇怪的感觉
这个产品的骨架,像他写的那个模型。
不是一模一样。但骨架的排列方式,变量的命名习惯,假设的分层逻辑……像一个人换了个发型,但你还是认得出他的脸。
贺峥打开系统日志。
他要看的是康宁产品模型的原始文件和修改记录。
系统日志显示:康宁的核心定价模型创建于2021年3月,创建者——贺峥。
最后修改于2022年8月。
修改者
方尽。
方尽。
贺峥念出这个名字的时候,窗外的天已经全黑了。三十七楼往下看,城市的灯光像一片发光的海洋。
他拿起手机,翻到通讯录最底下。
方尽。大学同学。同届毕业,同一个导师。贺峥去了产品定价方向,方尽去了资本管理方向。后来方尽跳槽到了泰安,三年时间做到了总精算师——公司历史上最年轻的。
最后一次见面是半年前,行业精算师年会。方尽穿着合身的深灰西装,端着一杯威士忌走到他面前。
“贺峥,”他说,“你写的模型,我帮你赚了钱。”
当时贺峥以为他在说客气话。方尽一直这样,说话半真半假,你永远分不清哪句是恭维,哪句是炫耀。
现在贺峥不太确定了。
他盯着屏幕上的名字,手指在桌面上轻轻敲了两下。
降噪耳机挂在脖子上,收音机没开。但他的耳朵里好像有什么东西在响——很轻,很远的,像一列火车从地平线那头开过来。
贺峥关掉系统日志,把两张经验表折好,放进双肩包侧袋。
他打开计算器,按了几个键。
3.7%。
62.9%。
23.6%。
三个数字排在绿色的屏幕上,像三颗钉子。
他没有删掉它们。他把计算器翻过来,合上盖子,塞进包里。
走出办公楼的时候,天上飘起了很小的雨。贺峥没打伞,沿着街道往地铁站走。浅蓝衬衫的肩膀慢慢湿了一小块。
他脑子里还在转那个模型的骨架。
如果是方尽改的,改了什么?改了多少?是只改了康宁,还是所有产品都改了?
最重要的
为什么要改?
地铁站口,贺峥停下来,给母亲发了一条消息。
“妈,你们社区最近有没有人买泰安的保险?”
消息显示已读。母亲回得很慢,大概过了四分钟。
“怎么了?我这边好几个阿姨买了泰安的重疾险,说是社区团购价。”
贺峥站在地铁站的自动扶梯上,身后的城市灯光像一条倒流的河。
他低头看着屏幕上的那行字,拇指悬在键盘上方,停了很久。
然后他打了一行字:
“让他们先别急着买。等我看看。”
发完这条消息,他把手机塞回口袋,戴上降噪耳机,打开了老式收音机。
收音机里是沙沙的白噪音。没有节目,没有音乐,什么都没有。
但贺峥听着那片噪音,觉得比任何时候都清醒。
一个赔付率3.7%的产品。
一个62.9%的拒赔率。
一份用五年前数据的定价假设。
一套比行业标准窄得多的疾病定义。
一个他亲手写的模型,被大学同学改过。
这些碎片在贺峥的脑子里旋转、碰撞,像一堆散落的积木。他还看不出最终的图案。但积木的尖角硌着他的太阳穴,很疼,很真实。
他不知道的是,就在他走进地铁车厢的那一刻,三十七楼精算部的某个办公室里,一盏灯还亮着。
灯下,一张打印出来的系统日志,被人用红笔在“修改者:方尽”那一行的旁边,画了一个小小的圈。
第2章 五年前的天气
贺峥的家在城西一个老小区里。九十年代建的单位房,六层没电梯,楼道里永远有一股潮湿的拖把味儿。他住在四楼,门牌号402。
钥匙插进锁孔的时候,他听到了收音机的声音。
不是他自己的收音机。是他家的那台老式收音机——母亲林淑芳的。她用收音机听戏曲频道,音量开得很大,隔着一扇门都能听见咿咿呀呀的唱腔。
贺峥推开门。
“妈。”
“回来了?”母亲从厨房探出头,围裙上沾着面粉,“今天怎么这么早?”
“正常时间。”
“你以前这个点还在公司算数呢。”母亲笑了一下,转身回去擀面,“我蒸了馒头,你带两个走。”
贺峥把双肩包放在沙发上,坐下来。计算器从包里滑出来一半,他顺手推回去。
客厅很小,六十多平米的两居室。家具是十年前的样式,沙发套着格子布罩,茶几上摆着一个搪瓷茶壶。墙上挂着一幅字,是贺峥十岁时写的“天道酬勤”,笔画歪歪扭扭,但母亲一直没摘。
“妈,”他说,“你上次说社区有人买泰安的重疾险?”
“嗯,好几个人了。”母亲在厨房里和面,声音混着水声,“说是泰安的业务员来社区做活动,团购价,比外面便宜两成。王阿姨第一个买的,回来跟我们说可划算了。”
“王阿姨多大?”
“六十二。”
贺峥沉默了三秒。
“她买的是终身型的?”
“对,每年交一万二,交二十年。”母亲从厨房探出头,“怎么了?有什么问题吗?”
“没什么。”贺峥站起身,走到厨房门口,“就是问问。泰安的保险还行,但老年人买终身重疾险……性价比不高。妈,你别买啊。”
“我不买。”母亲笑,“我一个月三千块工资,哪来的钱买保险。我就是劝别人别乱买。”
她顿了顿,用沾着面粉的手拍了拍围裙。
“你算你的,我劝我的。”
这是她的口头禅。贺峥从小听到大。母亲做社区护工二十年,照顾过上百个老人,见过太多人被人忽悠着买了根本不需要的东西。保险、保健品、理疗床……她劝退的保险单子,加起来可能有几十万。
贺峥以前觉得母亲多管闲事。后来他做了精算师,才发现母亲凭直觉判断的东西,和他在Excel里算出来的结论,往往是一致的。
直觉是经验的结晶。精算是数据的表达。殊途同归。
“王阿姨买的那款,”贺峥说,“叫什么名字?”
“康……康什么宁?”
贺峥的手在门框上停了一下。
“康宁终身重大疾病保险?”
“对,就是这个。”
他没有接话。厨房里的面机嗡嗡地转着,收音机里的戏曲换了一折,咿呀声忽然变得很远。
贺峥回到客厅,坐在沙发上,把计算器拿出来,打开。绿色的屏幕亮了。他按了几下,调出昨晚存的那三个数字。
3.7。
62.9。
23.6。
他把计算器翻过来,盯着背面的电池盖看了很久。
“吃饭了。”母亲端着一盘馒头出来。
贺峥把计算器塞回包里。
第二天早上,贺峥七点四十分到公司。比平时晚了二十分钟——他昨晚失眠,凌晨三点才睡着。
不是因为母亲的消息。是因为那个模型的骨架。
他坐下来,打开电脑,重新调出康宁的定价模型。这一次,他没看假设表,没看条款,没看理赔数据。他直接打开了源代码。
代码是Python写的,注释是中文,风格干净,变量命名规范。一个外行人看不懂的东西,但贺峥只看前二十行,就知道是谁写的。
他认得这个写法。
不是因为代码里有什么签名或者标记。是因为方尽的编码习惯——他把所有浮点数的精度都设成Decimal而不是float。这在精算计算里是好习惯,因为float的二进制浮点误差在长周期现金流计算中会被放大。但大多数精算师嫌麻烦,直接用float。
方尽是少数几个坚持用Decimal的人。
贺峥也是。
这段代码里到处都是Decimal的痕迹。精确到小数点后六位的利率计算,精确的分期折现函数,精确的周期边界处理……这不是一个“改了几行参数”的人能写出来的。这是从头构建的。
但架构
贺峥把代码往上翻,翻到最开始的框架定义部分。
class PricingModel:
def __init__(self, product_name, base_assumptions):
self.product_name = product_name
self.assumptions = base_assumptions
self.cashflows = {}
self.reserves = {}
类名、方法名、参数顺序——和他三年前写的那套开源模型一模一样。连变量命名习惯都一样:product_name用下划线不用驼峰,assumptions放在第二个参数位置而不是第三个,cashflows和reserves用字典而不是列表。
这些不是行业标准。这是个人习惯。
就像一个人换了衣服换了发型换了声音,但你看到他的笔迹,就知道是他。
贺峥靠回椅背,闭上了眼睛。
如果方尽是用他的模型做的康宁,那说明什么?
说明康宁的底层架构是“高赔付率友好型”的。贺峥当年写那个模型,核心设计理念是“让定价假设尽可能贴近真实经验数据”,也就是说,模型本身是会“惩罚”过于乐观的假设的——假设定得太美,模型会报出很高的准备金需求,倒逼定价回归合理。
这是一个自我约束的模型。
但康宁的实际表现——3.7%的赔付率——恰恰说明约束失效了。
要么方尽改了模型的约束机制,要么……他找到了绕过约束的方法。
贺峥睁开眼,重新看向屏幕。
他开始在代码里搜索关键词。
"reserve"——责任准备金计算模块。
"assumption_check"假设校验函数。
"margin"安全边际参数。
搜索结果一行行跳出来。贺峥的目光跟随着代码流动,像在一条熟悉的河流里寻找陌生的石头。
然后他找到了。
在一个不起眼的角落里,有一行被注释掉的代码。
assumption_validator.run
假设校验器被关闭了。
贺峥的模型里有一个内置的假设校验模块。它的功能是:当输入的定价假设偏离行业经验表超过一定阈值时,模型会报警,要求重新确认。这是贺峥特意设计的“安全阀”。
方尽把它注释掉了。
一行“#”,就关掉了一整个约束系统。
但贺峥继续往下看。他发现事情没有这么简单。因为关闭校验器只能让模型“不报警”,但不能让模型“算错”。模型本身的计算逻辑还是对的——你输入真实的发病率,它还是会给真实的准备金。
除非
贺峥的鼠标停在了assumptions的定义部分。
base_assumptions = {
"mortality_rate": "2019_industry_table",
"morbidity_rate": "2019_industry_table",
"lapse_rate": 0.08,
"expense_ratio": 0.18,
"reserve_interest_rate": 0.035
}
发病率2019年行业表。
死亡率2019年行业表。
退保率8%。
费用率18%。
准备金利率3.5%。
贺峥的视线停在morbidity_rate上。
如果方尽用的是2019年的表,而实际应该用2021-2023年的新表——新表的发病率高出23.6%——那意味着什么?
意味着定价时假设的赔付支出,比真实情况低了将近四分之一。
但更关键的是退保率——lapse_rate。
8%。
贺峥皱了一下眉。
重疾险的长期退保率通常在3%到5%之间。短期险可能高一些,但康宁是终身型产品,缴费期二十年,退保率不可能到8%。
除非有人故意把退保率设高。
为什么要把退保率设高?
贺峥拿起笔,在纸上画了一个简单的公式。
责任准备金 = 未来赔付现金流的现值——未来保费现金流的现值
退保率越高 → 预期缴费人数下降越快 → 未来保费现金流现值越低 → 。
不对。退保率高,准备金应该更高才对。因为退保的人不再缴费,但已经发生的风险暴露还在。
除非
贺峥的笔尖停在纸上。
除非方尽用的是“退保后不再计提准备金”的处理方式。也就是说,模型假设:客户退保之后,公司就不再为这个客户计提未来的责任准备金。
这在技术上不是错的。退保确实意味着保单终止,公司确实不再承担该保单的未来责任。但问题是
退保的客户,和在保单中自然消亡的客户,在精算上是不同的群体。退保的人通常是“健康的人”觉得自己不需要保险了,或者交不起保费了。留下的人,是“风险更高的人”。
这就是所谓的“逆向选择”。
如果你假设退保率很高,模型会认为大量“健康客户”会离开,留下的是高风险群体。为了对冲这个风险,模型应该提高费率或者增加准备金。
但康宁的模型里,退保率高,费率却没有相应提高。
这说明什么?
说明方尽不关心“退保后风险暴露”的问题。他关心的是另一个东西
现金流。
退保率高 → 早期现金流入减少 → 但早期的赔付支出也大幅减少(因为退保的人不赔了)→ 短期利润表非常好看。
贺峥放下笔。
他想明白了。
这不是一个简单的“改了发病率”的案子。这是一个三重联动的设计
发病率设低 → 定价时少算了赔付成本 → 保费不变的情况下利润虚高。
退保率设高 → 模型认定大量客户会在早期退保 → 早期赔付支出大幅降低 → 短期账面利润暴增。
费用率设高 → 运营成本被“合理”地做高 → 即使保费收得不少,也可以用“成本”来解释为什么没赚那么多 → 同时费用率高意味着首年佣金高 → 销售渠道有极强动力去推这款产品。
三个参数,环环相扣。
单独看每一个,都有“合理的精算解释”。合在一起,就是一个精密的利润制造机。
贺峥拿起计算器,手动模拟了一遍。
假设一个30岁男性,投保康宁,保额50万,年缴保费12000元,缴费20年。
按真实假设(发病率+23.6%,退保率5%,费用率14%)计算
他按了大概两分钟。
按康宁现行假设(发病率2019表,退保率8%,费用率18%)计算
又两分钟。
结果出来的一瞬间,贺峥的拇指停在等号键上。
按真实假设,这款产品的20年累计利润约为
按康宁现行假设,20年累计利润约为
差额:37.4%。
公司用这三个参数,把一款产品的长期利润虚增了37.4%。
这不是误差。误差是2%、3%,最多5%。37.4%是一个设计。
贺峥把计算器合上,放进包里。
他靠在椅背上,看着天花板。三十七楼的天花板是白色的,干净,平整,什么都没有。
但他脑子里像有一块黑板,上面写满了数字和公式,还有那条被注释掉的代码。
assumption_validator.run
安全阀被关掉了。
不是被炸掉的,不是被拆掉的。是被一行“#”轻轻地、安静地、合法地关掉的。
这就是方尽的风格。
贺峥拿起手机,打开微信。方尽的对话框在最底下,上一条消息还是半年前年会上的那句“你写的模型,我帮你赚了钱”。
他的拇指悬在输入框上方。
想了很久,他打了一行字:
“你在康宁的定价模型里,关掉了假设校验器。”
打完之后他没有立刻发。他读了一遍,删掉,又打了一遍。
改成了:
“你改了我的模型。”
还是不对。他删掉,又打。
最后发出去的是:
“康宁的底层架构,是我写的那个框架,对吧?”
消息显示已读。
对面打字的气泡跳了大概四十秒。在这四十秒里,贺峥觉得办公室里所有的声音都消失了。空调停了,键盘声停了,走廊里的脚步声也停了。整个世界只剩那个跳动的气泡。
然后它停了。
方尽回复:
“对。你写的模型太好了,不用的话可惜。我帮你改进了一下。”
贺峥盯着“改进”那两个字。
又一条消息跳出来:
“对了,康宁今年做了三十亿。你的模型,我帮你赚了钱。”
贺峥没有回复。
他把手机扣在桌上,面朝下。屏幕的光从桌缝里透出来,很微弱的一道。
窗外,天是灰的。不是下雨的那种灰,是城市常年累积的那种灰——灰尘、尾气、建筑粉尘混在一起,让天空看起来像一块脏了的白布。
贺峥的脑子里有两个声音在打架。
一个说:他改了三个参数,把一款高赔付产品变成了低赔付产品,利润虚增37.4%。这不是改进,这是欺诈。
另一个说:但你有什么证据?他用的2019年表虽然过时,但不违反任何现行法规——监管没有强制要求使用最新版经验表。退保率8%虽然偏高,但在“合理假设”的范围内。费用率18%也说得过去。每一项单独拿出来都站得住脚。
这就是最可怕的地方。
方尽没有违法。他只是在每一个假设上都选择了“对利润最有利”的那一端。每一个选择单独看都合理,组合起来就是灾难。
贺峥拿起桌上的两张经验表,折好,塞进包里。
他站起身,走到窗边。
三十七楼往下看,人像蚂蚁,车像火柴盒。整个城市密密麻麻的,无数人在无数栋楼里过着无数种生活。每一个人身后都有一张保单,或者没有。买了的人以为自己买了保障,没买的人觉得自己省了钱。
但很少有人知道,在一份保单背后,有一个精算师坐在三十七楼,在一行行代码里,把“保障”和“利润”之间的天平,悄悄拨向了一边。
贺峥以前觉得,精算师的职责就是让天平保持平衡。
现在他知道了。有些人坐在天平的另一边,用自己的体重压住一端,还告诉所有人:这是自然的状态。
他回到工位,打开一个新的文档。
标题写:康宁终身重大疾病保险——定价假设复核分析
下面第一行写:
“发病率假设:2019年行业表 vs 2021-2023年最新表,偏差+23.6%。”
第二行:
“退保率假设:8% vs 行业经验3%-5%。”
第三行:
“费用率假设:18% vs 同类产品12%-15%。”
三行写完,他停了下来。
这三行字看起来很简单。但它们背后是一份几十万行代码的产品模型,是四十七亿的保费,是5301件拒赔,是那些在社区里被“团购价”吸引的老人。
贺峥把这三行字看了一会儿。然后他在文档最下面加了一行:
“注:以上三项假设均处于监管允许的合理范围内。问题在于系统性偏离的叠加效应。”
写完之后他才意识到,这句话的意思是什么。
意思是:他没有抓手。
每一项都合规,组合起来才不合理。但合规的东西,你不能告。你能做的只有证明——证明这个“合理范围”内的系统性偏离,最终伤害了谁。
伤害了王阿姨。伤害了那些以为自己买了保障的人。
贺峥关掉文档,拿起双肩包。
出门的时候,他回头看了一眼工位。计算器还躺在键盘旁边,绿色的屏幕已经暗了。
3.7、62.9、23.6——三个数字安静地躺在存储器里。
它们会一直等在那里。
等他把剩下的数字也找出来。