前置条件与学习依赖 / PREREQUISITES
数学 / 统计基础拉格朗日动态最优化、多部门联立预算约束、对价格加成与工资的一阶泰勒展开;矩阵代数初步即可。
经济学理论前置垄断竞争、Calvo 定价、Taylor 规则、政府预算约束;RBC/NK 的家庭与厂商设定。
软件 / 计算前置MATLAB + Dynare ≥4.6,熟悉 .mod 的 var / model / parameters 块写法。
站内前置页面先学 10-nk-three-equation(三方程是本页的压缩版);可配合回看 09-rbc-model。
难度与路线位置进阶中尺度 NK 的'搭骨架'环节,学完再去 02 推 FOC。
📚 基础知识库 · 本页定位

本页是 DSGE 基础知识库页面。定位:先单独学会这个工具,再到模型分支里看它怎么用。模型构建是"搭积木"——把家庭、厂商、央行、政府的优化问题写清楚后,再去各分支看不同模型如何增减这些积木。

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

01 模型概览与符号约定

本工作站接下来 3 页(模型构建 → FOC → 稳态)使用同一个 baseline 模型:标准三方程 New Keynesian 模型的实物版,取自 Galí (2015) 第 3 章,并按用户要求把生产函数写成 $Y_t=A_t N_t^{1-\alpha}$ 的形式。模型有以下简化假设:

  • 没有资本积累(no physical capital),家庭只持有一期名义债券 $B_t$;
  • 没有投资 $I_t$,所以资源约束 $Y_t=C_t$;
  • 没有政府购买 $G_t$(财政仅 lump-sum tax 平衡预算);
  • 家庭是同质的 representative household,无收入异质性;
  • 中间品厂商 $j\in[0,1]$ 垄断竞争,按 Calvo (1983) 概率 $\theta$ 维持价格不变;
  • 技术冲击 $A_t$ 服从 AR(1),货币政策冲击 $\varepsilon_t^m$ i.i.d.。

符号约定:大写 $C_t, Y_t, N_t, B_t, P_t, W_t$ 为水平变量;带 hat 的 $\hat x_t \equiv \ln x_t - \ln \bar x$ 为对数偏离稳态;小写 $\pi_t \equiv \ln(P_t/P_{t-1})$ 为通胀率;$i_t$ 为名义利率(连续复利口径);$r_t$ 为事前实际利率。

为什么选这个模型做起点?

三方程 NK 模型是 DSGE 的 "Hello World"。它小到能在一页纸写完所有方程,又完整保留了 forward-looking 预期、名义刚性、货币政策反馈三大核心要素。把这个模型手推一遍,再去看 Smets-Wouters (2007) 那种 100+ 方程的大型模型,只是在加 frictions,骨架是一样的。

02 家庭部门 Household

2.1 效用函数

代表性家庭在 $t=0$ 期选择消费 $C_t$ 与劳动供给 $N_t$,最大化期望终身效用:

Homehold's Lifetime Utility
$$U(C_t,N_t)=\frac{C_t^{1-\sigma}}{1-\sigma}-\frac{N_t^{1+\varphi}}{1+\varphi}$$ $$\max_{\{C_t,N_t,B_{t+1}\}_{t=0}^{\infty}}\; E_0\sum_{t=0}^{\infty}\beta^t\, U(C_t,N_t)$$

其中:$\beta\in(0,1)$ 为 subjective discount factor(主观贴现因子);$\sigma>0$ 为 coefficient of relative risk aversion / inverse of intertemporal elasticity of substitution(相对风险厌恶系数,等于跨期替代弹性的倒数);$\varphi>0$ 为 inverse Frisch elasticity of labor supply(Frisch 劳动供给弹性的倒数)。第一项是 consumption utility(CRRA 形式,$\sigma=1$ 时退化为对数效用 $\ln C_t$);第二项是 labor disutility,劳动越多越不快乐。

2.2 预算约束

家庭用工资收入 $W_t N_t$、持有债券的利息收入、以及从厂商分到的股息 $\Pi_t$ 来购买消费品 $P_t C_t$ 并购买新一期名义债券 $B_{t+1}$。政府对家庭征收 lump-sum tax $T_t$:

Period Budget Constraint(名义量)
$$P_t C_t + \frac{B_{t+1}}{1+i_t} \le W_t N_t + B_t + P_t\,\Pi_t - P_t T_t$$

