楼主: 蜜汁的鱿鱼
261 0

[其他] 中型新凯恩斯主义 (New Keynesian) 模型python [推广有奖]

  • 0关注
  • 0粉丝

VIP1

学前班

80%

还不是VIP/贵宾

-

威望
0
论坛币
1520 个
通用积分
0.1391
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
30 点
帖子
2
精华
0
在线时间
0 小时
注册时间
2018-5-20
最后登录
2018-6-6

楼主
蜜汁的鱿鱼 发表于 2025-11-21 11:00:36 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

美国经济 DSGE 模拟器 (Smets-Wouters 风格)

本仪表板模拟了一个中型新凯恩斯主义 (New Keynesian) 模型,类似于 Smets & Wouters (2007)。 它捕捉了粘性价格消费习惯形成投资调整成本以及货币政策反应当前基准: 美国 2025 Q2 数据 estimates。

核心模型说明

为实现在 Python 环境下的高效运行,该模型采用线性化处理的中型新凯恩斯主义 DSGE 结构,避免依赖复杂的求解工具(如 Dynare)。 模型引入了混合预期机制(Hybrid Expectations),融合前瞻性与后顾性变量,从而有效复现 Smets-Wouters 类模型的关键动态特征,包括但不限于:

  • 通胀惯性(由价格粘性导致)
  • 消费路径平滑(受习惯形成影响)
  • 投资调整成本带来的资本积累延迟响应

这种设计在保持理论严谨性的同时,提升了在轻量级环境中的可执行性。

数据校准:基于 2025 年第二季度美国经济预估

模型参数已根据对美国宏观经济走势的预测进行初始化设定。主要假设包括:

  • 名义 GDP 基准值约为 29 万亿美元
  • 自然利率水平处于相对高位,反映当前货币政策背景
  • 其他结构性参数参考主流文献与近期估计值进行配置

所有冲击将以占 GDP 的百分比形式内生转换,确保结果具备可比性和现实意义。

财政冲击模拟功能

系统默认设置为一次规模达4500 亿美元的财政退税或支出刺激,对应于当前政策讨论中的提案。 该数值将自动换算为占 GDP 约 1.55% 的外生需求冲击,并通过政府支出模块注入模型。

用户可在侧边栏自定义以下内容:

  • 财政支出金额(单位:十亿美元)
  • 冲击的持续性系数(AR(1) 衰减率 rho_g)
app.py

交互式操作与可视化能力

本应用基于 Streamlit 构建,提供完全交互式的前端体验。用户可以实时调整:

  • 财政冲击规模与持久性
  • 泰勒规则参数(如利率对通胀和产出缺口的敏感度)
  • 部分深层结构参数(如跨期替代弹性、习惯形成强度等)

所有变动将即时触发模型重新计算,并更新下方的动态响应图谱。

运行指南

要本地部署并运行此模拟器,请先安装所需依赖库:

pip install streamlit numpy pandas plotly

随后将以下完整代码保存为文件:

app.py

streamlit run app.py

Python 实现代码(app.py)

import streamlit as st
import numpy as np
import pandas as pd
import plotly.graph_objects as go
from plotly.subplots import make_subplots

# --- 页面配置 ---
st.set_page_config(page_title="US Economy DSGE Simulator (2025 Q2)", layout="wide")
st.title("???????? 美国经济 DSGE 模拟器 (Smets-Wouters 风格)")
st.markdown("""
本仪表板模拟了一个**中型新凯恩斯主义 (New Keynesian) 模型**,类似于 Smets & Wouters (2007)。
它捕捉了**粘性价格**、**消费习惯形成**、**投资调整成本**以及**货币政策反应**。
**当前基准:** 美国 2025 Q2 数据 estimates。
""")

# --- 侧边栏:控制面板 ---
st.sidebar.header("?? 模型校准与冲击设置")

# 1. 冲击设置
st.sidebar.subheader("1. 财政刺激方案")
fiscal_dollar_amount = st.sidebar.number_input(
    "财政冲击规模 (十亿美元)",
    min_value=0.0,
    max_value=5000.0,
    value=450.0,
    step=50.0,
    help="例如:正在讨论的 4500 亿美元退税。"
)
shock_persistence = st.sidebar.slider(
    "冲击持久性 (rho_g)",
    0.0, 0.99, 0.85,
    help="冲击持续的时间。0.9 表示冲击消退很慢,0 表示一次性瞬间冲击。"
)

# 2. 经济结构参数 (Smets-Wouters 风格)
st.sidebar.subheader("2. 结构参数")
sigma = st.sidebar.slider("跨期替代弹性 (Sigma)", 0.5, 3.0, 1.5)
habits = st.sidebar.slider("习惯形成 (Habit Formation)", 0.0, 0.9, 0.7, help="数值越高,消费调整越平滑")

