QuantEcon Community Library

Community Library · Contributing

Contribute to the library.

Anyone can take part, whether or not you are in the working group. Register your toolkit, solve one of the library's models, or, if you know a model well, propose it for the community to solve.

Ways to contribute

01

Register a project

Registering puts your toolkit in the library's directory, with a landing page of its own. It is an agreement in principle: nothing in it is binding, and you don't need it to submit a solution.

  1. Open the form

    Fill in Register a toolkit in the working group's tracker, one issue per toolkit.

  2. Add your links

    Documentation, installation, tutorials and where users ask for help. Your landing page is built from them.

  3. Keep it current

    Edit the issue whenever the details change.

Register a toolkit ↗ The issue is public, so leave out email addresses.
02

Submit a solution

A solution is a runnable implementation of one of the library's models. Keep the model and its calibration fixed; the method, the prose and the format are yours. Submit on behalf of a toolkit's project or as an individual.

  1. Read the model

    Start with its description and submission guide, such as buffer stock's.

  2. Solve it

    A notebook, a MyST document or another runnable format, reporting the results the description lists.

  3. Add metadata.yml

    A short file: the authors and maintainers, the description version you follow, and your AI disclosure.

  4. Open a pull request

    Add your directory under solutions/<model>/. A check names any missing field.

Stuck on a step? Open an issue or a draft pull request with what you have, and the library team will help bring your solution into the library.

Ask for help ↗
Naming your directory

solutions/buffer-stock/001-hark-egm/

001
The next free number among the model's solutions.
hark
Your toolkit, or your language if you use none.
egm
Your method, such as vfi or egm.

Your solution stays yours. You author and maintain it, and changes to it, by anyone, need a maintainer's approval. How submissions are reviewed is being settled in #6.

03

Propose a model

A model description is the template every solution of a model follows: the model, its calibration and the results each solution reports. The baseline set is a starting proposal, not a ceiling. Proposing a model is for domain experts: people who know the model and its literature well enough to state it precisely.

The specification is the contribution.

Solutions from different toolkits can be compared only when they solve the same problem. A gap in the description lets correct solutions disagree for reasons no one can trace, and every solution inherits it. So the library asks more of a description than of any one solution.

A good description is

Complete
Someone who hasn't read the source paper can implement the model from the description alone.
Unambiguous
Two people implementing it independently solve the same problem, with any free choice named.
Correct
Checked against its sources, with any departure from the paper stated and explained.
Comparable
Results are evaluated at fixed points, so correct solutions by any method agree.
Solvable by more than one toolkit
Nothing in it relies on a feature that only one toolkit has.
A baseline
A standard version of a model the field knows, kept as small as its purpose allows.

What it pins down

  • Sources
  • Model
  • Calibration
  • Conditions
  • Numerical solution
  • Results
  • Checks

The buffer stock description states each of these and is the example to follow.

Strongly recommended

Submit a reference solution with it

One runnable solution that reports every result, as buffer stock has with HARK. It shows that the model can be solved, gives later solutions a baseline to verify against, and is the best test of the specification.

How to submit

Open a pull request

Add the description under models/<model>/, following the buffer stock directory, and say what the model is, why it belongs and which toolkits could solve it. It starts as draft v0.1.

Discuss a model first ↗ Optional: talk an idea through with the working group before writing it up.
04

Versions

Each model description has its own version number, so every solution can say exactly which one it follows.

0.x

Draft

Until the working group releases it as 1.0. Every change to a draft raises the minor version.

1.0 → 1.1

Minor version

A touch-up: clearer wording, a corrected typo, an added note. The results are unchanged.

1.1 → 2.0

Major version

The model, the calibration or the reported results changed, so solutions re-run.

Each version has an entry in the model's changelog, and is tagged and released with its PDF.

05

AI and verification

Every description and solution says how much AI helped produce it and whether a person has verified it. Both describe the process: neither claims that a document is free of errors, and neither ranks documents, toolkits or submitters.

  • No AINo AI was used.
  • AI-editedPeople wrote it; AI suggested edits.
  • AI-assistedAI drafted some or most of it; people edited it throughout.
  • AI-generatedAI drafted it; people edited it lightly.

Report the highest category that applies to any substantial part, such as one section or the code. Choices about the model, the calibration and the results always belong to the authors.

Human verification

A named person checked it end to end

Against its sources: a description against the papers it cites, a solution against its description. Verification belongs to one version, so a new version shows as not yet verified until someone checks it.

Human verified Not yet verified

The full rules

Working with a coding agent?

CONTRIBUTING.md has every field, check and release step in full, written for contributors and their agents alike. AGENTS.md adds the commands.