Graduate course at Stony Brook University, Fall 2026
How to solve dynamic structural models numerically, and how to estimate them from data. Single-agent discrete and continuous choice, micro-founded equilibrium models, and dynamic games β each with the estimation toolkit that goes with it: NFXP, MPEC, CCP, NPL and EPL.
Course entry in the SBU catalog
π§βπ« InstructorΒΆ

Fedor Iskhakov
Professor of Economics, Department of Economics
Email:
fediskhakov@gmail.comWeb: Personal page
PhD from University of Oslo, 2009
Iβm an applied microeconometrician and a computational economist working in the field of structural estimation of dynamic models of individual and strategic
choice, with applications to labor economics, public economics, durable goods markets, household finance, industrial organization and dynamic games.
How many days have I spent on Long Island before coming to this lecture?
π₯ Class introductionsΒΆ
What is your background?
What are your research interests?
What is your coding experience? Which languages?
What is your prior experience with dynamic programming and Bellman equations?
What is your experience in empirical applications and data analysis?
π Course outlineΒΆ
Five parts over 15 weeks, including two of project presentations. Each class may combine theory with live code. From September 29 on, Tuesdays are practical sessions and Thursdays are theory. Homework is given on Thursday, and one of you presents a solution at the start of the following Tuesday, on a rotating basis.
The plan below is provisional and will be adjusted as we go.
| Date | Topic |
|---|---|
| Part I β Foundations and computational toolkit | |
| Tue Aug 25 | Introduction to structural estimation β what a structural project consists of |
| Thu Aug 27 | Work environment and submission workflow Practical tasks on version control |
| Tue Sep 1 | Algorithms and complexity |
| Thu Sep 3 | Programming practice: Towers of Hanoi |
| Tue Sep 8 | Root finding and optimization β bisection and NewtonβRaphson |
| Thu Sep 10 | Programming practice: static discrete choice |
| Part II β Single-agent dynamic programming | |
| Tue Sep 15 | Bellman equations and backwards induction in finite horizon |
| Thu Sep 17 | Contraction mappings, infinite horizon, value function iterations |
| Tue Sep 22 | The Rust bus engine replacement model and Newton-Kantorovich |
| Thu Sep 24 | Nested fixed point estimation (NFXP) |
| Tue Sep 29 | Practical session on NFXP estimation |
| Thu Oct 1 | Conditional choice probabilities, identification and two-step estimator |
| Tue Oct 6 | Estimation of Zurcher model with two step CCP estimator @ 11:00 instead of 9:30 |
| Thu Oct 8 | Nested pseudo-likelihood (NPL) |
| Tue Oct 13 | Fall break β no class |
| Part III β Continuous choice and simulation-based estimation | |
| Thu Oct 15 | Cake eating on a grid, function approximation and the consumption-savings model |
| Tue Oct 20 | Practice: one model, three solvers β accuracy and speed compared |
| Thu Oct 22 | The endogenous gridpoint method |
| Tue Oct 27 | DC-EGM for discrete-continuous choice |
| Thu Oct 29 | Method of simulated moments |
| Tue Nov 3 | Simulation-based estimation of a consumption-savings-retirement model |
| Part IV β Equilibrium models | |
| Thu Nov 5 | Micro-founded equilibrium models β equilibrium trade in used cars Β Β·Β project proposal due |
| Tue Nov 10 | Implementation of the doubly NFXP estimation Β Β·Β project clinic |
| Part V β Games | |
| Thu Nov 12 | Static games of incomplete information and multiplicity of equilibria |
| Tue Nov 17 | Mathematical programming with equilibrium constraints (MPEC) |
| Thu Nov 19 | Directional dynamic games β finding all equilibria |
| Tue Nov 24 | Estimation of directional dynamic games |
| Thu Nov 26 | Thanksgiving β no class |
| Tue Dec 1 | Project presentations I |
| Thu Dec 3 | Project presentations II; course wrap-up |
We have a quite unique opportunity for course co-creation.
Which topics would you add to the list?
Which topics would you remove from the list?
π‘ When and whereΒΆ
Time | Tuesday and Thursday, 09:30 β 10:50 |
Room | SOCBEHAV SCI N601 |
Office hours | Tuesdays after the lecture, any time by appointment |
In other courses, what happens when you miss a lecture?
π AssessmentΒΆ
| Weight | Component |
|---|---|
| 70% | Individual project, presentation and oral exam |
| 30% | Homework and in-class participation |
ProjectΒΆ
An individual structural estimation project, carried out in the second half of the semester, with a written report and code submitted, and presented in class in the last week. Ideally it includes all the steps of a structural estimation project:
theoretical model description
solver code
simulator code
estimator code
application of the model to real or simulated data
counterfactual simulations of some sort
The model may be one of your own interest, or an extension/modification of one of the models covered in class β the bus engine replacement model, the inventory management model, the consumption-savings model, or one of the entry games.
Project proposal is due Thursday, November 5, and should give a brief (max 2 pages) description of the project you intend to carry out together with a roadmap of the steps you intend to take. All proposals are discussed in the project clinic on Tuesday, November 10.
Presentations take place on December 1 and 3, approximately 30 minutes each, with room for a live demo of the solver and estimator code, not just slides.
Oral exam β paper and documented code should be submitted before the exam week β and will be a conversation starter in the oral exam during the exam period.
HomeworkΒΆ
Homework is typically given on Tuesday and is due the following Thursday.
Each homework assignment will be discussed at the start of the class that follows it
One student (volunteer or chosen at random) is to present the solution at the board or using slides
With rotation everyone presents several times over the semester
This is part of the grade
Homework is submitted as a pull request in your own private course repository, which I create for you and have access to; the workflow is set up in the first week, see Homework submission workflow.
π» SoftwareΒΆ
The course is intended in Python, yet you can discover equivalent code online in Matlab, Julia and other languages. Particular language is less important these days because we will be working with small examples.
By next time sets up the work environment, see π» Work environment and submission workflow.
Computers are expected in the lectures, you are encouraged to run the code examples in the lecture, and interact with the code and the slides in class.
The lecture notes are published at dse.iskh.me
and can be downloaded as a single PDF: eco629
Tasks and exercise code are posted in the private repository fediskhakov/sb-dse-class, and you work in a private repository of your own, fediskhakov/sb-dse-<your-username>.
Send me your GitHub username (register now if not yet) and I will set both up for you β see Homework submission workflow.
π€ AI policyΒΆ
The course is designed to be AI-friendly and to encourage the use of AI tools in the learning process.
You are welcome to use AI tools, but you bear all responsibility for the produced work.
In particular, it implies that you have to understand deeply every line of code or prose that you let AI produce on your behalf.
You have to verify the correctness of the code, and your understanding of the AI content and ability to modify it on the fly will be tested in the exam.
In addition, you have to disclose the use of AI assistants beyond text editing: see the disclosure policy.
See AI adoption stages by Boris Cherny, the man behind Anthropicβs Claude Code.
Where level are you in using AI today?