前置条件与学习依赖 / PREREQUISITES
数学 / 统计基础变分/拉格朗日一阶条件、前瞻变量与乘子的时间下标、Calvo 无穷期定价问题的递归展开(求定价 FOC)。
经济学理论前置已搭好的 NK 模型部门设定(家庭预算约束 + 中间品厂商利润最大化 + 央行规则)。
软件 / 计算前置不强制;本页是纯推导。能对照 Dynare 模型块阅读会更有帮助。
站内前置页面先学 01-model-building(部门设定),本页把设定逐条变成 FOC。
难度与路线位置进阶DSGE 推导基本功,是 03 稳态求解的前置。
📚 基础知识库 · 本页定位

本页是 DSGE 基础知识库页面。定位:先单独学会这个工具,再到模型分支里看它怎么用。一阶条件(FOC)推导是把"部门优化设定"变成"可求解方程组"的关键一步——学会 Lagrangian 构造与 FOC 推导后,再去各分支看新机制(资本、金融约束、开放度)如何改写 FOC。

在哪些模型分支中使用:所有 DSGE 分支都要推 FOC—— RBC 基准模型 · NK 三方程 · 中尺度 SW · 小国开放经济 · 金融摩擦 BGG/GK · 财政与货币规则 · TANK两主体 · HANK

01 推导方法论与符号

DSGE 的一阶条件推导本质上是带约束的跨期最优化。标准流程:

Step 1:写出 objective 与 constraint
把 objective 写成 $E_0\sum \beta^t u(\cdot)$,把 constraint 写成等式(预算约束、需求曲线等)。
Step 2:构造 Lagrangian
对每个约束引入乘子 $\lambda_t$(约束值乘子),Lagrangian = objective $-\sum_t \beta^t \lambda_t \cdot(\text{constraint})$。
Step 3:对每个选择变量求偏导,令 = 0
注意跨期项:选择变量 $x_{t+1}$ 会同时出现在第 $t$ 期约束和第 $t+1$ 期约束里,求导时两项都要算。
Step 4:消去乘子 $\lambda_t$,得到 Euler equation
把 $\partial \mathcal L/\partial C_t=0$ 解出的 $\lambda_t=C_t^{-\sigma}$ 代入 $\partial \mathcal L/\partial b_{t+1}=0$。

本页使用的所有符号沿用上一页:$C_t, N_t, b_t, w_t, i_t, \pi_t$;$\beta, \sigma, \varphi$ 为参数。下面开始正式推导。

02 家庭 Lagrangian 的构造

家庭的优化问题(来自上一页 §2):

原始优化问题
$$\max_{\{C_t,N_t,b_{t+1}\}_{t=0}^{\infty}}\; E_0\sum_{t=0}^{\infty}\beta^t\left[\frac{C_t^{1-\sigma}}{1-\sigma}-\frac{N_t^{1+\varphi}}{1+\varphi}\right]$$ $$\text{s.t.}\quad C_t + \frac{b_{t+1}}{1+i_t} = w_t N_t + \frac{b_t}{1+\pi_t} + \Pi_t - T_t$$

把约束移到左边,定义 Lagrangian:

Lagrangian
$$\mathcal{L} = E_0\sum_{t=0}^{\infty}\beta^t\left\{ \frac{C_t^{1-\sigma}}{1-\sigma}-\frac{N_t^{1+\varphi}}{1+\varphi} - \lambda_t\left[C_t + \frac{b_{t+1}}{1+i_t} - w_t N_t - \frac{b_t}{1+\pi_t} - \Pi_t + T_t\right] \right\}$$

其中 $\lambda_t\ge 0$ 是预算约束乘子,其经济含义是"第 $t$ 期放松一单位预算约束(即多得一单位消费)带来的边际效用"。下面我们对三个选择变量 $C_t, N_t, b_{t+1}$ 分别求偏导。

03 FOC wrt $C_t$ 与劳动供给方程

3.1 对 $C_t$ 求导

$C_t$ 只出现在第 $t$ 期的花括号里(当期消费),所以:

对 C_t 求偏导
$$\frac{\partial \mathcal{L}}{\partial C_t} = \beta^t\left[C_t^{-\sigma} - \lambda_t\right] = 0$$ $$\Rightarrow\quad \lambda_t = C_t^{-\sigma}$$

