📝 本模型共 17 个方程(含 CRRA 期望效用、保险选择概率、确定性等价与风险溢价、风险厌恶反推、定价加成、逆向选择均衡、社会最优与福利损失)· 文末附「方程总清单」
📚 前置条件与学习依赖 / Prerequisites
① 数学/统计基础:期望效用理论(EUT)、CRRA 效用、确定性等价(CE)与风险溢价、二分/多项 Logit 的 MLE、数值求根(二分法/Brentq)、混合 Logit 模拟积分。
② 经济学理论前置:信息经济学:Akerlof 柠檬市场、Rothschild-Stiglitz (1976) 逆向选择、Cohen-Einav 风险偏好与风险类型的相关、保险定价(精算公平 + markup)。
③ 软件/计算前置:Python(numpyscipy.optimize.brentq/minimize);理解嵌套求根。
④ 站内前置页面:先学 03 离散选择07 二值选择(买/不买)、09 混合 Logit(风险类型异质性)。
⑤ 难度分级:中高级

01 模型设定:保险需求与 CRRA

消费者初始财富 $w$,面临损失 $L$ 的风险。损失发生概率为风险类型 $\theta$(私人信息,保险公司观测不到)。消费者从一组保险合同 $j$ 中选一个最大化期望效用。

1.1 CRRA 效用函数

Eq.21-01 — CRRA 效用
$$u(c) = \frac{c^{1-\gamma}}{1-\gamma}, \qquad \gamma = 1 \Rightarrow u(c)=\ln c$$

$\gamma$ 为相对风险厌恶系数(RRA)。$\gamma=0$ 风险中性;$\gamma=1$ 对数效用;$\gamma>1$ 强风险厌恶。设定理由:CRRA 是宏观/公共财政最常用的偏好形式,跨期平滑与风险厌恶由同一 $\gamma$ 刻画。

1.2 保险合同与期望效用

合同 $j$:保费 $p_j$,赔付比例 $q_j$(损失发生时赔付 $q_j L$,自付 $(1-q_j)L$)。两种自然状态:

Eq.21-02 — 两状态财富
$$c^{\text{无损失}}_j = w-p_j, \qquad c^{\text{损失}}_j = w-p_j-(1-q_j)L$$
Eq.21-03 — 期望效用(Einav-Finkelstein 2011)
$$U_j(\theta,\gamma) = (1-\theta)\,u(w-p_j) + \theta\,u\big(w-p_j-(1-q_j)L\big) + \varepsilon_j$$

$\varepsilon_j$ 为 i.i.d. Gumbel 选择扰动。风险类型 $\theta$ 与风险厌恶 $\gamma$ 均随人异质。

1.3 保险公司定价

Eq.21-04 — 成本加成定价
$$p_j = \underbrace{E[q_j L \mid \text{选择 }j]}_{\text{期望赔付成本}} + \text{markup}$$

关键:$E[q_j L\mid\text{选 }j]$ 依赖于谁选择了 $j$——这正是逆向选择的根源。

02 推导:选择概率、CE 与风险溢价

2.1 保险选择概率(混合 Logit)

由于 $\varepsilon_j$ i.i.d. Gumbel,条件在 $(\theta,\gamma)$ 上,选合同 $j$ 的概率为 Logit:

Eq.21-05 — 条件选择概率
$$P(j\mid\theta,\gamma) = \frac{\exp\big(U_j(\theta,\gamma)\big)}{\sum_k \exp\big(U_k(\theta,\gamma)\big)}$$

风险类型与偏好随人异质,因此边缘选择概率要在 $(\theta,\gamma)$ 分布上积分(混合 Logit):

Eq.21-06 — 边缘选择概率(混合 Logit)
$$P_j = \int\!\!\int \frac{e^{U_j(\theta,\gamma)}}{\sum_k e^{U_k(\theta,\gamma)}}\,dF_\theta(\theta)\,dF_\gamma(\gamma)$$

2.2 确定性等价与风险溢价(不跳步)

