MAKRO:基于经济建模技术的丹麦经济分析与政策模拟项目

用户可借助该项目分析丹麦经济短期和长期运行状况,评估经济政策举措影响及向长期路径的过渡。它由DREAM的MAKRO模型组开发,参数、方程和数据兼具实证与理论基础,内置程式化基线便于政策实验模拟。【此简介由AI生成】

分支5Tags2
文件最后提交记录最后更新时间
2 个月前
2 个月前
2 个月前
2 个月前
2 个月前
2 个月前
2 个月前
3 个月前
2 个月前
2 个月前
2 个月前
2 个月前

MAKRO 2026年6月版

MAKRO是一个经济模型,旨在对丹麦经济的短期和长期状况提供良好描述。此外,该模型还用于分析经济政策举措如何影响经济,包括向长期路径的逐步过渡。

本模型由DREAM(丹麦经济分析与建模研究所)的MAKRO模型组开发,供丹麦财政部及其他机构使用。

模型参数、方程和数据的选择,均确保其短期和长期特性具有坚实的实证与理论基础。任何对参数、方程或数据的修改均由用户自行负责,我们要求在任何使用MAKRO的出版物中,都必须明确说明所做的任何修改。

该模型内置了一个程式化基线,因此用户无需校准模型即可模拟边际政策实验。请注意,此程式化基线基于若干简化的预测假设。因此,该基线应仅用于边际实验,而不应本身作为预测。特别是,该基线通常不考虑已通过但在最后一个数据年度尚未生效的政策变化的影响,例如计划中的税收变化或政府支出计划。该基线也不考虑去年高频数据的滞后影响或本年度内的指标。

2026年6月版

自2026年5月版以来的主要变化

建模方面

  • 简化了工资谈判、劳动力需求以及结构性就业/生产率中的行业聚合(在struk.gms中,私营部门以总量水平建模;在labor_market.gms中,特定行业的qProd设为外生变量)

数据更新

修订投入产出矩阵:现在,将公共部门作为一个生产部门的完整投入产出矩阵是根据国民账户数据计算得出的,而非对2014年至最后一个最终数据年度(在6月修订版中为2023年)进行估算。初步年份和2014年之前年份的投入产出矩阵,是根据数据覆盖年份以及ADAM在这些年份的投入产出矩阵进行估算的。投入产出结构的主要差异在于,私营建筑部门规模缩小,因为其中一部分现在被纳入公共部门。另一方面,私营服务部门规模略有扩大,因为纳入公共部门的该部门部分有所减少。公共部门对自身的生产投入相对较大,生产投入矩阵也据此进行了修订。

技术细节、重构与清理

  • 将财政可持续性指标(HBI)计算提取到专用模块HBI.gms
  • 将多个名为“run.py”的文件重命名为更具描述性的名称,例如“run_shocks.py”
  • 添加了简单的冲击模板文件
  • 标准冲击文件更加稳健。此前,求解器在处理具有完整2129时间范围的某些冲击时难以收敛。

2026年5月以来新增、移除或重新定义的变量

新增变量

  • fqProd[s_,t]——特定部门工资/生产率缩放参数;替换uProd[s_,t]fqProd[spTot,t]适用单独的总量平衡方程。

  • fhL[t]——确保工时(hL)在部门层面与按年龄分布的劳动力供给层面(包括跨境工人)相匹配的平衡因子。

  • juhLxDK[t]——对跨境工时规模参数uhLxDK的 multiplicative 调整(替换jhL2nLxDK,后者是对每位跨境工人工时的 additive 调整)。

  • jfnOrlov[s_,t]——用于私营部门间育儿假分配的 multiplicative 调整(替换 additive jnOrlov)。