解释:$\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$。合起来:

对 N_t 求偏导
$$\frac{\partial \mathcal{L}}{\partial N_t} = \beta^t\left[-N_t^{\varphi} + \lambda_t w_t\right] = 0$$ $$\Rightarrow\quad N_t^{\varphi} = \lambda_t w_t$$

把 $\lambda_t=C_t^{-\sigma}$ 代入,得到劳动供给方程

Labor Supply Equation
$$\frac{N_t^{\varphi}}{C_t^{-\sigma}} = w_t \quad\Longleftrightarrow\quad w_t = N_t^{\varphi}\, 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} 出现的两处
$$\text{第 } t \text{ 期:}\quad -\lambda_t \frac{b_{t+1}}{1+i_t}$$ $$\text{第 } t+1 \text{ 期:}\quad -\beta\lambda_{t+1}\left[-\frac{b_{t+1}}{1+\pi_{t+1}}\right] = +\beta\lambda_{t+1}\frac{b_{t+1}}{1+\pi_{t+1}}$$

把两项对 $b_{t+1}$ 求偏导,令其和为 0(注意第 $t+1$ 期变量在 $t$ 期看是期望 $E_t$):

对 b_{t+1} 求偏导(关键)
$$\frac{\partial \mathcal{L}}{\partial b_{t+1}} = E_t\left[ -\lambda_t\frac{1}{1+i_t} + \beta\lambda_{t+1}\frac{1}{1+\pi_{t+1}} \right] = 0$$

移项整理:

跨期无套利条件
$$\frac{\lambda_t}{1+i_t} = \beta E_t\left[\frac{\lambda_{t+1}}{1+\pi_{t+1}}\right]$$

代入 $\lambda_t=C_t^{-\sigma}$:

欧拉方程(精确形式)
$$\frac{C_t^{-\sigma}}{1+i_t} = \beta E_t\left[\frac{C_{t+1}^{-\sigma}}{1+\pi_{t+1}}\right]$$

两边同乘 $(1+i_t)$,把右端括号拆开:

欧拉方程(标准形式)
$$C_t^{-\sigma} = \beta E_t\left[C_{t+1}^{-\sigma}\cdot \frac{1+i_t}{1+\pi_{t+1}}\right]$$

定义事前实际利率 $(1+r_t)\equiv \frac{1+i_t}{1+E_t\pi_{t+1}}$(在零通胀稳态附近 $\pi_{t+1}\approx E_t\pi_{t+1}$,可作一阶近似),得到教科书版本:

Euler Equation(教科书版)
$$C_t^{-\sigma} = \beta E_t\left[C_{t+1}^{-\sigma}(1+r_t)\right]$$
一步都不能跳:为什么要乘 $(1+i_t)$?

因为第 $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$ 下,欧拉方程也写成产出形式:

IS Curve(非线性版)
$$Y_t^{-\sigma} = \beta E_t\left[Y_{t+1}^{-\sigma}(1+r_t)\right]$$

05 Calvo 厂商最优定价 FOC

Calvo 厂商的定价问题(上一页 §4.3):在 $t$ 期能调价的厂商选择 $P_t^*$ 最大化贴现利润:

Calvo 定价问题
$$\max_{P_t^*}\; E_t\sum_{k=0}^{\infty}\theta^k Q_{t,t+k}\left[ P_t^*\,Y_{t+k|t} - MC_{t+k}^n\,Y_{t+k|t}\right]$$ $$\text{s.t.}\quad Y_{t+k|t} = \left(\frac{P_t^*}{P_{t+k}}\right)^{-\varepsilon} Y_{t+k},\qquad Q_{t,t+k}=\beta^k\frac{C_{t+k}^{-\sigma}}{C_t^{-\sigma}}\frac{P_t}{P_{t+k}}$$

把需求函数代入利润:

代入需求后的利润
$$\Pi_{t+k|t} = (P_t^* - MC_{t+k}^n)\left(\frac{P_t^*}{P_{t+k}}\right)^{-\varepsilon}Y_{t+k}$$ $$= (P_t^* - MC_{t+k}^n)(P_t^*)^{-\varepsilon}P_{t+k}^{\varepsilon}Y_{t+k}$$