不买保险时,财富为彩票 $\{w \text{(概率 }1-\theta\text{)},\ w-L \text{(概率 }\theta\text{)}\}$。其期望效用为:

Eq.21-07 — 不保险的期望效用
$$EU_{\text{no}} = (1-\theta)u(w) + \theta\,u(w-L)$$

确定性等价 $CE$ 是一笔确定财富,其效用等于该彩票的期望效用:

Eq.21-08 — 确定性等价 CE
$$u(CE) = EU_{\text{no}}, \qquad CE = u^{-1}\big(EU_{\text{no}}\big)$$

风险溢价 $\pi$ 是期望损失 $E[L]=\theta L$ 与 CE 之差(即人们为消除风险愿意多付的钱):

Eq.21-09 — 风险溢价(本页核心)
$$\pi = E[w-L] - CE = (w-\theta L) - CE$$

风险厌恶者 $\pi>0$:为避免不确定性,愿意付出超过期望损失的保费。$\gamma$ 越大,$\pi$ 越大。这是从保险选择反推 $\gamma$ 的理论基础。

2.3 从保险选择反推 $\gamma$

观测到一个家庭"为全额保险愿意支付的最高保费" $p^*$(即无差异保费,使买保险的效用等于不买):

Eq.21-10 — 无差异保费反推 $\gamma$
$$u(w-p^*) = (1-\theta)u(w) + \theta\,u(w-L)$$

若知道 $\theta$(来自索赔数据),给定 $w,L$,上式对 $\gamma$ 只有一个未知数,数值求根即可解出每个家庭的 $\hat\gamma$。这就是结构估计"由选择数据反推偏好"的核心。

2.4 Cohen-Einav (2007):风险偏好与风险类型的相关

Eq.21-11 — 信息不对称的度量
$$\text{正相关检验}:\quad \text{Cov}(\text{投保选择},\ \text{事后出险}\mid X) \gtrless 0$$

若 $>0$(高风险更买保险)= 逆向选择;若 $<0$(更风险厌恶的人同时更小心/更低风险)= 有利选择(advantageous selection)。风险偏好 $\gamma$ 与风险类型 $\theta$ 的相关性决定了市场是逆向还是有利选择。

03 逆向选择与定价均衡

3.1 Rothschild-Stiglitz 死亡螺旋

设两种风险类型:高风险 $\theta_H$、低风险 $\theta_L$($\theta_H>\theta_L$),人群中高风险占比 $\phi$。若保险公司只能提供单一混合合同,保费必须等于购买者的期望赔付:

Eq.21-12 — 混合保费(内生)
$$p = E[qL \mid \text{购买}] = \bar\theta_{\text{buyers}} L$$

当 $p$ 上升,低风险者发现保险不值而退出购买(因为他们的期望损失低),购买池 $\bar\theta_{\text{buyers}}$ 上升 → $p$ 进一步上升 → 更多低风险退出……这就是逆向选择死亡螺旋。极端情况下只有高风险者留在市场,保费等于 $\theta_H L$,低风险者保障不足。

3.2 社会最优 vs 市场均衡

Eq.21-13 — 社会最优保费(强制/补贴保险)
$$p^{*}_{social} = \big[\phi\theta_H + (1-\phi)\theta_L\big] L$$

若能强制所有人按人群平均风险投保(或交叉补贴),则人人都被覆盖,规避了低风险者被挤出的问题,总福利更高。

Eq.21-14 — 福利损失
$$\Delta W = CE_{\text{social}} - CE_{\text{market}}$$

市场均衡因逆向选择导致部分低风险者无保险、承担无谓风险,$\Delta W>0$ 即为福利损失。

04 求解算法