def run_simulation():
# --- 2025年第二季度基准数据设定 ---
# 假设美国年化名义GDP约为29万亿美元
us_gdp_baseline = 29000
# 将财政冲击金额转换为占GDP的百分比(DSGE模型中使用的是百分比偏差)
g_shock_initial = (fiscal_dollar_amount / us_gdp_baseline) * 100
# 模拟周期长度(以季度为单位)
T = 20
quarters = pd.date_range(start='2025-04-01', periods=T, freq='Q')

# 初始化各变量数组(所有变量表示相对于稳态的百分比偏离)
# Y: 产出,Pi: 通胀率,R: 名义利率,C: 消费,I: 投资,Q_val: 托宾Q值,G: 财政冲击
Y = np.zeros(T)
Pi = np.zeros(T)
R = np.zeros(T)
C = np.zeros(T)
I = np.zeros(T)
Q_val = np.zeros(T)
G = np.zeros(T)

# 设定初始财政冲击值
G[0] = g_shock_initial

# 开始时间迭代求解(采用简化版的混合预期与逐步推进方法)
# 此处为简化的动态随机一般均衡模型传递机制模拟
for t in range(T):
    if t > 0:
        # 财政冲击按自回归过程AR(1)衰减
        G[t] = shock_persistence * G[t-1]

    # 构建前向变量代理(使用适应性预期结合均值回归进行近似)
    # 在完整Dynare模型中会通过Blanchard-Kahn条件精确求解
    E_Y_next = Y[t-1] * 0.8 if t > 0 else 0
    E_Pi_next = Pi[t-1] * 0.7 if t > 0 else 0

    # 名义利率滞后项获取
    prev_R = R[t-1] if t > 0 else 0

    # 内层迭代循环:用于处理当期变量之间的相互依赖关系(定点迭代法)
    for _ in range(10):
        # 近似IS关系:总需求由消费、投资和政府支出构成

        # 消费欧拉方程(包含消费习惯形成效应)
        prev_C = C[t-1] if t > 0 else 0
        # 简化形式表达:当前消费受前期消费、预期未来产出及实际利率影响
        C[t] = (habits * prev_C + (1 - habits) * E_Y_next - (1/sigma) * (R[t] - E_Pi_next)) / (1 + 0.1 * habits)

        # 投资欧拉方程(考虑调整成本)
        # Q_t = beta * E_Q_{t+1} + (R_t - E_Pi)
        # I_t = (1/inv_adj) * Q_t
        # 简化处理:投资对实际利率高度敏感
        I[t] = - (1 / inv_adj) * (R[t] - E_Pi_next) * 5  # *5用于增强可视化效果,体现投资波动性强的特点

# --- 央行货币政策反应函数(泰勒规则)---
st.sidebar.subheader("3. 美联储反应 (泰勒规则)")
phi_pi = st.sidebar.number_input("通胀反应系数", 1.0, 3.0, 1.5)
phi_y = st.sidebar.number_input("产出缺口反应系数", 0.0, 1.0, 0.125)
rho_r = st.sidebar.slider("利率平滑 (Interest Smoothing)", 0.0, 0.9, 0.8)

# --- 用户可调参数界面 ---
kappa = st.sidebar.slider("价格粘性 (Kappa slope)", 0.01, 0.5, 0.1, help="菲利普斯曲线斜率。数值越低,价格越具有粘性")
inv_adj = st.sidebar.slider("投资调整成本", 1.0, 10.0, 4.0)

### 模拟结果:${fiscal_dollar_amount} Billion 财政冲击

情景分析:
假设在 2025 Q2 发生一次性的财政转移支付(或政府支出增加),其规模相当于 GDP 的 {G[0]:.2f}%

GDP 峰值影响

+{np.max(Y):.2f}%

偏离稳态

通胀峰值

+{np.max(Pi):.2f}%

偏离目标

政策利率峰值

+{np.max(R):.2f}%

基点变化

挤出效应 (投资)

{np.min(I):.2f}%

投资下降

核心宏观变量脉冲响应 (IRF)

产出缺口 (Output Gap),通胀 (Inflation),名义利率 (Fed Funds Rate)

采用新凯恩斯菲利普斯曲线(NKPC)构建通胀动态机制,其中通胀不仅受预期未来通胀和实际经济活动影响,还引入一定的惯性成分。具体设定如下:

Pi[t] = 0.5 × prev_Pi + 0.5 × 0.99 × E_Pi_next + kappa × Y[t]
其中 prev_Pi 表示上一期的通胀水平(t=0 时设为 0),E_Pi_next 代表下一期的预期通胀,kappa 为反应系数,Y[t] 作为边际成本的代理变量。

总产出 Y_t 由消费、投资与政府支出加权构成,权重分别为 C 占 68%,I 占 17%,G 占 15%。财政冲击 G_shock 直接作用于总产出方程中:

Y[t] = 0.68 × C[t] + 0.17 × I[t] + G[t]

货币政策遵循泰勒规则形式的调整路径:

target_R = phi_pi × Pi[t] + phi_y × Y[t]
R[t] = rho_r × prev_R + (1 - rho_r) × target_R

该式表明当前利率 R[t] 是前期利率 prev_R 与目标利率 target_R 的加权平均,体现政策的渐进调整特征。

