Status: DRAFT — Timing and submission channel will be confirmed before release. Listed on the assignment index as a placeholder.
Timing (proposed): Assigned in Class 11, due before Class 12 — see the run manifest (#130) and Assignments for Class 12.
Prerequisites: Complete Configure Matsya with your Anthropic key (#131), then Create a Matsya session for your ballpark work (#132), before the modeling steps below. Read econ-ark/Matsya install and configuration. Optional: Class 11 summary — Matsya workshop (course run notes on GitHub).
Use Matsya on your ballpark in a disciplined way: sharpen your understanding of the paper’s dynamic program (states, controls, shocks, timing, information), and produce a Dolo Plus-style YAML draft you can explain and defend. Treat Matsya output as a starting point to check against the source paper—not as ground truth.
Why this matters: Formalizing a model in a structured syntax forces clarity about what is decided when and what enters the Bellman problem. Matsya is tuned for modular DP and Dolo Plus; your job is to curate context, iterate, and verify.
Pacing: Matsya is intentionally slow compared with a generic chatbot (often on the order of tens of seconds to a few minutes per query while it applies checks). Use a fast local agent (Cursor, Claude Code) for repo edits; call Matsya when you need DP / Dolo Plus depth.
Workflow tip (YAML → math): Even if your end goal is a mathematical writeup, asking Matsya for a dolo-plus YAML sketch first, then asking it to “write out the math for this stage” from that YAML, often yields cleaner states/controls/timing than jumping straight to prose math—the YAML forces a precise structure you can then translate or critique.
Before you run §3 step-by-step on your paper, read this end-to-end transcript on the public course site (no GitHub login required): Example Cursor chat — Benhabib et al. (2019) ballpark.
It shows the interaction pattern this assignment expects: one Cursor thread, Claude running terminal matsya with a fixed --session, a 504 timeout on an oversized paste and recovery with a shorter prompt in the same session, CRRA clarification, YAML sketch, and a SolvingMicroDSOPs-style markdown pass. Substitute your paths, session name, and paper content; do not copy the Benhabib paths.
Shorter checklist (same workflow, no dialogue): Model for students — Benhabib pattern. Index of that folder (sample excerpt markdown and YAML you can read in the browser): Benhabib Matsya worked example.
Your ballpark must include a sequential / Bellman problem (even if the full paper is large, you may focus on one section). If your main ballpark is only reduced-form or empirical with no explicit optimization core, use a different ballpark or a clearly bounded excerpt from another paper for this assignment only, and say so in your write-up.
--session string you established in #132 for every matsya call below. (Billing and token setup are #131—not repeated here.)--session for that step, then continue in a fresh session if needed.Model: In Cursor, set your chat (or Composer, whichever you use for this thread) to Claude Opus 4.6—use Cursor’s model picker so the agent that edits files and runs terminal commands is Opus-class. If the exact label in your build differs slightly, pick the current strongest Claude Opus available.
Session discipline: Every time Claude runs matsya in the terminal for this assignment, it must use your stable --session name from §2. That is how your work is recorded on the Matsya server; the course staff can review the conversation there. You do not need to paste a separate “prompt log” in your submission.
Work in one Cursor chat thread if possible, and give Claude explicit instructions in order. Adapt the wording to your paths and paper; keep the substance. (The worked example chat above is the reference shape of that conversation.)
Create the excerpt file — Tell Claude something like:
Make a markdown file that excerpts the mathematical description of the basic Bellman problem in the paper studied in [path-to-your-ballpark].
Use a sensible filename (e.g. under source/ or docs/) and commit it when you are happy with the excerpt.
Matsya: stage decomposition — Tell Claude something like:
Provide Matsya with the markdown file you just created and ask Matsya to break down the Bellman problem into stages with arrival, decision, and continuation perches.
Claude should run matsya with that file’s contents (or a path-based workflow you agree on) and --session your-session-name.
Matsya: Dolo Plus readiness — Tell Claude something like:
Ask Matsya whether it has enough information to construct a dolo-plus YAML description of the model in question.
If Matsya says more context is needed, tell Claude exactly what Matsya asked for and instruct Claude to edit your Bellman-excerpt markdown file so it includes that extra information (sourced faithfully from the paper). Then have Claude run Matsya again with the updated file—still in the same session unless you hit timeout issues (see §2).
Matsya: improve the markdown using the SMD template — Tell Claude something like:
Ask Matsya to help improve the markdown document you created earlier—your attempt to describe the problem—using the SolvingMicroDSOPs lecture notes as a template for how to describe the stages of the problem.
Point Claude at SolvingMicroDSOPs, especially Sections 12–13 of SolvingMicroDSOPs.ipynb (multiple controls and modular stage architecture), as in the Bellman stage decomposition assignment.
General: Keep Matsya prompts scoped; avoid dumping whole PDFs in one blob. Use your fast Cursor thread for edits; use Matsya for DP structure and Dolo Plus.
After Matsya and Claude have produced drafts, you compare to the published paper (or your ballpark’s faithful summary). In one short paragraph, say what you accepted, edited, or rejected in Matsya’s YAML / stage breakdown / revised markdown, and why.
Submit by opening a pull request against your ballpark’s upstream repo (same pattern as other ballpark work): branch, commit all artifacts below, push, and open a PR so staff can review files and history. See Git add, commit, and PR if you need the step-by-step.
--session string you used for all Matsya calls in this assignment (no tokens). Put it in the PR description (or a short README snippet in the PR). Proper creation and use of this machinery is a core requirement; we will cross-check against the server-side session—you do not submit a separate prompt transcript.dolo-plus-draft.yaml or under source/) or coherent fragment at a committed path; should reflect Matsya’s output after step 3.3 where applicable.docs/) so it is part of the review.matsya configure, CLI and Python API, session behavior (see the README on that repo for step-by-step CLI usage).teaching-topics course run notes on GitHub.