Step 1:模拟选择数据
给定 $w,L$、$(\theta,\gamma)$ 分布与合同 $(p_j,q_j)$,算期望效用,加 Gumbel 扰动生成购买决策。
Step 2:混合 Logit MLE
在 $R$ 个 $(\theta,\gamma)$ draws 上数值积分得到边缘选择概率,最大化似然估计偏好分布参数(见 09 混合 Logit)。
Step 3:逐人反推 $\gamma$
给定观测无差异保费 $p^*$ 与 $\theta$,用 Brentq 数值求根解 Eq.21-10,恢复每个家庭的风险厌恶。
Step 4:均衡固定点
猜保费 $p$ → 算购买集合 → 更新购买者平均风险 $\bar\theta_{buyers}$ → 重置 $p=\bar\theta L$ → 迭代至收敛(死亡螺旋/出清)。

05 代码 1:保险需求混合 Logit 估计

模拟含风险类型与风险厌恶双重异质性的保险选择,用混合 Logit 估计。已实跑验证。

python
"""
代码块1:保险需求模型 + 混合Logit估计
  U_j = (1-theta)u(w-p_j) + theta u(w-p_j-(1-q_j)L) + eps_j
  CRRA u(c)=c^(1-gamma)/(1-gamma);theta 与 gamma 均随人异质
"""
import numpy as np
from scipy.optimize import minimize
from scipy.stats import norm
np.random.seed(20240912)

N, w, L = 2000, 10.0, 1.0
p0, q0 = 0.0, 0.0
p1, q1 = 2.0, 0.8                       # 保险合同:保费2,赔付80%

# 真实风险类型 theta ~ Logit-Normal(均值~0.25)
logit_t = norm.ppf(0.25) + 0.8*np.random.randn(N)
theta = 1/(1+np.exp(-logit_t))
# 真实风险厌恶 gamma ~ N(1.5, 0.5^2)
gamma = np.clip(1.5 + 0.5*np.random.randn(N), 0.1, 5)

def crra(c, g):
    c = np.clip(c, 1e-8, None)
    return np.where(np.abs(g-1)<1e-8, np.log(c), c**(1-g)/(1-g))

def EU(theta_i, g, p, q):
    return (1-theta_i)*crra(w-p, g) + theta_i*crra(w-p-(1-q)*L, g)

EU0 = EU(theta, gamma, p0, q0)
EU1 = EU(theta, gamma, p1, q1)
P_buy = 1/(1+np.exp(-0.5*(EU1-EU0)))     # 尺度=0.5
buy = (np.random.rand(N) < P_buy).astype(int)
print("总体购买率 =", round(buy.mean(),3))

# 混合Logit估计:在R个gamma draws上积分
def neg_ll(params, t_obs, choice):
    g_mean, g_sd = params
    if g_sd <= 1e-3: return 1e10
    lam, R = 0.5, 30
    draws = np.clip(g_mean + g_sd*np.random.randn(R,N), 0.05, 5)
    P = np.zeros(N)
    for r in range(R):
        d0 = EU(t_obs, draws[r], p0, q0)
        d1 = EU(t_obs, draws[r], p1, q1)
        P += (1/(1+np.exp(-lam*(d1-d0))))/R
    P = np.clip(P, 1e-6, 1-1e-6)
    return -np.sum(choice*np.log(P)+(1-choice)*np.log(1-P))

res = minimize(neg_ll, [1.0,0.3], args=(theta,buy),
               method='Nelder-Mead', options={'maxiter':500})
print("估计 gamma 均值 =", round(res.x[0],3), "(真实 1.5)")
print("估计 gamma 标准差 =", round(res.x[1],3), "(真实 0.5)")
✓ 实跑输出

总体购买率约 $0.47$;混合 Logit 估计出正的风险厌恶均值(约 $1.0$,落在 CRRA 合理区间 $1\sim4$)与异质性。注意:从二值购买数据单独识别 $\gamma$ 的绝对量级较弱($\gamma$ 与 Logit 尺度参数部分不可分离),真实研究需保费/保障水平的外生变异(如计划菜单、补贴)来加强识别。

06 代码 2:从选择反推风险偏好 $\gamma$

给定"为全额保险愿付的最高保费" WTP,数值求根恢复 $\gamma$。已实跑验证。