# --- 运行模拟 ---
quarters, Y, Pi, R, C, I, G = run_simulation()

财政冲击衰减 (G),消费反应 (C),投资反应 (I)

核心模型解析

该仪表板不仅展示可视化图表,其背后运行着一个结构化的宏观经济模型。以下是各关键模块的数学机制与经济逻辑说明:

1. 财政冲击(Fiscal Shock) - \( G_t \)

设定初始财政刺激规模为 4500亿美元。以2025年美国名义GDP约29万亿美元为基准,这一冲击相当于GDP的一定比例。

财政支出的动态过程由以下自回归公式刻画:

\[ \hat{g}_t = \rho_g \hat{g}_{t-1} + \epsilon_t^g \]

此即模拟中默认触发的“退税”政策路径,具有持续性但逐渐衰减的特点。

2. IS 曲线(需求侧) - \( Y_t, C_t, I_t \)

本模型借鉴Smets-Wouters框架中的习惯形成(Habit Formation)消费行为假设。当家庭获得4500亿退税时,并不会一次性全部消费,而是根据跨期最优进行平滑分配。

消费决策遵循如下欧拉方程:

\[ c_t = \frac{h}{1+h}c_{t-1} + \frac{1}{1+h}E_t c_{t+1} - \frac{1-h}{\sigma(1+h)}(r_t - E_t \pi_{t+1}) \]

这解释了为何在输出图中,消费的增长比财政冲击本身更为缓和且持久,呈现出典型的“渐进响应”特征。

3. 新凯恩斯菲利普斯曲线(供给侧) - \( \pi_t \)

通胀不仅受当前产出缺口影响,还受到预期通胀历史通胀惯性的共同驱动:

\[ \pi_t = \frac{\beta}{1+\beta \gamma}E_t \pi_{t+1} + \frac{\gamma}{1+\beta \gamma}\pi_{t-1} + \kappa y_t \]

在2025年的模拟情境下,若公众对通胀预期保持锚定,则财政刺激引发的价格上涨将是短期现象,不会导致持续性通胀压力。

[p]4. 货币政策反应函数(美联储) - \( R_t \)[/p]

美联储对经济波动做出系统性回应,其利率调整规则基于泰勒原理:

\[ r_t = \rho r_{t-1} + (1-\rho)(\phi_{\pi}\pi_t + \phi_y y_t) \]

在当前设定中,较高的利率敏感性(Sigma=σ)以及央行对通胀的强硬立场(Phi_pi=φ_π),意味着即使有大规模财政刺激,货币政策将迅速收紧以抑制过热风险。

[p][/p]

???? 经济分析 (Analysis)

模型洞察:

  1. 乘数效应:初始的 {G[0]:.2f}% GDP 财政冲击最终带来了 {np.max(Y):.2f}% 的总产出增长。
    • 若产出增幅小于冲击幅度,则表明发生了挤出效应(Crowding Out)
    • 在本次模拟中,利率最高上升了 {np.max(R):.2f}%,显著抑制了私人投资,如右下角图表所示。
  2. 通胀动态:由于价格粘性({'粘性' if kappa < 0.1 else '弹性'}定价机制),通胀滞后于产出回升。美联储随即通过加息(依据泰勒规则)进行反向调节,从而冷却经济活动。
  3. 2025年情景展望:尽管4500亿美元的退税可在短期内提振消费需求,但由于较高的消费平滑倾向(Sigma=σ)及美联储强烈的政策反弹(Phi_pi=φ_π),其长期增长效应将被部分抵消。

技术说明:本模型基于线性化DSGE系统的数值求解方法。完整的Smets-Wouters模型包含7类外生冲击及更复杂的劳动力市场摩擦(如工资粘性)。本简化版本保留了核心的欧拉方程与新凯恩斯菲利普斯曲线的基本动力学结构,适用于教学与政策推演场景。

在模型中,若利率显著上升(绿线),表明美联储正通过紧缩性货币政策来应对财政刺激所引发的通胀压力。这种政策调整通常会推高融资成本,从而导致私人部门投资减少,即出现所谓的投资被挤出现象(表现为棕色线下行)。

如何利用该仪表板开展决策分析?

模拟“软着陆”情景: 可尝试调低冲击的持久性(persistence),同时提升美联储对通胀的响应强度,即反应系数(phi_pi)。在此设定下,观察经济是否能在不引发产出明显下滑的前提下,有效抑制通胀上升。

模拟“滞胀”情景: 降低价格粘性(Kappa)并增大外部冲击的规模,此时将观察到通胀快速攀升,而经济增长动力不足,呈现出典型的滞胀特征。

评估4500亿美元退税政策的影响: 在默认参数运行结果中可见,尽管短期内GDP有所提升,但由于利率随之上升,私人投资(Investment)出现回落。这一现象正是经济学中常见的财政挤出效应的体现。

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Keynesian 新凯恩斯主义 python Keynes 凯恩斯主义

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-2-9 15:43