Econometrics, Quantitative Economics, Data Science



Current version to be found here.

ECON-GA 3002.015 and MATH.GA 2840.002

‘math+econ+code’ masterclass on optimization in economics: optimal transport, demand models and matching models

NYU Courant Institute, January 15-20, 2018 (36 hours)

Instructors: A. Galichon (NYU Econ+Math), Keith O’Hara (NYU Econ) and Yifei Sun (NYU Math)


This intensive course, part of the ‘math+econ+code’ series, is focused on models of demand, matching models, and optimal transport methods, with various applications pertaining to labor markets, economics of marriage, industrial organization, matching platforms, networks, and international trade, from the crossed perspectives of theory, empirics and computation. It will introduce tools from economic theory, mathematics, econometrics and computing, on a needs basis, without any particular prerequisite other than the equivalent of a first year graduate sequence in econ or in applied math.
Because it aims at providing a bridge between theory and practice, the teaching format is somewhat unusual: each teaching “block” will be made of 50 minutes of theory followed by 1 hour of coding, based on an empirical application related to the theory just seen. Students are expected to write their own code, and the teaching staff will ensure that it is operational at the end of each block. This course is therefore closer to cooking lessons than to traditional lectures.
The course, jointly offered by NYU Econ and the Courant Institute, is open to graduate students in the fields of economics and applied mathematics, but also in other quantitative disciplines. Students need to bring a laptop with them to the lectures. The knowledge of a particular programming language is not required; students are however expected to have some experience with programming. The course can be taken for credit or as a registered auditor.
The teaching staff is Alfred Galichon (professor of economics and of mathematics at NYU), Keith O’hara (economics graduate student at NYU and R and C++ guru), and Yifei Sun (mathematics graduate student at NYU focusing on machine learning). They are authors of the TraME library (, a toolbox for inference and simulation of discrete choice and matching problems. The course is based on Galichon’s popular graduate classes previously taught at NYU, and on his recent book, Optimal Transport Methods in Economics.

Support from NSF grant DMS-1716489 is acknowledged.

Course material

Available on Github here.

Practical information

• Schedule: Mon 1/15 — Sat 1/20, 2018, 8am-12 noon and 1pm-3pm. Location: WWH 102 in the Courant building (251 Mercer St)
• Credits: 3, assessed through a take-home exam or a short final paper, at the student’s option.
• A syllabus is available at
• Students need to register on Albert (MATH-GA 2840.002 or ECON-GA 3002.015). For more information please contact:


• Monday 1/15: linear programming, dynamic programming, network flows
• Tuesday 1/16: optimal transport toolbox
• Wednesday 1/17: convex analysis, nonlinear inverse problems, and multivariate quantiles
• Thursday 1/18: static and dynamic multinomial choice
• Friday 1/19: statistical estimation of models of matching with transfers
• Saturday 1/20: more general models of matching


Part I: Tools
Day 1: linear programming (Monday Jan 15)
Block 1. Basics of linear programming (8am-9:50am)
• Theory: linear programming duality; complementary slackness; minimax formulation
• Coding: How to eat optimally? Dataset: Stigler’s original diet data (1945).
Block 2. Network flow problems (10:10am-noon)
• Theory: directed graphs and min-cost flow problem
• Coding: How to find the shortest path through a network? Dataset: Paris subway; New York City street network.
Block 3. Dynamic programming as linear programming (1pm-2:50pm)
• Theory: Bellman’s equation; interpretation of duality; forward induction, backward induction
• Coding: When to repair mechanical engines? Dataset: Rust’s bus maintenance data (1994).

Day 2: optimal transport I (Tuesday Jan 16)
Block 4. Discrete matching (8am-9:50am)
• Theory: Shapley-Shubik duality; stability; decentralized equilibrium
• Coding: How to solve it? Dataset from Dupuy and Galichon (JPE 2014).
Block 5. Positive assortative matching (10:10am-noon)
• Theory: Becker’s model; compensating differentials; comonotonicity
• Coding: What is a CEO worth? Dataset: Gabaix-Landier’s (QJE 2008) CEO pay data.

Block 6. Hotelling’s characteristics model (1pm-2:50pm)
• Theory: power diagrams, Aurenhammer’s method
• Coding: How to infer the unobservable quality of a car model? Dataset: Feenstra-Levinsohn (Restud 1994) car data.

Day 3: optimal transport II (Wednesday Jan 17)
Block 7. Continuous multivariate matching (8am-9:50am)
• Theory: Knott-Smith criterion; Brenier’s map; McCann’s theorem
• Coding: How to solve it? the iterated proportional fitting procedure (IPFP). Dataset from Dupuy and Galichon (JPE 2014).
Block 8. Convex analysis and nonlinear inverse problems (10:10am-noon)
• Theory: convex duality; Fenchel’s inequality; subdifferentials and their inverses
• Coding: How to optimize with big data? Proximal gradient algorithms; LASSO; stochastic gradient algorithms.
Block 9. Quantiles methods (1pm-2:50pm)
• Theory: Rosenblatt’s quantiles; vector quantiles; vector quantile regression
• Coding: How to predict demand? vector quantile regression. Dataset: Engel’s (1857) original food expenditure data.

Part II. Models
Day 4: models of static and dynamic multinomial choice (Thursday Jan 18)
Block 10. Basics of static discrete choice (8am-9:50am)
• Theory: Dary-Zachary-Williams theorem, generalized entropy of choice, the inversion theorem
• Coding: How to solve it? simulation methods; AR, SARS, and GHK. Dataset: Greene and Hensher (1997) data on choice of travel mode.
Block 11. Demand models, old and new (10:10am-noon)
• Theory: the GEV model; the random coefficient logit model and the pure characteristics models
• Coding: How to estimate demand for automobiles? Dataset: BLP.
Block 12. Dynamic discrete choice methods (1pm-2:50pm)
• Theory: Rust’s model; estimation; normalization issues
• Coding: career choice.

Day 5: empirical matching models, the quasilinear case (Friday Jan 19)
Block 13. Separable models of matching (8am-9:50am)
• Theory: matching with unobservable heterogeneity
• Coding: Did Roe vs. Wade decrease the value of marriage? Dataset: Choo and Siow (JPE 2006).
Block 14. The gravity equation (10:10am-noon)
• Theory: optimal transport and the gravity equation; generalized linear models and pseudo-Poisson maximum likelihood estimation
• Coding: How to forecast international trade flows? estimating the gravity equation based on WTO international trade data.
Block 15. High-dimensional matching models (1pm-2:50pm)
• Theory: estimation of rank-constrained models
• Application: Does physical appearance have a price? matching on socioeconomic and anthropomorphic characteristics. Dataset: Chiappori, Oreffice and Quintana-Domeque’s (JPE 2012).

Day 6: empirical matching models beyond quasilinearity (Saturday Jan 20)
Block 16. Matching with imperfectly transferable utility (8am-9:50am)
• Theory: Galois connections, distance-to-frontier function, nonlinear complementary slackness, equilibrium transport
• Application: How do taxes affect matching patterns and wages? Dataset: Football coach data from Dupuy, Galichon, Jaffe and Kominers (2017).
Block 17. Integrating matching models and collective models of intrahousehold bargaining (10:10am-noon)
• Theory: collective models, Pareto weights, sharing rule
• Application: Do people marry for consumption or companionship? Dataset: Galichon, Kominers and Weber (2017).
Block 18. Matching with nontransferable utility (1pm-2:50pm)
• Theory: the Dagsvik-Menzel model; nonprice rationing and the NTU-logit separable model
• Application: Revisiting Choo and Siow’s data.