一阶条件推导:从 Lagrangian 到 Euler Equation 与 NKPC
对家庭、Calvo 厂商的优化问题构造 Lagrangian,逐行求偏导,推出欧拉方程、劳动供给方程、最优定价与 New Keynesian Phillips Curve。每一步都不跳。
本页是 DSGE 基础知识库页面。定位:先单独学会这个工具,再到模型分支里看它怎么用。一阶条件(FOC)推导是把"部门优化设定"变成"可求解方程组"的关键一步——学会 Lagrangian 构造与 FOC 推导后,再去各分支看新机制(资本、金融约束、开放度)如何改写 FOC。
在哪些模型分支中使用:所有 DSGE 分支都要推 FOC—— RBC 基准模型 · NK 三方程 · 中尺度 SW · 小国开放经济 · 金融摩擦 BGG/GK · 财政与货币规则 · TANK两主体 · HANK
01 推导方法论与符号
DSGE 的一阶条件推导本质上是带约束的跨期最优化。标准流程:
本页使用的所有符号沿用上一页:$C_t, N_t, b_t, w_t, i_t, \pi_t$;$\beta, \sigma, \varphi$ 为参数。下面开始正式推导。
02 家庭 Lagrangian 的构造
家庭的优化问题(来自上一页 §2):
把约束移到左边,定义 Lagrangian:
其中 $\lambda_t\ge 0$ 是预算约束乘子,其经济含义是"第 $t$ 期放松一单位预算约束(即多得一单位消费)带来的边际效用"。下面我们对三个选择变量 $C_t, N_t, b_{t+1}$ 分别求偏导。
03 FOC wrt $C_t$ 与劳动供给方程
3.1 对 $C_t$ 求导
$C_t$ 只出现在第 $t$ 期的花括号里(当期消费),所以:
解释:$\lambda_t=C_t^{-\sigma}$ 表示"预算约束的影子价格"正好等于消费的边际效用。这是 CRRA 效用下的标准结果。
3.2 对 $N_t$ 求导
$N_t$ 也只出现在第 $t$ 期花括号里:劳动负效用项 $-N_t^{1+\varphi}/(1+\varphi)$ 对 $N_t$ 求导为 $-N_t^\varphi$;预算约束里 $+w_t N_t$ 项在乘子前面,所以 $-\lambda_t(-w_t N_t)=+\lambda_t w_t N_t$,对 $N_t$ 求导为 $+\lambda_t w_t$。合起来:
把 $\lambda_t=C_t^{-\sigma}$ 代入,得到劳动供给方程:
直觉:多工作一单位的边际负效用 $N_t^\varphi$,要正好等于用这一单位工资换来的消费的边际效用 $\lambda_t w_t=C_t^{-\sigma}w_t$。这就是 MRS(marginal rate of substitution)等于实际工资。
04 FOC wrt $b_{t+1}$:欧拉方程
关键步骤来了。$b_{t+1}$ 是"跨期变量",它同时出现在第 $t$ 期约束(作为支出项 $b_{t+1}/(1+i_t)$)和第 $t+1$ 期约束(作为收入项 $b_{t+1}/(1+\pi_{t+1})$)里。把这两项都摘出来:
把两项对 $b_{t+1}$ 求偏导,令其和为 0(注意第 $t+1$ 期变量在 $t$ 期看是期望 $E_t$):
移项整理:
代入 $\lambda_t=C_t^{-\sigma}$:
两边同乘 $(1+i_t)$,把右端括号拆开:
定义事前实际利率 $(1+r_t)\equiv \frac{1+i_t}{1+E_t\pi_{t+1}}$(在零通胀稳态附近 $\pi_{t+1}\approx E_t\pi_{t+1}$,可作一阶近似),得到教科书版本:
因为第 $t$ 期买的债券名义利率是 $i_t$,名义终值是 $B_{t+1}(1+i_t)$,但实际终值要除以 $P_{t+1}$。把名义利率与通胀分离,就得到 Fisher 关系 $1+r_t=(1+i_t)/(1+\pi_{t+1})$。这是 DSGE 里"名义—实际"换算的核心。
在资源约束 $Y_t=C_t$ 下,欧拉方程也写成产出形式:
05 Calvo 厂商最优定价 FOC
Calvo 厂商的定价问题(上一页 §4.3):在 $t$ 期能调价的厂商选择 $P_t^*$ 最大化贴现利润:
把需求函数代入利润:
对 $P_t^*$ 求偏导(用乘积求导法则:$(a-b)x^{-\varepsilon}$ 的导数为 $x^{-\varepsilon} + (a-b)(-\varepsilon)x^{-\varepsilon-1}$):
令贴现后求和的导数为 0,把公共因子 $(P_t^*)^{-\varepsilon-1}P_{t+k}^{\varepsilon}Y_{t+k}Q_{t,t+k}$ 约掉:
把含 $P_t^*$ 的项与含 $MC$ 的项分开:
解释:$\varepsilon/(\varepsilon-1)$ 就是稳态 markup(加成率)。当 $\theta=0$(每期都能调价),求和只剩 $k=0$ 一项,$P_t^*=\frac{\varepsilon}{\varepsilon-1}MC_t^n$,即弹性价格下厂商按 markup 定价。当 $\theta>0$,厂商要按未来预期边际成本的加权平均定价,权重由 $\theta^k$ 衰减。
06 价格加总方程 log-linearize
价格指数的 law of motion(上一页 §4.3):
两边除以 $P_t^{1-\varepsilon}$:
定义 gross inflation $\Pi_t\equiv P_t/P_{t-1}$,$\pi_t\equiv\ln\Pi_t\approx \Pi_t-1$;定义相对价格 $\widetilde p_t^*\equiv\ln(P_t^*/P_t)$。在零通胀稳态 $\Pi=1$、$P_t^*=P_t$ 附近做一阶 Taylor 展开:
代入归一化方程:
右端常数项 $\theta+(1-\theta)=1$,正好等于左端 1,抵消。剩下:
07 NKPC 完整推导
7.1 最优定价的对数线性化
把 §5 的最优定价在零通胀稳态附近 log-linearize(Galí 推导),得到:
其中 $\widehat{mc}_t$ 是实际边际成本的对数偏离稳态。直觉:本期新价格 = 现期边际成本的影响 $(1-\beta\theta)\widehat{mc}_t$ + 未来预期新价格的贴现值 $\beta\theta E_t\widetilde p_{t+1}^*$。
7.2 消去 $\widetilde p_t^*$,得到 NKPC
把 §6 的桥梁方程 $\widetilde p_t^*=\frac{\theta}{1-\theta}\pi_t$ 代入上式:
两边同乘 $\frac{1-\theta}{\theta}$:
定义斜率 $\kappa\equiv\frac{(1-\theta)(1-\beta\theta)}{\theta}$,即:
7.3 转化为产出缺口形式
在本工作站的 baseline 模型里(无资本、对称均衡),把劳动供给方程 $w_t=N_t^\varphi C_t^\sigma$ 与生产函数 $Y_t=A_t N_t^{1-\alpha}$、$C_t=Y_t$ 结合,可推出实际边际成本与产出缺口的关系:
在"产出缺口" $\hat y_t\equiv\widehat{Y}_t-\widehat{Y}_t^n$(偏离 flexible-price natural output)的定义下,技术项被自然产出吸收,于是:
本工作站按用户要求简记 $\kappa_y$ 为 $\kappa$:
传统 PC 是 $\pi_t=\pi_{t-1}+\beta y_t$(后顾);NKPC 是 $\pi_t=\beta E_t\pi_{t+1}+\kappa y_t$(前瞻)。这个"前瞻"项正是 DSGE 结构估计出来的核心:央行预期管理之所以有效,就是因为 $\beta E_t\pi_{t+1}$ 直接进当期通胀。
08 把 FOC 写进 Dynare
把 §3、§4、§7 推出来的三条核心方程补到上一页骨架的 model; 块里。注意 Dynare 中所有变量都是对数偏离稳态(在 steady state 归一化为 0),所以方程直接写成 $\hat x_t$ 的线性形式。
% ============================================================
% baseline_nk_foc.mod —— 补完 FOC 的 NK 模型
% 上一页骨架中的注释方程,在这里全部写出来
% ============================================================
var Y C N pi i r mc y_gap A;
varexo eps_a eps_m;
parameters beta sigma phi alpha theta eps_p rho_a rho_i phi_pi phi_y kappa;
beta=0.99; sigma=1.0; phi=5.0; alpha=0.25;
theta=0.75; eps_p=9.0;
rho_a=0.9; rho_i=0.8; phi_pi=1.5; phi_y=0.125;
% NKPC 斜率 kappa = (1-theta)(1-beta*theta)/theta * (sigma+phi)
kappa = (1-theta)*(1-beta*theta)/theta * (sigma + phi);
model;
% --- (1) 欧拉方程(对数线性化后的 IS curve)---
% C_t^-sigma = beta*E[C_{t+1}^-sigma*(1+r)]
% 对数线性化:y_gap = E[y_gap(+1)] - (1/sigma)*(r)
y_gap = y_gap(+1) - (1/sigma)*r;
% --- (2) Fisher equation ---
r = i - pi(+1);
% --- (3) NKPC(产出缺口形式)---
pi = beta*pi(+1) + kappa*y_gap;
% --- (4) Taylor rule ---
i = rho_i*i(-1) + (1-rho_i)*(phi_pi*pi + phi_y*y_gap) + eps_m;
% --- (5) 技术冲击 AR(1) ---
A = rho_a*A(-1) + eps_a;
% --- (6) 自然产出与产出缺口关系(简化)---
% y_gap 在这里被视为给定内生变量,由 (1)(2)(3)(4) 联立决定
end;
steady_state_model;
% 见 03-steady-state.html
end;
shocks;
var eps_a; stderr 0.01;
var eps_m; stderr 0.0025;
end;
steady;
check;
stoch_simul(irf=20);
09 论文案例与常见错误
9.1 论文案例(英文经典)
9.2 论文案例(中文顶刊)
9.3 推导阶段的常见错误(≥3 条)
对 $b_{t+1}$ 求导时,只算了第 $t$ 期预算约束里的 $-\lambda_t b_{t+1}/(1+i_t)$,忘了第 $t+1$ 期收入项 $+\beta\lambda_{t+1}b_{t+1}/(1+\pi_{t+1})$。结果欧拉方程少了 $E_t$,整个模型变成 backward-looking。检查方法:所有跨期选择变量($b_{t+1}, K_{t+1}$)都要列两期。
把 $r_t=i_t-\pi_t$(当期通胀)写成 $r_t=i_t-E_t\pi_{t+1}$。名义利率 $i_t$ 是事前确定的,实际利率必须用预期通胀。Dynare 中要写 r = i - pi(+1);,不是 r = i - pi;。
正确的 $\kappa=(1-\theta)(1-\beta\theta)/\theta$。常见错误:① 漏掉 $(1-\beta\theta)$;② 分子分母写反;③ 没乘上 $(\sigma+\varphi)$ 把 $\widehat{mc}_t$ 换成 $\hat y_t$。代入数值验证:$\theta=0.75,\beta=0.99$,得 $\kappa_{mc}=0.0833$,再乘 $(\sigma+\varphi)=6$ 得 $\kappa_y\approx 0.5$,与 Galí 教材一致。
在 Dynare 里把 $\lambda_t$ 声明为 var 是错的——它只是个数学工具,应该在 FOC 里被消掉。正确做法:先在纸上把 $\lambda_t=C_t^{-\sigma}$ 代入,只把"消完乘子的方程"写进 Dynare。
9.4 进阶
- 下一步:04 · 稳态求解,把 FOC 系统在零通胀稳态下解出来。
- Galí (2015) 附录 3.1 给出完整的 FOC 推导;Woodford (2003) Ch. 3 给出 stochastic discount factor 的严格版本。