对 $P_t^*$ 求偏导(用乘积求导法则:$(a-b)x^{-\varepsilon}$ 的导数为 $x^{-\varepsilon} + (a-b)(-\varepsilon)x^{-\varepsilon-1}$):

对 P_t^* 求导
$$\frac{\partial \Pi_{t+k|t}}{\partial P_t^*} = (P_t^*)^{-\varepsilon}P_{t+k}^{\varepsilon}Y_{t+k} - \varepsilon(P_t^*-MC_{t+k}^n)(P_t^*)^{-\varepsilon-1}P_{t+k}^{\varepsilon}Y_{t+k}$$ $$= (P_t^*)^{-\varepsilon-1}P_{t+k}^{\varepsilon}Y_{t+k}\left[P_t^* - \varepsilon(P_t^*-MC_{t+k}^n)\right]$$

令贴现后求和的导数为 0,把公共因子 $(P_t^*)^{-\varepsilon-1}P_{t+k}^{\varepsilon}Y_{t+k}Q_{t,t+k}$ 约掉:

一阶条件
$$E_t\sum_{k=0}^{\infty}\theta^k Q_{t,t+k}Y_{t+k|t}\left[(1-\varepsilon)P_t^* + \varepsilon\,MC_{t+k}^n\right] = 0$$

把含 $P_t^*$ 的项与含 $MC$ 的项分开:

解出 P_t^*
$$(1-\varepsilon)P_t^*\,E_t\sum_{k=0}^{\infty}\theta^k Q_{t,t+k}Y_{t+k|t} + \varepsilon\,E_t\sum_{k=0}^{\infty}\theta^k Q_{t,t+k}Y_{t+k|t}MC_{t+k}^n = 0$$ $$\Rightarrow\quad P_t^* = \frac{\varepsilon}{\varepsilon-1}\cdot \frac{E_t\sum_{k=0}^{\infty}\theta^k Q_{t,t+k}Y_{t+k|t}MC_{t+k}^n}{E_t\sum_{k=0}^{\infty}\theta^k Q_{t,t+k}Y_{t+k|t}}$$

解释:$\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} = \theta P_{t-1}^{1-\varepsilon} + (1-\theta)(P_t^*)^{1-\varepsilon}$$

两边除以 $P_t^{1-\varepsilon}$:

