Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Choose your starting declaration

Do not begin every model by copying the tiny model. Decide first how its continuous choices will be solved:

Expected routeStart withDeclare now
General brute-force solutionRegime + GridSearch()States, actions, functions, constraints
One smooth liquid Euler marginConsumptionSavingsRegime + EGM(...)LiquidMargin roles and savings grid
One liquid margin with genuine resources or optional discrete choiceConsumptionSavingsRegime + DCEGM(...)Liquid roles and envelope configuration
Nested liquid and durable/illiquid marginsNestedConsumptionSavingsRegime + NEGM(...)Liquid and outer margin roles
Declared institutional kinks or cliffsConsumptionSavingsRegime + NBEGM(...)Margin roles and boundary structure
Nested outer margin plus liquid kinks/cliffsNestedConsumptionSavingsRegime + NNBEGM(...)Both margins, boundaries, outer search

This is an authoring decision. A specialized solver cannot infer that an arbitrary DAG node is “resources” or that a hidden where encodes a policy cliff. pylcm asks you to name those roles and boundaries so it can validate the solver’s assumptions before it runs.

Use Authoring for EGM-family solvers for complete executable declarations, and Choosing a solver for the full correctness and performance decision. Then continue with Defining models or select a model with related features from the Examples.