移除变量

  • hL2nLxDK[t]——每位跨境工人的工时。
  • shL2nL[s_,t]——每位就业人员的结构性工时。
  • shL2nLxDK[t]——每位跨境工人的结构性工时。
  • vVirkLoenPos[t]——工资谈判中的辅助变量:企业在工资谈判中价值函数的正部分。
  • dvVirk2dpW[t]——工资谈判中的辅助变量:企业价值函数对工资的导数。
  • svVirkLoenPos2w[t]——vVirkLoenPos[t]的结构性对应变量。
  • sdvVirk2dpW[t]——dvVirk2dpW[t]的结构性对应变量。
  • dqL2dnL[s_,t]——辅助变量:有效劳动(qL)对就业(nL)的导数;用于劳动力需求的用户成本一阶条件(FOC)。
  • dqL2dnLlag[sp,t]——辅助变量:qL[t]nL[t-1]的导数。
  • fpL_spTot[t]——捕捉总体劳动力用户成本中构成效应和雇佣成本效应的修正因子。
  • fDiskpL[sp,t]——前瞻性劳动力需求(用户成本一阶条件)中的外生贴现因子。
  • uProd[s_,t]——控制分支机构特定劳动生产率的参数(由fqProd[s_,t]替换)。
  • svFFOutsideOption2w[t]——工资谈判中工会外部选择的结构性对应变量。
  • sdFF2dLoen[t]——工会价值函数对工资的结构性导数。
  • sdqL2dnL[s_,t]——辅助变量:结构性有效劳动(sqL)对结构性就业(snL)的导数。
  • sdqL2dnLlag[sp,t]——辅助变量:sqL[t]snL[t-1]的导数。
  • fsqProd[t]——结构性部门生产率(sqProd)的平衡因子;随着结构性部门聚合简化而移除。
  • nSoegBase[t]——国内和跨境搜索者以及就业者的总池;转而使用nSoegBaseHhnSoegBasexDK
  • rAMDisk[t]——工资谈判中的外生贴现率;pW中的前瞻性工资粘性项现在使用fVirkDisk[spTot,t]

已更改定义

  • mtVirk[t]——边际企业所得税率(不再按部门分布;原mtVirk[s_,t])。
  • spL2pW[t]——结构性用户成本与工资比率;聚合至私营部门总额(原spL2pW[sp,t])。

2026年5月以来的变量名称变更

("新名称", "旧名称"), ("fqProd[s_,t]", "uProd[s_,t]"), ("spL2pW[t]", "spL2pW[sp,t]"),

文档说明

本仓库中包含英文的模型文档,具体路径为Documentation/Documentation.pdf

该文档在2023年3月版本中进行了全面的改进和精简,强烈建议阅读此文档! 自那时起,文档持续更新,但可能仍有部分细节尚未更新。

代码中的变量名称和文档为丹麦语;不过,关于代码结构的注释为英语,以便需要参考大型模型结构模板的人员使用。

模型源代码

定义所有模型方程的源代码可在model子目录中找到。

模块

模型分为多个模块,每个模块定义一组内生变量以及数量完全相等的约束条件。这种划分主要是为了方便用户,而非出于技术原因,因为所有模块是同时求解的。

  • aggregates - 计算与多个其他模块相关联的对象
  • consumers - 消费决策和预算约束
  • exports - 对国产和进口商品出口的Armington需求
  • finance - 企业融资与估值
  • government - 政府汇总模块
  • GovRevenues - 政府收入(另见税收模块)
  • GovExpenses - 政府支出
  • HBI - 财政可持续性:政府收支的净现值和财政可持续性指标(HBI)
  • HHincome - 家庭收入和资产组合核算
  • IO - 投入产出(IO)系统的详细信息。不同需求组成部分由国内生产与进口商品竞争满足
  • labor_market - 劳动力参与、求职与匹配以及工资谈判
  • pricing - 价格刚性、 markup 和国外价格
  • production_private - 私营部门生产和对生产要素的需求
  • production_public - 公共部门生产和对生产要素的需求
  • struk - 结构性水平,即潜在产出(总增加值)和结构性就业
  • taxes - 与投入产出系统密切相关的税率以及税收和关税收入

变量名称 - 代码与文档中

在变量名称方面,我们力求在简写符号与较长名称之间取得平衡。简写符号有助于提升复杂方程式的可读性,而较长名称则更为明确、自解释,这在代码编写中通常是良好实践。较长名称采用丹麦语。对于简写符号,我们遵循标准经济学文献中的符号惯例,例如,Y 代表产出,C 代表消费,依此类推。

除了名称的词根外,我们还使用以下前缀体系:

前缀命名体系:

  • j - 加性残差项
  • f - 因子,未指定的 multiplicative parameter
  • jf - 乘性残差项(或者等效地,j 和 f 两个前缀的组合 = 加在乘性因子上的残差)
  • E - 期望算子,很少使用,因为领先变量被隐含地用作模型一致预期
  • d - 导数,例如 dY2dX = ∂Y/∂X
  • s - 变量的结构版本
  • m - 边际 - 用于边际率与平均率不同的情况,例如 mt = 边际税率
  • u - 尺度参数(文档中为 μ)
  • t - 税率
  • r - 未指定的比率或比例
  • e - 指数,通常指弹性
  • p - (价格)按稳态通货膨胀率调整
  • q - (数量)按稳态生产率增长率调整
  • v - (价值 = p*q)按稳态通货膨胀率与生产率增长率的乘积调整
  • nv - 现值(按稳态通货膨胀率与生产率增长率的乘积调整)
  • n - 人数
  • h - 小时