python
"""
代码块2:从 WTP 反推风险偏好 gamma(确定性等价/风险溢价法)
  WTP_i = 为全额保险愿付最高保费;u(w-WTP) = EU_no(gamma)
  已知 theta,数值求根解 gamma
"""
import numpy as np
from scipy.optimize import brentq
np.random.seed(20240912)
w, L, N = 10.0, 2.0, 5000
gamma_true = np.random.lognormal(np.log(1.5), 0.3, N)
theta = np.full(N, 0.3)

def crra(c, g):
    c = np.clip(c, 1e-8, None)
    return c**(1-g)/(1-g)

def max_premium(t, g):
    EU_no = (1-t)*crra(w,g) + t*crra(w-L,g)
    return brentq(lambda p: crra(w-p,g)-EU_no, 1e-6, w-1e-3)

WTP = np.array([max_premium(theta[i], gamma_true[i]) for i in range(N)])

def recover_gamma(wtp, t):
    def eq(g):
        if g < 0.01: return 1e6
        return crra(w-wtp,g) - ((1-t)*crra(w,g)+t*crra(w-L,g))
    return brentq(eq, 0.01, 8.0)

g_hat = np.array([recover_gamma(WTP[i], theta[i]) for i in range(N)])
print("E[L] =", theta[0]*L)
print("真实 gamma 均值 =", round(gamma_true.mean(),3))
print("反推 gamma 均值 =", round(np.nanmean(g_hat),3))
✓ 实跑输出

期望损失 $E[L]=0.6$,观测 WTP 均值约 $0.676$,风险溢价约 $0.076$;反推的 $\hat\gamma$ 均值(约 $1.57$)几乎精确等于真实值(约 $1.57$),且风险溢价随 $\gamma$ 单调上升($0.05\to0.11$)。这验证了结构反推的可行性。

07 数据与估计

数据类型美国来源中国来源用途
保险选择+索赔auto/health insurer 行政数据车险/重疾险公司保单+理赔选择、出险($\theta$)
家庭金融/风险态度SCFCHFSCFPS、CHARLS财富 $w$、风险态度
医保数据Medicare claims城镇职工/居民医保、新农合健康险逆向选择
外生保费变异雇主计划菜单、补贴医保报销政策试点、车险费率改革识别 $\gamma$ 与需求弹性

估计方法:混合 Logit(风险类型异质性)、结构反推(由选择求 $\gamma$ 分布)、SMM。关键参数:$\gamma$(风险厌恶)、$\theta$(风险类型分布)、$\mathrm{Cov}(\theta,\gamma)$(逆向/有利选择程度)。

08 代码 3:逆向选择均衡与最优保险

Rothschild-Stiglitz 式两类型模型:市场均衡(低风险被挤出)vs 社会最优(强制/补贴)。已实跑验证。

python
"""
代码块3:逆向选择均衡 + 社会最优反事实(Rothschild-Stiglitz)
  两类型:theta_H=0.45, theta_L=0.15;高风险占比 phi=0.35
  市场保费 p = 购买者平均风险*L(出清);社会最优 p=人群平均风险*L
"""
import numpy as np
from scipy.optimize import brentq
np.random.seed(20240912)
w, L, gamma = 10.0, 1.0, 2.0
theta_L, theta_H, frac_H = 0.15, 0.45, 0.35
N = 10000
type_H = np.random.rand(N) < frac_H
theta_i = np.where(type_H, theta_H, theta_L)

def crra(c, g):
    c = np.clip(c, 1e-8, None); return c**(1-g)/(1-g)

def buys(p, t):
    return crra(w-p, gamma) >= (1-t)*crra(w,gamma)+t*crra(w-L,gamma)

# 市场均衡固定点
p = 0.3
for _ in range(200):
    b = buys(p, theta_i)
    if b.sum()==0: p=np.nan; break
    p_new = theta_i[b].mean()*L
    if abs(p_new-p)<1e-6: p=p_new; break
    p = 0.5*p+0.5*p_new
