OLG 世代交叠模型:两期 Diamond 模型、资本积累与养老金
放弃"一个永生代表性消费者",改用"每代人只活两期、新老两代交叠"的结构。这是研究人口老龄化、现收现付养老金、公共债务与资本积累生命周期的主力框架。本页从两期 Diamond (1965) 模型出发,完整推导家庭储蓄、资本市场出清与稳态,给出可运行的 Python 稳态求解与转轨代码,并落到养老金改革与中国老龄化应用。
01 为什么需要 OLG:与永生代表性家庭的根本区别
前面 RBC / NK 模型用的都是永生代表性家庭(Representative Agent, RA):同一个消费者从 $t=0$ 活到永远,在任意时刻都面对同一组跨期套利条件。这个假设在研究"人口结构"时立刻失效——一个 25 岁的中国年轻人和一个 65 岁刚退休的老人,对储蓄、利率、养老金的反应完全不同,他们不可能是"同一个永生家庭"。
OLG(Overlapping Generations)模型换了一套人口结构:每个人生存两期(年轻 + 老年),任意时刻总有两代人同时活着。年轻时工作、储蓄;年老时花掉一生储蓄。新世代不断出生、老世代不断老去死亡。这套结构有三个 RA 模型给不出的核心结论:
- 无套利的利率不一定等于时间偏好:资本积累由"年轻人今天存多少"决定,而不是由一个永生家庭的 Euler 方程决定,因此经济可能动态无效率(dynamically inefficient)——资本过度积累,利率低于人口增长率。
- 代际转移有实际作用:现收现付(pay-as-you-go)养老金、公共债务、遗产税,都是在"现在的年轻人"和"现在的老年人"之间转移资源,RA 模型里不存在这种跨代再分配。
- 政策不能只看稳态:改变养老金规则会让"已经老了的人"和"还没出生的人"受到不同影响,必须做转轨路径(transition path)分析,而不是直接比较两个稳态。
RA 模型回答"同一个人随时间怎么动";OLG 模型回答"不同年龄的人在同一时间怎么共存、跨代怎么转移"。研究老龄化、社保改革、国债可持续性,必须用 OLG。
02 模型假设逐条陈述
本页用最经典的 Diamond (1965) 两期 OLG。假设逐条列出,每一条都会在后文反复使用:
- 人口结构:第 $t$ 期有 $N_t$ 个年轻人出生,人口以增长率 $n$ 增长,即 $N_{t+1}=(1+n)N_t$。每个人只活两期。
- 效用:年轻人在年轻期消费 $c_{1t}$、老年期消费 $c_{2t+1}$,效用为贴现的对数效用 $$U_t = \log c_{1t} + \beta \log c_{2t+1}$$ $\beta\in(0,1)$ 为主观贴现因子。用对数效用是为了储蓄函数有解析形式,便于手推。
- 年轻期收入:年轻人无弹性地供给 1 单位劳动,获得工资 $w_t$;他把收入用于年轻时消费 $c_{1t}$ 和储蓄 $s_t$。
- 老年期消费:老年人把一生储蓄本息全部花掉,面对储蓄的总回报率 $r_{t+1}$(毛利率 $1+r_{t+1}$)。
- 生产:代表性厂商用资本 $K_t$ 和劳动 $L_t=N_t$,CRS 技术 $Y_t=F(K_t,L_t)$,资本一期后完全折旧 $\delta=1$(教学简化;推广到 $\delta\in(0,1]$ 是常规练习)。要素市场完全竞争,工资与租金等于边际产出。
- 资本市场出清:第 $t+1$ 期的资本 $K_{t+1}$,全部来自第 $t$ 期年轻人的储蓄 $N_t s_t$。老年人在第 $t$ 期把资本卖给厂商。
$\delta=1$ 让稳态差分方程简洁可手推。若取 $\delta<1$,只需把"年轻人储蓄 = 下一期资本"改成 $K_{t+1}=(1-\delta)K_t+I_t$,推导完全平行。本页代码不做此简化,直接用 $\delta<1$ 的一般式。
03 家庭优化:年轻储蓄与老年消费
年轻人在第 $t$ 期面对两期预算约束。年轻时:
年老时,他把储蓄的本息全部用于消费:
把两期约束合并成一生预算约束 $c_{1t} + \dfrac{c_{2t+1}}{1+r_{t+1}} = w_t$,最大化 $U_t=\log c_{1t}+\beta\log c_{2t+1}$。代入后对 $c_{1t}$ 求一阶条件(或对 $s_t$ 求导):
把 $c_{1t}=w_t-s_t$、$c_{2t+1}=(1+r_{t+1})s_t$ 代入,解出储蓄:
解读:在对数效用下,储蓄率恰好等于 $\beta/(1+\beta)$,与利率 $r_{t+1}$ 无关(收入效应与替代效应恰好抵消)。这是对数效用的便利之处——储蓄决策独立于预期利率,让资本积累方程退化成一个关于 $w_t$ 的简单差分方程。若换 CRRA 效用 $u(c)=c^{1-\sigma}/(1-\sigma)$,$s_t$ 会依赖 $r_{t+1}$,需联立求解。
04 厂商与资本市场出清
厂商用 CRS 生产函数 $Y_t=K_t^\alpha L_t^{1-\alpha}$(柯布-道格拉斯,$\alpha$ 为资本份额)。完全竞争下,要素报酬等于边际产出。记人均(每年轻工人)资本 $k_t=K_t/N_t$:
资本市场出清是 OLG 的核心方程:第 $t+1$ 期的资本存量 $K_{t+1}$ 等于第 $t$ 期年轻人的总储蓄。用人均形式、考虑人口增长 $N_{t+1}=(1+n)N_t$:
于是人均资本的运动规律闭合为一个一维自治差分方程:
解读:这就是 OLG 的"Solow 式"差分方程,但储蓄率 $s=\beta(1-\alpha)/[(1+\beta)(1+n)]$ 来自微观家庭最优化,而不是像 Solow 那样外生给定。给定初始 $k_0$,方程 7 唯一决定整条转轨路径。
05 稳态:资本积累差分方程与黄金律
稳态满足 $k_{t+1}=k_t=k^*$。代入方程 7($\delta=1$ 的教学式):
稳态利率 $r^*=\alpha(k^*)^{\alpha-1}$。关键的动态效率判据:比较稳态利率 $r^*$ 与人口增长率 $n$。黄金律资本水平满足 $r_{gold}=n$(资本的边际产出恰好补偿人口增长)。
- 若 $r^* > n$:资本不足(动态有效),减少储蓄可让每代人都更好。
- 若 $r^* < n$:资本过度积累(动态无效率)——多存的钱在稳态下得不偿失,此时引入现收现付养老金(年轻人缴税、老年人领钱)可以帕累托改进。这是 Diamond (1965) 的著名结论。
RA 模型里永生家庭的 Euler 方程强制 $r=\rho$(纯时间偏好),资本永远不会过度积累。OLG 里没有这种强制——储蓄率由工资决定,利率可以被推到低于 $n$。这是 OLG 比 RA 丰富的地方,也是研究养老金的理论基础。
06 完整 Python 代码:稳态求解与转轨动态
下面代码实现含 $\delta<1$ 的一般形式:给定参数,(1) 求稳态 $k^*$;(2) 从任意初始 $k_0$ 模拟转轨路径;(3) 检查动态效率 $r^*$ vs $n$。普通笔记本秒级跑完。
import numpy as np
from scipy.optimize import brentq
# ---------- 1. 参数校准(季度/年度均可,这里用年度教学值) ----------
alpha = 0.33 # 资本收入份额
beta = 0.98 # 主观贴现因子(年)
n = 0.01 # 人口年增长率
delta = 0.05 # 折旧率(这里取 <1 的一般式,教学常用 1)
# ---------- 2. 工资与利率(人均形式) ----------
def wage(k):
return (1 - alpha) * k**alpha
def rent(k):
return alpha * k**(alpha - 1) # 净利率 r = MPK
# ---------- 3. 资本积累差分方程(含折旧的一般式) ----------
# 年轻人储蓄 s = beta/(1+beta) * w;
# 人均资本运动: (1+n) k_{t+1} = s_t + (1-delta) k_t
def k_next(k):
s_t = beta / (1 + beta) * wage(k)
return (s_t + (1 - delta) * k) / (1 + n)
# ---------- 4. 求稳态 k*:解 k_next(k*) = k* ----------
def ss_eq(k):
return k_next(k) - k
# 搜索区间:k 从 1e-6 到 100,找根
k_star = brentq(ss_eq, 1e-6, 100)
r_star = rent(k_star)
w_star = wage(k_star)
print(f"稳态人均资本 k* = {k_star:.4f}")
print(f"稳态利率 r* = {r_star:.4f}")
print(f"稳态工资 w* = {w_star:.4f}")
print(f"人口增长率 n = {n:.4f}")
# 动态效率判据
if r_star > n:
print(f"动态有效:r*={r_star:.3f} > n={n:.3f},资本不足")
else:
print(f"动态无效率:r*={r_star:.3f} < n={n:.3f},资本过度积累,可引入养老金帕累托改进")
# ---------- 5. 转轨路径:从初始 k0 模拟 60 期 ----------
T = 60
k_path = np.zeros(T)
k_path[0] = k_star * 0.3 # 从低于稳态的 30% 起步
for t in range(1, T):
k_path[t] = k_next(k_path[t-1])
print("\n转轨路径前 10 期人均资本:")
for t in range(10):
print(f" t={t:2d}: k={k_path[t]:.4f} r={rent(k_path[t]):.4f}")
$k_t$ 从初始低位单调收敛到 $k^*$,$r_t$ 从高位单调下降到 $r^*$。把这个转轨图画出来,就是"资本积累收敛"的标准教学图。把 $\beta$ 调大(更有耐心),$k^*$ 上升、$r^*$ 下降——这就是"储蓄率上升推迟消费"在 OLG 里的版本。
07 应用:现收现付养老金与人口老龄化
OLG 最重要的政策应用是养老金制度设计。设政府对年轻人工资征收比例税 $\tau$,全部转移给当期老年人。第 $t$ 期每个年轻人缴 $\tau w_t$,第 $t$ 期的老年人(共 $N_{t-1}$ 人)从 $N_t$ 个年轻人的缴款中领取养老金。人均(按年轻人计)的养老金收益为:
关键洞察:现收现付养老金的"回报率"是人口增长率 $n$(而非市场利率)。当生育率下降、老龄化加剧,$n$ 下降甚至为负,现收现付体系的回报率暴跌——这正是中国、欧洲、日本养老金压力的 OLG 表述。对比市场利率 $r^*$:
- 若 $r^* > n$:现收现付不如市场化储蓄,长寿者更愿意"自己存"。
- 若 $r^* < n$:现收现付在稳态下能提高每代人福利(动态无效率情形)。
中国养老金改革的核心权衡——"现收现付(社会统筹)" vs "完全积累(个人账户)"——正是在 $r^*$ 与 $n$ 的此消彼长之间做选择。Auerbach-Kotlikoff (1987) 的多期 OLG 模型把两期扩展为 55 期(模拟到退休),是定量研究这类改革的标准工具。
08 论文案例
09 常见错误与进阶资料
OLG 的核心不是"加个冲击",而是人口结构。若你只是在 RBC 里加"变老"却保留永生 Euler 方程,就丢失了 OLG 的全部含义。关键方程是 Equation 6 的资本市场出清(储蓄 = 下一期资本),不是 $r=\rho$。
很多学生只写 $K_{t+1}=N_t s_t$ 却忘记除以 $N_{t+1}=(1+n)N_t$,得到 $k_{t+1}=s_t$ 而非 $k_{t+1}=s_t/(1+n)$。这会让稳态资本系统性偏高、利率偏低。人均化时一定要把人口增长放进去。
养老金改革的福利结论高度依赖转轨:改革当期的老年人拿不到好处、却要承担成本。直接比较改革前后两个稳态的福利,会高估改革收益。OLG 政策分析必须解完整转轨路径(本页代码第 5 步就是在做这件事)。
Diamond 模型可能动态无效率,但参数校准到美国/中国数据后,$r^*$ 通常高于 $n$(资本不足)。不要一上来就假设"现收现付一定帕累托改进"——先算 $r^*$ vs $n$,再下结论。
Equation 4 的 $s_t=\beta w_t/(1+\beta)$ 是对数效用的特殊结果。换成 CRRA 就不成立。写代码或推导时,不要把"储蓄与利率无关"当成普遍结论。