模型构建:以标准 New Keynesian 模型为例
写出家庭、中间品厂商、最终品厂商、中央银行、政府五个 agent 的完整优化问题。本页只"搭积木",不做一阶条件推导(下一页做)。
本页是 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$,最大化期望终身效用:
其中:$\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$:
两边除以 $P_t$ 写成实际量:
家庭选择 $\{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 加总:
其中 $\varepsilon>1$ 是中间品之间的 elasticity of substitution(替代弹性)。最终品厂商在给定 $P_t(j)$ 下,最小化成本 $\int_0^1 P_t(j)Y_t(j)dj$,反推出对每种中间品 $j$ 的需求:
对应的最终品价格指数(Dixit-Stiglitz price index)为:
直觉:CES 加总意味着每家中间品厂商都面对一条弹性为 $\varepsilon$ 的向下倾斜需求曲线,因此有 monopoly power(垄断力),可以定价高于边际成本——这就是 NK 模型"价格粘性会产生实际效应"的微观基础。
04 中间品厂商 + Calvo 定价
4.1 生产函数
每家中间品厂商 $j$ 用劳动 $N_t(j)$ 生产,技术水平 $A_t$ 对所有厂商相同。本工作站按用户要求采用:
注意这里没有资本 $K$,所以 $(1-\alpha)$ 是劳动产出弹性;$\alpha$ 可视作"固定要素"份额(相当于把资本归一化到 1 后的残留项)。技术冲击服从 AR(1):
4.2 成本最小化
给定 $W_t$,厂商 $j$ 选择 $N_t(j)$ 最小化总成本 $W_t N_t(j)$。从生产函数反推所需劳动:
代入成本,得到名义总成本与名义边际成本:
在 symmetric equilibrium(对称均衡)下所有厂商生产相同,加总后 $Y_t=A_t N_t^{1-\alpha}$,实际边际成本 $mc_t\equiv MC_t^n/P_t$:
4.3 Calvo 定价
Calvo (1983) 的核心假设:每一期只有 $1-\theta$ 比例的中间品厂商能重新设定价格,剩下 $\theta$ 比例的厂商只能沿用上一期价格 $P_{t-1}(j)$。$\theta$ 就是"价格不调整概率",平均价格持续时间(price duration)为 $1/(1-\theta)$。
在 $t$ 期有机会调价的厂商选择新价格 $P_t^*$,最大化其贴现利润,受未来需求曲线约束:
其中 $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 调价比例推出):
这一等式是后续推导 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(带利率平滑的泰勒规则):
其中:$\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 给出:
如果你把 $\phi_\pi$ 设成 0.5,Dynare 会报 "Indeterminacy: 1 eigenvalue in excess..."。直觉:央行对通胀反应不足时,通胀预期上升→实际利率反而下降→进一步刺激通胀,太阳黑子均衡(sunspot equilibrium)出现。这是 NK 模型的"铁律"。
06 政府部门与财政
在 baseline 模型里,财政部门极简:政府征收 lump-sum tax $T_t$ 来满足自身预算约束,并且按 Ricardian 等价假设(lump-sum 税不影响家庭消费/劳动决策)。政府预算约束为:
在 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 模型有三个出清条件:
加总生产函数(利用 symmetric equilibrium 与 Y_t(j) 的需求曲线平均):在 Calvo 定价下精确加总会出现"价格分散"项 $\int(P_t(j)/P_t)^{-\varepsilon}dj$,但在零通胀稳态附近 log-linearize 后该项是二阶近似,可以忽略,于是:
08 Dynare .mod 文件骨架
把上面所有"文字描述"翻译成 Dynare 代码。注意:本页只是骨架,先把变量声明、参数、shock、model 块的结构写出来;FOC 与稳态将在第 3、4 页逐步补完。
% ============================================================
% 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 论文案例(英文经典)
9.2 论文案例(中文顶刊)
9.3 模型构建阶段的常见错误(≥3 条)
常见错误:写成 $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 方程就会错。
把"$\theta$ 比例能调价"写反成"$1-\theta$ 比例能调价",或者反过来。记法:$\theta$ 是"stickiness"(粘性),值越大价格越不灵活。$\theta=0.75$ 意味着 25% 调价、75% 不调价,平均价格持续 4 个季度。
本工作站用 $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,整个模型复杂度翻倍。一开始别加资本。
预算约束是名义量(含 $P_t, W_t, B_t$)还是实际量(含 $w_t, b_t$),全书要一致。Dynare 中建议全部写成实际量,否则价格水平 $P_t$ 会成为一个随机趋势变量,稳态无法识别。
9.4 进阶
- 下一步:02 · 一阶条件推导,把本页的优化问题逐一构造成 Lagrangian 并求导。
- 扩展阅读:Galí (2015) 第 3 章附录推导;Woodford (2003) Ch. 3。