归一化
$$1 = \theta\left(\frac{P_{t-1}}{P_t}\right)^{1-\varepsilon} + (1-\theta)\left(\frac{P_t^*}{P_t}\right)^{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 展开:

Taylor 展开
$$\left(\frac{P_{t-1}}{P_t}\right)^{1-\varepsilon} = \Pi_t^{\varepsilon-1} \approx 1 + (\varepsilon-1)\pi_t$$ $$\left(\frac{P_t^*}{P_t}\right)^{1-\varepsilon} \approx 1 + (1-\varepsilon)\widetilde p_t^*$$

代入归一化方程:

线性化
$$1 = \theta[1+(\varepsilon-1)\pi_t] + (1-\theta)[1+(1-\varepsilon)\widetilde p_t^*]$$

右端常数项 $\theta+(1-\theta)=1$,正好等于左端 1,抵消。剩下:

关键桥梁方程
$$0 = \theta(\varepsilon-1)\pi_t + (1-\theta)(1-\varepsilon)\widetilde p_t^*$$ $$\Rightarrow\quad \pi_t = \frac{1-\theta}{\theta}\,\widetilde p_t^*$$ $$\Rightarrow\quad \widetilde p_t^* = \frac{\theta}{1-\theta}\pi_t$$

07 NKPC 完整推导

7.1 最优定价的对数线性化

把 §5 的最优定价在零通胀稳态附近 log-linearize(Galí 推导),得到:

最优定价的递归形式
$$\widetilde p_t^* = (1-\beta\theta)\sum_{k=0}^{\infty}(\beta\theta)^k E_t\widehat{mc}_{t+k|t}$$ $$\Longleftrightarrow\quad \widetilde p_t^* = (1-\beta\theta)\widehat{mc}_t + \beta\theta E_t\widetilde p_{t+1}^*$$

其中 $\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{\theta}{1-\theta}\pi_t = (1-\beta\theta)\widehat{mc}_t + \beta\theta E_t\left[\frac{\theta}{1-\theta}\pi_{t+1}\right]$$

两边同乘 $\frac{1-\theta}{\theta}$:

New Keynesian Phillips Curve(边际成本形式)
$$\pi_t = \frac{(1-\theta)(1-\beta\theta)}{\theta}\,\widehat{mc}_t + \beta E_t\pi_{t+1}$$

定义斜率 $\kappa\equiv\frac{(1-\theta)(1-\beta\theta)}{\theta}$,即:

NKPC(边际成本形式)
$$\pi_t = \beta E_t\pi_{t+1} + \kappa\,\widehat{mc}_t$$

7.3 转化为产出缺口形式

在本工作站的 baseline 模型里(无资本、对称均衡),把劳动供给方程 $w_t=N_t^\varphi C_t^\sigma$ 与生产函数 $Y_t=A_t N_t^{1-\alpha}$、$C_t=Y_t$ 结合,可推出实际边际成本与产出缺口的关系:

mc 与产出缺口
$$\widehat{mc}_t = (\sigma+\varphi)\,\widehat{y}_t + \text{技术项}$$

在"产出缺口" $\hat y_t\equiv\widehat{Y}_t-\widehat{Y}_t^n$(偏离 flexible-price natural output)的定义下,技术项被自然产出吸收,于是:

NKPC(产出缺口形式,教科书版)
$$\pi_t = \beta E_t\pi_{t+1} + \kappa_y\,\hat y_t,\qquad \kappa_y\equiv(\sigma+\varphi)\kappa$$

本工作站按用户要求简记 $\kappa_y$ 为 $\kappa$:

NKPC(最终版)
$$\boxed{\;\pi_t = \beta E_t\pi_{t+1} + \kappa\,\hat y_t\;}$$
NKPC 与传统 Phillips Curve 的差别

传统 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$ 的线性形式。

dynare · baseline_nk_foc.mod(补完 FOC)
% ============================================================
% 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 论文案例(英文经典)

English · 教材
Monetary Policy, Inflation, and the Business Cycle, Ch. 3.2–3.4(Deriving the Optimality Conditions)
Jordi Galí, Princeton UP, 2015 (2nd ed.)
Galí 教材 §3.2 严格推导家庭 FOC(eq. 3.7—3.9),§3.3 推导 Calvo 最优定价(eq. 3.11—3.14),§3.4 推出 NKPC(eq. 3.19)。本工作站的推导顺序与编号完全对应。
English · AER
The Science of Monetary Policy: A New Keynesian Perspective
Richard Clarida, Jordi Galí & Mark Gertler, Journal of Economic Literature, 1999, 37(4): 1661–1707
"CGG 综述"。把 NK 三方程系统写成最简形式,并用它讲 policy trade-off。读其第 2 节 "The Model",看 FOC 如何被压缩成三方程。

9.2 论文案例(中文顶刊)

中文 · 经济研究
技术冲击、金融摩擦与经济波动
许志伟、王文甫,《经济研究》,2019 年
在标准 NK FOC 体系上引入金融摩擦,推导含银行部门的欧拉方程与 Modified NKPC。读其附录 A 的 FOC 推导,看复杂模型如何保留本工作站的基本骨架。
中文 · 经济研究
预期与经济波动——预期冲击是驱动中国经济波动的主要力量吗?
庄子罐、崔小勇、龚六堂、邹恒甫,《经济研究》,2012 年第 8 期
在 baseline NK 的 Euler equation 上引入 news shock 的预期项 $E_t\varepsilon_{t+1}^a$,使欧拉方程右端多一个 forward-looking 预期分量。是"在标准 FOC 上加一个冲击"的范式。

9.3 推导阶段的常见错误(≥3 条)

错误 1:求导时漏掉跨期项

对 $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}$)都要列两期。

错误 2:Fisher 方程用错

把 $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;

错误 3:NKPC 斜率 $\kappa$ 算错

正确的 $\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í 教材一致。

错误 4:把乘子 $\lambda_t$ 当成内生变量

在 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 的严格版本。