workspace-course-topics

Matsya, ballpark, and Dolo Plus draft

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).


Goal

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.

Worked example — full Cursor chat (Benhabib ballpark)

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.


What to do

1. Choose material with a real dynamic program

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.

2. Sessions for this assignment

3. Configure Cursor and use Claude to drive Matsya (same session throughout)

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.)

  1. 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.

  2. 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.

  3. 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).

  4. 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.

4. Verify against the paper

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.


Deliverable

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.

  1. Session identifier — the exact --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.
  2. Bellman excerpt markdown — committed in your ballpark repo (path relative to repo root), e.g. the file Claude created in step 3.1.
  3. Improved markdown — committed path to the final version after the SolvingMicroDSOPs-oriented Matsya pass (step 3.4).
  4. Dolo Plus draft — YAML file committed in the repo (e.g. 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.
  5. Verification paragraph — from §4 above: include it in the PR description or as a committed markdown file (e.g. under docs/) so it is part of the review.

References