Skip to content
Computational Economics Course 2020 by Kenneth Judd
Mathematica Jupyter Notebook Other
Branch: master
Clone or download

Latest commit

Philipp Mueller
Philipp Mueller Upload lecture 15 slides
Latest commit 1367e85 Apr 7, 2020

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
Assignments/assignment_1 Update extended deadlines Mar 27, 2020
Lecture_01_Introduction Merge branch 'master' of https://github.com/KennethJudd/CompEcon2020 Feb 23, 2020
Lecture_02_Computer_arithmetic Create video.md Feb 21, 2020
Lecture_03_Linear_algebra_and_equations Add index file for binder. Mar 3, 2020
Lecture_04_Unconstrained_optimization Add Assignment 1 Part A, add lecture 8 material. Fix small bug in pyt… Mar 12, 2020
Lecture_05_Nonlinear_equations Update video.md Mar 4, 2020
Lecture_06_Constrained_optimization_theory_and_methods Create video.md Mar 8, 2020
Lecture_07_Constrained_optimization_applications Create video.md Mar 17, 2020
Lecture_08_Structural_estimation_I Add Assignment 1 Part A, add lecture 8 material. Fix small bug in pyt… Mar 12, 2020
Lecture_09_Finite-difference_ODEs Add lecture 9 materials Mar 18, 2020
Lecture_10_Version_control_using_Git Actually adding readme files Feb 21, 2020
Lecture_11_Automatic_Differentiation Upload lecture material for lectures 11 and 12 Mar 30, 2020
Lecture_12_Homotopy Upload lecture material for lectures 11 and 12 Mar 30, 2020
Lecture_13_Approximation_I Add lecture slides Apr 1, 2020
Lecture_14_Numerical_quadrature_MC_qMC Add slides for Numerical Quadrature Apr 2, 2020
Lecture_15_Dynamic_optimization_equilibrium_NLCEQ
Lecture_16_Dynamic_programming-discrete_state Actually adding readme files Feb 21, 2020
Lecture_17_Structural_estimation_II
Lecture_18_Dynamic_programming-continuous_state Actually adding readme files Feb 21, 2020
Lecture_19_Projection_methods_I Rename Lecture 19: Projection methods I/README.md to Lecture_19_Proje… Feb 20, 2020
Lecture_20_Projection_methods_II Actually adding readme files Feb 21, 2020
Lecture_21_Approximation_II Actually adding readme files Feb 21, 2020
Lecture_22_Perturbation_methods Actually adding readme files Feb 21, 2020
Lecture_23_DSGE_NK_models Actually adding readme files Feb 21, 2020
Lecture_24_Structural_estimation_III
Lecture_25_Dynamic_games Actually adding readme files Feb 21, 2020
Lecture_26_Polynomials
Lecture_27_Concluding_remarks Actually adding readme files Feb 21, 2020
binder Add exercises for unconstrained optimization. Add dockerfile for mybi… Mar 2, 2020
.gitignore Add index file for binder. Mar 3, 2020
Gemfile Create Gemfile Feb 17, 2020
README.md Update README.md Apr 2, 2020
_config.yml
_index.ipynb

README.md

Computational Economics, 17 February - 29 May 2020

Dr. Kenneth L. Judd
Email judd@stanford.edu
Office Hoover Institution, Herbert Hoover Memorial Building, Room 334
GitHub KennethJudd

Objective

This course, taught by Ken Judd, introduces computational approaches for solving economic models. It focuses on a broad range of numerical methods and then applies them to economic problems. We formulate economic problems in computationally tractable forms and use numerical analysis techniques to solve them. We will study examples of computational techniques in the current economic literature as well as discuss areas of economic analysis where numerical analysis may be useful in future research of dynamic economic problems. The substantive applications will cover a wide range of problems including public finance, macroeconomics, game theory, mechanism design, econometrics, finance, and industrial organization.

Lectures