print("市场均衡保费 p* =", round(p,3))
b_eq = buys(p, theta_i)
print("低风险购买率 =", round(b_eq[~type_H].mean(),3))
print("高风险购买率 =", round(b_eq[type_H].mean(),3))

# 社会最优(强制按人群平均风险)
p_social = (frac_H*theta_H+(1-frac_H)*theta_L)*L
print("社会最优保费 =", round(p_social,3))
print("解读:市场保费被高风险推高,低风险退出 -> 保障不足 -> 福利损失。")
print("      强制/补贴保险可恢复覆盖、消除该福利损失。")
✓ 实跑输出与应用解读

市场均衡保费 $p^*\approx0.45$($=\theta_H$),低风险购买率为 $0$,高风险购买率为 $1$——典型逆向选择解:低风险被完全挤出,保费停在高风险水平。社会最优保费约 $0.255$(人群平均风险),人人被覆盖。政策含义:强制医保、保费补贴、免赔额设计可纠正这一保障不足;中国城乡居民医保、车险费率市场化都涉及此权衡。

典型政策应用

(1) 强制保险/补贴对覆盖率与福利的影响;(2) 逆向选择导致的保障不足与福利损失量化;(3) 风险偏好异质性(有利选择)对市场运行的影响;(4) 最优保险合同设计(免赔额、共保比例、cherry-picking)。

09 论文案例

English · JEP 2011
Analyzing Health Insurance Markets
Liran Einav & Amy Finkelstein · Journal of Economic Perspectives, 2011, 25(1): 115–138.
保险需求结构估计的方法论综述。提出用期望效用框架 + 保险选择数据估计风险偏好与风险类型分布,并讨论逆向选择、道德风险与福利分析。本页框架的直接来源。
English · QJE 2007
Risk Preferences and Demand for Insurance
Cohen & Einav · Quarterly Journal of Economics, 2007, 122(3): 1121–1153.
用以色列汽车保险数据同时估计风险偏好与风险类型,发现二者存在相关——区分了逆向选择与有利选择,是结构估计风险偏好的经典。
English · QJE 2010
Estimating Welfare in Insurance Markets Using Variation in Prices
Einav, Finkelstein & Cullen · QJE, 2010, 125(3): 877–921.
利用雇主提供的保费外生变异估计保险需求曲线,并量化逆向选择的福利损失,是"由价格变异识别需求/福利"的标杆。
English · JPE 2000
Testing for Asymmetric Information in Insurance Markets
Chiappori & Salanié · Journal of Political Economy, 2000, 108(1): 56–78.
用"投保选择与事后出险正相关"的可检验含义,系统检验汽车保险市场的信息不对称,是实证基准。
English · JET 1976
Equilibrium in Competitive Insurance Markets
Rothschild & Stiglitz · Quarterly Journal of Economics, 1976, 90(4): 629–649.
逆向选择理论基石:证明非对称信息下竞争保险市场可能不存在混同均衡、只有筛选(separating)均衡,低风险者保障不足。
中文 · 《金融研究》
中国寿险市场存在逆向选择吗?——来自 CHARLS 数据的经验证据
《金融研究》,2020(第8期),总第482期:112页起。
利用 CHARLS 数据、从广延与集约边际两个维度用正相关检验考察中国定期/终身寿险市场的逆向选择,发现死亡风险与寿险消费不相关甚至负相关,即不存在典型逆向选择,是国内保险信息不对称实证的代表。
中文 · 健康险/重疾险实证
高风险还是高风险厌恶?——基于微观重疾险/健康险数据的实证
相关研究见《金融研究》《保险研究》及清华五道口等工作论文,利用 CFPS、CHARLS 与保险公司保单数据检验健康险市场逆向选择与正向选择并存。
中国健康险/重疾险市场同时观测到"事后索赔者事前买附加险"(逆向选择)与"投保金额较低"(有利选择),印证风险偏好与风险类型异质性共同作用,与本页 $\mathrm{Cov}(\theta,\gamma)$ 机制一致。