两边除以 $P_t$ 写成实际量:

预算约束(实际量)
$$C_t + \frac{b_{t+1}}{1+i_t}\frac{1}{1+\pi_t} \le w_t N_t + b_t + \Pi_t - T_t$$ $$\text{其中 } b_t\equiv B_t/P_{t-1},\; w_t\equiv W_t/P_t,\; 1+\pi_t\equiv P_t/P_{t-1}$$

家庭选择 $\{C_t,N_t,B_{t+1}\}$ 使效用最大化,受预算约束。终端条件为 non-Ponzi scheme 条件:$\lim_{T\to\infty} E_t[\beta^T \lambda_{t,T} b_{t+T+1}]\ge 0$。

2.3 家庭的两个核心决策

虽然本页不做 FOC 推导,但先把家庭要做的两个决策讲清楚:

  • 消费—储蓄决策(consumption-savings decision):在今天多消费一单位 $C_t$,和把这一单位存入债券、明天多消费 $1+r_t$ 单位之间权衡。这会推导出 Euler equation:$C_t^{-\sigma}=\beta E_t[C_{t+1}^{-\sigma}(1+r_t)]$。
  • 劳动—闲暇决策(labor-leisure decision):多工作一单位 $N_t$ 的边际负效用 $N_t^{\varphi}$,要等于用这一单位工资换来的消费的边际效用 $w_t C_t^{-\sigma}$。这会推导出 labor supply 方程:$\frac{N_t^{\varphi}}{C_t^{-\sigma}}=w_t$。
直觉

家庭最优化的本质是两个边际相等:跨期边际效用相等(Euler)和期内消费与闲暇的边际替代率等于实际工资(劳动供给)。下一页我们会用 Lagrangian 严格推。

03 最终品厂商 Final Goods Producer

经济中有一个完全竞争的最终品厂商,把 continuum(连续统)的中间品 $Y_t(j), j\in[0,1]$ 打包成最终消费品 $Y_t$。打包技术是 CES 加总:

CES Aggregator
$$Y_t = \left[\int_0^1 Y_t(j)^{\frac{\varepsilon-1}{\varepsilon}}\,dj\right]^{\frac{\varepsilon}{\varepsilon-1}}$$

其中 $\varepsilon>1$ 是中间品之间的 elasticity of substitution(替代弹性)。最终品厂商在给定 $P_t(j)$ 下,最小化成本 $\int_0^1 P_t(j)Y_t(j)dj$,反推出对每种中间品 $j$ 的需求:

对中间品 j 的需求曲线
$$Y_t(j) = \left(\frac{P_t(j)}{P_t}\right)^{-\varepsilon} Y_t$$

对应的最终品价格指数(Dixit-Stiglitz price index)为:

Dixit-Stiglitz Price Index
$$P_t = \left[\int_0^1 P_t(j)^{1-\varepsilon}\,dj\right]^{\frac{1}{1-\varepsilon}}$$

直觉:CES 加总意味着每家中间品厂商都面对一条弹性为 $\varepsilon$ 的向下倾斜需求曲线,因此有 monopoly power(垄断力),可以定价高于边际成本——这就是 NK 模型"价格粘性会产生实际效应"的微观基础。

04 中间品厂商 + Calvo 定价

4.1 生产函数

每家中间品厂商 $j$ 用劳动 $N_t(j)$ 生产,技术水平 $A_t$ 对所有厂商相同。本工作站按用户要求采用:

生产函数(规模报酬递减)
$$Y_t(j) = A_t\, N_t(j)^{1-\alpha},\qquad \alpha\in(0,1)$$

注意这里没有资本 $K$,所以 $(1-\alpha)$ 是劳动产出弹性;$\alpha$ 可视作"固定要素"份额(相当于把资本归一化到 1 后的残留项)。技术冲击服从 AR(1):

技术冲击过程
$$\ln A_t = \rho_a \ln A_{t-1} + \varepsilon_t^a,\qquad \varepsilon_t^a\sim \text{i.i.d. N}(0,\sigma_a^2)$$

4.2 成本最小化

给定 $W_t$,厂商 $j$ 选择 $N_t(j)$ 最小化总成本 $W_t N_t(j)$。从生产函数反推所需劳动:

劳动需求
$$N_t(j) = \left(\frac{Y_t(j)}{A_t}\right)^{\frac{1}{1-\alpha}}$$

代入成本,得到名义总成本与名义边际成本:

名义边际成本
$$TC_t(j) = W_t \left(\frac{Y_t(j)}{A_t}\right)^{\frac{1}{1-\alpha}}$$ $$MC_t^n(j) = \frac{\partial TC_t(j)}{\partial Y_t(j)} = \frac{W_t}{(1-\alpha)A_t}\left(\frac{Y_t(j)}{A_t}\right)^{\frac{\alpha}{1-\alpha}}$$

在 symmetric equilibrium(对称均衡)下所有厂商生产相同,加总后 $Y_t=A_t N_t^{1-\alpha}$,实际边际成本 $mc_t\equiv MC_t^n/P_t$:

实际边际成本(加总后)
$$mc_t = \frac{W_t/P_t}{(1-\alpha) A_t N_t^{-\alpha}} = \frac{w_t}{(1-\alpha)A_t N_t^{-\alpha}}$$

4.3 Calvo 定价

Calvo (1983) 的核心假设:每一期只有 $1-\theta$ 比例的中间品厂商能重新设定价格,剩下 $\theta$ 比例的厂商只能沿用上一期价格 $P_{t-1}(j)$。$\theta$ 就是"价格不调整概率",平均价格持续时间(price duration)为 $1/(1-\theta)$。

在 $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}$$

其中 $Q_{t,t+k}=\beta^k \frac{C_{t+k}^{-\sigma}}{C_t^{-\sigma}}\frac{P_t}{P_{t+k}}$ 是 stochastic discount factor(随机贴现因子),$\theta^k$ 是"到 $t+k$ 期还没调价"的概率。注意:被调价概率 $\theta$ 越高,厂商在定价时越要考虑遥远未来的边际成本,价格越"僵硬"。

价格动态加总方程(由 Dixit-Stiglitz 价格指数 + Calvo 调价比例推出):

价格加总(Law of Motion for Price Index)
$$P_t^{1-\varepsilon} = \theta P_{t-1}^{1-\varepsilon} + (1-\theta)(P_t^*)^{1-\varepsilon}$$

这一等式是后续推导 NKPC 的关键桥梁:把它在零通胀稳态附近 log-linearize,就得到 $\pi_t=(1-\theta)\widetilde{p}_t^*$,再结合最优定价 FOC,就推出 $\pi_t=\beta E_t\pi_{t+1}+\kappa mc_t$。下一页会完整推。

05 中央银行 Taylor Rule

央行不做最优化,按一个简单反馈规则设定名义政策利率 $i_t$(被称为 instrument rule)。本工作站采用 smoothed Taylor rule(带利率平滑的泰勒规则)

Taylor Rule with Interest-Rate Smoothing
$$i_t=\rho_i i_{t-1}+(1-\rho_i)(\phi_\pi \pi_t+\phi_y \hat{y}_t)+\varepsilon_t^m$$

其中:$\rho_i\in[0,1)$ 为 interest rate smoothing parameter(利率平滑系数,$\rho_i=0$ 即无平滑的原始 Taylor 规则);$\phi_\pi>1$ 为对通胀的反应系数(Taylor principle 要求 $\phi_\pi>1$,否则模型 indeterminate);$\phi_y\ge 0$ 为对产出缺口的反应系数;$\varepsilon_t^m\sim\text{i.i.d. N}(0,\sigma_m^2)$ 为 monetary policy shock(货币政策冲击),也叫 innovation to interest rate。

实际利率由 Fisher equation 给出:

Fisher Equation(对数线性化后)
$$r_t \equiv i_t - E_t\pi_{t+1}$$
Taylor principle 不能违反

如果你把 $\phi_\pi$ 设成 0.5,Dynare 会报 "Indeterminacy: 1 eigenvalue in excess..."。直觉:央行对通胀反应不足时,通胀预期上升→实际利率反而下降→进一步刺激通胀,太阳黑子均衡(sunspot equilibrium)出现。这是 NK 模型的"铁律"。

06 政府部门与财政

在 baseline 模型里,财政部门极简:政府征收 lump-sum tax $T_t$ 来满足自身预算约束,并且按 Ricardian 等价假设(lump-sum 税不影响家庭消费/劳动决策)。政府预算约束为:

政府预算约束
$$P_t G_t + (1+i_{t-1})B_{t-1} = P_t T_t + B_t$$

在 baseline 中令 $G_t=0$,并且因为债券市场出清 $B_t=0$(家庭部门净债券持有为零),所以 $T_t=0$。引入财政只是为了让预算约束完备;一旦你要做财政政策专题(如政府购买冲击、 distortionary tax),才需要把 $G_t$ 外生过程和 $T_t$ 内生引入。

在扩展模型中常见的财政设定:$\ln G_t = (1-\rho_g)\ln \bar g + \rho_g \ln G_{t-1} + \varepsilon_t^g$,资源约束改为 $Y_t=C_t+G_t$。

07 市场出清条件

把所有 agent 的方程拼起来后,必须加上 market clearing(市场出清)才能求解一般均衡。Baseline 模型有三个出清条件:

Market Clearing Conditions
$$\text{产品市场:}\quad Y_t = C_t$$ $$\text{劳动市场:}\quad N_t = \int_0^1 N_t(j)\,dj$$ $$\text{债券市场:}\quad B_t = 0 \quad(\text{净债券供给为零})$$

加总生产函数(利用 symmetric equilibrium 与 Y_t(j) 的需求曲线平均):在 Calvo 定价下精确加总会出现"价格分散"项 $\int(P_t(j)/P_t)^{-\varepsilon}dj$,但在零通胀稳态附近 log-linearize 后该项是二阶近似,可以忽略,于是:

加总生产函数(对数线性化后)
$$Y_t = A_t N_t^{1-\alpha}$$

08 Dynare .mod 文件骨架

把上面所有"文字描述"翻译成 Dynare 代码。注意:本页只是骨架,先把变量声明、参数、shock、model 块的结构写出来;FOC 与稳态将在第 3、4 页逐步补完。

dynare · baseline_nk.mod(骨架)
% ============================================================
% baseline_nk.mod —— 标准三方程 NK 模型(骨架版)
% 本页只搭结构;FOC 与 steady_state_model 在后续页补完
% ============================================================

// ---------- 1. 变量声明 ----------
var Y C N pi i r mc Y_gap;
%  Y: 产出  C: 消费  N: 就业  pi: 通胀  i: 名义利率
%  r: 实际利率  mc: 实际边际成本  Y_gap: 产出缺口

varexo eps_a eps_m;
%  eps_a: 技术冲击  eps_m: 货币政策冲击

// ---------- 2. 参数声明 ----------
parameters beta sigma phi alpha theta eps_p rho_a rho_i phi_pi phi_y;

% 校准参数(标准 NK 教材值)
beta     = 0.99;     % 季度主观贴现因子 -> 稳态年化实际利率约 4%
sigma    = 1.0;      % CRRA 系数(=1 即 log utility)
phi      = 5.0;      % Frisch 劳动供给弹性的倒数
alpha    = 0.25;     % 生产函数中劳动份额为 (1-alpha)
theta    = 0.75;     % Calvo 不调价概率(平均价格持续 4 季度)
eps_p    = 9.0;      % 中间品替代弹性 -> 稳态加成 1.5 (=9/8)
rho_a    = 0.9;      % 技术冲击 AR(1) 系数
rho_i    = 0.8;      % 利率平滑系数
phi_pi   = 1.5;      % Taylor rule 通胀反应系数(>1 满足 Taylor principle)
phi_y    = 0.5/4;    % Taylor rule 产出缺口反应系数

// ---------- 3. 模型方程(下一页补完 FOC)----------
model;
% --- 家庭欧拉方程(待第 3 页推导后补)---
% 1/C^sigma = beta*(1/r(+1)) * 1/C(+1)^sigma;

% --- 劳动供给(待补)---
% N^phi * C^sigma = w;

% --- 生产函数 ---
Y = A * N^(1-alpha);

% --- 资源约束 ---
Y = C;

% --- Taylor rule ---
i = rho_i*i(-1) + (1-rho_i)*(phi_pi*pi + phi_y*Y_gap) + eps_m;

% --- Fisher equation ---
r = i - pi(+1);

% --- 技术冲击 AR(1) ---
A = rho_a*A(-1) + eps_a;