The lectures will be given 18:00 CET (9:00am PST). They will be streamed using Zoom. They will also be recorded and put on the web. Exact details will be posted later. Ken Judd will deliver the lectures except where noted otherwise below.

Overview

We begin with an overview of the necessary numerical analysis and approximation theory. First, we review standard numerical analysis - interpolation and approximation techniques, numerical optimization, numerical solutions to systems of linear and nonlinear equations, numerical integration, and basic solution techniques for ordinary and partial differential equations. We also discuss perturbation methods useful in economics.

Second, there will be an emphasis on applications related to current research areas. We will discuss methods for solving dynamic programming problems, as well as dynamic stochastic equilibrium models. We will solve for optimal incentive mechanisms using numerical optimization.

The course aims to acquaint students with the range of techniques that have been useful in economic analysis as well as expose students to techniques that have potential use in economic applications. I want to develop a basic understanding of numerical methods, demonstrate their use in economic examples, show how existing techniques fit into the broader numerical literature, and point the students to potentially useful numerical techniques.

Prerequisites

It is best if students have a good undergraduate background in mathematics (such as calculus, linear algebra, eigenvalues and eigenvectors) and are familiar with static optimization theory (such as Lagrangians and Kuhn-Tucker conditions) as well as basic dynamic optimization theory. I will also presume some experience with graduate level economics, however any student who is interested in the course and has taken either Masters or PhD courses in econometrics, microeconomics, and macroeconomics will be able to follow the course.

Course Grade

Doing computation is the only way to learn computation. The course grade will be based on computational exercises assigned every week along with term projects. I encourage you to work in groups of two or three.

Computing Languages

Students will need to know use some computational language. My recommendation is that you use Python, Matlab, or R. Students are welcome to use FORTRAN, C, or C++. Statistical software such as TSP, Eviews, RATS, and SAS are not acceptable. The US Federal Reserve uses Eviews but I expect more of you. Don’t even ask about Excel. If you do not know any suitable language, I recommend that you learn Matlab or Python. Both are adequate for this course and useful in research. Matlab is the most used language in economics. Python is a more complex programming language but much better in terms of long-run value and flexibility. See the QuantEcon project of Sargent and Stachurski.

In operations research, the popular languages are GAMS and AMPL. They are is easy to learn and allows you to access the best numerical software through the NEOS website. NEOS time is FREE, reflecting the “Wisconsin idea”! If there is interest, I will have a couple of optional tutorial sessions on AMPL (sorry, I don’t know GAMS).

I will use Mathematica in my lectures and some classnotes. It allows one to use symbolic methods, has good graphics and is overall more flexible than Matlab. It is free for UZH students. All students will be asked to download the free CDF player; it will allow you to run my examples on your laptops.

Textbook

The text is Numerical Methods in Economics by Judd, published by MIT Press. I will be particularly appreciative of any comments you may have on the text (typos, lack of clarity, etc.) since I am beginning to prepare the second edition.

I am working on a second edition. As we progress, I will (hopefully) have drafts on the course website of chapters for the second edition.

Exercises

The exercises and sample solutions can be found in the corresponding lecture folders. For the python code, we offer binder support such that the code can easily be viewed and executed online. To make use of this feature, please press the button Binder.

Course Outline and Schedule

    Date         Topic       Video   Details
