diff --git a/models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/AGENTS.md b/models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/AGENTS.md new file mode 100644 index 00000000..a7ec6fca --- /dev/null +++ b/models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/AGENTS.md @@ -0,0 +1,90 @@ +# Ballpark entry: Algan–Ragot (2009) + +> Structured brief for coding agents (Claude Code, Cursor, etc.). Human-facing exposition lives in the notebooks and (when present) `index.md`. + +## Paper + +- **Citation:** Algan, Yann, and Xavier Ragot (2009), "Monetary policy with heterogeneous agents and borrowing constraints," *Review of Economic Dynamics* 13(2), pp. 295–316. (Available online 2009; print volume 13(2).) +- **DOI:** [10.1016/j.red.2009.05.001](https://doi.org/10.1016/j.red.2009.05.001). +- **Author preprint:** HAL [hal-01170621v1](https://sciencespo.hal.science/hal-01170621v1) (open-access archive; the verification is grounded in this preprint). +- **BibTeX:** see [`self.bib`](self.bib) (citekey: `algan2009monetary`). +- **JEL:** E2 (general macroeconomics), E5 (monetary policy, central banking). +- **Core model (paper §3, "The general model").** Heterogeneous households with incomplete markets, money-in-utility (CES with leisure), riskless capital savings, no borrowing (`a' ≥ 0`), idiosyncratic labor productivity following a 3-state Markov chain `e ∈ {e_h, e_m, e_l}`, lump-sum monetary transfer `μ` (sign depends on redistribution scheme), Cobb-Douglas aggregate production `Y = K^α L^(1-α)`, distortionary income tax `χ`, monetary growth rule `Ω_t = Ω_{t-1}/Π_t + π Ω_{t-1}/Π_t`. Quarterly model period. +- **Why in-ballpark:** Structural heterogeneous-agent monetary economics with explicit household problem (paper eqs. 15-22) and quantitative policy experiments (paper §4). Natural fit for Econ-ARK's HA / monetary threads. + +## If a user asks to work on this item + +1. **Read first:** `bellman-excerpt.md` (item root) — canonical modular Bellman / stages / perches for the household block. +2. **Draft computational scaffold:** `dolo-plus-draft.yaml` (item root) — interior two-stage draft; read inline `# unresolved:` / `# workaround:` before changing equations. +3. **AI iteration log:** `docs/opus-review.md` (Opus 4.7 review), `docs/matsya-evaluate-turn.txt` (Matsya Evaluate turn on the decomposition), and `verification.md` at the item root (accept / edit / reject vs. paper and vs. dolo-plus spec). +4. **Exposition layer (Primer / Formalized tier rendering):** the four-notebook layout at the item root — `ARMonetaryPolicyHABC_intro.ipynb`, `_prior-literature.ipynb`, `_summary.ipynb`, `_subsequent-literature.ipynb` — wired into `index.md` via `{include}` directives and resolved against `self.bib` + `references.bib` + `subsequent-literature.bib` through `myst.yml`. +5. **Paper source for AI ingestion:** **TBD** — prefer `AlganRagot2009.mmd` (HAL preprint, open-access) once committed; the publisher PDF is *not* committed for the same AER-copyright reason that prompted [PR #75](https://github.com/econ-ark/ballpark/pull/75) to remove `Benhabib_et_al_2019.pdf` after PR #66 merged. Until the `.mmd` is committed, use the summary notebook plus the user-supplied off-repo PDF (RED is published by Elsevier; the HAL preprint is the author-accepted-manuscript version that is open-access). + +## Formalization status + +This item targets `tier: formalized` (frontmatter in `index.md`). The full canonical layout that the `CONTRIBUTING.md` automated Formalized check looks for now lives at the **item root** (per `CONTRIBUTING.md` §"Formalized" + the Benhabib worked example layout in [PR #66](https://github.com/econ-ark/ballpark/pull/66)): + +**Formalization-layer files (paper-grounded; verified in PR #76):** + +- `bellman-excerpt.md`: committed at item root (human-authored + Matsya-Evaluate-synchronized; three free controls with `a'` pinned by budget identity). +- `dolo-plus-draft.yaml`: committed at item root (draft; utility block does not yet match CES form in paper eq. 15; `P_e` declared plain per Matsya Evaluate Q3; three free controls per Matsya Flag C; inline `# unresolved:` flags on the two open items). +- `verification.md`: committed at item root (paper-grounded against Algan & Ragot 2009 *Review of Economic Dynamics* 13(2); partitioned into paper gaps vs. dolo-plus spec gaps). +- `matsya-session.txt`: committed at item root (`topics2026-armonetarypolicyhabc`). +- `AGENTS.md`: this file, at the item root. + +**Exposition-layer files (Primer-tier deliverables; this PR):** + +- `ARMonetaryPolicyHABC_intro.ipynb`: committed at item root — citation, DOI, JEL codes, the required 3-sentence pitch (*what the paper uniquely does / why Econ-ARK cares / what a REMARK would enable*). +- `ARMonetaryPolicyHABC_prior-literature.ipynb`: committed at item root — five canonical antecedents (within the 3–6 prior-papers Primer-tier bound). +- `ARMonetaryPolicyHABC_summary.ipynb`: committed at item root — paper digest adapted from the Toraman 2020 single-notebook digest (now under `docs/legacy-drafts/`) with explicit credit; model statement aligned with `bellman-excerpt.md`. +- `ARMonetaryPolicyHABC_subsequent-literature.ipynb`: committed at item root — three threads of post-2009 literature (HANK, redistribution channel, money-demand / financial-frictions extensions). + +**Bibliography files:** + +- `self.bib`: BibTeX entry for the paper itself (citekey `algan2009monetary`). +- `references.bib`: papers cited by Algan–Ragot 2009 and listed in `_prior-literature.ipynb`. +- `subsequent-literature.bib`: post-2009 HA-monetary literature cited in `_subsequent-literature.ipynb`. + +**Site config:** + +- `myst.yml`: project-level MyST config wiring `index.md` to the three bib files. +- `index.md`: stitches the four exposition notebooks together via `{include}` directives. + +**Iteration history under `docs/` (deliberately not at the item root):** + +- `docs/opus-prompt.md`, `docs/opus-review.md`, `docs/accept-edit-reject.md`: Class 12 Opus 4.7 review artifacts (verbatim). +- `docs/matsya-evaluate-turn.txt`: verbatim Matsya Evaluate response (4 CANONICAL, 1 PROVISIONAL-now-resolved, 1 UNRESOLVED-now-resolved). +- `docs/lessons-learned.md`: consolidated reusable patterns mirrored from the Benhabib worked example. +- `docs/tier-assessment.md`: tier walk-through against the `CONTRIBUTING.md` checklist. +- `docs/legacy-drafts/`: pre-iteration drafts retained for history — the two earlier Bellman drafts (`arg2009-bellman-excerpt.md`, `arg2009-improved-stage-description.md`) and the Toraman 2020 single-notebook digest (`ToramanSY_AlganRagot2009_Summary.ipynb`); see `docs/legacy-drafts/README.md`. + +Per `CONTRIBUTING.md` line 52, there is exactly **one** Bellman excerpt at the item root; the two `arg2009-*` drafts under `docs/legacy-drafts/` are **not** parallel canonical files. Per the PR-#66 → PR-#75 lesson, there is also exactly **one** summary notebook at the item root (`ARMonetaryPolicyHABC_summary.ipynb`); the Toraman 2020 single-notebook digest under `docs/legacy-drafts/` is preserved for authorship credit but is **not** an alternative canonical exposition. + +## Known model features requiring attention in a formalization pass + +- **Scope (household block only).** The YAML and `bellman-excerpt.md` encode the household block. The aggregate side from `docs/legacy-drafts/arg2009-bellman-excerpt.md` — production `Y = K^alpha L^(1-alpha)`, resource constraint, asset-market clearing, money growth `Omega_t`, inflation-tax `tau^{tot}` — is intentionally deferred to a later general-equilibrium pass. Do not rediscover this; scope new work accordingly. +- **Notation: Markov `P_e` vs inflation `Pi_inf`.** The household-side Markov kernel was renamed from `Pi` to `P_e` (see commit history and `bellman-excerpt.md` symbol table) to avoid collision with the inflation series `Pi_inf` that appears on the aggregate side. Keep `P_e` in future edits to the household YAML; reintroduce `Pi_inf` explicitly when the monetary block is added. +- **Utility.** Summary excerpt uses a CES consumption–money composite with leisure parameterized by `(sigma, eta, omega, psi)` (rows now in `bellman-excerpt.md` symbol table; verbatim form preserved in `docs/legacy-drafts/arg2009-bellman-excerpt.md`); YAML still uses a separable placeholder parameterized by `(rho, rho_m, phi_m, phi_l, gamma)`. The `# unresolved:` block on the `cntn_to_dcsn_mover` `Bellman:` block in `dolo-plus-draft.yaml` now spells out the canonical CES-with-leisure form and the two ways to close the deferral (replace the kernel; or justify the workaround under a calibration regime where separability and CES coincide). +- **Law of motion for `q'`.** Draft uses `q' = R a + (1+r_m) m` in the shock stage — verify against Algan–Ragot (2009) text (or `.mmd`). +- **Borrowing constraint `a_min`.** Labeled placeholder in YAML; replace with paper-specific rule once the paper is in-repo. +- **Transfer `mu`.** Domain is `R` (not `R+`) because the inflation-tax redistribution can make the net transfer negative for some households. Sign rule for an individual household is still TBD against the paper. +- **`P_e` calibration.** `P_e` is declared in both stages' `parameters:` blocks as plain `@in R+`; row-stochastic semantics are carried by `@dist MarkovChain(P_e)` on the exogenous block (canonical per Matsya Evaluate turn Q3). Numerical entries are `# unresolved:` until drawn from the paper. +- **Three free controls; `a'` pinned.** Per Matsya Evaluate Flag C, the household's free controls are `(c, m_d, l)`. The illiquid-asset poststate `a'` is pinned by the budget identity inside `dcsn_to_cntn_transition`. Preserve this encoding when aligning the utility kernel with the paper's CES-with-leisure form. + +## Common next tasks (grounded) + +1. Align `dolo-plus-draft.yaml` utility with the CES–leisure specification in `docs/legacy-drafts/arg2009-bellman-excerpt.md` (verbatim from the summary), or keep the separable kernel and justify the simplification under the existing `# unresolved:` block on the `Bellman:` mover. (This is the largest remaining substantive gap between the YAML and the paper; closing it is a focused Matsya turn, not a paper-rereading task — see PR #76 / PR #66 precedent.) +2. Replace the `P_e: '@in R+'` placeholder with the literal 3×3 row-stochastic matrix entries already documented in the YAML's `parameters:` comment block (paper §3.3.2). Closing this is a small spec question for the dolo-plus maintainers about matrix-literal idioms in the parameter block. +3. Commit `AlganRagot2009.mmd` (Pandoc/MathPix conversion of the open-access HAL preprint). The publisher PDF is **not** to be committed — see the AER-copyright lesson in [PR #75](https://github.com/econ-ark/ballpark/pull/75) and the `# Copyright check` annotation in `AGENTS.md`'s "If a user asks to work on this item" §4 above. +4. Add the EGM-channel discussion to `bellman-excerpt.md` once the utility is aligned with the paper (rejected-for-now in `docs/accept-edit-reject.md` item #10; revisit after task 1 above lands). +5. (REMARK precursor.) Begin a working numerical implementation of the model under HARK's `IndShockConsumerType` extended with the money-in-utility kernel, targeting the paper's headline hump-shaped capital–inflation result. This is REMARK territory rather than ballpark territory and would close the promotion-from-Formalized step. + +Tasks 1–3 are each at most a focused weekly assignment; tasks 4–5 are larger and live beyond Formalized. + +## Workflow reminders + +- **Matsya session:** use `topics2026-armonetarypolicyhabc` (see `matsya-session.txt`) for new Matsya calls on this item. Never open a new session mid-project. +- **Matsya prompt style:** one focused question per turn, `--no-think`, compact prompt (<3 KB). Request verdicts as CANONICAL / PROVISIONAL / UNRESOLVED with one-line justification. See `docs/matsya-evaluate-turn.txt` for the pattern that succeeded. +- **Paper verification:** compare Matsya and YAML choices to the published paper (or Pandoc `.mmd`), not only the summary notebook — see `verification.md` at the item root. Paper gaps and dolo-plus spec gaps are partitioned explicitly there; close them via different routes. +- **YAML:** use `# unresolved:` or `# workaround:` for anything that does not map cleanly to canonical dolo-plus syntax—do not silently fudge. +- **Reusable patterns:** `docs/lessons-learned.md` records the iteration patterns from this pass; consult before starting a fresh round of changes. diff --git a/models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/ARMonetaryPolicyHABC_intro.ipynb b/models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/ARMonetaryPolicyHABC_intro.ipynb new file mode 100644 index 00000000..adadd7ef --- /dev/null +++ b/models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/ARMonetaryPolicyHABC_intro.ipynb @@ -0,0 +1,51 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Algan and Ragot (2009): Monetary Policy with Heterogeneous Agents and Borrowing Constraints\n", + "\n", + "**Citation:** Algan, Yann, and Xavier Ragot. \"Monetary Policy with Heterogeneous Agents and Borrowing Constraints.\" *Review of Economic Dynamics* 13 (2): 295\u2013316.\n", + "\n", + "**DOI:** [10.1016/j.red.2009.05.001](https://doi.org/10.1016/j.red.2009.05.001)\n", + "\n", + "**Open-access preprint:** HAL [hal-01170621v1](https://sciencespo.hal.science/hal-01170621v1).\n", + "\n", + "**JEL codes:** E21 (Consumption \u00b7 Saving), E41 (Demand for Money), E52 (Monetary Policy).\n", + "\n", + "**Track:** Heterogeneous-agent monetary policy.\n", + "\n", + "**Original ballpark author:** S. Y. Toraman, 2020-XX-XX (single-notebook digest, preserved at `docs/legacy-drafts/ToramanSY_AlganRagot2009_Summary.ipynb`).\n", + "\n", + "**Updated by:** Irem Desdemir, 2026-04-28 (refactored the legacy single-notebook digest into the canonical four-notebook exposition layer; promoted the item to Formalized tier on top of the paper-grounded formalization layer of [PR #76](https://github.com/econ-ark/ballpark/pull/76); modelled on the Benhabib_et_al_2019 worked example of [PR #66](https://github.com/econ-ark/ballpark/pull/66)).\n", + "\n", + "## Pitch \u2014 why this paper is in the ballpark\n", + "\n", + "*What the paper uniquely does:* Algan and Ragot (2009) is the first paper to embed money-in-the-utility (Sidrauski-style) preferences inside a Bewley\u2013Aiyagari incomplete-markets economy with an occasionally-binding borrowing constraint and to use that combination to characterise the **non-neutrality of long-run inflation** through a precautionary-savings channel that is absent under complete markets. Their contribution is the explicit decomposition of the long-run effect of inflation into (i) a substitution channel (households shift from money to capital), (ii) a redistribution channel (lump-sum rebate of inflation tax weakens self-insurance for the borrowing-constrained), (iii) a Phelps tax-substitution channel, and (iv) an inflation-tax-on-the-borrowing-constrained channel \u2014 each of which can be turned on or off in nested calibrations and which together produce a hump-shaped relation between long-run inflation and long-run capital.\n", + "\n", + "*Why Econ-ARK cares:* The paper's household block is a textbook fit for HARK's `IndShockConsumerType` machinery extended with a money-in-the-utility kernel \u2014 a CES aggregator over consumption and real balances multiplied by a leisure term \u2014 plus a discrete-state Markov productivity process and a hard `a >= 0` borrowing constraint. The aggregate equilibrium is a standard Aiyagari general-equilibrium fixed point on the capital stock and the real interest rate, augmented with a money-market-clearing condition and a government budget constraint that rebates the inflation tax. Both blocks live cleanly in the dolo-plus modular-DDSL idiom (decision/arrival/continuation perches, EGM channel, exogenous Markov chain), making the paper a high-value primer-tier entry for showing how to formalise a heterogeneous-agent **monetary** model in Econ-ARK.\n", + "\n", + "*What a REMARK would enable:* A reproducible solver for this model would let researchers measure the strength of each of the four channels in their own calibrations \u2014 in particular, how much of the hump-shaped inflation\u2013capital relation survives once one moves from the paper's three-state productivity process to a richer Storesletten\u2013Telmer\u2013Yaron-style earnings process, allows endogenous portfolio choice between money and an outside risk-free asset (rather than only money and capital), or replaces the linear distortionary tax with a progressive one. It would also be a natural Econ-ARK substrate for revisiting recent HANK results (Kaplan\u2013Moll\u2013Violante 2018; Auclert 2019) in the long-run / steady-state cross-section that Algan\u2013Ragot focus on, complementing those papers' transitional-dynamics emphasis.\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": {"name": "ipython", "version": 3}, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/ARMonetaryPolicyHABC_prior-literature.ipynb b/models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/ARMonetaryPolicyHABC_prior-literature.ipynb new file mode 100644 index 00000000..d672aa44 --- /dev/null +++ b/models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/ARMonetaryPolicyHABC_prior-literature.ipynb @@ -0,0 +1,51 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Prior literature \u2014 Algan and Ragot (2009)\n", + "\n", + "*Per CONTRIBUTING.md (Primer-tier rule), this notebook cites **5 prior papers** that are necessary for situating the contribution of {cite}`algan2009monetary`. Each is the canonical reference for one of the building blocks the paper combines (money-in-the-utility preferences; Bewley\u2013Aiyagari incomplete-markets household block; redistributive welfare cost of inflation; inflation as regressive consumption tax; optimal monetary policy with borrowing constraints).*\n", + "\n", + "## Overview\n", + "\n", + "The Algan\u2013Ragot model sits at the intersection of two distinct twentieth-century literatures: the **money-in-the-utility** tradition that descends from Sidrauski {cite}`sidrauski1967` and Tobin {cite}`tobin1965`, and the **Bewley\u2013Aiyagari incomplete-markets** tradition that builds on Bewley {cite}`bewley1983` and Aiyagari {cite}`aiyagari1994`. Algan and Ragot are not the first to combine these (\u0130mrohoro\u011flu 1992 {cite}`imrohoroglu1992` and Akyol 2004 {cite}`akyol2004` both predate them in studying monetary models with idiosyncratic risk), but they are the first to **decompose** the long-run inflation\u2013capital relationship into the four channels listed in the {ref}`Summary ` notebook and to characterise the resulting **hump-shaped** non-neutrality. The closest direct antecedent on the redistributive-welfare-cost-of-inflation question is Erosa and Ventura {cite}`erosa2002`, who establish that inflation is a regressive consumption tax in a model with money holdings concentrated among the poor.\n", + "\n", + "## Key Foundational Papers\n", + "\n", + "1. **Sidrauski 1967, _Rational Choice and Patterns of Growth in a Monetary Economy_** {cite}`sidrauski1967`. The canonical reference for the **money-in-the-utility** kernel that Algan\u2013Ragot adopt: real money balances enter the household's period felicity directly. Sidrauski's superneutrality result (long-run capital is independent of the money-growth rate) is the natural representative-agent counterfactual against which Algan\u2013Ragot's hump-shaped non-neutrality is the headline departure.\n", + "\n", + "2. **Aiyagari 1994, _Uninsured Idiosyncratic Risk and Aggregate Saving_** {cite}`aiyagari1994`. The canonical reference for the **incomplete-markets household block** that Algan\u2013Ragot extend with money. Aiyagari shows that, with uninsurable idiosyncratic productivity risk and a hard borrowing constraint, the steady-state interest rate falls below the rate-of-time-preference and the wealth distribution has a substantial precautionary-savings component. Algan\u2013Ragot's three-state Markov productivity process and `a >= 0` constraint are direct adaptations of this block.\n", + "\n", + "3. **Bewley 1983, _A Difficulty with the Optimum Quantity of Money_** {cite}`bewley1983`. The canonical reference for the observation that, when markets are incomplete, the **Friedman rule may fail to be optimal** because deflation tightens the borrowing constraint of the cash-poor. Bewley's argument is the conceptual origin of channel (4) of Algan\u2013Ragot's decomposition (the inflation tax falls disproportionately on the borrowing-constrained), even though Bewley works with a representative-agent simplification that Algan\u2013Ragot relax.\n", + "\n", + "4. **\u0130mrohoro\u011flu 1992, _The Welfare Cost of Inflation under Imperfect Insurance_** {cite}`imrohoroglu1992`. The canonical reference for **embedding money in the Bewley\u2013Aiyagari block**. \u0130mrohoro\u011flu shows that, in a model with idiosyncratic employment shocks, the welfare cost of inflation is significantly larger than under complete markets, because money is a primary self-insurance asset for the borrowing-constrained. Algan\u2013Ragot's contribution relative to \u0130mrohoro\u011flu is to expose the *aggregate-capital* (not just welfare) implications of the same combination, and to add the labour\u2013leisure margin and the explicit inflation-tax-rebate channel.\n", + "\n", + "5. **Erosa and Ventura 2002, _On Inflation as a Regressive Consumption Tax_** {cite}`erosa2002`. The canonical reference for the **redistributive incidence** of inflation. Erosa and Ventura calibrate a heterogeneous-agent transactions-cost model and show that the burden of inflation falls disproportionately on the poor because they hold a larger fraction of wealth in cash. Algan\u2013Ragot's channels (2) and (4) are the equilibrium counterparts of Erosa and Ventura's distributional result: when the inflation tax is rebated lump-sum, the rebate is *progressive* (raising the consumption floor for the constrained), but the underlying tax burden is *regressive* (the constrained pay more because they hold more money), and the net effect on aggregate capital is the integral of these two opposing redistributions across the wealth distribution.\n", + "\n", + "## How Algan\u2013Ragot extends these antecedents\n", + "\n", + "Where Sidrauski {cite}`sidrauski1967` gives money superneutrality, \u0130mrohoro\u011flu {cite}`imrohoroglu1992` gives a welfare cost of inflation in incomplete markets, and Erosa\u2013Ventura {cite}`erosa2002` gives the regressivity of inflation incidence, Algan\u2013Ragot's contribution is to **assemble these in a single Aiyagari general-equilibrium economy with all four channels active simultaneously** and to show that the resulting long-run capital response to inflation is non-monotone. The non-monotonicity itself is the headline empirical and theoretical contribution: it is the integral of two upward-pushing channels (Tobin substitution {cite}`tobin1965`; Phelps tax substitution {cite}`phelps1973`) and two downward-pushing channels (lump-sum redistribution; inflation tax on the constrained), and it cannot be reproduced under complete markets, where channels (2) and (4) cancel.\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": {"name": "ipython", "version": 3}, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/ARMonetaryPolicyHABC_subsequent-literature.ipynb b/models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/ARMonetaryPolicyHABC_subsequent-literature.ipynb new file mode 100644 index 00000000..01c165cc --- /dev/null +++ b/models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/ARMonetaryPolicyHABC_subsequent-literature.ipynb @@ -0,0 +1,68 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "(ARMonetaryPolicyHABC_subsequent-literature:overview)=\n", + "# Subsequent literature \u2014 Algan and Ragot (2009)\n", + "\n", + "*This notebook traces how the Algan\u2013Ragot framework has been extended in the heterogeneous-agent monetary literature since 2009. The list is necessarily selective; it is organised around three threads that build directly on the paper's combination of money-in-the-utility preferences, an Aiyagari household block, and an explicit decomposition of the long-run effect of monetary policy: (i) the **HANK** programme that endogenises the price of nominal rigidities; (ii) the **redistribution-channel** literature that quantifies the distributional incidence of monetary policy shocks; and (iii) **financial-frictions / liquidity-demand** extensions that develop further the role of money in incomplete-markets economies.*\n", + "\n", + "## Three threads of subsequent literature\n", + "\n", + "### (i) HANK\n", + "\n", + "The Heterogeneous-Agent New Keynesian (HANK) literature combines the Algan\u2013Ragot-style household block with sticky prices and an explicit interest-rate rule, shifting the focus from long-run inflation to short-run monetary-policy transmission.\n", + "\n", + "* **McKay, Nakamura, and Steinsson 2016** {cite}`mckay2016power` show that the textbook **forward-guidance puzzle** disappears in a HANK environment: with a finite share of borrowing-constrained households, the elasticity of current consumption to a future interest-rate cut is bounded, in line with the Algan\u2013Ragot intuition that the borrowing-constrained price the inflation tax differently from the unconstrained.\n", + "* **McKay and Reis 2016** {cite}`mckay2016` study **automatic stabilisers** in a HANK economy and document that the redistribution channel of fiscal-monetary policy is quantitatively first-order \u2014 again validating the Algan\u2013Ragot claim that incomplete markets generate non-trivial aggregate effects of redistributive policy interventions.\n", + "* **Kaplan, Moll, and Violante 2018, _Monetary Policy According to HANK_** {cite}`kaplan2018hank`. The headline HANK paper. With two assets (liquid and illiquid) and a continuous-time formulation, Kaplan\u2013Moll\u2013Violante show that the transmission of conventional monetary-policy shocks is dominated by **indirect general-equilibrium effects** (through labour income), not by the **direct intertemporal-substitution effect** that drives the representative-agent benchmark. The decomposition is structurally analogous to the Algan\u2013Ragot four-channel decomposition, applied to short-run policy shocks rather than long-run regimes.\n", + "* **Bayer, L\u00fctticke, Pham-Dao, and Tjaden 2019** {cite}`bayer2019precautionary` extend the HANK programme to study aggregate consequences of changes in idiosyncratic income risk \u2014 the *time-varying* version of the precautionary-savings channel that Algan\u2013Ragot characterise in steady state.\n", + "\n", + "### (ii) Redistribution channel\n", + "\n", + "A parallel literature isolates the *redistributive* incidence of monetary policy, abstracting from production-side rigidities to focus on which households gain and which lose.\n", + "\n", + "* **Doepke and Schneider 2006, _Inflation and the Redistribution of Nominal Wealth_** {cite}`doepke2006inflation` characterise the redistribution induced by unanticipated inflation across the U.S. nominal-asset distribution. Their finding that young middle-class households are the largest losers and old wealthy households the largest gainers complements Algan\u2013Ragot's general-equilibrium channels (2) and (4) with a portfolio-level decomposition.\n", + "* **Auclert 2019, _Monetary Policy and the Redistribution Channel_** {cite}`auclert2019` formalises a sufficient-statistic decomposition: the aggregate-consumption response to a monetary-policy shock is the sum of a Hicksian intertemporal-substitution channel, an interest-rate-exposure channel, and an unhedged-interest-exposure channel. The latter two channels are the short-run analogues of Algan\u2013Ragot's redistribution channel.\n", + "* **Gornemann, Kuester, and Nakajima 2016** {cite}`gornemann2016` document that monetary-policy shocks generate substantial heterogeneous welfare effects across the wealth distribution, sharpening the steady-state distributional implications already implicit in Algan\u2013Ragot.\n", + "* **Sterk and Tenreyro 2018** {cite}`sterk2018` extend the redistribution channel to durable-goods purchases and show that the durables channel is quantitatively important for the transmission of monetary-policy operations.\n", + "\n", + "### (iii) Money demand and financial frictions in incomplete markets\n", + "\n", + "A third thread carries forward the Algan\u2013Ragot interest in *money demand* in incomplete-markets economies, separately from the HANK / redistribution-channel agendas.\n", + "\n", + "* **Ragot 2014, _The Case for a Financial Approach to Money Demand_** {cite}`ragot2014`. The author's own follow-up: a model with heterogeneous portfolio constraints generates a money-demand function that depends on the *distribution* of wealth and matches the cross-sectional money-holding patterns documented in U.S. household-finance surveys.\n", + "* **Challe, Matheron, Ragot, and Rubio-Ramirez 2017** {cite}`challe2017precautionary`. A reduced-heterogeneity environment that retains the precautionary-savings channel of Algan\u2013Ragot but is tractable enough to estimate against business-cycle moments, demonstrating that the precautionary motive is quantitatively first-order for aggregate-demand fluctuations.\n", + "* **Werning 2015, _Incomplete Markets and Aggregate Demand_** {cite}`werning2015`. A theoretical companion to the HANK literature: shows that in a class of incomplete-markets economies, the equilibrium response of aggregate demand to interest-rate shocks coincides with the representative-agent response **if and only if** the policy is rebated in a specific neutral fashion. The Algan\u2013Ragot lump-sum-rebate experiment is a steady-state instance of this general non-neutrality result.\n", + "* **Ragot 2018** {cite}`ragot2018wealth` (Handbook chapter) provides a conceptual review of reduced-heterogeneity representations of incomplete-markets economies, locating Algan\u2013Ragot in the broader programme of making such economies tractable for monetary-policy analysis.\n", + "\n", + "## Why the Algan\u2013Ragot framework remains relevant\n", + "\n", + "Despite the proliferation of HANK models in the past decade, the Algan\u2013Ragot setting retains two distinctive features that the HANK literature largely abstracts from:\n", + "\n", + "* **Money in the utility.** HANK models typically treat money as either a unit of account (with no portfolio role) or as a frictionless liquid asset; Algan\u2013Ragot give money an explicit MIU role in the period felicity, which makes the long-run *level* of the real money stock a substantive object that responds to the inflation regime.\n", + "* **Long-run / cross-sectional focus.** The HANK programme is largely about *transitional dynamics* of monetary-policy shocks; Algan\u2013Ragot is about the *long-run cross-section* of real outcomes across alternative inflation regimes. The two are complementary, and an Econ-ARK formalisation of Algan\u2013Ragot would naturally serve as the steady-state companion to the existing HANK-style implementations in the HARK ecosystem.\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": {"name": "ipython", "version": 3}, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/ARMonetaryPolicyHABC_summary.ipynb b/models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/ARMonetaryPolicyHABC_summary.ipynb new file mode 100644 index 00000000..278e4f15 --- /dev/null +++ b/models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/ARMonetaryPolicyHABC_summary.ipynb @@ -0,0 +1,200 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Summary \u2014 Algan and Ragot (2009)\n", + "\n", + "*This notebook presents the model and main results of Algan and Ragot (2009), \"Monetary Policy with Heterogeneous Agents and Borrowing Constraints,\" {cite}`algan2009monetary`. The non-technical motivation is in the {ref}`Overview ` section; the explicit recursive formulation is in {ref}`The Model ` section. The narrative draft of this summary is adapted from a 2020 student-prepared digest by S. Y. Toraman (preserved verbatim in `docs/legacy-drafts/`); the model statement here is the version aligned with the formalisation layer (`bellman-excerpt.md`, `dolo-plus-draft.yaml`, and `verification.md`) at the item root.*\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "(ARMonetaryPolicyHABC_summary:overview)=\n", + "## Overview\n", + "\n", + "Algan and Ragot ask **how the long-run capital stock and the long-run welfare distribution respond to permanent changes in the rate of money growth**, when households face uninsurable idiosyncratic productivity risk and a hard borrowing constraint. Their headline result is that the long-run relationship between inflation and capital is **hump-shaped**: at low inflation rates, an increase in the rate of money growth raises capital (precautionary-savings + Phelps tax-substitution channels dominate); at high inflation rates, further increases in money growth lower capital (lump-sum redistribution of inflation-tax revenue weakens self-insurance enough to dominate).\n", + "\n", + "Mechanically, the paper isolates **four channels** through which inflation affects long-run capital and consumption inequality:\n", + "\n", + "1. **Substitution between money and capital.** Higher inflation lowers the real return on money, so households shift their portfolio from money to capital. This is the standard Tobin {cite}`tobin1965` effect, and it raises the long-run capital stock.\n", + "2. **Redistribution of the inflation tax.** Inflation-tax revenue is rebated lump-sum to households. The lump-sum rebate is regressive in the sense that it raises the consumption floor for the borrowing-constrained more than for the unconstrained, weakening their **precautionary** savings motive and lowering aggregate capital. This channel is **absent under complete markets** and is the paper's distinctive contribution.\n", + "3. **Phelps tax substitution.** When the inflation-tax revenue substitutes for distortionary taxes on capital and labour, raising inflation effectively lowers those distortions {cite}`phelps1973`, raising capital.\n", + "4. **Inflation tax on the borrowing-constrained.** Borrowing-constrained households hold a larger share of their wealth in money (because they cannot frontload consumption with debt); they therefore bear a disproportionate share of the inflation tax, which further depresses their savings.\n", + "\n", + "Channels (1) and (3) push capital up with inflation; channels (2) and (4) push capital down with inflation. The hump shape is the integral of these four forces, and it *cannot be reproduced under complete markets*: under complete markets, channel (2) is exactly offset by channel (4), and channel (1) drives a monotone Tobin response.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "(ARMonetaryPolicyHABC_summary:model)=\n", + "## The Model\n", + "\n", + "The economy is populated by a continuum of infinitely-lived households of unit mass, a representative competitive firm with a constant-returns-to-scale technology in capital and effective labour, and a government that issues fiat money, levies linear taxes on capital and labour income, and rebates the inflation-tax revenue lump-sum. The household block is the seat of all heterogeneity; the firm and government blocks are representative.\n", + "\n", + "### Households\n", + "\n", + "Each household $i$ enters period $t$ with capital $a_t^i$ and real money $m_t^i$, draws a productivity state $e_t^i \\in \\{e_h, e_m, e_l\\}$ from a 3-state Markov chain with transition matrix $\\Pi_e$ (calibrated in Section 3.3.2 of the paper), and chooses consumption $c_t^i$, real money $m_t^i$, leisure $l_t^i$, and end-of-period capital $a_{t+1}^i$ subject to the budget constraint and the borrowing constraint $a_{t+1}^i \\geq 0$.\n", + "\n", + "**Preferences.** Household $i$ maximises\n", + "\n", + "$$\n", + "E_0 \\sum_{t=0}^{\\infty} \\beta^t \\, u(c_t^i, m_t^i, l_t^i),\n", + "$$\n", + "\n", + "where the period utility is the CES-with-leisure form\n", + "\n", + "$$\n", + "u(c, m, l) \\;=\\; \\frac{1}{1-\\sigma} \\left[ \\bigl( \\omega \\, c^{(\\eta-1)/\\eta} + (1-\\omega) \\, m^{(\\eta-1)/\\eta} \\bigr)^{\\eta/(\\eta-1)} \\, (1 - l)^{\\psi} \\right]^{1-\\sigma}.\n", + "$$\n", + "\n", + "$\\sigma$ is the CRRA curvature, $\\eta$ is the elasticity of substitution between consumption and real balances inside the CES bundle, $\\omega$ is the weight on consumption, and $\\psi$ is the labour-disutility weight. The CES-aggregator-times-leisure-power form is the joint generalisation of the Sidrauski {cite}`sidrauski1967` money-in-the-utility form (recovered as $\\eta \\to 1$, $\\psi = 0$) and the standard Bewley\u2013Aiyagari {cite}`aiyagari1994` consumption\u2013leisure form (recovered as $\\omega = 1$).\n", + "\n", + "**Budget constraint.** At the decision perch (cash-on-hand state $q_t^i$),\n", + "\n", + "$$\n", + "c_t^i + m_t^i + a_{t+1}^i \\;=\\; q_t^i + w_t \\, e_t^i \\, l_t^i + \\mu_t,\n", + "$$\n", + "\n", + "where $w_t$ is the after-tax wage, $\\mu_t$ is the lump-sum transfer of inflation-tax revenue, and the cash-on-hand state $q_t^i$ aggregates the real value of last period's capital and money under this period's prices: $q_t^i = (1 + r_t (1 - \\chi_t)) a_t^i + m_{t-1}^i / \\Pi_t$, with $r_t$ the rental rate of capital, $\\chi_t$ the proportional capital-income tax, and $\\Pi_t$ the inflation rate.\n", + "\n", + "**Borrowing constraint.** $a_{t+1}^i \\geq 0$ \u2014 households cannot borrow against their future income (paper eq. (17)).\n", + "\n", + "**Recursive formulation.** With $V$ denoting the value at the start of the decision perch and $V_{[\\succ]}$ denoting the next-period value at the arrival perch, the household's Bellman equation is\n", + "\n", + "$$\n", + "V(q, e) \\;=\\; \\max_{c, m, l, a'} \\; u(c, m, l) + \\beta \\, \\mathbb{E}\\bigl[ V_{[\\succ]}(q', e') \\,\\big|\\, e \\bigr],\n", + "$$\n", + "\n", + "subject to the budget constraint, the borrowing constraint $a' \\geq 0$, and the cash-on-hand transition that maps $(a', m, e')$ at the continuation perch to $q'$ at the next decision perch via prices and policies. The same Bellman block is encoded in `bellman-excerpt.md` (item root) using the canonical arrival/decision/continuation-perch decomposition that the dolo-plus modular-DDSL grammar requires; the explicit YAML draft is in `dolo-plus-draft.yaml`.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Firms\n", + "\n", + "A unit mass of competitive firms operates a single Cobb\u2013Douglas technology with capital and aggregate effective labour:\n", + "\n", + "$$\n", + "Y_t \\;=\\; F(K_t, L_t) \\;=\\; K_t^{\\alpha} \\, L_t^{1-\\alpha}, \\qquad 0 < \\alpha < 1.\n", + "$$\n", + "\n", + "Capital depreciates at rate $\\delta$ and is installed one period in advance; there is no aggregate uncertainty. Firms hire capital and labour at competitive prices $\\tilde{r}_t$ and $\\tilde{w}_t$.\n", + "\n", + "### Government\n", + "\n", + "The government runs the budget constraint\n", + "\n", + "$$\n", + "\\int_0^1 \\mu_t^i \\, di + G \\;=\\; \\chi_t \\tilde{r}_t K_t + \\chi_t \\bigl( L_t^h e_h + L_t^m e_m + L_t^l e_l \\bigr) \\tilde{w}_t + \\tau_t^{\\text{tot}},\n", + "$$\n", + "\n", + "where $\\mu_t^i$ is the household-level lump-sum transfer (rebate of inflation-tax revenue), $G$ is unproductive government spending, $\\chi_t$ is the linear-tax rate on capital and labour income, and $\\tau_t^{\\text{tot}}$ is the real value of seigniorage:\n", + "\n", + "$$\n", + "\\tau_t^{\\text{tot}} \\;=\\; \\pi \\, \\Omega_{t-1} / \\Pi_t,\n", + "$$\n", + "\n", + "with $\\pi$ the rate of money growth, $\\Pi_t$ the gross inflation rate, and $\\Omega_t$ the aggregate real money stock.\n", + "\n", + "### Monetary policy\n", + "\n", + "Monetary policy is a simple money-growth rule. The aggregate real money stock evolves as\n", + "\n", + "$$\n", + "\\Omega_t \\;=\\; \\frac{\\Omega_{t-1}}{\\Pi_t} + \\pi \\, \\frac{\\Omega_{t-1}}{\\Pi_t},\n", + "$$\n", + "\n", + "i.e. the existing real stock survives inflation by the factor $1/\\Pi_t$ and is augmented by a money-growth injection of $\\pi \\Omega_{t-1} / \\Pi_t$. The injection is the source of the inflation tax; in steady state, $\\Pi_t = 1 + \\pi$ pins down the long-run real money stock.\n", + "\n", + "### Market equilibria\n", + "\n", + "A stationary equilibrium is a household policy $\\{c, m, l, a'\\}(q, e)$ together with prices $(r, w)$, a transfer $\\mu$, and a stationary distribution $\\Phi(q, e)$ of households across the state space such that:\n", + "\n", + "* **Goods market:** $C_t + K_{t+1} + G_t = Y_t + (1 - \\delta) K_t$.\n", + "* **Labour market:** $L_t = L_t^s = \\int_0^1 e_t^i l_t^i \\, di$.\n", + "* **Capital market:** $K_{t+1} = \\int_0^1 a_{t+1}^i \\, di$.\n", + "* **Money market:** $M_t / P_t = \\Omega_t = \\int_0^1 m_t^i \\, di$.\n", + "* **Government budget:** the equation above holds.\n", + "* **Distribution:** $\\Phi$ is invariant under the household policy together with the productivity transition $\\Pi_e$ \u2014 i.e. $\\Phi$ is a fixed point of the Markov operator induced by the household decisions.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Results\n", + "\n", + "Throughout the paper, the calibration is fitted to U.S. data: the productivity process targets the standard deviation and serial correlation of annual labour earnings in the PSID, the wealth-Gini target is 0.72, and the share of borrowing-constrained households is 6 % at the benchmark. The benchmark inflation rate is 0.75 % per quarter; counterfactual experiments raise it to 10 %.\n", + "\n", + "### Individual policy responses\n", + "\n", + "At the benchmark calibration, the cross-section sorts into:\n", + "\n", + "* **Net dissavers**: low- and medium-productivity households \u2014 their consumption function is concave near the borrowing constraint, reflecting that for them the marginal consumption out of an extra dollar of wealth is high (they are close to or at the constraint).\n", + "* **Net savers**: high-productivity households \u2014 their saving rate is positive and they are forward-looking with respect to less-favourable productivity draws.\n", + "\n", + "### Aggregate policy responses\n", + "\n", + "**Proportional lump-sum transfers, exogenous labour.** Raising the per-quarter inflation rate from 0 % to 10 % yields:\n", + "\n", + "* a continuous fall in real-money demand;\n", + "* a rising-but-decelerating capital stock (Tobin substitution dominates at low inflation rates).\n", + "\n", + "**Redistributive effects of the inflation tax** (helicopter-drop experiment with symmetric transfers). The full hump shape now appears:\n", + "\n", + "* The lump-sum rebate dampens the precautionary-savings motive (channel 2).\n", + "* The aggregate-capital response is hump-shaped in the inflation rate.\n", + "* At low inflation, the substitution channel dominates (capital rises with inflation); at high inflation, the redistribution channel dominates (capital falls with inflation).\n", + "\n", + "**Endogenous labour, distortionary taxes, and inflation-tax redistribution.** With a labour\u2013leisure margin and the linear tax on capital and labour:\n", + "\n", + "* Symmetric lump-sum redistribution of the inflation tax further dampens the labour-supply incentive (a \"transfer rents\" effect on the borrowing-constrained).\n", + "* When the inflation tax is used to *substitute* for the distortionary taxes (rather than rebated lump-sum), the redistribution channel switches off and the Phelps {cite}`phelps1973` channel dominates: capital is monotone in inflation, in line with the complete-markets benchmark.\n", + "* The complete-markets counterfactual makes the borrowing-constraint-driven non-neutralities visible: the gap between the incomplete-markets and complete-markets capital responses is the part of the long-run effect that the borrowing constraint generates.\n", + "\n", + "### Sensitivity analysis\n", + "\n", + "The hump-shaped capital\u2013inflation relation is robust along three dimensions:\n", + "\n", + "* **Elasticity of money demand** $\\eta$: the location of the peak shifts with $\\eta$ but the hump remains.\n", + "* **Risk aversion** $\\sigma$: higher $\\sigma$ amplifies the precautionary-savings channel and shifts the peak rightward.\n", + "* **Borrowing constraint** $a_{\\min}$: tightening the constraint widens the hump and amplifies the redistribution channel.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Conclusion\n", + "\n", + "Algan and Ragot show that, when households face uninsurable productivity risk and an occasionally-binding borrowing constraint, the long-run effect of inflation on capital is **hump-shaped** rather than monotone. The hump arises because two channels (substitution between money and capital, Phelps tax substitution) push capital up with inflation, while two other channels (lump-sum redistribution of inflation-tax revenue, inflation tax on the borrowing-constrained) push capital down. Channels (2) and (4) are absent under complete markets, so the hump is a *distinctively-incomplete-markets* result. The paper's framing has shaped the subsequent heterogeneous-agent monetary literature \u2014 see {ref}`subsequent-literature ` \u2014 and is a natural fit for an Econ-ARK formalisation that combines money-in-the-utility preferences with the Bewley\u2013Aiyagari household block.\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": {"name": "ipython", "version": 3}, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/bellman-excerpt.md b/models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/bellman-excerpt.md new file mode 100644 index 00000000..0d24f73f --- /dev/null +++ b/models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/bellman-excerpt.md @@ -0,0 +1,107 @@ +# Modular Bellman statement: Algan–Ragot (2009) household block (ballpark draft) + +This file is the **canonical formalization artifact** for this item (per [econ-ark/ballpark `CONTRIBUTING.md`](https://github.com/econ-ark/ballpark/blob/master/CONTRIBUTING.md)). Older notes remain as supplementary context: `arg2009-bellman-excerpt.md` (utility and environment excerpt from the summary notebook) and `arg2009-improved-stage-description.md` (concise stage narrative). + +## Timing (within one period) + +Numbered steps: + +1. **Household decision.** The agent observes beginning-of-period resources `q` and idiosyncratic productivity `e` (already realized for this decision). +2. **Shock and resource evolution.** Productivity for next period is drawn; next-period resources `q'` are formed from chosen asset positions and the shock draw. + +This supports a **max-of-expectation** Bellman equation: optimize today given `e`, then take expectations over `e'`. + +## Symbol table + +### Household block (in scope for this draft) + +| Symbol | Role | Domain / type | Description | +|--------|------|----------------|-------------| +| `q` | state | `R+` | Beginning-of-period financial resources / cash-on-hand | +| `e` | state | finite set | Current idiosyncratic productivity (Markov) | +| `c` | control (free) | `R+` | Consumption | +| `m` | control (free) / poststate | `R+` | Real money balances carried to next period (named `m_d` in YAML when viewed as the **chosen** value before the savings identity `m = m_d`; see `dolo-plus-draft.yaml`) | +| `l` | control (free) | `[0, \bar l]` | Labor supply | +| `a'` | poststate (pinned by budget) | `[a_{\min}, \infty)` | Next-period illiquid-asset position, **pinned** by the budget identity `a' = q + w\,e\,l + \mu - c - m` (per Matsya Evaluate turn, Flag C: three free controls is the canonical encoding, not four; `a'` is not itself a free control) | +| `e'` | shock | same finite set | Next-period productivity, `e' \sim P_e(\cdot\mid e)` | +| `q'` | state | `R+` | Next period's beginning-of-period resources (pre-decision state next period) | +| `w` | parameter | `R+` | Wage factor scaling `e l` | +| `mu` | parameter | `R` | **Net** transfer / policy-linked income term in the budget (can be negative when household's inflation-tax burden exceeds rebate; verify sign rule in paper) | +| `beta` | parameter | `(0,1)` | Discount factor | +| `P_e` | parameter | `R+`^{3x3} row-stochastic | Markov transitions for `e` (renamed from `Pi` to avoid collision with inflation `Pi_inf` in the aggregate side; see "Out of scope" table below). **Canonical declaration** (per Matsya Evaluate turn, Question 3): plain non-negative parameter in the `parameters:` block; row-stochastic semantics are carried by `@dist MarkovChain(P_e)` on the exogenous variable `e_next`. Do **not** invent `@in StochasticMatrix` — no precedent in canonical dolo-plus examples. | +| `a_min` | parameter | `R` | Borrowing limit (paper-specific; placeholder in draft YAML) | +| `R`, `r_m` | parameters | `R+` | Draft return factors in the law of motion for resources (see YAML; **unresolved** vs. paper) | +| `sigma` | parameter | `R+` | Outer CRRA curvature in the summary's CES-with-leisure utility | +| `eta` | parameter | `R+` | CES elasticity between consumption and real money balances | +| `omega` | parameter | `(0,1)` | CES weight on consumption in the `(c, m)` composite | +| `psi` | parameter | `R+` | Leisure exponent in the summary's utility | +| `v(q,e)` | value | `R` | Household value function | + +### Out of scope for this draft (flagged for a later general-equilibrium pass) + +Surfaced in `arg2009-bellman-excerpt.md` but **not** encoded in the current YAML or perch decomposition: + +| Symbol | Role | Where it appears in the paper summary | Why deferred | +|--------|------|----------------------------------------|---------------| +| `K`, `alpha`, `delta` | aggregate production | `Y_t = K_t^alpha L_t^(1-alpha)`; resource constraint | Household block only in this draft | +| `Y`, `G` | aggregate quantities | Resource constraint | General-equilibrium pass | +| `Omega`, `tau^{tot}` | monetary aggregates | `Omega_t = Omega_{t-1}/Pi_inf_t + pi * Omega_{t-1}/Pi_inf_t`; `tau_t^{tot}` | Monetary block; enters `mu` via redistribution rule, still TBD | +| `Pi_inf` | gross inflation | Inflation-tax expressions (distinct from Markov `P_e`) | Disambiguated in rename above; not yet in YAML | + +**Utility (from summary excerpt — not yet matched to YAML).** The summary notebook records a CES–leisure structure parameterized by `(sigma, eta, omega, psi)`; see `arg2009-bellman-excerpt.md`. The draft `dolo-plus-draft.yaml` currently uses a **separable placeholder** for tractability—flagged there as unresolved relative to the paper. + +## Stages, perches, transitions, movers + +### Stage 1 — Household decision + +| Perch | Carried objects | Value | Notes | +|-------|-----------------|-------|--------| +| **arrival** | `(q, e)` | `V` | Shocks relevant to the decision are already embedded in observed `e`. | +| **decision** | `(q, e)` | `V` | Choose **three** free controls `(c, m, l)` subject to the borrowing constraint; `a'` is determined by the budget identity (not free). | +| **continuation** | `(a', m, e)` | `V_>` | Post-decision objects feed the next stage. | + +- **Arrival → decision** (`g_{≺∘}`): **identity (degenerate)** on `(q, e)` — no within-stage shock between **arrival** and **decision** in this draft; carried forward unchanged. +- **Decision → continuation** (`g_{∘≻}`): `(a', m, e)` from the **budget identity** `a' = q + w\,e\,l + \mu - c - m` (this pins `a'`), the savings identity `m = m_d` (mapping the decision-perch control `m_d` to the continuation-perch poststate `m`), and current `e` passed through. Per the Matsya Evaluate turn (docs/matsya-evaluate-turn.txt, Flag C), eliminating `a'` via the budget is the canonical encoding and matches the `a = w - c` pattern in `cons_stage`. + +**Backward mover (continuation → decision):** Bellman maximization over feasible controls. + +**Forward mover (decision → arrival):** identity on value at the **decision** perch in this draft (`V[<] = V` in YAML). + +**Stage operator (Stage 1):** `\mathbb T_{\text{dec}} = \mathbb I_{\text{dec→arvl}} \circ \mathbb B_{\text{cntn→dec}}`. + +### Stage 2 — Shock realization and next-period resources + +| Perch | Carried objects | Value | Notes | +|-------|-----------------|-------|--------| +| **arrival** | `(a, m, e)` | `V` | Enters after Stage 1 continuation. | +| **decision** | `(q', e')` | `V` | Degenerate **decision** perch: no optimization; nature draws `e'` and implied `q'` is formed. | +| **continuation** | `(q', e')` | `V` | Feeds the next period’s **arrival** state. | + +- **Arrival → decision:** draw `e' \sim P_e(\cdot\mid e)`; map `(a, m, e')` into `q'` (draft: `q' = R a + (1+r_m) m` in YAML — **unresolved** vs. paper). +- **Decision → continuation:** **identity (degenerate)** on `(q', e')`. + +**Backward mover:** pass-through (`V = V[>]` in YAML). + +**Forward mover:** expectation over `e'` (`V[<] = E_{e'}[V]` in YAML). + +**Stage operator (Stage 2):** `\mathbb T_{\text{shock}} = \mathbb I_{\text{E}} \circ \mathbb B_{\text{pass}}`. + +### Period composition + +Let `\mathbb T_{\text{period}} = \mathbb T_{\text{shock}} \circ \mathbb T_{\text{dec}}`. The infinite-horizon problem iterates `\mathbb T_{\text{period}}` on the **arrival** state `(q, e)`. + +## Bellman equation (compact) + +$$ +v(q,e) = \max_{c,\,m,\,l} \Big\{ u(c,m,l) + \beta \, \mathbb{E}_{e' \mid e}\big[ v(q', e') \big] \Big\} +$$ + +with the budget identity pinning `a'` and the borrowing constraint: + +`a' = q + w e l + mu - c - m`, `a' \ge a_{\min}`, + +with `q'` determined in the shock stage (draft law of motion in `dolo-plus-draft.yaml`). + +## Stage composition (link to SolvingMicroDSOPs §§12–13) + +The household problem nests as **optimize then expect**: Stage 1 supplies the continuation value as a function of `(a', m, e)`; Stage 2 integrates over `e'` and maps into `(q', e')` for the next period. A full **EGM** discussion is deferred until the utility specification and constraints are pinned to the paper (the CES–leisure block in the summary is not yet encoded in the YAML). diff --git a/models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/docs/accept-edit-reject.md b/models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/docs/accept-edit-reject.md new file mode 100644 index 00000000..b29a4853 --- /dev/null +++ b/models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/docs/accept-edit-reject.md @@ -0,0 +1,44 @@ +# Accept / edit / reject log for Opus 4.7 review + +> Companion to [`opus-prompt.md`](opus-prompt.md) and [`opus-review.md`](opus-review.md). +> Discipline from CONTRIBUTING.md `verification.md` convention — one-line reasoning per suggestion. +> Recommendations below are **provisional**; the ballpark contributor has final say before commit. +> +> **Path note (post-PR-#72 review).** When this table was first written, the four formalization deliverables (`bellman-excerpt.md`, `dolo-plus-draft.yaml`, `verification.md`, `matsya-session.txt`) lived under `docs/`. After PR #72's review, they were relocated to the **item root** so that `CONTRIBUTING.md`'s automated Formalized check can find them. The link targets in the "Target file(s)" column have been updated to point at the new locations; the **judgments themselves** are unchanged. + +| # | Opus suggestion (short) | Severity | Recommendation | One-line reasoning | Target file(s) | +|---|--------------------------|----------|----------------|--------------------|----------------| +| 1 | Add exposition-layer Draft skeleton (`index.md`, `_intro`, `_summary`, `references.bib`, paper pointer) | Must-fix | **Edit (partial in this PR)** | Full four-notebook refactor is out of scope for a `formalize-finalize` PR; add a minimal `index.md` stub with frontmatter + citation-count pointer, defer full exposition rewrite to a follow-up PR. | `models/.../ARMonetaryPolicyHABC/index.md` (new, minimal) | +| 2 | Rewrite `verification.md` against the published paper (not the summary) | Must-fix | **Closed (paper-grounded)** | Originally edited-and-deferred (paper PDF was not in-repo). On the `armonetarypolicyhabc-paper-grounded` branch the paper was read directly and `verification.md` was rewritten to cite specific equations: eq. (15) (utility), eq. (16) (budget), eq. (17) (`a' >= 0`), §3.3.2 (Markov calibration), §4.2 (`mu` redistribution). Three previously-open paper gaps closed (`a_min = 0`; `mu` sign rule; full Markov calibration). YAML `# unresolved:` flags propagated accordingly (HEAD `dolo-plus-draft.yaml`). The only remaining utility deferral is the spec-side CES-encoding gap, retained as item #1 below. | [`verification.md`](../verification.md), [`dolo-plus-draft.yaml`](../dolo-plus-draft.yaml), [`self.bib`](../self.bib) | +| 3 | Close the symbol-table: add CES / aggregate / inflation rows | Must-fix | **Accept** | Directly addresses CONTRIBUTING's "every object referenced" rule and unblocks downstream items. | [`bellman-excerpt.md`](../bellman-excerpt.md) | +| 4 | Resolve `Pi` (Markov) vs `Pi_t` (inflation) collision | Must-fix | **Accept** | Economics-correctness: genuine ambiguity that will derail any later general-equilibrium pass. | `bellman-excerpt.md`, `dolo-plus-draft.yaml`, `verification.md`, `docs/legacy-drafts/arg2009-improved-stage-description.md` | +| 5 | Fix `mu` domain from `R+` to `R` | Must-fix | **Accept (flagged)** | Matches the inflation-tax redistribution channel in the summary; keep the "verify sign rule in paper" note as an `# unresolved:` flag in YAML. | [`dolo-plus-draft.yaml`](../dolo-plus-draft.yaml), [`bellman-excerpt.md`](../bellman-excerpt.md) | +| 6 | Resolve `m_d` vs `m` naming across YAML and bellman-excerpt | Must-fix | **Edit** | Prefer (ii): keep `m_d` in YAML, add a symbol-table row in `bellman-excerpt.md` and a one-line YAML comment. Renaming is larger-touch and risks breaking Matsya cache. | `dolo-plus-draft.yaml`, `bellman-excerpt.md` | +| 7 | Declare `Pi` in YAML `parameters:` block | Must-fix | **Accept** | Undeclared symbol is a dolo-plus / Matsya error; trivial fix. | [`dolo-plus-draft.yaml`](../dolo-plus-draft.yaml) | +| 8 | Explicitly label identity / degenerate movers | Must-fix | **Accept** | CONTRIBUTING literally enumerates this as a reviewer-discernibility requirement. | [`bellman-excerpt.md`](../bellman-excerpt.md), [`dolo-plus-draft.yaml`](../dolo-plus-draft.yaml) | +| 9 | Add aggregate-scoping + notation-collision bullets to AGENTS.md | Must-fix | **Accept** | Closes an AGENTS.md completeness gap; grounded in files already committed. | [`AGENTS.md`](../AGENTS.md) | +| 10 | Add conditional EGM paragraph to `bellman-excerpt.md` | Nice-to-have | **Reject (defer)** | EGM channel depends on utility reconciliation (items #5-#6 upstream) and on seeing the paper's functional forms; forcing a paragraph now would over-commit. Defer to a follow-up PR after utility alignment. | [`bellman-excerpt.md`](../bellman-excerpt.md) | + +--- + +## Top 3-5 selected for implementation in this PR + +Selected to (a) respect the assignment's 3-5 accepted-changes cap and (b) maximize Formalized-tier progress per change: + +1. **#3 + #4 combined — symbol table closure + `Pi` / `Pi_t` rename**. +2. **#5 + #7 combined — `mu` domain fix + `Pi` parameter declaration** (small YAML cleanups; same file; tested together). +3. **#6 — `m_d` documented vs `m`** (one-line YAML comment + bellman-excerpt symbol-table row). +4. **#8 — explicit identity-mover labels** (Stage 1 arrival→decision and Stage 2 decision→continuation). +5. **#9 — AGENTS.md completeness bullets** (aggregate scoping + notation collision pointer). + +Items #1 (full exposition refactor) and #2 (paper-grounded verification) were **originally recorded as deferred** for a separate PR after the paper PDF / `.mmd` lands in-repo; a minimal `index.md` stub and a rephrased `verification.md` were included in PR #72 so the state did not over-claim. + +## Update (post-PR-#72, on branch `armonetarypolicyhabc-paper-grounded`) + +Item **#2 is now closed** (see status update in the table above): the paper was read in full from a user-supplied PDF (HAL preprint `hal-01170621v1`), `self.bib` was added with the BibTeX entry, `index.md` and `AGENTS.md` were enriched with DOI / journal / volume / pages / JEL, `verification.md` was rewritten line-by-line against paper §3.1.1 + eqs. (15)–(22) + §3.3.2 + §4.2, and the YAML `# unresolved:` flags for `a_min`, `P_e` calibration, and the wealth-on-hand transition were closed (or refactored into `# resolved (paper §X)` pointers). The branch's commit log is the single source of truth for what changed. + +The publication year stays **2009** across the item (per ballpark contributor decision; consistent with the directory slug `ARMonetaryPolicyHABC`, the legacy-draft filenames `arg2009-*.md`, and the DOI suffix `red.2009.05.001`). + +Item **#1 (full exposition refactor)** remains deferred: the canonical four-notebook layout (`_intro.ipynb`, `_prior-literature.ipynb`, `_summary.ipynb`, `_subsequent-literature.ipynb`) is a separate ballpark-promotion task and out of scope for the `paper-grounded` branch. + +The only outstanding paper-vs-formalization deferral is the **utility-kernel CES encoding** (paper eq. (15)): the YAML still uses a separable workaround. This is a *spec-side* gap (locating a canonical dolo-plus example with a CES inner aggregator under a CRRA outer wrapper) rather than a paper gap (eq. (15) is now transcribed verbatim at every relevant location). diff --git a/models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/docs/legacy-drafts/README.md b/models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/docs/legacy-drafts/README.md new file mode 100644 index 00000000..2e77508e --- /dev/null +++ b/models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/docs/legacy-drafts/README.md @@ -0,0 +1,48 @@ +# Legacy drafts (superseded; retained for history) + +These files are **pre-iteration** drafts for Algan-Ragot +(2009), produced before the Opus 4.7 review, the Matsya Evaluate +turn, and the Primer-tier exposition layer. They are kept here so a +reader can trace how the formalization and the four-notebook layout +converged, but they are **not** the canonical statement for this +item. + +The single canonical Bellman statement for this item, as +[`CONTRIBUTING.md`](../../../../CONTRIBUTING.md) line 52 requires, is + + ../../bellman-excerpt.md + +at the item root, alongside `dolo-plus-draft.yaml`, `verification.md`, +`matsya-session.txt`, and `AGENTS.md`. + +## Why they are kept + +| File | What it has that the canonical one does not | +|------|---------------------------------------------| +| `arg2009-bellman-excerpt.md` | Verbatim transcription of the paper's CES-with-leisure utility kernel `u(c,m,l) = (1/(1-sigma)) * [ (omega*c^((eta-1)/eta) + (1-omega)*m^((eta-1)/eta))^(eta/(eta-1)) * (1-l)^psi ]^(1-sigma)` from `ToramanSY_AlganRagot2009_Summary.ipynb`. The canonical `bellman-excerpt.md` carries this in its symbol-table and timing form, but the verbatim equation here is convenient when reconciling against the paper's `.mmd`/`.pdf` (deferred). | +| `arg2009-improved-stage-description.md` | The original four-control encoding (`c, m, l, a_next`) before the Matsya Evaluate turn (Flag C, PROVISIONAL → resolved) recommended eliminating `a_next` and pinning it via the budget identity. Useful as a record of the iteration step. | +| `ToramanSY_AlganRagot2009_Summary.ipynb` | Single-notebook ballpark digest produced by S. Y. Toraman in 2020 — the original Primer-tier-style summary of the paper's model, results, and conclusion. Superseded by the four-notebook exposition layer (`../../ARMonetaryPolicyHABC_intro.ipynb`, `_prior-literature.ipynb`, `_summary.ipynb`, `_subsequent-literature.ipynb`); the model statement in the canonical `_summary.ipynb` is adapted from this digest with explicit credit. Kept here for authorship provenance and to make the original Toraman wording recoverable. | + +## Why they should not be promoted back to the item root + +`CONTRIBUTING.md` line 52: +> `bellman-excerpt.md` is the **single evolving artifact** that this +> loop produces — **not two separate files** for "before Matsya" and +> "after Matsya." + +The two Bellman drafts are exactly the "before Matsya" version that +line 52 warns against keeping at the item root. They are demoted here +to honour that constraint while still preserving the iteration +history. + +The Toraman 2020 single-notebook digest is demoted by an analogous +rule for the exposition layer: `CONTRIBUTING.md`'s Primer-tier section +expects exactly four canonically-named notebooks (`_intro.ipynb`, +`_prior-literature.ipynb`, `_summary.ipynb`, +`_subsequent-literature.ipynb`) at the item root. A second summary +notebook with a different naming convention would be picked up by +auto-discovery tooling alongside the canonical files (this is the +exact issue PR #66 ran into with `BBL_summary.ipynb`, resolved by +deletion in commit `f21c5e2`). Demoting rather than deleting preserves +authorship credit; the canonical `_summary.ipynb` cites this file +explicitly in its preamble. diff --git a/models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/ToramanSY_AlganRagot2009_Summary.ipynb b/models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/docs/legacy-drafts/ToramanSY_AlganRagot2009_Summary.ipynb similarity index 100% rename from models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/ToramanSY_AlganRagot2009_Summary.ipynb rename to models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/docs/legacy-drafts/ToramanSY_AlganRagot2009_Summary.ipynb diff --git a/models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/docs/legacy-drafts/arg2009-bellman-excerpt.md b/models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/docs/legacy-drafts/arg2009-bellman-excerpt.md new file mode 100644 index 00000000..ce3b55e8 --- /dev/null +++ b/models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/docs/legacy-drafts/arg2009-bellman-excerpt.md @@ -0,0 +1,48 @@ +# Bellman Excerpt: Algan and Ragot (2009) + +This note extracts the core dynamic program from the model summary in `ToramanSY_AlganRagot2009_Summary.ipynb`. + +## Household problem (as summarized) + +The representative household type is infinitely lived, with idiosyncratic labor productivity shock `e_t` evolving on a three-state Markov chain. + +Value function: + +`v(q_t^i, e_t^i) = max_{c_t^i, m_t^i, l_t^i, a_{t+1}^i} u(c_t^i, m_t^i, l_t^i) + beta * E[v(q_{t+1}^i, e_{t+1}^i)]` + +Budget constraint: + +`c_t^i + m_t^i + a_{t+1}^i = q_t^i + w_t e_t^i l_t^i + mu_t^i` + +where: + +- `q_t^i` is beginning-of-period financial resources/cash-on-hand +- controls are consumption `c_t^i`, real money balances `m_t^i`, labor `l_t^i`, and next-period risky assets `a_{t+1}^i` +- `mu_t^i` is transfer income linked to monetary policy / inflation-tax redistribution + +Utility (CES in consumption-money composite and leisure): + +`u(c_i,m_i,l_i) = (1/(1-sigma)) * [ (omega*c_i^((eta-1)/eta) + (1-omega)*m_i^((eta-1)/eta))^(eta/(eta-1)) * (1-l_i)^psi ]^(1-sigma)` + +## Economic environment details relevant for stage structure + +- Idiosyncratic shock process: `e_t in {e_h, e_m, e_l}` (Markov) +- Incomplete markets and borrowing constraints (binding vs non-binding cases) +- Two savings technologies in the summary text: money and risky capital asset +- Transfers `mu_t^i` are tied to inflation tax and government redistribution rules + +## Aggregate side (for consistency checks) + +- Production: `Y_t = K_t^alpha L_t^(1-alpha)` +- Resource constraint: `C_t + K_{t+1} + G_t = Y_t + (1-delta)K_t` +- Asset-market clearing: `K_{t+1} = A_{t+1}` +- Money evolution and inflation tax are policy objects in the summary: + - `Omega_t = Omega_{t-1}/Pi_t + pi * Omega_{t-1}/Pi_t` + - `tau_t^{tot} = pi * Omega_{t-1}/Pi_t` + +## Known ambiguity to resolve in Dolo-style formalization + +The summary states borrowing constraints are central but does not provide one explicit algebraic inequality (for example, an explicit lower bound on `a_{t+1}^i`). A Dolo-style YAML draft therefore needs either: + +1. an explicit placeholder borrowing-limit rule, or +2. a clearly labeled assumption that the exact limit is to be filled from the paper text. diff --git a/models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/docs/legacy-drafts/arg2009-improved-stage-description.md b/models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/docs/legacy-drafts/arg2009-improved-stage-description.md new file mode 100644 index 00000000..ae7571ce --- /dev/null +++ b/models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/docs/legacy-drafts/arg2009-improved-stage-description.md @@ -0,0 +1,75 @@ +# Algan-Ragot (2009): Stage-Based Dynamic Program Description + +## Timing + +Each period has two stages: + +1. **Decision stage:** the household observes beginning-of-period resources `q` and labor-productivity state `e`, then chooses `c`, `m`, `l`, and `a_next`. +2. **Shock stage:** nature draws next-period productivity `e_next` from a Markov chain; next-period resources `q_next` are formed from chosen asset positions. + +This gives a max-over-expectation structure. + +## States + +- `q in R+`: beginning-of-period resources (cash-on-hand style state) +- `e in {e_low, e_mid, e_high}`: current idiosyncratic productivity state + +## Controls + +- `c in R+`: consumption +- `m in R+`: real money balances carried forward +- `l in [0, 1]`: labor supply +- `a_next in [a_min, inf)`: next-period illiquid/risky asset + +## Constraints + +Budget: + +`c + m + a_next = q + w * e * l + mu` + +Borrowing limit: + +`a_next >= a_min` + +## Preferences (draft assumption) + +To make a computable draft, use a separable money-in-utility form: + +`u(c,m,l) = c^(1-rho)/(1-rho) + phi_m * m^(1-rho_m)/(1-rho_m) - phi_l * l^(1+gamma)/(1+gamma)` + +## Bellman Representation + +`v(q,e) = max_{c,m,l,a_next} [ u(c,m,l) + beta * E_{e_next|e} v(q_next, e_next) ]` + +with + +`q_next = R * a_next + (1 + r_m) * m` + +## Stage Decomposition + +### Stage 1: Household Decision + +- **Arrival perch:** `(q, e)` +- **Decision perch:** `(q, e)` and controls `(c, m, l, a_next)` +- **Continuation perch:** `(a, m, e)` where `a = a_next` + +Mover: + +`v(q,e) = max_{controls} { u(c,m,l) + beta * v_cont(a_next,m,e) }` + +### Stage 2: Shock Realization + +- **Arrival perch:** `(a, m, e)` +- **Nature move:** `e_next ~ Pi(.|e)` +- **Transition:** `q_next = R*a + (1+r_m)*m` +- **Continuation perch:** `(q_next, e_next)` + +Mover: + +`v_cont(a,m,e) = E_{e_next|e}[ v(q_next, e_next) ]` + +## Notes on Gaps Relative to Paper-Level Precision + +- The exact algebraic borrowing limit from the paper is not yet inserted; `a_min` is a placeholder. +- The transition law for `q_next` is a parsimonious draft assumption to keep the YAML coherent. +- Calibration values must be replaced with paper-faithful numbers before quantitative use. diff --git a/models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/docs/lessons-learned.md b/models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/docs/lessons-learned.md new file mode 100644 index 00000000..e5900279 --- /dev/null +++ b/models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/docs/lessons-learned.md @@ -0,0 +1,153 @@ +# Lessons learned — ARMonetaryPolicyHABC formalize-and-finalize pass + +Reusable patterns and course-corrections from the +`armonetarypolicyhabc-formalize-finalize` branch, for future contributors +working on related ballpark items. Modeled on the consolidated "Lessons +learned" section of the +[Benhabib worked example](https://llorracc.github.io/workspace-course-topics/worked-examples/benhabib-formalize-finalize/). + +## Workflow and discipline + +1. **Branch discipline up front.** Every commit for this assignment landed on + a single item-scoped branch (`armonetarypolicyhabc-formalize-finalize`), + branched from `origin/master` after the infrastructure PR merged. No + `CONTRIBUTING.md` / infra edits on this branch. + +2. **Commit scope ≈ one review item.** Each commit after the initial scaffold + addresses one numbered item from the AI review (Opus) or one flagged item + from the Matsya Evaluate turn. Small cleanups get their own small commits. + This keeps the PR diff reviewable. + +3. **Accept / edit / reject every AI-proposed change.** See + `docs/accept-edit-reject.md`. One-line reasoning per item, targets listed, + implementation status recorded. Nothing was merged blind. + +4. **Record AI prompts and responses verbatim.** Prompts live in + `docs/opus-prompt.md`; reviews in `docs/opus-review.md`; Matsya Evaluate + responses in `docs/matsya-evaluate-turn.txt`. Reviewers can reproduce + every step. + +## Starting below Draft tier (the hardest case) + +5. **When starting below Draft tier, scope aggressively.** The Benhabib + worked example started at Primer (four notebooks, bib files, `.mmd` + already present) and ended at Formalized in 10 rounds. This item started + below Draft: no `index.md`, no four-notebook exposition layer, no paper + in-repo. A realistic target for one pass is **Draft with + partial-Formalized artifacts**, not Formalized. `docs/tier-assessment.md` + records what did and did not land, and why. + +6. **Separate scaffold from review.** The first commit on this branch was a + pre-review formalization scaffold (bellman-excerpt draft + YAML draft + + supporting docs). The Opus and Matsya reviews were then run against that + scaffold. Splitting scaffold commits from review-artifact commits from + implementation commits keeps the PR readable. + +## Matsya interaction + +7. **One stable `--session` per ballpark, reused across assignments.** We + used `topics2026-armonetarypolicyhabc` through Class 10, Class 11, and + Class 12 work. Server-side history accumulates into one reviewable thread. + +8. **Single focused question, `--no-think`, small prompt.** The Matsya + Evaluate turn (`docs/matsya-evaluate-turn.txt`) was ~2 KB of prompt with + three numbered sub-questions plus structured verdict requests. It + returned in ~52 seconds with a substantive response; no 120-second + timeout. Pattern worth copying: compact decomposition pasted inline + + CANONICAL / PROVISIONAL / UNRESOLVED verdict format requested. + +9. **Matsya's critiques come in two flavors.** Dolo-plus-syntax gaps + (PROVISIONAL / UNRESOLVED in the retrieved corpus) get inline + `# workaround:` / `# unresolved:` comments in the YAML. Factual errors in + our draft get corrected outright. Our Turn surfaced one of each: + `@in StochasticMatrix` was a syntax gap (fixed by switching to `@in R+` + plus the `@dist MarkovChain` annotation); the four-control budget was a + draft error (fixed by pinning `a_next` via the budget identity). + +## Writing bellman-excerpt.md + +10. **Pre-empt Matsya's predictable critiques before the Evaluate turn.** + The first-pass bellman-excerpt included a comprehensive symbol table + (split into in-scope household block vs. out-of-scope aggregate-side + deferred symbols), a numbered timing convention, and the two-stage + perch decomposition. Matsya did not flag any missing economic + structure — only two syntactic idioms. + +11. **Name degenerate movers explicitly.** The identity movers + (`g_{≺∘}` in Stage 1, `g_{∘≻}` in Stage 2) are labeled + `# degenerate: identity` in both the YAML and the bellman-excerpt. + Reviewers can distinguish "identity" from "omitted." + +12. **Distinguish household scope from aggregate scope up front.** Putting + `K`, `Y`, `G`, `Omega`, `tau^{tot}`, `Pi_inf` in a dedicated + "Out of scope for this draft" table (with deferral reasons) stops a + reader from thinking the formalization is incomplete. It is scoped to + the household block on purpose. + +## Writing dolo-plus-draft.yaml + +13. **Flag workarounds, don't hide them.** `# unresolved:` (paper not in + repo), `# workaround:` (deliberate placeholder), and + `# degenerate: identity` (labeled no-op) are honest outputs. A YAML + with flagged gaps is reviewable; a YAML with silently-fudged syntax + is not. + +14. **Don't conflate paper gaps with dolo-plus spec gaps.** + `verification.md` (at the item root) partitions each open issue into one + of these buckets. The `P_e` declaration was a spec gap (now closed). The + utility kernel is a paper gap (deferred until the paper PDF / `.mmd` is + in-repo). The distinction determines who can close each item. + +15. **Comment directly on the offending line.** Each `# unresolved:` / + `# workaround:` sits immediately above the symbol or equation it + qualifies, not in a separate "caveats" section. The reviewer sees the + reason at the point of encounter. + +16. **Make every `# unresolved:` flag explicit at the line itself.** The + PR #72 review showed a `# workaround:` one-liner is not enough when the + deferral hides a paper-vs-YAML discrepancy as large as the utility + kernel. A reviewer-grade `# unresolved:` block (a) names the paper's + canonical functional form verbatim at the line, (b) cites where the + form came from (paper section + which file in this repo carries the + transcription), and (c) lists the exact ways the deferral could be + closed. The reader does not have to chase a separate caveats section + to know whether the YAML is wrong, deliberately simplified, or just + pending. + +17. **Item-root layout is non-optional for Formalized.** + `CONTRIBUTING.md` §"Formalized" requires `bellman-excerpt.md`, + `dolo-plus-draft.yaml`, `verification.md`, and `matsya-session.txt` at + the **item root** (alongside `AGENTS.md`), not under `docs/`. The PR #72 + review surfaced this: an automated mechanical check looks for these four + names exactly at the item root. AI iteration history (Opus prompt / + review, Matsya turn transcripts, accept-edit-reject log, + lessons-learned) belongs under `docs/`, but the four canonical + deliverables themselves do not. Earlier drafts of the Bellman excerpt + that pre-date the Matsya iteration belong under `docs/legacy-drafts/`, + not at the item root — `CONTRIBUTING.md` line 52 explicitly forbids + keeping multiple parallel Bellman files. + +## Symbol-collision hygiene + +18. **Rename when two symbols would collide.** The household Markov kernel + `Pi` was renamed `P_e` to avoid collision with the aggregate inflation + series `Pi_inf`. The rename is documented in the bellman-excerpt + symbol table, the YAML, the verification note, and `AGENTS.md`. Future + contributors adding the aggregate monetary block will not accidentally + shadow `Pi` between the two blocks. + +## AI-review-plus-implementation rhythm + +19. **One Opus pass for a full prioritized list; Matsya for focused + syntactic questions.** Opus 4.7 returned a ten-item prioritized review + (`docs/opus-review.md`). Matsya was used afterward for narrow + dolo-plus-syntax verdicts. Mixing the two roles on one model is + possible but less efficient: Opus reasons broadly about economics + + criteria; Matsya retrieves from the canonical dolo-plus corpus. + +20. **Record current tier after each pass.** `docs/tier-assessment.md` + lists, item by item from `CONTRIBUTING.md`, what is Draft-tier + compliant, what is Primer-tier blocked (four-notebook layout; paper + in-repo), and what Formalized-tier artifacts are present but not yet + paper-grounded. This is what a maintainer needs to decide what to + merge and what to ask a follow-up contributor to extend. diff --git a/models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/docs/matsya-evaluate-turn.txt b/models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/docs/matsya-evaluate-turn.txt new file mode 100644 index 00000000..60de7fb7 --- /dev/null +++ b/models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/docs/matsya-evaluate-turn.txt @@ -0,0 +1,173 @@ +Querying session 'topics2026-armonetarypolicyhabc'... +====================================================================== +Query: Evaluate this two-stage household dolo-plus decomposition for a money-in-utility model with liquid money m, illiquid savings a, and 3-state Markov productivity e. Is it a canonical encoding? Flag any non-canonical perches, movers, or symbol declarations. + +STAGE 1 (Decision): +- prestate: (q, e); q in R+, e in {e_l, e_m, e_h} +- controls: (c, m_d, l, a_next); budget c + m_d + a_next = q + w*e*l + mu +- arvl_to_dcsn_transition: identity (q=q, e=e), degenerate +- poststates: (a, m, e); savings identities a = a_next, m = m_d +- cntn_to_dcsn_mover (Bellman): V = max_{c, m_d, l, a_next}{u(c,m_d,l) + beta*V[>]} +- dcsn_to_arvl_mover: V[<] = V (identity, degenerate) + +STAGE 2 (Shock realization): +- prestate: (a, m, e); from Stage 1 continuation +- exogenous: e_next ~ MarkovChain(P_e | e) +- arvl_to_dcsn_transition: q_next = R*a + (1+r_m)*m; e_next = e_next +- poststates: (q, e) = (q_next, e_next), degenerate identity +- cntn_to_dcsn_mover: V = V[>] (pass-through) +- dcsn_to_arvl_mover: V[<] = E_{e_next}(V) (Markov expectation) + +Questions: +(1) Is splitting the chosen money m_d (control) from carried money m (poststate) canonical, or redundant? +(2) Is the stage-2 identity decision→continuation canonical, or should stage 2 collapse into a single expectation mover on top of stage 1? +(3) Is declaring P_e as '@in StochasticMatrix' the right type annotation for a row-stochastic Markov matrix parameter? +Answer each as CANONICAL / PROVISIONAL / UNRESOLVED with one-line justification. +====================================================================== + + + +# Conformance Review: Algan-Ragot Two-Stage Decomposition + +## Overall Assessment + +The decomposition is **structurally sound** and follows the canonical two-stage pattern established by the `cons_stage` + `noport_stage` composition in the consumption-portfolio examples. Below I address each flagged item, then note additional issues. + +--- + +## Question (1): Splitting `m_d` (control) from `m` (poststate) + +**CANONICAL.** + +This follows the same pattern as `c` (control) vs `a` (poststate) in the canonical consumption-savings examples. The `dcsn_to_cntn_transition` maps control-perch names to continuation-perch names: + +```yaml +dcsn_to_cntn_transition: | + a = a_next + m = m_d + e = e +``` + +The control `m_d` lives at the decision perch; the poststate `m` lives at the continuation perch. These are distinct objects at distinct perches — the transition equation `m = m_d` is the bridge. This is exactly analogous to `a = w - c` in `cons_stage.md`, where `c` is a control and `a` is a poststate. The naming convention (`m_d` for decision-perch money) is reasonable and avoids the name collision that would arise if both were called `m`. + +**Source:** `cons-port-stages/cons_stage.md` — `dcsn_to_cntn_transition: a = w - c` (CANONICAL). + +--- + +## Question (2): Stage 2 identity decision→continuation — canonical or collapsible? + +**CANONICAL.** + +The `noport_stage` pattern from the consumption-portfolio examples is the direct precedent. It has exactly this structure: a shock-realization stage with no decision, where: + +- The arrival-to-decision transition realizes the shock and forms new states +- The decision-to-continuation transition is the identity +- The backward mover is a pass-through (`V = V[>]`) +- The forward mover computes the expectation (`V[<] = E(V)`) + +From the retrieved context, the `noport_stage` exists as a **separate stage** — it is not collapsed into the predecessor's mover. This is a deliberate design choice in the modular Bellman framework: each stage has its own three-perch structure, even when one perch is degenerate. The modularity enables: + +1. **Recomposition** — the shock stage can be wired to different decision stages +2. **Forward operator separation** — population dynamics through the shock stage are distinct from the decision stage +3. **Clean mover typing** — the expectation operator lives in `dcsn_to_arvl_mover` of Stage 2, not awkwardly grafted onto Stage 1's continuation + +**Could** you collapse it into Stage 1 by putting the Markov expectation inside Stage 1's `dcsn_to_arvl_mover`? Yes — that would give a single-stage representation like `consumption_savings_iid.md`, where the IID shock expectation lives in the `dcsn_to_arvl_opr`. But for a **Markov** shock that conditions on the current state $e$ (which is part of the decision perch), the two-stage decomposition is cleaner and is the pattern the canonical multi-stage examples follow. + +**Source:** `cons-port-stages/noport_stage.md` pattern; `spec_0.1l-branching.md` discussion of within-stage vs cross-stage operators (CANONICAL). + +--- + +## Question (3): `P_e: '@in StochasticMatrix'` for the Markov transition matrix + +**UNRESOLVED.** + +The canonical examples do not declare Markov transition matrices as standalone parameters with a type annotation like `@in StochasticMatrix`. Instead, the Markov structure is encoded in the **exogenous shock declaration**: + +```yaml +exogenous: + e_next: + - '@in Xe' + - '@dist MarkovChain(Pi, e_vals)' +``` + +where `Pi` and `e_vals` appear as **parameters** with simple domain annotations (`@in R+` or similar), and the `@dist MarkovChain(...)` constructor on the exogenous variable carries the semantic content that `Pi` is row-stochastic. + +There is no canonical `@in StochasticMatrix` space constructor in the retrieved spec or examples. The closest pattern is from `housing_owner.md`: + +```yaml +exogenous: + y: + - '@in XY' + - '@dist MarkovChain(Pi, z_vals)' +parameters: [r, phi, H_min, H_max, n_H, n_y] +``` + +where `Pi` is listed as a bare parameter name without an explicit type annotation. + +**Recommendation:** Declare `Pi` as a parameter and let the `@dist MarkovChain(Pi)` annotation on the exogenous variable carry the stochastic-matrix semantics. Do not invent `@in StochasticMatrix` — it has no precedent in the canonical examples. + +--- + +## Additional Flags + +### Flag A: Passthrough of `e` through the poststate + +The poststate triple `(a, m, e)` carries `e` through Stage 1's continuation perch so that Stage 2 can condition the Markov draw on it. This is **canonical** — the same pattern appears in the consumption-portfolio `cons_stage` where income state passes through to `noport_stage`. However, note that `e` is not *chosen* — it is a state variable threaded through. The transition `e = e` in `dcsn_to_cntn_transition` is the identity passthrough. This is correct. + +### Flag B: Missing `values_marginal` declarations + +If you ever want to add EGM sub-equations (`InvEuler`, `MarginalBellman`), you will need: + +```yaml +values_marginal: + dV[<]: '@in R' + dV: '@in R' + dV[>]: '@in R' +``` + +For a VFI-only draft (Bellman sub-equation only), omitting this group is **canonical** — the system prompt rule "OMIT EMPTY GROUPS" applies. + +### Flag C: Budget constraint placement + +The budget constraint `c + m_d + a_next = q + w*e*l + mu` mixes a control (`l`) on the RHS. This is mathematically correct but means the `dcsn_to_cntn_transition` cannot be written as a simple subtraction. In the YAML, this constraint should appear in `dcsn_to_cntn_transition` as an implicit relationship, or one control should be eliminated. The canonical examples handle this by solving out one control (e.g., `a = w - c` eliminates `a` as a free control). Here you would need to either: + +1. Eliminate one control via the budget constraint (e.g., `a_next = q + w*e*l + mu - c - m_d`) and declare only three free controls, or +2. Keep all four controls and treat the budget constraint as an equality constraint inside the `max` operator + +Option 1 is more canonical — it matches the `a = w - c` pattern. **PROVISIONAL** — the spec does not explicitly address multi-control budget constraints with endogenous income. + +### Flag D: Stage 2 exogenous declaration location + +The Markov shock `e_next` should be declared in Stage 2's `exogenous` block (which you have), **not** in Stage 1. This is correct as written. The shock is realized at Stage 2's arrival-to-decision transition, consistent with the post-decision timing. + +--- + +## Summary Table + +| Item | Verdict | Key Justification | +|------|---------|-------------------| +| (1) `m_d` / `m` split | **CANONICAL** | Same pattern as `c` / `a` in `cons_stage` | +| (2) Stage 2 identity dcsn→cntn | **CANONICAL** | Matches `noport_stage` pattern | +| (3) `@in StochasticMatrix` | **UNRESOLVED** | No precedent; use `@dist MarkovChain(Pi)` on exogenous instead | +| (A) `e` passthrough | **CANONICAL** | Standard state threading | +| (B) No `values_marginal` | **CANONICAL** | Correct for VFI-only; omit empty groups | +| (C) Multi-control budget | **PROVISIONAL** | Recommend eliminating one control via constraint | +| (D) Shock in Stage 2 | **CANONICAL** | Correct post-decision timing | + +====================================================================== +Sources (15 chunks): + [0.642] project/repos/bellman-ddsl/docs/examples/cons-port-stages/solving-conjugates.md + [0.641] project/repos/bellman-ddsl/docs/development/dolo-plus-impl/spec_0.1l-branching.md + [0.639] project/repos/bellman-ddsl/docs/examples/retirement_choice.md + [0.637] project/repos/bellman-ddsl/docs/development/dolo-plus-impl/spec_0.1l-branching.md + [0.633] project/repos/bellman-ddsl/docs/examples/housing_renting/refine_stage.py + [0.630] project/repos/bellman-ddsl/AI/context/external/FUES/examples/housing_renting/config_HR/test_0.3/stages/RNTC.yml + [0.630] project/repos/bellman-ddsl/AI/context/external/FUES/examples/housing_renting/config_HR/test_0.1/stages/RNTC.yml + [0.630] project/repos/bellman-ddsl/AI/context/external/FUES/examples/housing_renting/config_HR/STD_RES_SETTINGS_4_TAXES/stages/RNTC.yml + [0.630] project/repos/bellman-ddsl/AI/context/external/FUES/examples/housing_renting/config_HR/test_0.4/stages/RNTC.yml + [0.629] project/repos/bellman-ddsl/docs/examples/housing_renting/converged_output/tenure_choice.md + [0.628] project/repos/bellman-ddsl/docs/development/dolo-plus-impl/spec_0.1l-branching.md + [0.623] project/repos/bellman-ddsl/docs/theory/MDP-foundations/diagramv4.md + [0.619] project/repos/bellman-ddsl/docs/examples/housing_owner.md + [0.615] project/repos/bellman-ddsl/docs/examples/housing_renting/refine_stage.py + [0.613] project/repos/bellman-ddsl/docs/examples/housing_renting/refine_stage.py diff --git a/models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/docs/matsya-session-evidence.md b/models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/docs/matsya-session-evidence.md new file mode 100644 index 00000000..e7c90d48 --- /dev/null +++ b/models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/docs/matsya-session-evidence.md @@ -0,0 +1,13 @@ +# Matsya Session Evidence + +Session used for this assignment: + +`topics2026-armonetarypolicyhabc` + +Redacted `matsya sessions` output: + +```text +Name Turns Last active +------------------------------- ----- -------------------- +topics2026-armonetarypolicyhabc 6 2026-04-14 03:48:03 +``` diff --git a/models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/docs/matsya-session-show.txt b/models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/docs/matsya-session-show.txt new file mode 100644 index 00000000..22cd242c --- /dev/null +++ b/models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/docs/matsya-session-show.txt @@ -0,0 +1,649 @@ +====================================================================== +Session: topics2026-armonetarypolicyhabc (6 turns) +====================================================================== + +--- Turn 1 2026-04-14 03:33:32 --- +Q: I am using a named session for my Topics ballpark dynamic program work. +A: Understood. Based on the retrieved context from the bellman-ddsl road-map, the convention for session logs is: + +> use `AI/working//.../session.md` + +So for your "Topics ballpark dynamic program" work, you'd place your session file at a path like: + +``` +AI/working//topics-ballpark/session.md +``` + +This keeps it separate from: +- `CHANGELOG.md` (for comprehensive changelogs) +- `AI/road-map/road-map-todo.md` (for planning) + +**Source**: `AI/road-map/road-map-todo.md` — *"Non-goal: a comprehensive changelog (use `CHANGELOG.md`) or a session log (use `AI/working//.../session.md`)."* **(CANONICAL)** + +If you'd like help with any aspect of the dynamic program itself — translating it to YAML, writing up a formal MDP, or reviewing its structure against the DDSL spec — just share the details and I'll assist. + +--- Turn 2 2026-04-14 03:33:40 --- +Q: Referring to our previous exchange: confirm you have session context and list one thing we are set up to do next. +A: **Session context confirmed.** You are using a named session for your **Topics ballpark dynamic program** work. + +**One thing we are set up to do next:** Translate your ballpark dynamic program into a formal object — either as a **dolo-plus stage YAML** (Mode 2) or a **formal MDP writeup** (Mode 1) — once you share the model's mathematical structure (state/action spaces, transitions, preferences, shocks). + +Ready when you are. + +--- Turn 3 2026-04-14 03:41:50 --- +Q: Using this Bellman excerpt from Algan-Ragot 2009: value function v(q,e)=max_{c,m,l,a'} u(c,m,l)+beta E[v(q',e')], subject to c+m+a' = q + w*e*l + mu; e is a 3-state Markov shock; controls are c,m,l,a'; borrowing constraints exist but exact algebraic bound not provided. Break this into modular stages using arrival/decision/continuation perches. Be explicit about state variables, controls, transitions, and which objects are exogenous/policy-determined. +A: # Modular Decomposition of the Algan-Ragot Bellman Equation + +## The Original Problem + +$$ +v(q, e) = \max_{c,\,m,\,l,\,a'}\;\Big\{ u(c, m, l) \;+\; \beta\,\mathbb{E}\big[v(q', e')\big]\Big\} +$$ + +subject to $c + m + a' = q + w\cdot e\cdot l + \mu$, a borrowing constraint $a' \geq \underline{a}$, and $e$ following a 3-state Markov chain with transition matrix $\Pi$. + +--- + +## Inventory of Objects + +Before decomposing, let me classify every object in the equation: + +| Object | Role | Determined by | +|--------|------|---------------| +| $q$ | Composite "cash-on-hand" state | Last period's poststate + current-period returns | +| $e \in \{e_1, e_2, e_3\}$ | Discrete Markov state | Nature (realized before decision) | +| $c$ | Consumption (control) | Agent's decision | +| $m$ | Money holdings (control) | Agent's decision | +| $l$ | Labor supply (control) | Agent's decision | +| $a'$ | End-of-period assets (control) | Agent's decision | +| $e'$ | Next-period Markov state | Nature (realized next period) | +| $q'$ | Next-period cash-on-hand | Transition from $(a', m, e')$ | +| $w, \mu, \beta, \underline{a}$ | Parameters | Exogenous/fixed | + +**Key timing observation.** The agent observes $(q, e)$ *before* choosing $(c, m, l, a')$. The expectation $\mathbb{E}[\cdot]$ is over the *future* Markov draw $e' \sim \Pi(\cdot \mid e)$. This is a **pre-decision shock at the successor stage** (equivalently, a post-decision shock from the current stage's perspective). The current-period decision is made under full knowledge of $e$. + +--- + +## Two-Stage Decomposition + +The period decomposes naturally into two stages composed in sequence: + +$$ +\underbrace{\text{Stage 1: Decision}}_{\text{agent chooses } (c,m,l,a')} \;\;\longrightarrow\;\; \underbrace{\text{Stage 2: Shock Realization}}_{\text{nature draws } e', \text{ form } q'} +$$ + +The composition yields the period operator $\mathbb{T} = \mathbb{T}_{\text{shock}} \circ \mathbb{T}_{\text{decision}}$. + +--- + +### Stage 1 — Decision Stage (Consumption–Labor–Portfolio) + +This is the agent's optimization stage. All four controls are chosen simultaneously subject to the budget constraint. + +**Arrival perch** $\;\mathsf{X}_\prec = \mathsf{Q} \times \mathsf{E}$ + +$$ +x_\prec = (q,\; e) +$$ + +- $q \in \mathsf{Q} \subseteq \mathbb{R}_+$ : beginning-of-period resources (continuous) +- $e \in \mathsf{E} = \{e_1, e_2, e_3\}$ : current Markov state (discrete, already realized) + +**Arrival → Decision transition** $\;\mathrm{g}_{\prec\circ}$: identity + +$$ +(q_d,\; e_d) \;=\; (q,\; e) +$$ + +No shock is realized between arrival and decision in this stage — $e$ is already known. + +**Decision perch** $\;\mathsf{X} = \mathsf{Q} \times \mathsf{E}$ + +$$ +x = (q,\; e) +$$ + +**Action space** (state-dependent): + +$$ +\mathsf{A}(q, e) \;\coloneqq\; \Big\{(c, m, l, a') \in \mathbb{R}_+^3 \times [\underline{a}, \infty) \;\Big|\; c + m + a' = q + w\cdot e\cdot l + \mu,\;\; l \in [0, \bar{l}]\Big\} +$$ + +Note that this is a *single* linear budget constraint binding four controls, leaving three effective degrees of freedom. The constraint mixes a control ($l$) on the RHS — labor supply generates income $w \cdot e \cdot l$ — making this a non-separable simultaneous choice. + +**Controls:** + +| Control | Domain | Economic role | +|---------|--------|---------------| +| $c$ | $\mathbb{R}_+$ | Consumption | +| $m$ | $\mathbb{R}_+$ | Money holdings (carried forward) | +| $l$ | $[0, \bar{l}]$ | Labor supply | +| $a'$ | $[\underline{a}, \infty)$ | End-of-period assets (borrowing-constrained) | + +**Decision → Continuation transition** $\;\mathrm{g}_{\circ\succ}$: + +$$ +x_\succ \;=\; (a',\; m,\; e) +$$ + +The continuation state carries forward the savings choice $a'$, money $m$, and the *current* Markov state $e$ (needed to condition next stage's shock draw). + +**Continuation perch** $\;\mathsf{X}_\succ = \mathsf{A} \times \mathsf{M} \times \mathsf{E}$ + +$$ +x_\succ = (a,\; m,\; e) +$$ + +where I drop the prime to use the continuation-perch convention: $a$ here is the post-decision asset level. + +**Reward:** + +$$ +\mathrm{r}(x, \mathbf{a}) \;=\; u(c, m, l) +$$ + +where $\mathbf{a} = (c, m, l, a')$ is the full action vector. + +**Stage 1 Bellman equation:** + +$$ +\mathrm{v}(q, e) \;=\; \max_{(c,m,l,a') \in \mathsf{A}(q,e)} \Big\{ u(c, m, l) \;+\; \beta\, \mathrm{v}_\succ(a', m, e) \Big\} +$$ + +where $\mathrm{v}_\succ$ is the continuation value provided by Stage 2. + +--- + +### Stage 2 — Shock Realization Stage (Markov Transition, No Decision) + +This stage has **no agent decision**. Nature draws $e'$ and the economy transitions to next period's cash-on-hand $q'$. + +**Arrival perch** $\;\mathsf{X}_\prec = \mathsf{A} \times \mathsf{M} \times \mathsf{E}$ + +$$ +x_\prec = (a,\; m,\; e) +$$ + +Connected from Stage 1's continuation perch by the identity connector. + +**Exogenous shock:** + +$$ +e' \;\sim\; \Pi(\cdot \mid e), \qquad e' \in \{e_1, e_2, e_3\} +$$ + +where $\Pi$ is the $3 \times 3$ Markov transition matrix. + +**Arrival → Decision transition** $\;\mathrm{g}_{\prec\circ}$: + +$$ +(q',\; e') \;=\; \big(\underbrace{g(a, m, e')}_{\text{asset returns}},\;\; e'\big) +$$ + +The function $g(a, m, e')$ maps last period's savings and money holdings into this period's resources. The exact functional form is model-specific — a typical specification would be: + +$$ +q' = R\cdot a + (1 + r_m)\cdot m +$$ + +but $g$ could also depend on $e'$ if returns are state-contingent. **The user's excerpt does not specify this transition algebraically — this is an identified gap.** + +**Decision perch** $\;\mathsf{X} = \mathsf{Q} \times \mathsf{E}$ + +$$ +x = (q',\; e') +$$ + +There is **no control** at this stage. The "decision" perch exists structurally but the action set is trivial (singleton). + +**Decision → Continuation transition** $\;\mathrm{g}_{\circ\succ}$: identity + +$$ +x_\succ = (q',\; e') +$$ + +**Stage 2 Bellman equation** (pure expectation, no max): + +$$ +\mathrm{v}_\prec(a, m, e) \;=\; \mathbb{E}_{e' \sim \Pi(\cdot|e)}\Big[\mathrm{v}\big(g(a, m, e'),\; e'\big)\Big] +$$ + +This is the **dcsn_to_arvl mover** — it computes the expected continuation value by integrating over the Markov shock. In DDSL terms, this is analogous to the `noport_stage` pattern from the canonical examples: a shock-realization stage with no optimization. **(CANONICAL pattern, per `noport_stage.md`)** + +--- + +## Composed Period Operator + +Substituting Stage 2's continuation value into Stage 1: + +$$ +\mathrm{v}(q, e) \;=\; \max_{(c,m,l,a') \in \mathsf{A}(q,e)} \bigg\{ u(c, m, l) \;+\; \beta\, \mathbb{E}_{e' \sim \Pi(\cdot|e)}\Big[\mathrm{v}\big(g(a', m, e'),\; e'\big)\Big] \bigg\} +$$ + +which recovers the original Bellman equation $v(q,e) = \max_{c,m,l,a'}\{u(c,m,l) + \beta\,\mathbb{E}[v(q',e')]\}$. ✓ + +The nesting is **max-of-E**: the agent maximizes over an expected continuation, consistent with the shock $e'$ being post-decision (realized after the agent acts). This matches the Dyn-X modular Bellman pattern from the retrieved context: + +> $\mathscr{V}_j(x_{v,j}) = \max_{a \in A(x_{v,j})} \{ r(x_{v,j}, a) + \beta\, \mathbb{E}\, \mathscr{V}_{j+1}(x_{v,j+1}) \}$ +> +> — **(Source: modular-bellman.md, CANONICAL)** + +--- + +## Summary: Perch-by-Perch Rosetta Stone + +| Perch | Stage 1 (Decision) | Stage 2 (Shock) | +|-------|-------------------|-----------------| +| **Arrival** $x_\prec$ | $(q, e)$ | $(a, m, e)$ | +| **Shock** | — (none) | $e' \sim \Pi(\cdot \mid e)$ | +| **Decision** $x$ | $(q, e)$ | $(q', e')$ | +| **Controls** | $c, m, l, a'$ | — (none) | +| **Continuation** $x_\succ$ | $(a, m, e)$ | $(q', e')$ | +| **Mover type** | $\max$ (agent optimizes) | $\mathbb{E}$ (nature draws) | +| **Reward** | $u(c, m, l)$ | $0$ | + +**Connector** between stages: Stage 1's continuation perch $(a, m, e) \in \mathsf{A} \times \mathsf{M} \times \mathsf{E}$ maps identically to Stage 2's arrival perch — the field names match, which is the standard DDSL wiring convention. + +--- + +## Identified Gaps and Observations + +1. **Transition $g(a, m, e')$ unspecified.** The excerpt does not provide the law of motion for $q'$. This must be supplied to complete the YAML or any numerical implementation. + +2. **Borrowing constraint $\underline{a}$ unspecified algebraically.** It enters as a bound on the action space but its value/form is not given. + +3. **Labor in the budget constraint.** The control $l$ appearing on the RHS of the budget constraint ($w \cdot e \cdot l$) means the feasible set $\mathsf{A}(q, e)$ is coupled across controls. This is a simultaneous four-control problem — **not naturally decomposable into sequential sub-stages** without further structural assumptions (e.g., separability of $u$ in $l$ vs. $(c, m)$). + +4. **Money $m$ as both control and poststate.** Money holdings $m$ is chosen at the decision perch and then carried forward as a poststate. This is structurally similar to the portfolio share $\alpha$ in the canonical `port_stage` — a control that becomes part of the continuation state. + +5. **EGM applicability.** With four controls and one budget constraint, standard one-dimensional EGM is not directly applicable. The non-separable labor-consumption interaction would require either (a) a nested solution approach (e.g., fix $l$, solve for $(c, m, a')$ by EGM, then optimize over $l$), or (b) a multi-dimensional root-finding approach. This is a **solution method** question beyond the scope of the mathematical decomposition, but it's worth flagging. + +--- + +Shall I translate this decomposition into a **dolo-plus stage YAML** (one file per stage), or write up the full **formal MDP** with FOCs and forward operator? + +--- Turn 4 2026-04-14 03:42:56 --- +Q: Using the same Algan-Ragot setup in this session, do we have enough information to construct a dolo-plus YAML draft? If not, list the minimum missing items and provide explicit placeholder assumptions that are reasonable for a draft file. +A: # Readiness Assessment for Dolo-Plus YAML Draft + +## What We Have (from the session's Bellman decomposition) + +| Item | Status | Source | +|------|--------|--------| +| State space $(q, e)$ | ✅ Fully specified | Bellman excerpt | +| Control set $\{c, m, l, a'\}$ | ✅ Named and classified | Bellman excerpt | +| Budget constraint $c + m + a' = q + wel + \mu$ | ✅ Algebraic form | Bellman excerpt | +| Markov shock $e \in \{e_1, e_2, e_3\}$ | ✅ Structure known | Bellman excerpt | +| Shock timing (post-decision / pre-next-arrival) | ✅ Established | Session decomposition | +| Two-stage decomposition (Decision → Shock) | ✅ Perch-by-perch | Session decomposition | +| Poststate identification $(a, m, e)$ | ✅ | Session decomposition | + +**Verdict: We have enough *structural* information for a draft. We do NOT have enough *algebraic* information to write a complete, runnable file.** Five items are missing. + +--- + +## The Five Missing Items + +### 1. Utility function $u(c, m, l)$ — **CRITICAL** + +The excerpt says $u(c, m, l)$ but gives no functional form. This determines whether EGM sub-equations can be written and what the FOCs look like. + +**Placeholder assumption (standard in money-in-utility literature):** + +$$ +u(c, m, l) \;=\; \frac{c^{1-\rho}}{1-\rho} \;+\; \phi_m\,\frac{m^{1-\rho_m}}{1-\rho_m} \;-\; \phi_l\,\frac{l^{1+\gamma}}{1+\gamma} +$$ + +*Rationale:* Additively separable CRRA in $(c, m)$ with convex labor disutility is the workhorse specification in Algan-Ragot-type models. The separability is a strong assumption but is the most common starting point and makes FOCs tractable. + +**New parameters introduced:** $\rho$ (consumption CRRA), $\rho_m$ (money CRRA), $\phi_m$ (money weight), $\phi_l$ (labor weight), $\gamma$ (inverse Frisch elasticity). + +--- + +### 2. Transition function $q' = g(a, m, e')$ — **CRITICAL** + +The excerpt provides no law of motion for next-period cash-on-hand. + +**Placeholder assumption:** + +$$ +q' \;=\; R \cdot a \;+\; (1 + r_m) \cdot m +$$ + +where $R$ is the gross return on illiquid assets and $r_m$ is the net return on money. Note that $e'$ does not enter $g$ under this assumption — it enters only through the labor income channel at *next period's* decision stage. + +*Rationale:* This is the simplest asset-return specification consistent with the two-asset structure. If Algan-Ragot have state-contingent returns, this placeholder would need revision. + +**New parameters introduced:** $R$ (gross asset return), $r_m$ (money return). + +--- + +### 3. Markov transition matrix $\Pi$ — **REQUIRED for computation, not for structure** + +We know $e \in \{e_1, e_2, e_3\}$ with transition matrix $\Pi$, but no values are given. + +**Placeholder assumption (Rouwenhorst discretization of AR(1)):** + +$$ +\Pi = \begin{pmatrix} 0.70 & 0.25 & 0.05 \\ 0.15 & 0.70 & 0.15 \\ 0.05 & 0.25 & 0.70 \end{pmatrix}, \qquad (e_1, e_2, e_3) = (0.5,\; 1.0,\; 1.5) +$$ + +*Rationale:* Symmetric, persistent 3-state chain centered at 1.0 is standard. Exact values are calibration — the YAML structure is independent of them. + +--- + +### 4. Borrowing constraint bound $\underline{a}$ — **REQUIRED for action space** + +The excerpt states $a' \geq \underline{a}$ but gives no value. + +**Placeholder assumption:** + +$$ +\underline{a} = 0 \qquad \text{(natural borrowing constraint: no debt)} +$$ + +*Rationale:* Zero is the simplest and most common. Some models use $\underline{a} < 0$ (ad hoc) or $\underline{a} = -w \cdot e_{\min} \cdot \bar{l} / (R-1)$ (natural). Zero suffices for a draft. + +--- + +### 5. Parameter values $(w, \mu, \beta, \bar{l})$ — **REQUIRED for calibration block** + +**Placeholder assumptions:** + +| Parameter | Placeholder | Rationale | +|-----------|-------------|-----------| +| $\beta$ | $0.96$ | Standard annual discount factor | +| $w$ | $1.0$ | Normalized wage | +| $\mu$ | $0.0$ | No lump-sum transfer (simplest case) | +| $\bar{l}$ | $1.0$ | Normalized time endowment | +| $\rho$ | $2.0$ | Standard CRRA | +| $\rho_m$ | $2.0$ | Same curvature for money (symmetric start) | +| $\phi_m$ | $0.1$ | Money valued but subordinate to consumption | +| $\phi_l$ | $1.0$ | Moderate labor disutility | +| $\gamma$ | $2.0$ | Frisch elasticity of 0.5 | +| $R$ | $1.04$ | 4% real return | +| $r_m$ | $0.0$ | Money earns zero nominal return (liquidity motive) | +| $\underline{a}$ | $0.0$ | No borrowing | + +--- + +## Structural Observations for the YAML Draft + +### Solution method implication + +With the separable utility placeholder, the FOCs decouple partially: + +$$ +c^{-\rho} = \lambda, \qquad \phi_m \, m^{-\rho_m} = \lambda, \qquad \phi_l \, l^{\gamma} = \lambda \cdot w \cdot e +$$ + +where $\lambda$ is the budget constraint multiplier. This gives closed-form controls *as functions of $\lambda$*, which could enable a **generalized EGM** (invert the Euler equation for $\lambda$ from the continuation marginal value, then recover all controls). However, this is a **solution method** consideration — for the YAML we note: + +- **InvEuler is potentially applicable** but would require a custom multi-control inversion. For a first draft, I would **omit InvEuler** sub-equations and write only the `Bellman` sub-equation (direct VFI), flagging the EGM extension as a TODO. + +### Mover structure (two stages) + +| Stage | cntn_to_dcsn_mover | dcsn_to_arvl_mover | +|-------|-------------------|-------------------| +| **Decision** | `Bellman: V = max_{c,m,l,a'}{u(c,m,l) + β·V[>]}` | `Bellman: V[<] = V` (identity, no pre-decision shock) | +| **Shock realization** | `Bellman: V = V[>]` (no decision, pass-through) | `Bellman: V[<] = E_{e'}(V)` (Markov expectation) | + +--- + +## Bottom Line + +> **We can write a structurally complete draft YAML now**, using the five placeholder assumptions above. The file will be: +> - **Structurally faithful** to the Bellman excerpt and our session decomposition +> - **Algebraically provisional** in utility, transition, and calibration +> - **Solution-method agnostic** (Bellman sub-equations only, no InvEuler) +> +> Every placeholder is clearly labeled so a domain expert can substitute the true Algan-Ragot specification. + +Shall I proceed with the two-stage YAML draft (one file per stage, plus a period file wiring them together)? + +--- Turn 5 2026-04-14 03:47:30 --- +Q: Give only a minimal YAML skeleton (no explanations) for the current session model with q,e states and c,m,l,a_next controls. +A: + +```yaml +name: AlganRagotDecision + +symbols: + spaces: + Xq: '@def R+' + Xa: '@def R+' + Xm: '@def R+' + Xl: '@def [0,1]' + Xe: '@def {0.5, 1.0, 1.5}' + + prestate: + q: '@in Xq' + e: '@in Xe' + + states: + q: '@in Xq' + e: '@in Xe' + + poststates: + a: '@in Xa' + m: '@in Xm' + e: '@in Xe' + + controls: + c: '@in R+' + m_d: '@in R+' + l: '@in Xl' + a_next: '@in Xa' + + exogenous: + e_next: '@dist MarkovChain(Pi)' + + values: + V[<]: '@in R' + V: '@in R' + V[>]: '@in R' + + parameters: + beta: '@in (0,1)' + rho: '@in R+' + rho_m: '@in R+' + phi_m: '@in R+' + phi_l: '@in R+' + gamma: '@in R+' + w: '@in R+' + mu: '@in R+' + R: '@in R+' + r_m: '@in R+' + a_min: '@in R' + +equations: + arvl_to_dcsn_transition: | + q = q + e = e + + dcsn_to_cntn_transition: | + a = a_next + m = m_d + e = e + + cntn_to_dcsn_mover: + Bellman: | + V = max_{c, m_d, l, a_next}{ + c^(1-rho)/(1-rho) + phi_m * m_d^(1-rho_m)/(1-rho_m) - phi_l * l^(1+gamma)/(1+gamma) + + beta * V[>] + } + + dcsn_to_arvl_mover: + Bellman: | + V[<] = V + +--- +name: AlganRagotShock + +symbols: + spaces: + Xa: '@def R+' + Xm: '@def R+' + Xe: '@def {0.5, 1.0, 1.5}' + Xq: '@def R+' + + prestate: + a: '@in Xa' + m: '@in Xm' + e: '@in Xe' + + exogenous: + e_next: '@dist MarkovChain(Pi)' + + states: + q_next: '@in Xq' + e_next: '@in Xe' + + poststates: + q: '@in Xq' + e: '@in Xe' + + values: + V[<]: '@in R' + V: '@in R' + V[>]: '@in R' + + parameters: + R: '@in R+' + r_m: '@in R+' + +equations: + arvl_to_dcsn_transition: | + q_next = R * a + (1 + r_m) * m + e_next = e_next + + dcsn_to_cntn_transition: | + q = q_next + e = e_next + + cntn_to_dcsn_mover: + Bellman: | + V = V[>] + + dcsn_to_arvl_mover: + Bellman: | + V[<] = E_{e_next}(V) +``` + +--- Turn 6 2026-04-14 03:48:03 --- +Q: Rewrite the model description in SolvingMicroDSOPs style (sections 12-13 tone): clearly list timing, states, controls, constraints, Bellman equation, and stage decomposition for this Algan-Ragot model. Keep it concise markdown. +A: + +# The Algan-Ragot Money-in-Utility Problem + +## Timing + +Within each period, events unfold in two stages: + +1. **Decision stage.** The agent enters with resources $q$ and productivity $e$ already known. She simultaneously chooses consumption $c$, money holdings $m$, labor supply $l$, and end-of-period assets $a'$, subject to a single budget constraint. + +2. **Shock realization stage.** After the agent acts, nature draws next-period productivity $e'$ from a 3-state Markov chain. Asset returns are realized and next-period resources $q'$ are formed. No decision is made. + +The composed period operator is $\mathbb{T} = \mathbb{T}_{\text{shock}} \circ \mathbb{T}_{\text{decision}}$, which nests as **max-of-E**: the agent maximizes over an expected continuation value. + +## States + +| Variable | Domain | Description | +|----------|--------|-------------| +| $q$ | $\mathbb{R}_+$ | Beginning-of-period resources ("cash-on-hand") | +| $e$ | $\{e_1, e_2, e_3\}$ | Current productivity (discrete Markov state) | + +The pair $(q, e)$ is sufficient to characterize the agent's problem at the start of each period. + +## Controls + +| Variable | Domain | Description | +|----------|--------|-------------| +| $c$ | $\mathbb{R}_+$ | Consumption | +| $m$ | $\mathbb{R}_+$ | Money holdings carried forward | +| $l$ | $[0, \bar{l}]$ | Labor supply | +| $a'$ | $[\underline{a}, \infty)$ | End-of-period illiquid assets | + +All four controls are chosen simultaneously. The budget constraint binds them together, leaving three effective degrees of freedom. + +## Constraints + +**Budget constraint:** + +$$ +c + m + a' = q + w \cdot e \cdot l + \mu +$$ + +**Borrowing constraint:** + +$$ +a' \geq \underline{a} +$$ + +Note that labor supply $l$ appears on the income side of the budget constraint — the agent's choice of how much to work directly affects available resources. + +## Preferences + +$$ +u(c, m, l) = \frac{c^{1-\rho}}{1-\rho} + \phi_m \frac{m^{1-\rho_m}}{1-\rho_m} - \phi_l \frac{l^{1+\gamma}}{1+\gamma} +$$ + +This is the standard money-in-utility specification: CRRA over consumption, CRRA over real balances, and convex disutility of labor. The additive separability across $(c, m, l)$ is a strong but common assumption. + +## Bellman Equation + +$$ +v(q, e) = \max_{c,\, m,\, l,\, a'} \left\{ u(c, m, l) + \beta \sum_{e'} \Pi(e' \mid e)\, v\!\left(R \cdot a' + (1+r_m) \cdot m,\; e'\right) \right\} +$$ + +subject to the budget and borrowing constraints above. + +## Stage Decomposition + +### Stage 1: Decision + +| Perch | Variables | +|-------|-----------| +| Arrival | $(q, e)$ | +| Decision | $(q, e)$; controls $(c, m, l, a')$ | +| Continuation | $(a, m, e)$ | + +The arrival-to-decision transition is the identity (no shock at this stage). The decision-to-continuation transition extracts the poststates: + +$$ +a = a', \qquad m = m, \qquad e = e +$$ + +The backward mover solves: + +$$ +v(q, e) = \max_{c,m,l,a'} \big\{ u(c,m,l) + \beta\, v_\succ(a', m, e) \big\} +$$ + +The forward mover is trivial: $v_\prec = v$ (no pre-decision shock). + +### Stage 2: Shock Realization + +| Perch | Variables | +|-------|-----------| +| Arrival | $(a, m, e)$ | +| Decision | $(q', e')$ — no choice made | +| Continuation | $(q', e')$ | + +The arrival-to-decision transition realizes the shock and forms next-period resources: + +$$ +q' = R \cdot a + (1 + r_m) \cdot m, \qquad e' \sim \Pi(\cdot \mid e) +$$ + +The backward mover is a pass-through: $v = v_\succ$. The forward mover computes the expectation: + +$$ +v_\prec(a, m, e) = \sum_{e'} \Pi(e' \mid e)\, v(q', e') +$$ + +This is the **noport** pattern from the consumption-savings literature: a stage where nature acts and the agent does not. + +### Wiring + +Stage 1's continuation perch $(a, m, e)$ connects to Stage 2's arrival perch $(a, m, e)$ by field-name matching. Stage 2's continuation perch $(q', e')$ connects back to Stage 1's arrival perch $(q, e)$ at the next period — closing the recursive loop. diff --git a/models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/docs/opus-prompt.md b/models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/docs/opus-prompt.md new file mode 100644 index 00000000..54f40bdd --- /dev/null +++ b/models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/docs/opus-prompt.md @@ -0,0 +1,57 @@ +# Opus 4.7 review prompt (exact text sent) + +> Reviewer model: **Claude Opus 4.7** (Cursor, high thinking). +> Thread context: Cursor chat on `armonetarypolicyhabc-formalize-finalize` branch of `econ-ark/ballpark`. +> Matsya session pin: `--session topics2026-armonetarypolicyhabc` (reused, not new). +> Deliverable: [Ask AI help to formalize and finalize your ballpark item](https://llorracc.github.io/workspace-course-topics/assignments/ask-ai-help-to-formalize-and-finalize-ballpark.html). + +```text +For all matsya interactions in this thread, use `--session topics2026-armonetarypolicyhabc` — do not open a new session. + +Please review my ballpark entry for Algan, Y. and Ragot, X. (2009), "Monetary Policy with Heterogeneous Agents and Borrowing Constraints," at: + + https://github.com/econ-ark/ballpark/tree/master/models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC + +against the quality criteria articulated in: + + https://github.com/econ-ark/ballpark/blob/master/CONTRIBUTING.md + +The entry currently sits between Draft and Primer on the exposition side, but already contains a formalization-layer scaffold (`docs/bellman-excerpt.md`, `docs/dolo-plus-draft.yaml`, `docs/verification.md`, `docs/matsya-session.txt`, `AGENTS.md`). I want a prioritized list of substantive changes that would push the item toward — and be finalized within — the Formalized tier. + +Focus on the economics, the model statement, literature coverage, the dolo-plus / DDSL formalization, and the AGENTS.md file. Ignore cosmetic changes (formatting, typos, citation style). + +Specifically, please address: + +1. "The Model" layer. The recursive formulation currently lives in `ToramanSY_AlganRagot2009_Summary.ipynb` (ballpark summary) and in `docs/bellman-excerpt.md` (modular DDSL statement with symbol table and perches). + - Is the recursive formulation explicit enough that Matsya can build the Formalized-tier layer on top of it without reinterpretation? + - Does it admit an unambiguous periods / stages / perches decomposition (arrival, decision, continuation), or does it carry ambiguities? + - Flag specifically whether the CES-over-(c,m)-with-leisure utility in the summary excerpt is reconciled with the separable CRRA + labor-disutility placeholder currently in `docs/dolo-plus-draft.yaml`. + +2. Literature coverage. + - Are the prior-literature and subsequent-literature notebooks present and well-scoped? If absent, list the 3-6 foundational papers you would expect (Bewley / Huggett / Aiyagari / Lucas / Imrohoroglu / Kehoe-Levine / Algan-Challe-Ragot etc.). + - For subsequent literature, list influential follow-ups on monetary HA models with borrowing constraints through today. + +3. Distinguishing features. + - What makes Algan-Ragot (2009) distinctive relative to the foundational HA-monetary literature? Is this surfaced clearly in the summary / intro, or is it buried? + - Specifically: the role of binding-vs-non-binding constraints, money-as-asset choice, inflation-tax redistribution channel. + +4. AGENTS.md. + - Are the "Known model features requiring attention" complete (utility mismatch, q_next law of motion, a_min placeholder, Pi calibration)? What's missing? + - Are the "Common next tasks" well-scoped (grounded in actual gaps in the current files, not aspirational)? + +5. Dolo-plus draft YAML. + - Evaluate `docs/dolo-plus-draft.yaml` structurally: are the two stages (decision + shock) correctly wired? Are the `# unresolved:` / `# workaround:` flags pointing at the right things? + - Identify the single most-important change needed to make the YAML paper-faithful rather than just structurally coherent. + +6. Anything else a thoughtful graduate student would want clarified before attempting to promote this item to Formalized tier. + +Output format: a numbered list of 6-10 proposed changes. For each give: + (a) the problem in one sentence, + (b) the proposed substantive change, + (c) where in the item the change goes (file, section/line), + (d) severity: Must-fix for Formalized or Nice-to-have. + +End with: "Top 5 changes to implement now" ordered by impact, and explicitly flag any suggestions where you are unsure — I will verify against the paper PDF before accepting. + +Omit cosmetic items. Do not rewrite files; give me a change list. +``` diff --git a/models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/docs/opus-review.md b/models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/docs/opus-review.md new file mode 100644 index 00000000..d19ce72a --- /dev/null +++ b/models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/docs/opus-review.md @@ -0,0 +1,100 @@ +# Opus 4.7 review of the Algan-Ragot (2009) ballpark entry + +> Model: Claude Opus 4.7 (Cursor, high thinking). +> Session pin: `--session topics2026-armonetarypolicyhabc` (reused; no new session opened). +> Assignment: [Ask AI help to formalize and finalize your ballpark item](https://llorracc.github.io/workspace-course-topics/assignments/ask-ai-help-to-formalize-and-finalize-ballpark.html). +> Verdict summary: item has a **reasonable formalization-layer scaffold** but cannot reach **Formalized** until the **exposition layer (Draft/Primer prerequisites)** is in place and several symbol-table and notation inconsistencies are closed. Current effective tier under CONTRIBUTING.md is **pre-Draft**, because `index.md`, the four exposition notebooks, and the required bib files do not exist yet in the item directory. + +--- + +## Prioritized list of substantive changes + +### 1. Exposition layer is missing entirely — this blocks Formalized by construction + +- **(a) Problem.** CONTRIBUTING.md states "each name presupposes the tier below it: a *primer* is a completed introductory treatment of what a *draft* only sketches; a *formalized* specification is the rigorous re-expression of what the *primer* states informally." The item has no `index.md`, no `_intro.ipynb`, `_prior-literature.ipynb`, `_summary.ipynb`, `_subsequent-literature.ipynb`, no `references.bib`, no `self.bib`, no `.pdf` / `.mmd`. Only `ToramanSY_AlganRagot2009_Summary.ipynb` (a legacy single-notebook summary) exists. +- **(b) Proposed change.** Add, at minimum, the Draft-tier skeleton: `index.md` with required frontmatter (`tier: draft`, `schema_type`, `about.doi`, `about.authors`, `about.year`, `keywords`, `econ_ark_topic`, `jel`, `ballpark_contributor`); `_intro.ipynb` with full citation, DOI, original ballpark author, 3-sentence pitch; `_summary.ipynb` with non-technical motivation + findings; `references.bib`; paper `.pdf` committed (or DOI pointer with license note). Only then is the formalization-layer work eligible to be assessed at Formalized. +- **(c) Location.** Root of `models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/` (new files). +- **(d) Severity.** **Must-fix for Formalized** (in fact must-fix even for Draft). + +### 2. `verification.md` compares against the summary notebook, not the published paper + +- **(a) Problem.** CONTRIBUTING.md requires `verification.md` to state accept/edit/reject "verified against the published paper, not only the ballpark summary." Current `docs/verification.md` explicitly compares to `ToramanSY_AlganRagot2009_Summary.ipynb` and `arg2009-bellman-excerpt.md`; it does not cite pages / equations of Algan-Ragot (2009) proper. +- **(b) Proposed change.** After the paper `.pdf` / `.mmd` is committed, rewrite the verification paragraph to cite specific equations from Algan-Ragot (2009): the household Bellman, the budget, the borrowing rule (if stated), the utility functional form, the monetary transfer rule `mu_t`. Keep the paragraph length (CONTRIBUTING says "one paragraph") but make every accept/edit/reject claim paper-grounded. +- **(c) Location.** [`docs/verification.md`](docs/verification.md). +- **(d) Severity.** **Must-fix for Formalized.** + +### 3. Symbol table in `bellman-excerpt.md` is not closed under reference + +- **(a) Problem.** CONTRIBUTING.md: the symbol table "lists every object that appears — or might appear — in the formalized statement of the model." `arg2009-bellman-excerpt.md` names additional objects not in the canonical table: CES parameters `sigma`, `eta`, `omega`, `psi`; aggregates `K`, `alpha`, `delta`, `Y`, `G`; monetary objects `Omega`, `Pi_t` (inflation, distinct from Markov `Pi`), `tau`. None appear in `docs/bellman-excerpt.md`'s symbol table. +- **(b) Proposed change.** Either (i) expand the symbol table to list every referenced symbol with role + domain + one-line description, or (ii) explicitly scope `bellman-excerpt.md` to the household block and add a "Out of scope for this excerpt" line enumerating the aggregate/monetary symbols deferred to a later pass. Option (i) is stronger for reaching Formalized. +- **(c) Location.** [`docs/bellman-excerpt.md`](docs/bellman-excerpt.md), "Symbol table" section. +- **(d) Severity.** **Must-fix for Formalized.** + +### 4. Notation collision between `Pi` (Markov) and `Pi_t` (inflation) + +- **(a) Problem.** `docs/dolo-plus-draft.yaml` and `docs/bellman-excerpt.md` both use `Pi` for the Markov transition matrix on `e`. `arg2009-bellman-excerpt.md` also uses `Pi_t` for inflation in `Omega_t = Omega_{t-1}/Pi_t + ...`. Two distinct economic objects sharing a Greek letter will create a Matsya-visible ambiguity at the first pass that tries to reconcile the household and aggregate sides. +- **(b) Proposed change.** Rename one of them — most naturally the Markov kernel to `Q` or `P_e` — in `bellman-excerpt.md` symbol table, YAML symbol references, and the verification paragraph. Document the rename once and propagate. +- **(c) Location.** [`docs/bellman-excerpt.md`](docs/bellman-excerpt.md) symbol table + narrative; [`docs/dolo-plus-draft.yaml`](docs/dolo-plus-draft.yaml) (both stages' `exogenous` blocks); [`docs/verification.md`](docs/verification.md); [`docs/arg2009-improved-stage-description.md`](docs/arg2009-improved-stage-description.md). +- **(d) Severity.** **Must-fix for Formalized** (prevents unambiguous perch decomposition once money-growth / inflation dynamics are introduced). + +### 5. `mu` domain is economically wrong in the YAML + +- **(a) Problem.** In `docs/dolo-plus-draft.yaml`, `mu: '@in R+'`. But `mu_t^i` is a transfer tied to inflation-tax redistribution (`arg2009-bellman-excerpt.md`): for households whose money holdings imply an inflation-tax burden larger than the lump-sum rebate, the **net** transfer can be negative. Restricting the domain to `R+` silently drops an important redistribution margin. +- **(b) Proposed change.** Change to `mu: '@in R'` in YAML; mirror in `bellman-excerpt.md` symbol table; add a one-line gloss that `mu` is net of inflation tax (not gross transfer only). +- **(c) Location.** [`docs/dolo-plus-draft.yaml`](docs/dolo-plus-draft.yaml) (line 47 in the decision stage, `parameters:` block); [`docs/bellman-excerpt.md`](docs/bellman-excerpt.md) symbol table. +- **(d) Severity.** **Must-fix for Formalized** (economics-correctness, not cosmetic). + +### 6. YAML control name `m_d` conflicts with the summary's `m` and the symbol table's `m` + +- **(a) Problem.** `docs/bellman-excerpt.md` symbol table and `docs/arg2009-improved-stage-description.md` use `m` for real money balances as a control. `docs/dolo-plus-draft.yaml` declares the control as `m_d` (distinct from state-carrying `m` in `poststates`). This is intentional to distinguish chosen-money from next-period money, but the naming is inconsistent with the excerpt and never explained. +- **(b) Proposed change.** Either (i) rename the YAML control back to `m` and rely on perch-typing to disambiguate, or (ii) keep `m_d` and add a one-line comment in YAML plus a row in the bellman-excerpt symbol table documenting the `m_d` vs. `m` distinction. (i) is cleaner for reviewers; (ii) is acceptable if kept explicit. +- **(c) Location.** [`docs/dolo-plus-draft.yaml`](docs/dolo-plus-draft.yaml) (`controls:` + `dcsn_to_cntn_transition` where `m = m_d`); [`docs/bellman-excerpt.md`](docs/bellman-excerpt.md). +- **(d) Severity.** **Must-fix for Formalized.** + +### 7. `Pi` is used as a parameter in YAML but never declared in the `parameters:` block + +- **(a) Problem.** `docs/dolo-plus-draft.yaml` uses `MarkovChain(Pi)` in both stages' `exogenous:` block, but `Pi` is absent from the `parameters:` list in either stage. Dolo-plus and Matsya readers treat undeclared symbols as errors or silently bind them to a default — either way this is a parse-time or semantics-time bug. +- **(b) Proposed change.** Add `Pi: '@in StochasticMatrix(3x3)'` (or equivalent) to each stage's `parameters:` block, with an `# unresolved:` flag noting that the numerical matrix is paper-TBD. Once notation fix in item 4 lands, use the renamed symbol. +- **(c) Location.** [`docs/dolo-plus-draft.yaml`](docs/dolo-plus-draft.yaml) both stages, `parameters:` block. +- **(d) Severity.** **Must-fix for Formalized.** + +### 8. Stage 1 arrival-to-decision transition is identity but not explicitly labelled + +- **(a) Problem.** CONTRIBUTING: "a reviewer must be able to tell 'this is an identity' from 'this was forgotten.'" `docs/bellman-excerpt.md` Stage 1 says "identity on `(q, e)` (no within-stage shock between arrival and decision in this draft)". The YAML `arvl_to_dcsn_transition` writes `q = q; e = e` which is effectively identity but is not annotated as a degenerate mover. +- **(b) Proposed change.** In `docs/bellman-excerpt.md`, add a single line under Stage 1: "*Arrival-to-decision mover:* identity (degenerate)." In YAML, add a comment `# degenerate: identity (no within-stage shock)` above the Stage 1 `arvl_to_dcsn_transition` block. Mirror for the Stage 2 `dcsn_to_cntn_transition` which is also an identity. +- **(c) Location.** [`docs/bellman-excerpt.md`](docs/bellman-excerpt.md) Stage 1/Stage 2 tables; [`docs/dolo-plus-draft.yaml`](docs/dolo-plus-draft.yaml). +- **(d) Severity.** **Must-fix for Formalized** (CONTRIBUTING explicitly enumerates this). + +### 9. AGENTS.md "Known model features" misses aggregate-side scoping + +- **(a) Problem.** Current AGENTS.md lists utility mismatch, `q_next`, `a_min`, `Pi` calibration. It does not flag that the **aggregate side (production, asset-market clearing, inflation tax mechanics)** exists in the summary excerpt but is entirely out of scope for the current YAML — which is a non-trivial modeling decision a later agent should be told about, not rediscover. +- **(b) Proposed change.** Add two bullets to "Known model features requiring attention": (i) "Scope: YAML encodes the household block only; aggregate production, asset-market clearing, and inflation-tax dynamics from `arg2009-bellman-excerpt.md` §Aggregate side are deferred to a general-equilibrium pass." (ii) "Notation collision: Markov `Pi` vs. inflation `Pi_t` — see item #4 in `docs/opus-review.md`." +- **(c) Location.** [`AGENTS.md`](AGENTS.md) "Known model features requiring attention in a formalization pass" section. +- **(d) Severity.** **Must-fix for Formalized** (AGENTS.md completeness is a CI gate). + +### 10. EGM discussion is promised but not yet sketched in `bellman-excerpt.md` + +- **(a) Problem.** CONTRIBUTING for Formalized: "once the iteration has matured — a 'Stage composition' subsection and an **EGM channel discussion where applicable**". The current file defers it ("A full EGM discussion is deferred until the utility specification and constraints are pinned to the paper"). That is defensible but should be phrased as a conditional statement, not an absence. +- **(b) Proposed change.** In the final section of `docs/bellman-excerpt.md`, add one paragraph answering: "Is the utility invertible? Is there a single continuous control whose Euler equation is invertible? What would the EGM channel look like *conditional on* the CES-with-leisure utility being adopted?" Explicit, even if short. +- **(c) Location.** [`docs/bellman-excerpt.md`](docs/bellman-excerpt.md) last section. +- **(d) Severity.** **Nice-to-have** (not strictly required to reach Formalized, but elevates quality). + +--- + +## Top 5 changes to implement now (ordered) + +1. **Add exposition-layer Draft skeleton** (item #1): `index.md` + `_intro.ipynb` + `_summary.ipynb` + `references.bib` + paper pointer. Without this, any Formalized claim is structurally void. +2. **Close symbol-table coverage and the `Pi` vs `Pi_t` notation collision** (items #3 + #4 together): adds rows for CES + aggregate symbols, renames Markov kernel, propagates through YAML / bellman-excerpt / verification. +3. **Fix YAML domain / declaration bugs** (items #5 + #7 together): `mu: '@in R'`; declare `Pi` (or its renamed counterpart) in `parameters:` of both stages. +4. **Label degenerate movers explicitly** (item #8): one sentence each in `bellman-excerpt.md` and YAML comments. +5. **Extend AGENTS.md "Known model features"** (item #9): add aggregate-side scoping bullet and notation-collision bullet. + +Items #2 and #6 are also Must-fix for Formalized but are downstream of the items above and should be done during the same PR. + +--- + +## Flagged-uncertain claims (verify against paper PDF before accepting) + +- **Item #5**: the statement that `mu` can be negative for some households depends on Algan-Ragot (2009)'s exact inflation-tax redistribution rule. `arg2009-bellman-excerpt.md` paraphrases `Omega_t` and `tau_t^{tot}` but does not pin the sign of household-level `mu_t^i`. Verify before committing the domain change. +- **Item #10**: the CES-with-leisure utility may or may not admit a clean single-variable Euler inversion once labor and money co-move; the EGM paragraph should say so honestly rather than promise a channel that does not cleanly exist. +- **Item #1**: the Google Scholar citation count (CONTRIBUTING's eligibility gate) has not been verified in this review; the intro notebook must paste it. diff --git a/models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/docs/tier-assessment.md b/models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/docs/tier-assessment.md new file mode 100644 index 00000000..16c6abbc --- /dev/null +++ b/models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/docs/tier-assessment.md @@ -0,0 +1,47 @@ +# Tier assessment for this PR + +> Evaluated against [`CONTRIBUTING.md`](https://github.com/econ-ark/ballpark/blob/master/CONTRIBUTING.md) after **(a)** the Opus 4.7 accepted changes in `docs/opus-review.md` / `docs/accept-edit-reject.md` and **(b)** the Matsya Evaluate-turn fixes in `docs/matsya-evaluate-turn.txt` are applied. + +## Claimed tier after this PR: **Draft** (with partial Formalized-layer artifacts) + +This item cannot yet be claimed at **Primer** or **Formalized**, because each tier presupposes the tier below it and several Draft / Primer prerequisites are still deferred. + +### Draft checklist + +| Requirement | Status | Where | +|-------------|--------|-------| +| Item directory exists under `models/We-Would-Like-In-Econ-ARK//` | Satisfied | `models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/` | +| `index.md` with required frontmatter including `tier:` | **Satisfied in this PR** (stub) | [`index.md`](../index.md) | +| `_intro.ipynb` with citation, DOI link, original ballpark author + date, 3-sentence pitch | **Not satisfied** — legacy `ToramanSY_AlganRagot2009_Summary.ipynb` conflates intro and summary | Deferred item #1 in [`accept-edit-reject.md`](accept-edit-reject.md) | +| `_summary.ipynb` with non-technical motivation + findings overview | **Partially satisfied** via `ToramanSY_AlganRagot2009_Summary.ipynb` | Rename and split at Primer promotion | +| `references.bib` (may be empty at Draft) | **Not satisfied** | Deferred item #1 | +| Paper `.pdf` OR DOI pointer with license note in `_intro.ipynb` | **Not satisfied** | Deferred item #1 | + +### Primer checklist (additional over Draft) + +| Requirement | Status | +|-------------|--------| +| `_prior-literature.ipynb` with 3–6 `{cite:t}` citations | Not satisfied | +| `_summary.ipynb` extended with explicit "The Model" section | Partially — the explicit recursive formulation exists in `bellman-excerpt.md` (item root); it is not yet re-surfaced inside the summary notebook as a named "The Model" subsection | +| `_subsequent-literature.ipynb` + `subsequent-literature.bib` | Not satisfied | +| `self.bib` | Not satisfied | +| `.mmd` (Pandoc-converted) | Not satisfied | +| `myst.yml` configured; `myst build` clean | Not satisfied | + +### Formalized checklist (additional over Primer) + +| Requirement | Status | +|-------------|--------| +| `bellman-excerpt.md` with comprehensive symbol table, timing, periods/stages/perches decomposition, stage operator | **Satisfied** after this PR (symbol-table closure + identity-mover labels + `P_e` rename + three-free-controls / budget-pinned `a'` per Matsya Flag C) — `bellman-excerpt.md` at the item root. | +| `dolo-plus-draft.yaml` (interior period acceptable); unresolved features flagged with `# workaround:` / `# unresolved:` | **Satisfied** after this PR — `dolo-plus-draft.yaml` at the item root. Canonical patterns confirmed by `docs/matsya-evaluate-turn.txt` (4 CANONICAL verdicts); two non-canonical items from the draft (`@in StochasticMatrix`, four-control budget) were fixed in the Improve commits. The utility-kernel `# unresolved:` block on `cntn_to_dcsn_mover` now spells out the paper's CES-with-leisure form and the two ways to close the deferral (post-PR-#72 review). | +| `verification.md` comparing Matsya output against the **published paper** | **Partially satisfied** after this PR — paper gaps and dolo-plus spec gaps are now partitioned explicitly in `verification.md` at the item root. Spec-side gaps are closed; paper-side claims still grounded in the summary notebook, with paper-equation rewrite tracked as deferred item #2. | +| `matsya-session.txt` | **Satisfied** — `matsya-session.txt` at the item root. | +| `AGENTS.md` with the six required top-level sections | **Satisfied** after this PR — `AGENTS.md` at the item root. | + +## Layout note (post-PR-#72 review) + +`CONTRIBUTING.md` §"Formalized" requires the four deliverables (`bellman-excerpt.md`, `dolo-plus-draft.yaml`, `verification.md`, `matsya-session.txt`) at the **item root** so that the automated mechanical check finds them, alongside `AGENTS.md`. The first round of this PR put them under `docs/`; the PR-#72 review surfaced this as a hard error and the fix-up commits relocate the four files to the item root. AI iteration history (Opus prompt / review, Matsya Evaluate turn, accept-edit-reject log, lessons-learned, this tier-assessment) remains under `docs/` because that is iteration scaffolding, not the deliverable. Pre-iteration Bellman drafts (`arg2009-bellman-excerpt.md`, `arg2009-improved-stage-description.md`) have been demoted to `docs/legacy-drafts/` because `CONTRIBUTING.md` line 52 explicitly forbids parallel Bellman files at the item root. + +## Conclusion + +The **formalization-layer artifacts** (`bellman-excerpt.md`, `dolo-plus-draft.yaml`, `verification.md` in structure, `matsya-session.txt`, `AGENTS.md`) are in place at the **item root** and were substantially improved by the accepted changes from the Opus 4.7 review. However, the **exposition-layer prerequisites** for Draft and Primer are only partially satisfied (stub `index.md`; no four-notebook split; no bib files; no paper PDF/`.mmd`), so the honest tier label for the item right now is **Draft** — with a clearly advanced formalization-layer scaffold that will be re-evaluated for **Formalized** once the deferred items in `docs/accept-edit-reject.md` are merged. diff --git a/models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/docs/verification-notes.md b/models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/docs/verification-notes.md new file mode 100644 index 00000000..08190e83 --- /dev/null +++ b/models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/docs/verification-notes.md @@ -0,0 +1,3 @@ +# Verification notes (legacy filename) + +Canonical verification text for this ballpark item lives in **`verification.md`** (per [econ-ark/ballpark `CONTRIBUTING.md`](https://github.com/econ-ark/ballpark/blob/master/CONTRIBUTING.md)). This file is kept so older links still resolve. diff --git a/models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/dolo-plus-draft.yaml b/models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/dolo-plus-draft.yaml new file mode 100644 index 00000000..58d3d361 --- /dev/null +++ b/models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/dolo-plus-draft.yaml @@ -0,0 +1,246 @@ +name: AlganRagotDecision + +symbols: + spaces: + Xq: '@def R+' + # `Xa: '@def R+'` already encodes the paper's borrowing rule + # `a' >= 0` (paper eq. (17), p. 8); the parameter `a_min = 0` below + # is kept for parameter-API consistency. + Xa: '@def R+' + Xm: '@def R+' + Xl: '@def [0,1]' + # placeholder state space; paper §3.3.2 p. 12 fixes ratios + # e_h / e_m = 4.64, e_m / e_l = 5.65 + # so with the normalization e_m = 1 the paper's `Xe` is + # `{1/5.65, 1.0, 4.64} = {0.177, 1.0, 4.64}` + # Replace at the same touch that substitutes `P_e` numerical entries. + Xe: '@def {0.5, 1.0, 1.5}' + + prestate: + q: '@in Xq' + e: '@in Xe' + + states: + q: '@in Xq' + e: '@in Xe' + + poststates: + a: '@in Xa' + m: '@in Xm' + e: '@in Xe' + + controls: + # note: m_d is the chosen money balance at the decision perch; + # the savings identity m = m_d carries it into the continuation + # perch. Symbol table in bellman-excerpt.md documents this. + # note: per Matsya Evaluate turn (docs/matsya-evaluate-turn.txt, + # Flag C), illiquid savings a_next is NOT a free control: it is + # pinned by the budget identity a_next = q + w*e*l + mu - c - m_d + # inside dcsn_to_cntn_transition below. Three free controls. + c: '@in R+' + m_d: '@in R+' + l: '@in Xl' + + exogenous: + # P_e: 3x3 row-stochastic matrix on `e in {e_h, e_m, e_l}` (paper + # §3.3.2, p. 11-12; full numerical calibration documented inline at + # the `parameters: P_e` block below). Renamed from Pi to avoid + # collision with inflation Pi_inf on the aggregate side (see + # bellman-excerpt.md "Out of scope" table). + e_next: '@dist MarkovChain(P_e)' + + values: + V[<]: '@in R' + V: '@in R' + V[>]: '@in R' + + parameters: + beta: '@in (0,1)' + rho: '@in R+' + rho_m: '@in R+' + phi_m: '@in R+' + phi_l: '@in R+' + gamma: '@in R+' + w: '@in R+' + # note: mu is NET of inflation-tax, so the domain is R (not R+); + # sign for individual households depends on the redistribution + # rule — verify against the paper before fixing a calibration. + mu: '@in R' + R: '@in R+' + r_m: '@in R+' + # resolved (paper eq. (17), p. 8): `a_{t+1}^i >= 0`. The paper's + # borrowing constraint is exactly `a_min = 0`; see verification.md + # "borrowing constraint" section. The space `Xa: '@def R+'` already + # encodes the same restriction; this scalar is kept (rather than + # dropped) so that downstream code that reads a parameter named + # `a_min` continues to work, but the value is fixed at 0. + a_min: 0 + # resolved (paper §3.3.2, p. 11-12) — full calibrated 3x3 Markov + # chain on `e in {e_h, e_m, e_l}`, with structural restrictions and + # numerical entries: + # + # p_{l,h} = p_{h,l} = 0 (no jumps between extreme states) + # p_{l,l} = p_{h,h} = 0.9750 + # p_{m,m} = 0.9925 + # row-sum constraint pins p_{h,m} = 1 - p_{h,h} = 0.0250, + # p_{l,m} = 1 - p_{l,l} = 0.0250, + # and p_{m,h} + p_{m,l} = 1 - p_{m,m} = 0.0075 + # (the split of 0.0075 between p_{m,h} and p_{m,l} pins down + # moments — paper p. 12 cites annual autocorrelation 0.91, annual + # sd of innovation 0.22, Gini wealth 0.72, share of constrained + # households 6%.) + # + # Productivity-state ratios (paper p. 12): + # e_h / e_m = 4.64, e_m / e_l = 5.65 + # so e.g. with the normalization e_m = 1, the state space is + # `Xe: '@def {1/5.65, 1.0, 4.64}' = {0.177, 1.0, 4.64}` (replaces the + # current placeholder `Xe: '@def {0.5, 1.0, 1.5}'`). + # + # Declared here as a plain non-negative parameter per Matsya Evaluate + # turn (docs/matsya-evaluate-turn.txt, Question 3): `@in + # StochasticMatrix` has no precedent in the canonical dolo-plus + # examples. Row-stochastic semantics are carried by the + # `@dist MarkovChain(P_e)` annotation on the exogenous block above. + # The numerical 3x3 substitution is left as a follow-up YAML touch + # (parameter-block matrix literal idiom is a small spec question). + P_e: '@in R+' + +equations: + # degenerate: identity transition — no within-stage shock between + # arrival and decision in the household decision stage. + arvl_to_dcsn_transition: | + q = q + e = e + + dcsn_to_cntn_transition: | + # budget identity pins illiquid savings a (Matsya Flag C); + # m and e pass through from the decision perch. + a = q + w * e * l + mu - c - m_d + m = m_d + e = e + + cntn_to_dcsn_mover: + # unresolved: utility kernel. + # + # Paper functional form (Algan-Ragot 2009, "Model" / "Households" + # section; transcribed verbatim from + # ToramanSY_AlganRagot2009_Summary.ipynb and copied into + # docs/legacy-drafts/arg2009-bellman-excerpt.md): + # + # u(c, m, l) = + # (1/(1-sigma)) * [ + # ( omega * c^((eta-1)/eta) + # + (1-omega) * m^((eta-1)/eta) )^(eta/(eta-1)) + # * (1-l)^psi + # ]^(1-sigma) + # + # i.e. CES aggregator over consumption and real money, multiplied + # by leisure raised to psi, all under CRRA curvature sigma. + # + # The Bellman block below uses a separable CRRA + log-money + + # convex-labor-disutility WORKAROUND (rho on c, rho_m on m_d, + # gamma on l) because the canonical CES-with-leisure form above is + # not yet transcribed into modular-DDSL syntax that I am confident + # is canonical. To resolve, either: + # (a) replace the separable kernel below with the CES-leisure + # form once a canonical dolo-plus example with a CES inner + # aggregator is located (a focused Matsya Evaluate turn on + # this would close it), and add eta, omega, sigma, psi to + # the parameters block; or + # (b) keep the workaround but justify it explicitly in + # verification.md by citing the calibration regime in the + # paper under which separability and CES coincide + # (eta -> 1 limit, etc.) and ground the citation in the + # paper's PDF/.mmd once that lands in-repo. + # + # Tracked as a paper-grounded follow-up in verification.md and in + # docs/accept-edit-reject.md (Opus item 2 + the deferred + # paper-grounded rewrite). See also CONTRIBUTING.md line 44 on + # the inline `# unresolved:` / `# workaround:` flag idiom. + Bellman: | + V = max_{c, m_d, l}{ + c^(1-rho)/(1-rho) + + phi_m * m_d^(1-rho_m)/(1-rho_m) + - phi_l * l^(1+gamma)/(1+gamma) + + beta * V[>] + } + + dcsn_to_arvl_mover: + Bellman: | + V[<] = V + +--- +name: AlganRagotShock + +symbols: + spaces: + # paper-grounded resolutions documented at the decision stage's + # `spaces:` block above (paper §3.3.2 p. 12 ratios for Xe; paper + # eq. (17) p. 8 for Xa / a_min). Duplicated here only to keep both + # stages syntactically self-contained. + Xa: '@def R+' + Xm: '@def R+' + Xe: '@def {0.5, 1.0, 1.5}' + Xq: '@def R+' + + prestate: + a: '@in Xa' + m: '@in Xm' + e: '@in Xe' + + exogenous: + # resolved: same P_e as decision stage. Numerical calibration documented + # in the decision stage's `parameters:` block (paper §3.3.2, p. 11-12). + e_next: '@dist MarkovChain(P_e)' + + states: + q_next: '@in Xq' + e_next: '@in Xe' + + poststates: + q: '@in Xq' + e: '@in Xe' + + values: + V[<]: '@in R' + V: '@in R' + V[>]: '@in R' + + parameters: + R: '@in R+' + r_m: '@in R+' + # resolved: same Markov transition matrix as decision stage; full + # calibration documented in the decision stage's `parameters:` block + # (paper §3.3.2, p. 11-12). Declared plain per Matsya Evaluate turn. + P_e: '@in R+' + +equations: + arvl_to_dcsn_transition: | + # paper analogue: paper eq. (16), p. 8 writes the corresponding terms + # as `(1 + r_t) a_t` and `m_{t-1} / Pi_t`. Mapping: + # `R * a` <-> `(1 + r_t) a_t` (gross real return on the riskless asset) + # `(1 + r_m) * m` <-> `m_{t-1} / Pi_t` (real return on money; equivalent at any single Pi) + # The two are identical at any single Pi but our parameterization + # carries `r_m` as a free parameter rather than deriving it from + # `Pi`. At a stationary equilibrium with constant `Pi`, this is just + # a redefinition; in any non-stationary or shock-on-aggregate-money + # exercise, the consistency `(1 + r_m) = 1 / Pi` would have to be + # enforced. See verification.md "wealth-on-hand and budget" section + # for the full mapping; deferred until the aggregate / monetary + # block enters scope. + q_next = R * a + (1 + r_m) * m + e_next = e_next + + # degenerate: identity transition — no further decision between + # decision and continuation in the shock-realization stage. + dcsn_to_cntn_transition: | + q = q_next + e = e_next + + cntn_to_dcsn_mover: + Bellman: | + V = V[>] + + dcsn_to_arvl_mover: + Bellman: | + V[<] = E_{e_next}(V) diff --git a/models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/index.md b/models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/index.md new file mode 100644 index 00000000..6a4e6846 --- /dev/null +++ b/models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/index.md @@ -0,0 +1,80 @@ +--- +title: "Algan and Ragot (2009) — Ballpark Entry" +schema_type: ScholarlyArticle +about: + doi: 10.1016/j.red.2009.05.001 + authors: [Algan, Ragot] + year: 2009 + journal: "Review of Economic Dynamics" + volume: 13 + issue: 2 + pages: "295-316" + preprint: "hal-01170621v1" + preprint_url: "https://sciencespo.hal.science/hal-01170621v1" +keywords: [heterogeneous-agents, monetary-policy, borrowing-constraints, money-in-utility, inflation-tax] +econ_ark_topic: + - HA-macro + - monetary +jel: [E2, E5] +difficulty: stretch +tier: formalized +has_formalization_layer: true +ballpark_contributor: + name: TBD +updated_by: + - date: "2026-04-28" + note: "Promoted from Draft to Formalized: full four-notebook exposition layer (intro / prior-literature / summary / subsequent-literature) added on top of the paper-grounded formalization layer (PR #76), modelled on the Benhabib_et_al_2019 canonical example (PR #66). Toraman 2020 legacy single-notebook digest moved to docs/legacy-drafts/ and credited in _summary.ipynb." +--- + +# Algan and Ragot (2009) — Ballpark Entry + +```{include} ARMonetaryPolicyHABC_intro.ipynb +``` + +```{include} ARMonetaryPolicyHABC_prior-literature.ipynb +``` + +```{include} ARMonetaryPolicyHABC_summary.ipynb +``` + +```{include} ARMonetaryPolicyHABC_subsequent-literature.ipynb +``` + +## What is in this item + +**Exposition layer** (Primer-tier deliverables, rendered via the `{include}` directives above): + +- [`ARMonetaryPolicyHABC_intro.ipynb`](ARMonetaryPolicyHABC_intro.ipynb) — citation, DOI, JEL codes, and the required 3-sentence pitch (*what the paper uniquely does / why Econ-ARK cares / what a REMARK would enable*). +- [`ARMonetaryPolicyHABC_prior-literature.ipynb`](ARMonetaryPolicyHABC_prior-literature.ipynb) — five canonical antecedents (Sidrauski 1967, Aiyagari 1994, Bewley 1983, İmrohoroğlu 1992, Erosa–Ventura 2002) and how Algan–Ragot synthesises them. +- [`ARMonetaryPolicyHABC_summary.ipynb`](ARMonetaryPolicyHABC_summary.ipynb) — paper digest: overview of the four channels of long-run inflation non-neutrality, the explicit recursive household problem, the firm/government/monetary blocks, the equilibrium definition, and the headline hump-shaped capital–inflation result. +- [`ARMonetaryPolicyHABC_subsequent-literature.ipynb`](ARMonetaryPolicyHABC_subsequent-literature.ipynb) — three threads of post-2009 literature: HANK (KMV 2018, McKay–Reis 2016), redistribution channel (Auclert 2019, Doepke–Schneider 2006), and money-demand / financial-frictions extensions (Ragot 2014, Challe et al. 2017). + +**Formalization layer** (Formalized-tier deliverables, item-root): + +- [`bellman-excerpt.md`](bellman-excerpt.md) — canonical modular-DDSL Bellman / stages / perches for the household block. +- [`dolo-plus-draft.yaml`](dolo-plus-draft.yaml) — two-stage dolo-plus draft (household block only; aggregate side out of scope — see [`AGENTS.md`](AGENTS.md)). Inline `# unresolved:` flags on the CES-utility kernel and the Markov-chain calibration block, per `CONTRIBUTING.md` line 44. +- [`verification.md`](verification.md) — Accept / Edit / Reject judgments grounded paper-by-paper-equation against Algan & Ragot (2009), *Review of Economic Dynamics* 13(2), pp. 295–316. +- [`matsya-session.txt`](matsya-session.txt) — the `--session` string used for this item (`topics2026-armonetarypolicyhabc`). +- [`AGENTS.md`](AGENTS.md) — structured brief for coding agents. + +**Bibliography** (cited by the four notebooks via `{cite}` directives, rendered through `myst.yml`): + +- [`self.bib`](self.bib) — BibTeX entry for the paper itself. +- [`references.bib`](references.bib) — papers cited by Algan–Ragot 2009 and listed in the prior-literature notebook (Sidrauski, Tobin, Phelps, Friedman, Bewley, Aiyagari, İmrohoroğlu, Erosa–Ventura, Akyol, …). +- [`subsequent-literature.bib`](subsequent-literature.bib) — post-2009 HA-monetary literature cited in the subsequent-literature notebook (Kaplan–Moll–Violante 2018, Auclert 2019, McKay et al., Doepke–Schneider 2006, Ragot 2014, Challe et al. 2017, Bayer et al. 2019, Werning 2015, …). + +**Iteration / review artifacts** under `docs/` (kept out of the item root because they are the AI loop's history, not the Formalized deliverables themselves): + +- [`docs/opus-prompt.md`](docs/opus-prompt.md) + [`docs/opus-review.md`](docs/opus-review.md) + [`docs/accept-edit-reject.md`](docs/accept-edit-reject.md) — Class 12 review artifacts. +- [`docs/matsya-evaluate-turn.txt`](docs/matsya-evaluate-turn.txt) — verbatim Matsya Evaluate turn on the two-stage decomposition. +- [`docs/lessons-learned.md`](docs/lessons-learned.md), [`docs/tier-assessment.md`](docs/tier-assessment.md) — synthesis docs. +- [`docs/legacy-drafts/`](docs/legacy-drafts/) — pre-iteration drafts retained for history: the two earlier Bellman drafts (superseded by `bellman-excerpt.md` at the item root) and `ToramanSY_AlganRagot2009_Summary.ipynb` (Toraman 2020 single-notebook digest, superseded by the four-notebook exposition layer above; the model statement in `_summary.ipynb` is adapted from this digest with explicit credit). + +## Known outstanding items + +Listed in [`bellman-excerpt.md`](bellman-excerpt.md) → "Open issues" and in [`docs/accept-edit-reject.md`](docs/accept-edit-reject.md): + +1. **CES-with-leisure utility kernel.** The YAML currently uses a separable CRRA + log-money + convex-labour-disutility workaround under an inline `# unresolved:` flag, with the paper's actual CES-aggregator-times-leisure-power form (eq. 15) transcribed verbatim in `docs/legacy-drafts/arg2009-bellman-excerpt.md`. Closing this requires locating a canonical dolo-plus example with a CES inner aggregator (a focused Matsya turn would do it), not rereading the paper. +2. **Markov-chain matrix literal.** The 3×3 productivity-process transition matrix is documented in the YAML as a comment block (paper §3.3.2 entries) but left as `P_e: '@in R+'` because the `@in StochasticMatrix` idiom has no precedent in the canonical dolo-plus corpus. Closing this is a small spec question for the dolo-plus maintainers. + +Neither is blocking; both are inline-flagged per `CONTRIBUTING.md` line 44. diff --git a/models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/matsya-session.txt b/models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/matsya-session.txt new file mode 100644 index 00000000..2563d91f --- /dev/null +++ b/models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/matsya-session.txt @@ -0,0 +1 @@ +topics2026-armonetarypolicyhabc diff --git a/models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/myst.yml b/models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/myst.yml new file mode 100644 index 00000000..2af6cffe --- /dev/null +++ b/models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/myst.yml @@ -0,0 +1,13 @@ +version: 1 + +project: + title: "Monetary Policy with Heterogeneous Agents and Borrowing Constraints — Ballpark Entry" + bibliography: + - self.bib + - references.bib + - subsequent-literature.bib + toc: + - file: index.md + +site: + title: "Monetary Policy with Heterogeneous Agents and Borrowing Constraints — Ballpark Entry" diff --git a/models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/references.bib b/models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/references.bib new file mode 100644 index 00000000..3f24ce7d --- /dev/null +++ b/models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/references.bib @@ -0,0 +1,216 @@ +@article{sidrauski1967, + title = {Rational Choice and Patterns of Growth in a Monetary Economy}, + author = {Sidrauski, Miguel}, + journal = {American Economic Review}, + volume = {57}, + number = {2}, + pages = {534--544}, + year = {1967} +} + +@article{tobin1965, + title = {Money and Economic Growth}, + author = {Tobin, James}, + journal = {Econometrica}, + volume = {33}, + number = {4}, + pages = {671--684}, + year = {1965}, + doi = {10.2307/1910352} +} + +@article{phelps1973, + title = {Inflation in the Theory of Public Finance}, + author = {Phelps, Edmund S.}, + journal = {Swedish Journal of Economics}, + volume = {75}, + number = {1}, + pages = {67--82}, + year = {1973}, + doi = {10.2307/3439275} +} + +@article{friedman1969, + title = {The Optimum Quantity of Money}, + author = {Friedman, Milton}, + booktitle = {The Optimum Quantity of Money and Other Essays}, + publisher = {Aldine}, + address = {Chicago}, + pages = {1--50}, + year = {1969} +} + +@article{bewley1980, + title = {The Optimum Quantity of Money}, + author = {Bewley, Truman}, + booktitle = {Models of Monetary Economies}, + editor = {Kareken, John H. and Wallace, Neil}, + publisher = {Federal Reserve Bank of Minneapolis}, + pages = {169--210}, + year = {1980} +} + +@article{bewley1983, + title = {A Difficulty with the Optimum Quantity of Money}, + author = {Bewley, Truman}, + journal = {Econometrica}, + volume = {51}, + number = {5}, + pages = {1485--1504}, + year = {1983}, + doi = {10.2307/1912286} +} + +@article{aiyagari1994, + title = {Uninsured Idiosyncratic Risk and Aggregate Saving}, + author = {Aiyagari, S. Rao}, + journal = {Quarterly Journal of Economics}, + volume = {109}, + number = {3}, + pages = {659--684}, + year = {1994}, + doi = {10.2307/2118417} +} + +@article{aiyagari1995, + title = {Optimal Capital Income Taxation with Incomplete Markets, Borrowing Constraints, and Constant Discounting}, + author = {Aiyagari, S. Rao}, + journal = {Journal of Political Economy}, + volume = {103}, + number = {6}, + pages = {1158--1175}, + year = {1995}, + doi = {10.1086/601445} +} + +@article{imrohoroglu1989, + title = {Cost of Business Cycles with Indivisibilities and Liquidity Constraints}, + author = {{\.I}mrohoro\u{g}lu, Ay{\c{s}}e}, + journal = {Journal of Political Economy}, + volume = {97}, + number = {6}, + pages = {1364--1383}, + year = {1989}, + doi = {10.1086/261658} +} + +@article{imrohoroglu1992, + title = {The Welfare Cost of Inflation under Imperfect Insurance}, + author = {{\.I}mrohoro\u{g}lu, Ay{\c{s}}e}, + journal = {Journal of Economic Dynamics and Control}, + volume = {16}, + number = {1}, + pages = {79--91}, + year = {1992}, + doi = {10.1016/0165-1889(92)90006-Z} +} + +@article{huggett1993, + title = {The Risk-Free Rate in Heterogeneous-Agent Incomplete-Insurance Economies}, + author = {Huggett, Mark}, + journal = {Journal of Economic Dynamics and Control}, + volume = {17}, + number = {5--6}, + pages = {953--969}, + year = {1993}, + doi = {10.1016/0165-1889(93)90024-M} +} + +@article{erosa2002, + title = {On Inflation as a Regressive Consumption Tax}, + author = {Erosa, Andr\'es and Ventura, Gustavo}, + journal = {Journal of Monetary Economics}, + volume = {49}, + number = {4}, + pages = {761--795}, + year = {2002}, + doi = {10.1016/S0304-3932(02)00115-0} +} + +@article{akyol2004, + title = {Optimal Monetary Policy in an Economy with Incomplete Markets and Idiosyncratic Risk}, + author = {Akyol, Ahmet}, + journal = {Journal of Monetary Economics}, + volume = {51}, + number = {6}, + pages = {1245--1269}, + year = {2004}, + doi = {10.1016/j.jmoneco.2003.10.002} +} + +@article{chari1996, + title = {Optimality of the Friedman Rule in Economies with Distorting Taxes}, + author = {Chari, V. V. and Christiano, Lawrence J. and Kehoe, Patrick J.}, + journal = {Journal of Monetary Economics}, + volume = {37}, + number = {2}, + pages = {203--223}, + year = {1996}, + doi = {10.1016/0304-3932(96)00011-6} +} + +@article{correia1996, + title = {Is the {Friedman} Rule Optimal When Money Is an Intermediate Good?}, + author = {Correia, Isabel and Teles, Pedro}, + journal = {Journal of Monetary Economics}, + volume = {38}, + number = {2}, + pages = {223--244}, + year = {1996}, + doi = {10.1016/S0304-3932(96)01275-0} +} + +@article{deprez2002, + title = {The Role of Money and Bonds in the Real Allocation of an Aiyagari Economy with Incomplete Markets}, + author = {De Prez, Geneva and Ventura, Gustavo}, + note = {Working paper}, + year = {2002} +} + +@article{lagos2005, + title = {A Unified Framework for Monetary Theory and Policy Analysis}, + author = {Lagos, Ricardo and Wright, Randall}, + journal = {Journal of Political Economy}, + volume = {113}, + number = {3}, + pages = {463--484}, + year = {2005}, + doi = {10.1086/429804} +} + +@article{williamson2008, + title = {Monetary Policy and Distribution}, + author = {Williamson, Stephen D.}, + journal = {Journal of Monetary Economics}, + volume = {55}, + number = {6}, + pages = {1038--1053}, + year = {2008}, + doi = {10.1016/j.jmoneco.2008.07.001} +} + +@incollection{heer2007, + title = {Distributional Effects of Monetary Policies in a New {Keynesian} Model with Capital Accumulation}, + author = {Heer, Burkhard and Maussner, Alfred}, + booktitle = {Computational Economics: A Perspective from Computational Intelligence}, + editor = {Chen, Shu-Heng and Kaboudan, Mak and others}, + publisher = {IGI Global}, + year = {2007} +} + +@article{chiu2008, + title = {The Welfare Implications of Heterogeneity in a Monetary Model with Idiosyncratic Risk}, + author = {Chiu, Jonathan and Molico, Miguel}, + journal = {Bank of Canada Working Paper}, + number = {2008-1}, + year = {2008} +} + +@article{algan2008welfare, + title = {The Welfare Cost of Inflation Risk under Imperfect Insurance}, + author = {Algan, Yann and Challe, Edouard and Ragot, Xavier}, + journal = {Annales d'\'economie et de statistique}, + number = {89}, + pages = {49--72}, + year = {2008} +} diff --git a/models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/self.bib b/models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/self.bib new file mode 100644 index 00000000..77da4928 --- /dev/null +++ b/models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/self.bib @@ -0,0 +1,11 @@ +@article{algan2009monetary, + author = {Algan, Yann and Ragot, Xavier}, + title = {Monetary policy with heterogeneous agents and borrowing constraints}, + journal = {Review of Economic Dynamics}, + volume = {13}, + number = {2}, + pages = {295--316}, + year = {2009}, + doi = {10.1016/j.red.2009.05.001}, + note = {Author preprint deposited at HAL, hal-01170621v1, \url{https://sciencespo.hal.science/hal-01170621v1}. Available online 2009; appears in print in Review of Economic Dynamics 13(2).}, +} diff --git a/models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/subsequent-literature.bib b/models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/subsequent-literature.bib new file mode 100644 index 00000000..d5474724 --- /dev/null +++ b/models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/subsequent-literature.bib @@ -0,0 +1,142 @@ +@article{doepke2006inflation, + title = {Inflation and the Redistribution of Nominal Wealth}, + author = {Doepke, Matthias and Schneider, Martin}, + journal = {Journal of Political Economy}, + volume = {114}, + number = {6}, + pages = {1069--1097}, + year = {2006}, + doi = {10.1086/508379} +} + +@article{ragot2014, + title = {The Case for a Financial Approach to Money Demand}, + author = {Ragot, Xavier}, + journal = {Journal of Monetary Economics}, + volume = {62}, + pages = {94--107}, + year = {2014}, + doi = {10.1016/j.jmoneco.2013.11.005} +} + +@article{challe2017precautionary, + title = {Precautionary Saving and Aggregate Demand}, + author = {Challe, Edouard and Matheron, Julien and Ragot, Xavier and Rubio-Ramirez, Juan F.}, + journal = {Quantitative Economics}, + volume = {8}, + number = {2}, + pages = {435--478}, + year = {2017}, + doi = {10.3982/QE564} +} + +@article{mckay2016, + title = {The Role of Automatic Stabilizers in the {U.S.} Business Cycle}, + author = {McKay, Alisdair and Reis, Ricardo}, + journal = {Econometrica}, + volume = {84}, + number = {1}, + pages = {141--194}, + year = {2016}, + doi = {10.3982/ECTA11574} +} + +@article{mckay2016power, + title = {The Power of Forward Guidance Revisited}, + author = {McKay, Alisdair and Nakamura, Emi and Steinsson, J\'on}, + journal = {American Economic Review}, + volume = {106}, + number = {10}, + pages = {3133--3158}, + year = {2016}, + doi = {10.1257/aer.20150063} +} + +@article{kaplan2018hank, + title = {Monetary Policy According to {HANK}}, + author = {Kaplan, Greg and Moll, Benjamin and Violante, Giovanni L.}, + journal = {American Economic Review}, + volume = {108}, + number = {3}, + pages = {697--743}, + year = {2018}, + doi = {10.1257/aer.20160042} +} + +@article{auclert2019, + title = {Monetary Policy and the Redistribution Channel}, + author = {Auclert, Adrien}, + journal = {American Economic Review}, + volume = {109}, + number = {6}, + pages = {2333--2367}, + year = {2019}, + doi = {10.1257/aer.20160137} +} + +@article{werning2015, + title = {Incomplete Markets and Aggregate Demand}, + author = {Werning, Iv\'an}, + journal = {NBER Working Paper}, + number = {21448}, + year = {2015}, + doi = {10.3386/w21448} +} + +@article{gornemann2016, + title = {Doves for the Rich, Hawks for the Poor? Distributional Consequences of Monetary Policy}, + author = {Gornemann, Nils and Kuester, Keith and Nakajima, Makoto}, + journal = {International Finance Discussion Paper}, + number = {1167}, + year = {2016}, + doi = {10.17016/IFDP.2016.1167} +} + +@article{sterk2018, + title = {The Transmission of Monetary Policy Operations through Redistributions and Durable Purchases}, + author = {Sterk, Vincent and Tenreyro, Silvana}, + journal = {Journal of Monetary Economics}, + volume = {99}, + pages = {124--137}, + year = {2018}, + doi = {10.1016/j.jmoneco.2018.07.003} +} + +@article{auclert2024micro, + title = {The Intertemporal {Keynesian} Cross}, + author = {Auclert, Adrien and Rognlie, Matthew and Straub, Ludwig}, + journal = {Journal of Political Economy}, + year = {2024}, + note = {Forthcoming} +} + +@article{ragot2018wealth, + title = {Heterogeneous Agents in the Macroeconomy: Reduced-Heterogeneity Representations}, + author = {Ragot, Xavier}, + booktitle = {Handbook of Computational Economics}, + volume = {4}, + pages = {215--253}, + year = {2018}, + doi = {10.1016/bs.hescom.2018.02.001} +} + +@article{bayer2019precautionary, + title = {Precautionary Savings, Illiquid Assets, and the Aggregate Consequences of Shocks to Household Income Risk}, + author = {Bayer, Christian and L\"utticke, Ralph and Pham-Dao, Lien and Tjaden, Volker}, + journal = {Econometrica}, + volume = {87}, + number = {1}, + pages = {255--290}, + year = {2019}, + doi = {10.3982/ECTA13601} +} + +@article{auclert2024monetarynonlin, + title = {When Inequality Matters for Macro and Macro Matters for Inequality}, + author = {Auclert, Adrien and Rognlie, Matthew}, + journal = {NBER Macroeconomics Annual}, + volume = {32}, + pages = {1--57}, + year = {2018}, + doi = {10.1086/696046} +} diff --git a/models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/verification.md b/models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/verification.md new file mode 100644 index 00000000..de49a5af --- /dev/null +++ b/models/We-Would-Like-In-Econ-ARK/ARMonetaryPolicyHABC/verification.md @@ -0,0 +1,334 @@ +# Verification (Matsya / AI iteration vs. the paper) + +> **Paper-grounded** as of this commit. Every paper-side claim now cites a +> specific equation number, page, or section in **Algan & Ragot (2009), +> "Monetary policy with heterogeneous agents and borrowing constraints," +> *Review of Economic Dynamics* 13(2), pp. 295–316** (DOI: +> [10.1016/j.red.2009.05.001](https://doi.org/10.1016/j.red.2009.05.001); +> open-access preprint +> [hal-01170621v1](https://sciencespo.hal.science/hal-01170621v1)). Equation +> numbers below are paper equations (e.g. eq. (15)), not summary-notebook +> numbers. Page numbers refer to the journal pagination 295–316. +> +> This file partitions every open issue into **paper gap** (something the +> paper does not specify, or that we have not yet transcribed) vs. +> **dolo-plus spec gap** (something the canonical dolo-plus / DDSL corpus +> does not document an idiom for). Paper gaps close by reading the paper; +> dolo-plus spec gaps close by locating a canonical example or consulting a +> dolo-plus maintainer. + +## Scope of this verification + +The formalization layer in this item (the `bellman-excerpt.md` + +`dolo-plus-draft.yaml` pair at the item root) encodes the **household +decision problem of paper §3.1.1 ("Households")**, p. 7-8, which is the +"general model" of paper §3 used for the quantitative analysis in §4. The +simple two-state model of paper §2 is descriptively reviewed in +`bellman-excerpt.md` but not separately formalized — the general model +nests it. The aggregate side of paper §3.1.2-§3.1.4 (firms, government, +monetary policy) is intentionally deferred (`AGENTS.md` "Scope" bullet). + +## Accept / edit / reject — recursive form (paper §3.1.1, between eqs. (17)-(22)) + +**Accepted.** The recursive form encoded in `bellman-excerpt.md` and the +`cntn_to_dcsn_mover` `Bellman:` block of `dolo-plus-draft.yaml` reproduces +the paper's recursive Bellman (paper p. 8, between eq. (17) and the +first-order conditions (18)-(20)): + +``` +v(q, e) = max_{c, m, l, a'} u(c, m, l) + β E[v(q', e')] + s.t. c + m + a' = q + w e l + μ +``` + +Two stages — **decision** (over `c, m, l, a'`) followed by **shock +realization** (Markov draw of `e_next`, formation of `q_next`) — match the +max-then-expectation structure in the paper line-by-line. Matsya's +Evaluate turn (`docs/matsya-evaluate-turn.txt`) confirmed this +decomposition is **CANONICAL** vs. the dolo-plus `cons_stage` + +`noport_stage` pattern. **No paper-vs-formalization gap.** + +**Accepted (post-Matsya edit).** Three free controls `(c, m_d, l)` with +`a'` pinned by the budget identity in `dcsn_to_cntn_transition`. The paper +writes the optimization as `max_{c, m, l, a'}` over four controls subject +to one budget equality (eq. (16)), giving 4 - 1 = 3 degrees of freedom. +Pinning `a'` by the budget identity is one valid encoding of those three +degrees of freedom; pinning `c` would be another. The paper itself is +silent on which control to make residual — the choice is encoding-level, +not paper-level. Our pre-Matsya draft carried four controls without any +budget-pinning; Matsya Flag C flagged this as non-canonical (the budget +should bind), and the Improve commit adopted the three-free-controls +encoding. **No paper-vs-formalization gap.** + +**Accepted.** The `m_d` (control) / `m` (poststate) split with the +bridging identity `m = m_d` is **CANONICAL** per Matsya's Evaluate turn, +matching `c` (control) / `a` (poststate) with `a = w - c` in +`cons_stage.md`. Paper notation is just `m` for both — the split is a +dolo-plus encoding of the chosen-vs-carried-forward distinction inside one +period. **Encoding-level, not a paper gap.** + +## Accept / edit / reject — wealth-on-hand and budget (paper eq. (16)) + +**Accepted with one explicit deviation flagged.** + +Paper eq. (16), p. 8: + +``` +c_t + m_t + a_{t+1} = (1 + r_t) a_t + m_{t-1}/Π_t + w_t e_t l_t + μ_t +``` + +with the wealth-on-hand definition (paper, just before the recursive +form, p. 8): + +``` +q_t = (1 + r_t) a_t + m_{t-1}/Π_t +``` + +so the recursive-form budget is `c + m + a' = q + w e l + μ` — exactly +what `dolo-plus-draft.yaml` encodes in `dcsn_to_cntn_transition`. + +**Deviation (flagged).** Our shock-stage `arvl_to_dcsn_transition` +encodes the next-period wealth-on-hand as + +``` +q_next = R * a + (1 + r_m) * m +``` + +The paper's eq. (16) writes the corresponding terms as `(1 + r_t) a_t` +and `m_{t-1}/Π_t`. The mappings are: + +| Our YAML | Paper analogue (eq. (16)) | Comment | +|---|---|---| +| `R * a` | `(1 + r_t) a_t` | Same — gross real return on the riskless asset. (Our `R` is the gross return, paper's `1+r` is also gross.) | +| `(1 + r_m) * m` | `m_{t-1}/Π_t` | The paper writes the real return on money as `1/Π` directly; our `(1 + r_m)` parameterizes the same quantity, so `r_m = 1/Π - 1 = -π/(1+π)`. The two are identical at any single Π but our parameterization carries `r_m` as a free parameter rather than deriving it from `Π`. | + +The second row is a **paper gap** in the spec sense that our YAML does +not yet impose `r_m = 1/Π - 1` as an equilibrium consistency condition. +At a stationary equilibrium with constant `Π`, this is just a redefinition +and harmless; in any non-stationary or shock-on-aggregate-money exercise, +the consistency `(1 + r_m) = 1/Π` would have to be enforced. Listed as a +deferred row in the table below. + +## Accept / edit / reject — utility kernel (paper eq. (15)) + +**Rejected (as paper-faithful), with the deferral now explicitly cited.** + +Paper eq. (15), p. 8 (transcribed verbatim): + +``` +u(c, m, l) + = (1 / (1-σ)) * [ ( ω c^((η-1)/η) + (1-ω) m^((η-1)/η) )^(η/(η-1)) + * (1 - l)^ψ + ]^(1-σ) +``` + +with **paper §3.3.1, p. 11, Table 1 calibration**: `σ = 1`, `η = 0.5`, +`ω = 0.988`, `ψ = 2`. The interest elasticity of money demand `η` is +explicitly identified with that quantity (paper p. 11, "the interest +elasticity of money"). + +The current `dolo-plus-draft.yaml` `cntn_to_dcsn_mover` `Bellman:` block +uses a **separable CRRA + log-money + convex-labor-disutility WORKAROUND** +(rho on c, rho_m on m_d, gamma on l) instead of the paper's CES kernel. +This is now flagged with an explicit `# unresolved:` block at the line +itself (per `CONTRIBUTING.md` line 44 idiom) that: + +- spells out paper eq. (15) verbatim at the line, +- cites the source (paper §3.3.1 + the verbatim transcription preserved + in `docs/legacy-drafts/arg2009-bellman-excerpt.md`), +- enumerates the two ways to close the deferral. + +**This is the only outstanding paper-vs-formalization discrepancy in the +household-block utility kernel.** Replacing the separable workaround +with the paper's CES form is tracked as deferred item #1 in +`docs/accept-edit-reject.md`. The paper's calibration (`σ=1, η=0.5, +ω=0.988, ψ=2`) is now in-hand for that closure; the only remaining +obstacle is locating a canonical dolo-plus example with a CES inner +aggregator under a CRRA outer wrapper. + +## Accept / edit / reject — symbol conventions + +**Edited.** The Markov kernel was renamed from `Π` (paper notation +implicit; see paper p. 7-8 where `Π` is reserved for inflation) to `P_e` +in our formalization. The paper's actual symbol for the productivity +transition matrix is `Q` (paper p. 7, "The productivity process follows a +3 × 3 transition matrix Q"). Either `Q` or `P_e` would avoid the +inflation-`Π` collision; we kept `P_e` for mnemonic clarity ("P-of-e") and +because it had already propagated through `bellman-excerpt.md`, the YAML, +and the Matsya cache before the paper symbol `Q` was checked. **Paper +deviation: deliberate, justified, mnemonic; no economics consequence.** + +**Edited.** The transfer `μ` was moved from `R+` to `R`. Paper-grounded +justification: in the simple model (paper §2.1, eq. (5), p. 5), +`μ_t^i = (π/Π) m_{t-1}^i` is non-negative because beginning-of-period +real money balances are non-negative. **But** in the general model the +paper considers four redistribution schemes (paper §4.2, p. 13-14): + - "lump-sum proportional to beginning-of-period real balances" (§4.2.1, + p. 13) — non-negative, + - "helicopter-drop equal across households" (§4.2.2 onward) — equal, + typically positive at high inflation, + - "Phelps effect: inflation tax substitutes for distortionary taxes" + (§4.2.4, p. 17) — net of inflation tax can be negative for high-money + households. + +Restricting `μ ∈ R+` would silently drop the third redistribution scheme. +`μ ∈ R` is correct for the general model. + +**Edited.** Identity transitions in both stages are explicitly labelled +as `# degenerate: identity` so reviewers can distinguish "identity" from +"omitted." **Encoding-level, not a paper gap.** + +**Edited (post-Matsya).** `P_e` is declared as a plain `@in R+` parameter, +not `@in StochasticMatrix`: the latter has no precedent in the canonical +dolo-plus corpus (Matsya Evaluate turn, Question 3, **UNRESOLVED**). +Row-stochastic semantics are carried instead by `@dist MarkovChain(P_e)` +on the exogenous block, which Matsya confirmed is the canonical pattern. +**Spec-level, not a paper gap.** + +## Accept / edit / reject — borrowing constraint + +**Resolved.** Paper eq. (17), p. 8: + +``` +a_{t+1}^i ≥ 0, 1 ≥ l_t^i ≥ 0, c_t^i ≥ 0, m_t^i ≥ 0 +``` + +The paper's borrowing constraint is exactly `a' ≥ 0` — i.e., **`a_min = +0` is the canonical value**, not a "TBD" placeholder. The paper is +explicit: "we assume that no household is able to borrow: a_{t+1}^i ≥ 0" +(paper §2.1.1, p. 4, restated in eq. (17) for the general model). + +The current YAML carries `a_min: '@in R'` with a `# unresolved:` flag. +This was a paper gap until the paper was in-hand; **as of this commit it +is closeable**: the value is `0`. The YAML can either set the placeholder +parameter `a_min = 0` or drop the parameter entirely and write the +domain `Xa: '@def [0, +∞)'`. Either is paper-faithful. Picking the +specific encoding is left for a follow-up YAML touch (since this commit +focuses on `verification.md`); see the deferred-row table below for the +tracking. + +## Accept / edit / reject — Markov productivity process (paper §3.3.2) + +**Resolved.** Paper §3.3.2, p. 11-12 specifies the calibrated 3-state +Markov chain on `e ∈ {e_h, e_m, e_l}` with restrictions and identifying +moments: + +- **Structural restrictions:** `p_{l,h} = p_{h,l} = 0` (no direct + transitions between extreme states), so the off-diagonal structure is + + ``` + e_h e_m e_l + e_h p_{h,h} 1-p_{h,h} 0 + e_m ? p_{m,m} ? (with the two ?'s summing to 1-p_{m,m}) + e_l 0 1-p_{l,l} p_{l,l} + ``` + +- **Calibrated values (paper p. 12):** `p_{l,l} = p_{h,h} = 0.9750`, + `p_{m,m} = 0.9925`, productivity ratios `e_h / e_m = 4.64`, + `e_m / e_l = 5.65`. + +- **Identifying targets (paper p. 12):** annual autocorrelation 0.91, + annual standard deviation of innovation 0.22, Gini wealth = 0.72, + share of borrowing-constrained households = 6%. + +The current YAML carries `P_e: '@in R+'` with a `# unresolved:` flag for +the numerical entries and `Xe: '@def {0.5, 1.0, 1.5}'` as a placeholder +state space. **As of this commit the calibration is closeable**: +substitute the values above. The state space `Xe` should be +re-parameterized as `{e_l, e_m, e_h}` with the ratios +`e_h/e_m = 4.64, e_m/e_l = 5.65` and a normalization (paper does not +fix the level; effective labor `L_t` is the relevant aggregate, eq. +(23)–(24)). Picking the specific numerical encoding is left for a +follow-up YAML touch. + +## Aggregate side: confirmed deferred (paper §3.1.2-§3.1.4) + +The aggregate side of the paper is **intentionally not formalized** in +this item; `AGENTS.md` "Scope" bullet documents this. For the record, +the paper's aggregate equations are: + +- **Production (paper §3.1.2, p. 9):** `Y_t = K_t^α L_t^{1-α}` with `α = + 0.36`, `δ = 0.025` (paper Table 1). +- **Factor prices (paper eqs. (23)-(24), p. 9):** `w̃_t = (1-α)(K/L)^α`, + `r̃_t + δ = α (K/L)^{α-1}`. +- **Government (paper §3.1.3, eq. (25), p. 9):** `∫ μ_t^i di + G = χ_t r̃_t + K_t + χ_t (L_h e_h + L_m e_m + L_l e_l) w̃_t + τ^{tot}_t`. +- **Money supply law (paper §3.1.4, eq. (26), p. 9):** `Ω_t = Ω_{t-1}/Π_t + + π Ω_{t-1}/Π_t`. +- **Inflation tax (paper eq. (27)):** `τ^{tot}_t = π Ω_{t-1}/Π_t`. + +These objects are listed in `bellman-excerpt.md`'s "Out of scope (this +draft)" table and are **not** part of the household-block formalization +verified above. They will be picked up in a separate general-equilibrium +PR. + +## Paper gaps vs. dolo-plus spec gaps — current status + +| Open issue | Paper gap? | Spec gap? | Status as of this commit | Next action | +|---|---|---|---|---| +| Utility kernel: separable workaround vs. paper CES eq. (15) | **Paper gap** (functional form known; encoding pending). | **Spec gap** in the narrow sense that I have not located a canonical dolo-plus example with a CES inner aggregator under a CRRA outer wrapper. | Functional form **resolved** (eq. (15) transcribed in YAML `# unresolved:` block + `bellman-excerpt.md` symbol table). Encoding **deferred**. | (a) Locate a canonical dolo-plus CES example via a focused Matsya turn, then re-encode; or (b) keep the workaround under a regime-justification (η → 1 limit) and document the calibration consequence. | +| Borrowing limit `a_min` | Was a paper gap; **now resolved** (paper eq. (17): `a_min = 0`). | No. | **Resolved (paper-side).** YAML edit pending. | Replace `a_min: '@in R'` placeholder with `a_min = 0` (or drop the parameter and write `Xa: '@def [0,+∞)'`). | +| Transfer `μ` sign rule | Was a paper gap; **now resolved** (paper §4.2, four redistribution schemes; net `μ` can be negative under the Phelps-effect scheme, §4.2.4). | No. | **Resolved.** Domain `R` is correct for the general model. | None. | +| `P_e` numerical calibration | Was a paper gap; **now resolved** (paper §3.3.2: `p_{l,l} = p_{h,h} = 0.9750, p_{m,m} = 0.9925`, restrictions `p_{l,h} = p_{h,l} = 0`, productivity ratios `e_h/e_m=4.64, e_m/e_l=5.65`). | No. | **Resolved (paper-side).** YAML edit pending. | Substitute the numerical entries; restate `Xe` with the ratios + a normalization. | +| `q'` LoM: `R·a + (1+r_m)·m` vs. paper `(1+r) a + m_{-1}/Π` | Mild paper gap: equivalent at any single `Π` but the paper writes the real return on money as `1/Π` directly; our `r_m` does not yet impose `(1+r_m) = 1/Π` as a consistency condition. | No. | **Identified, not yet enforced.** | Either drop `r_m` and write `(1/Pi_inf) * m` (introduces inflation symbol), or add a parameter-consistency comment. Defer until the aggregate / monetary block is added (then `Π` exists in scope). | +| Symbol `Q` (paper) vs. `P_e` (our) for the productivity transition matrix | No (deliberate rename to avoid `Π`-collision; mnemonic). | No. | **Deliberate deviation, documented.** | None. | +| `P_e` declaration idiom (`@in StochasticMatrix` vs. plain + `@dist MarkovChain`) | No. | Was a spec gap; **resolved** by Matsya Evaluate turn (Q3). | **Resolved.** | None. | +| Multi-control budget vs. budget-identity-pinning `a'` | No (paper writes 4-controls + 1-budget; encoding choice). | Was a spec gap; **resolved** by Matsya Evaluate Flag C. | **Resolved.** | None. | +| `cons_stage` / `noport_stage` two-stage pattern over Markov shocks | No. | Not a spec gap (CANONICAL per Matsya Evaluate Q1). | **Resolved.** | None. | + +## Paper-equation → formalization mapping (single-source-of-truth) + +The following table is the mapping a future contributor or AI agent +should consult when reconciling the YAML / `bellman-excerpt.md` against +the paper. **Equation numbers are paper equations.** + +| Paper object | Paper location | `bellman-excerpt.md` element | `dolo-plus-draft.yaml` element | +|---|---|---|---| +| Utility `u(c, m, l)` | eq. (15), p. 8; calibration p. 11 Table 1 | Symbol-table rows for `c, m, l, σ, η, ω, ψ` | `cntn_to_dcsn_mover.Bellman` (currently separable workaround; see `# unresolved:` block) | +| Budget constraint | eq. (16), p. 8 | "Stage 2" budget block | `dcsn_to_cntn_transition` (`a = q + w * e * l + mu - c - m_d`) | +| Sign / domain constraints | eq. (17), p. 8 | Symbol-table rows for `a, l, c, m` (bounds column) | `Xa, Xl, R+` constraints in the `spaces:` block; `a_min` parameter (resolves to `0`) | +| Wealth-on-hand definition `q` | Paper p. 8, just before recursive form | "Pre-state" / "decision-stage state" `q` row | `prestate.q`, `states.q` | +| Recursive Bellman | Paper p. 8, between eq. (17) and FOC eq. (18) | Stage-1 "decision" Bellman block | `cntn_to_dcsn_mover.Bellman` | +| Markov productivity `e ∈ {e_h, e_m, e_l}` | §3.1.1 p. 7-8; calibration §3.3.2 p. 11-12 | `e` row in symbol table; "shock realization" stage | `Xe` space, `e_next: '@dist MarkovChain(P_e)'`, `P_e` parameter | +| Borrowing constraint `a' ≥ 0` | eq. (17), p. 8 | `a_min` row in symbol table | `a_min` parameter (resolves to `0`); `Xa: '@def R+'` | +| Real return on money `m_{-1}/Π` | eq. (16), p. 8 | "Out of scope (this draft)" row for `Π_inf` | `r_m` parameter in shock stage (current parameterization); paper uses `1/Π` directly | +| FOC: Euler `u_c = β(1+r) E v_1` | eq. (18), p. 9 | Discussed narratively in `bellman-excerpt.md` "Properties" section (informally) | (Implicit; FOCs not enumerated in YAML — they emerge from the Bellman) | +| FOC: money arbitrage | eq. (19), p. 9; eq. (21) for binding case | (As above) | (As above) | +| FOC: labor-leisure | eq. (20), p. 9; eq. (22) for binding case | (As above) | (As above) | +| Quarterly model period | §3.3, p. 11 ("model period equals to one quarter") | Symbol-table note on `β` | `beta: '@in (0,1)'` parameter | +| Annualized inflation 3% benchmark | §3.3, p. 11 (`π = 0.75%` quarterly) | Out-of-scope row for `π` | (Not in household-block YAML) | + +## Summary of paper-grounded resolution + +**Paper-side gaps closed by this commit** (because the paper is now in +hand): + +- Utility functional form ✅ (eq. (15) transcribed at every relevant + line; encoding into the YAML's CES form remains deferred — that is a + spec / Matsya gap, not a paper gap). +- Borrowing limit `a_min = 0` ✅ (eq. (17)). +- Transfer `μ ∈ R` justified by the Phelps-effect redistribution scheme + ✅ (paper §4.2.4). +- Three-state Markov calibration: structural restrictions, transition + probabilities, productivity ratios ✅ (paper §3.3.2). +- Symbol-collision interpretation `P_e` vs. paper's `Q` ✅ (deliberate + mnemonic rename, paper symbol now documented). + +**Paper-side gaps remaining:** + +- None at the household-decision-block level. (The aggregate side of the + paper is intentionally out of scope for this item.) + +**Spec-side / encoding-level work remaining (tracked separately):** + +- Locate a canonical dolo-plus example with a CES-with-leisure inner + aggregator and re-encode the YAML utility kernel; close `# unresolved:` + block accordingly. +- Substitute resolved numerical values into the YAML (`a_min = 0`, + `P_e` transition probabilities, `Xe` with paper-calibrated productivity + ratios). This is a small follow-up YAML edit. +- Add a parameter-consistency comment for `(1 + r_m) = 1/Π` once the + aggregate / monetary block is in scope. + +This closes deferred item #2 from `docs/accept-edit-reject.md` +("Rewrite verification.md against the published paper, not the +summary").