10 常见错误与陷阱

✗ 错误 1:把 $\gamma$ 与 Logit 尺度分开识别

从二值购买数据中,风险厌恶 $\gamma$ 与极值扰动尺度参数 $\lambda$ 只有乘积可识别。必须有保费/保障水平的外生变异(计划菜单、补贴、费率改革)才能识别 $\gamma$ 的绝对量级,否则只识别排序。

✗ 错误 2:忽略风险类型 $\theta$ 就估"风险厌恶"

不控制出险概率 $\theta$,把"高风险者更买保险"误当成"更风险厌恶"。必须同时建模 $\theta$ 与 $\gamma$,并用索赔数据分离二者。

✗ 错误 3:混淆逆向选择与有利选择

购买者风险更高 ≠ 一定是逆向选择。若风险厌恶者同时更谨慎(低 $\theta$),可能出现有利选择。要检验 $\mathrm{Cov}(\theta,\gamma)$,而非只看 $P(\text{买}\mid\text{高风险})$。

⚠ 错误 4:用群体平均风险定价,忽略选择内生性

保费必须等于实际购买者的期望赔付(Eq.21-12),而非人群平均。用错池体会完全错估均衡(死亡螺旋方向都错)。

⚠ 错误 5:CRRA 在 $c\le0$ 处的数值问题

$u(c)=c^{1-\gamma}/(1-\gamma)$ 在 $c\le0$ 无定义。保费接近财富时数值爆炸,必须截断财富 $c\ge c_{\min}>0$,否则求根/似然不收敛。

⚠ 错误 6:忽略道德风险

保险不仅改变购买(逆向选择),还改变行为(有保险后更不防损)。结构估计若把道德风险效应误归为风险偏好,会高估 $\gamma$。需同时建模事后道德风险。

方程总清单 / Equation Summary

本页全部方程按出现顺序汇总,共 17 个

编号方程名称核心公式所在节
Eq.21-01CRRA 效用$u(c)=c^{1-\gamma}/(1-\gamma)$01.1
Eq.21-02两状态财富$w-p_j,\ w-p_j-(1-q_j)L$01.2
Eq.21-03期望效用$U_j=(1-\theta)u(w-p_j)+\theta u(w-p_j-(1-q_j)L)+\varepsilon_j$01.2
Eq.21-04成本加成定价$p_j=E[q_jL\mid\text{选 }j]+\text{markup}$01.3
Eq.21-05条件选择概率$P(j\mid\theta,\gamma)=e^{U_j}/\sum_k e^{U_k}$02.1
Eq.21-06边缘概率(混合Logit)$P_j=\int P(j\mid\theta,\gamma)dF_\theta dF_\gamma$02.1
Eq.21-07不保险期望效用$EU_{\text{no}}=(1-\theta)u(w)+\theta u(w-L)$02.2
Eq.21-08确定性等价 CE$u(CE)=EU_{\text{no}}$02.2
Eq.21-09风险溢价$\pi=(w-\theta L)-CE$02.2
Eq.21-10无差异保费反推 $\gamma$$u(w-p^*)=EU_{\text{no}}(\gamma)$02.3
Eq.21-11正相关/有利选择检验$\mathrm{Cov}(\text{投保},\text{出险}\mid X)\gtrless0$02.4
Eq.21-12混合保费$p=\bar\theta_{\text{buyers}}L$03.1
Eq.21-13社会最优保费$p_{social}=[\phi\theta_H+(1-\phi)\theta_L]L$03.2
Eq.21-14福利损失$\Delta W=CE_{social}-CE_{market}$03.2
Eq.21-15混合 Logit 似然$\ell=\sum_i\log P_{j_i^*}$代码1
Eq.21-16无差异保费求根$\mathrm{brentq}(u(w-p)-EU_{no})$代码2
Eq.21-17均衡固定点$p^{new}=\bar\theta_{\text{buyers}}L$代码3