setup-dsge — DSGE 模型设定与脚手架
触发场景
- "我想建一个 DSGE 来研究 [关税冲击 / 利率规则 / 财政政策]"
- "扩展 RBC 加入 [资本调整成本 / 名义粘性 / 异质家庭]"
- "把这篇论文(DSGE)的代码用 Dynare 写出来"
- "我有一段经济机制的描述,请生成 spec.md 和 .mod 骨架"
输入契约
| 字段 | 类型 | 说明 |
|---|---|---|
model_name |
str | 例 rbc、smets_wouters、open_economy_dsge |
mechanism |
str | 自然语言描述:要研究的机制、冲击类型、关键特征 |
language |
enum | dynare (默认) / julia |
extends |
str? | 可选:基于哪个已有模型扩展 |
步骤清单
Step 1. 读上下文
- AGENTS.md 中的"计划先行"段
- .claude/rules/plan-first-modeling.md
- templates/model-spec-template.md
- 若 extends 不为空,读 model/01_setup/<extends>/spec.md
Step 2. 起草 spec.md
把 templates/model-spec-template.md 复制到 model/01_setup/<model_name>/spec.md,按以下顺序填空:
经济问题(1 段):研究问题、关键机制、文献定位
环境(1 段):时间设定、随机性来源、信息结构
代理人(每类 1 段):家庭、企业、政府、央行、外部经济
变量分类表:
变量 类型 时点 单位 含义 c_t控制 t 实物 消费 k_t状态 t 实物 资本(期初) z_t外生 t 比例 全要素生产率 … 方程系统(按家庭/企业/政府/出清/外生过程分块),每个方程附自然语言注释
函数形式(效用、生产、调整成本等)
参数表:
参数 含义 校准值(占位) 来源 beta折现因子 0.99 Smets-Wouters (2007) 求解方法:摄动阶数 / 网格 / 收敛准则 / 初值策略
验证目标:稳态矩、复现目标、IRF 形状先验
Step 3. 维度自检
agent 必须自己先做一次对账:
- 内生方程数 = 内生变量数?
- 每个方程的两端单位一致?
- 状态变量的时点(t-1 期初 vs t 期末)是否一致?
- 外生过程的协方差矩阵正定?
不通过则停下,提交 math-reviewer 子 agent。
Step 4. 提交 model-reviewer
把 spec.md 路径丢给 model-reviewer 子 agent。等评审通过后才能进入 Step 5。
Step 5. 生成代码骨架
依据 language:
- Dynare:复制
templates/master-dsge-template.mod到model/03_solve/<model_name>/<model_name>.mod,按 spec 填入:var ...;(内生变量)varexo ...;(外生冲击)parameters ...;+ 参数赋值model;块(方程)steady_state_model;(若可解析)shocks;块stoch_simul(...);调用
- Julia:复制
templates/master-ha-template.jl适配为 DSGE 模板,建立Model结构体、steady_state函数、linearize接口。
Step 6. 生成 LaTeX 公式镜像
把方程系统输出到 output/latex/<model_name>/equations.tex,使用 align* 与编号 \label{eq:<name>},与 spec.md 中的方程一一对应。
Step 7. 写入会话日志
把本次操作追加到 templates/session-log.md 的工作副本。
输出契约
| 文件 | 必产 | 说明 |
|---|---|---|
model/01_setup/<model_name>/spec.md |
✅ | 模型设定单一事实源 |
model/01_setup/<model_name>/equations.tex |
✅ | 方程 LaTeX 镜像 |
model/03_solve/<model_name>/<model_name>.mod 或 run.jl |
✅ | 代码骨架(不自行求解) |
model/02_calibrate/<model_name>/calibration.csv |
✅ | 占位校准(值待填) |
不允许的操作
- 在未通过
model-reviewer之前调用任何求解器 - 把"经验值"写进校准表而无来源
- 跳过维度自检直接生成代码
- 在
spec.md之外的位置放置方程系统
失败回退
| 症状 | 处理 |
|---|---|
| 用户机制描述太模糊 | 调用 interview-me skill 反向访谈 |
| 维度自检不过 | 写 quality_reports/<model>_dim_<date>.md 把矛盾列清楚交给 math-reviewer |
| spec 模板缺字段 | 不要漏填,宁可写 "TBD(理由:…)" 也别留空 |