% --- NKPC(待第 3 页推导后补)---
% pi = beta*pi(+1) + kappa*Y_gap;
end;

// ---------- 4. 稳态(待第 4 页补完)----------
steady_state_model;
  % 见 03-steady-state.html
end;

// ---------- 5. 求解与模拟 ----------
shocks;
var eps_a; stderr 0.01;
var eps_m; stderr 0.0025;
end;

steady;
check;
stoch_simul(irf=20, periods=100);
为什么先用骨架?

Dynare 工程化的最佳实践是自顶向下:先把变量/参数/冲击列清楚,再逐条补 model 块方程。每次加一条方程跑一次 check;,能立刻定位是哪条方程写错。直接抄别人完整 mod 文件,报错时根本不知道错在哪。

09 论文案例与常见错误

9.1 论文案例(英文经典)

English · 教材
Monetary Policy, Inflation, and the Business Cycle, Ch. 3: "A Basic New Keynesian Model"
Jordi Galí, Princeton UP, 2015 (2nd ed.)
本工作站模型符号系统的母本。Galí 第 3 章完整写出家庭、中间品厂商、Calvo、央行、市场出清,方程编号 (3.1)—(3.29)。建议对照本页方程逐条读。
English · JPE
Nominal Rigidities and the Dynamic Effects of a Shock to Monetary Policy
Christiano, Eichenbaum & Evans, JPE, 2005, 113(1)
CEE 在 baseline NK 上加了 habits、投资调整成本、可变资本利用率、Calvo 工资。读第 2 节 "The Model" 部分,看如何在本工作站的骨架上逐块加 friction。

9.2 论文案例(中文顶刊)

中文 · 经济研究
预期与经济波动——预期冲击是驱动中国经济波动的主要力量吗?
庄子罐、崔小勇、龚六堂、邹恒甫,《经济研究》,2012 年第 8 期
在本工作站的 baseline NK 上,把技术冲击拆成"预期 news shock"和"未预期 surprise shock"两个分量,再做贝叶斯估计。读其第 2 节 "模型设定",看中国学者如何把 Galí 模型本地化。
中文 · 金融研究
我国DSGE模型的开发及在货币政策分析中的应用
刘斌,《金融研究》,2008 年第 10 期
把本工作站的 baseline NK 扩展成开放经济(引入汇率、净出口),并加 Calvo 工资。读其 "2. 模型结构" 一节,看一个完整的 DSGE 论文如何铺陈家庭、厂商、央行、政府四块。

9.3 模型构建阶段的常见错误(≥3 条)

错误 1:预算约束里债券利息写反时间

常见错误:写成 $P_t C_t + B_{t+1} = W_t N_t + (1+i_t)B_t$。正确写法是上期持有债券 $B_t$ 在下一期支付利息 $(1+i_{t-1})B_t$,因为 $t$ 期买债券时利率 $i_t$ 要到 $t+1$ 期才兑现。时间下标错了,Euler 方程就会错。

错误 2:Calvo 概率 $\theta$ 的方向写反

把"$\theta$ 比例能调价"写反成"$1-\theta$ 比例能调价",或者反过来。记法:$\theta$ 是"stickiness"(粘性),值越大价格越不灵活。$\theta=0.75$ 意味着 25% 调价、75% 不调价,平均价格持续 4 个季度。

错误 3:生产函数的劳动份额

本工作站用 $Y_t=A_t N_t^{1-\alpha}$,所以劳动份额是 $1-\alpha$。如果把它误写成 $Y_t=A_t K_t^\alpha N_t^{1-\alpha}$(含资本的 Cobb-Douglas),稳态推导中会多出一个资本积累方程和 Tobin's Q,整个模型复杂度翻倍。一开始别加资本。

错误 4:把名义量和实际量混用

预算约束是名义量(含 $P_t, W_t, B_t$)还是实际量(含 $w_t, b_t$),全书要一致。Dynare 中建议全部写成实际量,否则价格水平 $P_t$ 会成为一个随机趋势变量,稳态无法识别。

9.4 进阶

  • 下一步:02 · 一阶条件推导,把本页的优化问题逐一构造成 Lagrangian 并求导。
  • 扩展阅读:Galí (2015) 第 3 章附录推导;Woodford (2003) Ch. 3。