例如,pC[c,t] 是消费商品的价格指数,具体而言是第 t 年的 c 类消费。在文档中,这表示为 pc,tCp^C_{c,t}。qC[c,t] 是源代码中相应的实际消费数量。在文档中,我们省略 q 前缀,直接写作 Cc,tC_{c,t}。源代码中总消费的价格指数是 pC[cTot,t]。在文档中,我们省略下标来指代总量,例如 ptCp^C_t

多词标识符书写时不使用空格或标点,除前缀外,每个单词的首字母大写,例如 nOrlovRest。

GAMS 与 gamY

MAKRO 采用 GAMS 编写,但使用了名为 gamY 的预处理器,该预处理器实现了便于处理大型模型的额外功能。

运行 MAKRO 需要安装 GAMS(GAMS 46 或更高版本),以及 GAMS 和所包含的 Conopt4 求解器的许可证。请注意,学生和学者可通过其所在大学获取许可证。 应在 paths.py 文件中调整本地 GAMS 安装路径。我们通常假设用户使用 Windows 系统,但 GAMS 和 MAKRO 均应与 Unix 操作系统兼容。

gamY 包含在 dream-tools Python 包中——详见下文安装说明。

Python 包

运行 MAKRO 所需的包可通过 pip 在 Python 中安装。

在 Windows 系统上,建议运行脚本 install.cmd,并使用 GAMS 安装时附带的 Python 版本。

文本编辑器

推荐使用 Cursor 作为 gamY 的文本编辑器,并结合 GAMS 安装的 Python 来运行 Python 运行脚本(run_*.py)。需安装 Python 和 Jupyter 扩展以运行 Python 脚本。要在 Cursor 中激活 GAMS Python 环境,请使用 ctrl+shift+p 并选择 Python: Select interpreter。若未找到 GAMS Python 环境,可手动输入路径(通常位于 GAMS 安装目录下,例如 C:\GAMS\53\GMSPython),并选择 python.exe 作为解释器。

请注意,在 MAKRO 安装目录中,有一个 Cursor 工作区 MAKRO.code-workspace,建议从该工作区打开 Cursor。 此工作区包含推荐的扩展包,例如用于语法兼容性的“gamY-syntax-highlighting”包。

运行冲击

冲击模板文件 为自定义冲击提供了简洁的起点。它加载基准情景,设置冲击年份和可选的税收反应,应用用户定义的冲击,求解模型并导出结果。

Analysis/Standard_shocks 子目录包含用于运行大量预定义冲击的文件。用户可通过编辑 standard_shocks.gms 来选择或取消选择冲击及其变体,例如冲击持续性和财政响应。

运行文件 Analysis/Standard_shocks/run_shocks.py 用于运行 standard_shocks.gmsshock_template.gms,随后运行 Python 报告文件。

关于冲击响应的报告,我们提供了 Python 脚本 plot_standard_shocks.py,用于生成包含多个冲击响应图表的综合报告,可比较一个或多个模型版本的冲击响应,以及/或同一冲击的多种变体。可在 shocks_to_plot.py 中添加要绘制的冲击,variables_to_plot.py 控制要绘制的变量。

plot_shocks.py 用于生成多个详细图表,以说明特定冲击的影响(不比较模型版本或冲击变体)。

国外经济

子目录“Foreign_Economy”包含一个“世界其他地区”模型,可用于例如货币政策和石油(价格/供应)冲击,详见Foreign_Economy。此代码内部包含模型定义,底部设有供用户调整的预定义冲击,可轻松编辑。要运行冲击,请执行脚本run_foreign_economy.py

请注意,该模型基于美国季度数据估算,其输入MAKRO时的聚合会通过年度平均自动完成。在Analysis/Standard_shocks中,目前有一个示例说明国外经济模型如何通过利率冲击映射到MAKRO。国外模型的文档也可在国外经济文件夹Foreign_Economy中找到。

项目介绍

用户可借助该项目分析丹麦经济短期和长期运行状况,评估经济政策举措影响及向长期路径的过渡。它由DREAM的MAKRO模型组开发,参数、方程和数据兼具实证与理论基础,内置程式化基线便于政策实验模拟。【此简介由AI生成】

定制我的领域
291.03 K57访问 GitHub