Feb. 18 Introduction Video Chapter 1: Computational power. Computational math as an economics problem: managing scarce resources. Economics VERSUS computational mathematics.
Feb. 20 Computer arithmetic Video Chapter 2. General ideas of computational errors, and rates of convergence. Finite precision arithmetic and finite - difference derivatives.
Feb. 25 Linear algebra and equations Chapter 3. LU, QR, and Cholesky decomposition, condition numbers, Gauss-Jacobi and Gauss-Seidel methods.
Feb. 27 Unconstrained optimization Video Chapters 4 and 5. Search methods, bisection, gradient descent, Newton’s method, derivative free optimization (DFO). Applications to consumer demand and life-cycle problems, and maximum likelihood estimation.
March 3 Nonlinear equations Video Chapters 4 and 5. Bisection, Newton’s method, BFGS and DFP updates, and Powell hybrid. Applications to general equilibrium and Nash equilibrium.
March 5 Constrained optimization: theory and methods Video Chapters 4 and 5. Linear and nonlinear optimization. KKT conditions, augmented lagrangian, SQP and interior point methods.
March 10 Constrained optimization: applications Video Introduction to multiobjective optimization. Applications to consumer demand and incentive problems
March 12 Structural estimation I Video Basic ideas. MPEC versus NFXP
March 17 Finite-difference ODEs Video
March 19 Version control using Git Video (Robert Erbe and Gregor Reich)
March 24 Automatic Differentiation Video (Philipp Mueller)
March 24 Automatic Differentiation - Tutorial (Philipp Mueller)
March 26 Homotopy Video (Philipp Mueller and Karl Schmedders) Chapter 5. Applications will include general equilibrium, Nash equilibrium of static game.
March 30 Approximation I Video Chapter 6. Interpolation, regression, orthogonal polynomials, splines, least squares, LAD and Lasso fits.
April 2 Numerical quadrature, MC, qMC Chapter 7, 8, and 9. Integration methods for single- and multiple-dimensional integrals. Monte Carlo simulation methods. Applications to portfolio choice and dynamic problems.
April 7 Dynamic optimization, equilibrium, NLCEQ
April 9, 14, and 16 No lectures. Easter break.
April 21 Dynamic programming - discrete state Chapter 12. Value function iteration, policy iteration, acceleration methods.
April 23 Structural estimation II Su-Judd and Skrainka-Judd papers.
April 28 Dynamic programming - continuous state Chapter 12. Solutions to deterministic and stochastic dynamic programming problems using approximation, integration, and optimization methods. Applications to savings-consumption problems, climate change policy, and portfolio problems.
April 30 Projection methods I Chapter 10, 11, and 17. Methods for solving ordinary differential equations as well as the more complex equations arising in dynamic economic models.
May 5 Projection methods II Chapter 10, 11, and 17. Methods for solving ordinary differential equations as well as the more complex equations arising in dynamic economic models.
May 7 Approximation II Neural nets, radial basis functions, machine learning
May 11 - May 30 “Office hours” Ken Judd will be in Zurich. He will be happy to chat with students during this time.
May 12 Perturbation methods Chapter 13, 14, and 15. Taylor series approximations to find numerical solutions of equations, linearizing around a steady state, simple bifurcation methods.
May 14 DSGE, NK models
May 19 Structural estimation III (Philipp Mueller and Gregor Reich)
May 20 Dynamic games (Note that this is a Wednesday. Ascension Day on May 21 is a holiday in Zurich.) Markov perfect equilibria of dynamic games.
May 26 Polynomials Solving systems of polynomials. Homotopy methods and Groebner bases.
May 28 Concluding remarks Future of computational economics

Assignments and Grades

This is for those taking this course for a grade: There will be three required assignments. They will all involve writing computer code to solve some economic problem. I may ask you to code up a few basic algorithms, but otherwise I strongly encourage the use of professionally written packages. You are welcome to use any serious software.

Assignment 1 (A+B) will cover Lectures 1-7.

Assignment 2 (A+B) will cover Lectures 8-18 and should be circulated before Lecture 18.

Assignment 3 will cover Lectures 1-25 and circulated before lecture 25.

The final grade will be a weighted average of these three assignments, with the weights reflecting my attitude that what you know when the course ends is the most important consideration.

I will give you two weeks to complete an assignment. You may work in pairs, and I will allow one team of three if the number of students taking this course for a grade is odd.

Contact

If you have any questions, feel free to contact Ken or open a new issue on Github (check if your question has maybe already been asked and answered).

You can’t perform that action at this time.