Why I encourage econ PhD students to learn Julia

Julia is a scientific computing language that an increasing number of economists are adopting (e.g., Tom Sargent, the NY FRB). It is a close substitute for Matlab, and the cost of switching from Matlab to Julia is somewhat modest since Julia syntax is quite similar to Matlab syntax after you change array references from parentheses to square brackets (e.g., “A(2, 2)” in Matlab is “A[2, 2]” in Julia and most other languages), though there are important differences. Julia also competes with Python, R, and C++, among other languages, as a computational tool.

I am now encouraging students to try Julia, which recently released version 1.0. I first installed Julia in the spring of 2016, when it was version 0.4. Julia’s advantages are that it is modern, elegant, open source, and often faster than Matlab. Its downside is that it is a young language, so its syntax is evolving, its user community is smaller, and some features are still in development.

A proper computer scientist would discuss Julia’s computational advantages in terms of concepts like multiple dispatch and typing of variables. For an unsophisticated economist like me, the proof of the pudding is in the eating. My story is quite similar to that of Bradley Setzler, whose structural model that took more than 24 hours to solve in Python took only 15 minutes using Julia. After hearing two of my computationally savvy Booth colleagues praise Julia, I tried it out when doing the numerical simulations in our “A Spatial Knowledge Economy” paper. I took my Matlab code, made a few modest syntax changes, and found that my Julia code solved for equilibrium in only one-sixth of the time that my Matlab code did. My code was likely inefficient in both cases, but that speed improvement persuaded me to use Julia for that project.

For a proper comparison of computational performance, you should look at papers by S. Boragan Aruoba and Jesus Fernandez-Villaverde and by Jon Danielsson and Jia Rong Fan. Aruoba and Fernandez-Villaverde have solved the stochastic neoclassical growth model in a dozen languages. Their 2018 update says “C++ is the fastest alternative, Julia offers a great balance of speed and ease of use, and Python is too slow.” Danielsson and Fan compared Matlab, R, Julia, and Python when implementing financial risk forecasting methods. While you should read their rich comparison, a brief summary of their assessment is that Julia excels in language features and speed but has considerable room for improvement in terms of data handling and libraries.

While I like Julia a lot, it is a young language, which comes at a cost. In March, I had to painfully convert a couple research projects written in Julia 0.5 to version 0.6 after an upgrade of GitHub’s security standards meant that Julia 0.5 users could no longer easily install packages. My computations were fine, of course, but a replication package that required artisanally-installed packages in a no-longer-supported environment wouldn’t have been very helpful to everyone else. I hope that Julia’s 1.0 release means that those who adopt the language now are less likely to face such growing pains, though it might be a couple of months before most packages support 1.0.

At this point, you probably should not use Julia for data cleaning. To be brief, Danielsson and Fan say that Julia is the worst of the four languages they considered for data handling. In our “How Segregated is Urban Consumption?” code, we did our data cleaning in Stata and our computation in Julia. Similarly, Michael Stepner’s health inequality code relies on Julia rather than Stata for a computation-intensive step and Tom Wollmann split his JMP code between Stata and Julia. At this point, I think most users would tell you to use Julia for computation, not data prep. (Caveat: I haven’t tried the JuliaDB package yet.)

If you want to get started in Julia, I found the “Lectures in Quantitative Economics” introduction to Julia by Tom Sargent and John Stachurski very helpful. Also look at Bradley Setzler’s Julia economics tutorials.

Trade economists might be interested in the Julia package FixedEffectModels.jl. It claims to be an order of magnitude faster than Stata when estimating two-way high-dimensional fixed-effects models, which is a bread-and-butter gravity regression. I plan to ask PhD students to explore these issues this fall and will report back after learning more.

Advertisements

The top five journals in economics are accessible, if authors share

I tweeted this, but a blog post seems more appropriate (screenshots of URLs are unhelpful, tweets aren’t indexed by Google, etc).

The top five journals in economics permit authors to either post the published PDF on their personal website or provide a free-access link to the published article.

  • American Economic Review: “Authors are permitted to post published versions of their articles on their personal websites.”
  • Econometrica: “Authors receive a pdf copy of the published article which they can make available for non-commerial use.”
  • Journal of Political Economy: “Authors may also post their article in its published form on their personal or departmental web.”
  • Quarterly Journal of Economics and Review of Economic Studies: “Upon publication, the corresponding author is sent a free-access link to the online version of their paper. This link may be shared with co-authors and interested colleagues, and posted on the author’s personal or institutional webpage.”

Thus, articles in the top five economics journals are accessible to the general public at no fee, provided that the authors of those articles make the effort to share them. Other journals may not be so accessible. A lot of field journals are published by Elsevier, which has less generous sharing policies.

Is it easier to liberalize agriculture via bilateral or multilateral deals?

Tyler Cowen’s latest Bloomberg column is about bilateral trade deals. He’s more optimistic than most:

The smartest case for trade bilateralism is that trade in many goods is already fairly free, but some egregious examples of tariffs and trade barriers remain. Look at agriculture, European restrictions on beef hormones in beef, and the Chinese unwillingness to allow in foreign companies. Targeted strategic bargaining, backed by concrete threats emanating from a relatively powerful nation — in this case the U.S. — could demand removal of those restrictions. Furthermore, the negotiating process would be more directly transactional and less cartelized and bureaucratic.

With regard to liberalizing agriculture, I think the conventional wisdom is that multilateral negotiations are superior. Here’s Jagdish Bhagwati talking to the NY Times back in 2004:

The only way concessions can be made on agricultural subsidies is if you go multilateral. Think of production subsidies, which the United States has: they can’t be cut for just one trading partner. When it comes to export subsidies–which are the big issue for the Europeans and a little bit for us too–we will cut export subsidies say, for Brazil, in a bilateral negotiation, but the Europeans won’t. Then the Europeans will have an advantage. My point is that if subsidies are the name of the game in agriculture, if the foreign countries that export want to remove subsidies, they have to go multilateral.

 

On “hat algebra”

This post is about “hat algebra” in international trade theory. Non-economists won’t find it interesting.

What is “hat algebra”?

Alan Deardorff’s Glossary of International Economics defines “hat algebra” as

The Jones (1965) technique for comparative static analysis in trade models. Totally differentiating a model in logarithms of variables yields a linear system relating small proportional changes (denoted by carats (^), or “hats”) via elasticities and shares. (As published it used *, not ^, due to typographical constraints.)

The Jones and Neary (1980) handbook chapter calls it a circumflex, not a hat, when explaining its use in proving the Stolper-Samuelson theorem:

a given proportional change in commodity prices gives rise to a greater proportional change in factor prices, such that one factor price unambiguously rises and the other falls relative to both commodity prices… the changes in the unit cost and hence in the price of each commodity must be a weighted average of the changes in the two factor prices (where the weights are the distributive shares of the two factors in the sector concerned and a circumflex denotes a proportional change)… Since each commodity price change is bounded by the changes in both factor prices, the Stolper-Samuelson theorem follows immediately.

I’m not sure when “hat algebra” entered the lexicon, but by 1983 Brecher and Feenstra were writing “Eq. (20) may be obtained directly from the familiar ‘hat’ algebra of Jones (1965)”.

What is “exact hat algebra”?

Nowadays, trade economists utter the phrase “exact hat algebra” a lot. What do they mean? Dekle, Eaton, and Kortum (2008) describe a procedure:

Rather than estimating such a model in terms of levels, we specify the model in terms of changes from the current equilibrium. This approach allows us to calibrate the model from existing data on production and trade shares. We thereby finesse having to assemble proxies for bilateral resistance (for example, distance, common language, etc.) or inferring parameters of technology.

Here’s a simple example of the approach. Let’s do a trade-cost counterfactual in an Armington model with labor endowment L, productivity shifter \chi, trade costs \tau, and trade elasticity \epsilon. The endogenous variables are wage w, income Y = w \cdot L, and trade flows X_{ij}. The two relevant equations are the market-clearing condition and the gravity equation.

Suppose trade costs change from \tau_{ij} to \tau'_{ij}, a shock \hat{\tau}_{ij} \equiv \frac{\tau'_{ij}}{\tau_{ij}}. By assumption, \hat{\chi}=\hat{L}=1. We’ll solve for the endogenous variables \hat{\lambda}_{ij}, \hat{X}_{ij} and \hat{w}_{i}. Define “sales shares” by \gamma_{ij}\equiv\frac{X_{ij}}{Y_{i}}. Algebraic manipulations deliver a “hat form” of the market-clearing condition.

Similarly, let’s obtain “”hat form” of the gravity equation.

Combining equations (1.1) and (1.2) under the assumptions that \hat{Y}_{i}=\hat{X}_{i} and \hat{\chi}=\hat{L}=1, we obtain a system of equations characterizing an equilibrium \hat{w}_i as a function of trade-cost shocks \hat{\tau}_{ij}, initial equilibrium shares \lambda_{ij}, and \gamma_{ij}, and the trade elasticity \epsilon:

If we use data to pin down \epsilon, \lambda_{ij}, and \gamma_{ij}, then we can feed in trade-cost shocks \hat{\tau} and solve for \hat{w} to compute the predicted responses of \lambda'_{ij}.

Why is this “exact hat algebra”? When introducing material like that above, Costinot and Rodriguez-Clare (2014) say:

We refer to this approach popularized by Dekle et al. (2008) as “exact hat algebra.”… One can think of this approach as an “exact” version of Jones’s hat algebra for reasons that will be clear in a moment.

What is “calibrated share form”?

Dekle, Eaton, and Kortum (AERPP 2007, p.353-354; IMF Staff Papers 2008, p.522-527) derive the “exact hat algebra” results without reference to any prior work. Presumably, Dekle, Eaton, and Kortum independently derived their approach without realizing a connection to techniques used previously in the computable general equilibrium (CGE) literature. The CGE folks call it “calibrated share form”, as noted by Ralph Ossa and Dave Donaldson.

A 1995 note by Thomas Rutherford outlines the procedure:

In most large-scale applied general equilibrium models, we have many function parameters to specify with relative ly few observations. The conventional approach is to calibrate functional parameters to a single benchmark equilibrium… Calibration formulae for CES functions are messy and difficult to remember. Consequently, the specification of function coefficients is complicated and error-prone. For applied work using calibrated functions, it is much easier to use the “calibrated share form” of the CES function. In the calibrated form, the cost and demand functions explicitly incorporate

  • benchmark factor demands
  • benchmark factor prices
  • the elasticity of substitution
  • benchmark cost
  • benchmark output
  • benchmark value shares

Rutherford shows that the CES production function y(K,L) = \gamma \left(\alpha K^{\rho} + (1-\alpha)L^{\rho}\right)^{1/\rho} can be calibrated relative to a benchmark with output \bar{y}, capital \bar{K}, and labor \bar{L} as y = \bar{y} \left[\theta \left(\frac{K}{\bar{K}}\right)^{\rho} + (1-\theta)\left(\frac{L}{\bar{L}}\right)^{\rho}\right]^{1/\rho}, where \theta is the capital share of factor income. If we introduce “hat notation” with \hat{y} = y/\bar{y}, we get \hat{y} = \left[\theta \hat{K}^{\rho} + (1-\theta)\hat{L}^{\rho}\right]^{1/\rho}. Similar manipulations of the rest of the equations in the model delivers a means of computing counterfactuals in the CGE setting.

What economic activities are “tradable”?

I’ve had a couple conversations with graduate students in recent months about classifying industries or occupations by their tradability, so here’s a blog post reviewing some of the relevant literature.

A number of papers emphasize predictions that differ for tradable and non-tradable activities. Perhaps the most famous is Atif Mian and Amir Sufi’s Econometrica article showing that counties with a larger decline in housing net worth experienced a larger decline in non-tradable employment.

Mian and Sufi define industries’ tradability by two different means, one yielding a discrete measure and the other continuous variation:

The first method defines retail- and restaurant-related industries as non-tradable, and industries that show up in global trade data as tradable. Our second method is based on the idea that industries that rely on national demand will tend to be geographically concentrated, while industries relying on local demand will be more uniformly distributed. An industry’s geographical concentration index across the country therefore serves as an index of “tradability.”

Inferring tradability is hard. Since surveys of domestic transactions like the Commodity Flow Survey don’t gather data on the services sector, measures like “average shipment distance by industry” (Table 5a of the 2012 CFS) are only available for manufacturing, mining, and agricultural industries. Antoine Gervais and Brad Jensen have also pursued the idea of using industries’ geography concentration to reveal their tradability, allowing them to compare the level of trade costs in manufacturing and services. One shortcoming of this strategy is that the geographic concentration of economic activity likely reflects both sectoral variation in tradability and sectoral variation in the strength of agglomeration forces. That may be one reason that Mian and Sufi discretize the concentration measure, categorizing “the top and bottom quartile of industries by geographical concentration as tradable and non-tradable, respectively.”

We might also want to speak to the tradability of various occupations. Ariel Burstein, Gordon Hanson, Lin Tian, and Jonathan Vogel’s recent paper on the labor-market consequences of immigration varying with occupations’ tradability is a nice example. They use “the Blinder and Krueger (2013) measure of `offshorability’, which is based on professional coders’ assessments of the ease with which each occupation could be offshored” (p.20). When they look at industries (Appendix G), they use an approach similar to that of Mian and Sufi.

Are there other measure of tradability in the literature?

Trade JMPs (2017-2018)

It’s that time of year again. As I’ve done since 2010, I’ve gathered a list of trade-related job-market papers. New this year is a small collection of spatial economics papers that aren’t about trade per se. If I’ve missed someone, please contribute to the list in the comments.

Spatial Economics

 

I’m hiring research assistants

If you are a student interested in earning an economics PhD, you should consider working as a research assistant before starting graduate school. Working on someone else’s research projects is an opportunity to learn a lot about the research process that is never taught in PhD courses. Learning by doing is a powerful force.

I’m hiring people to start working with me in summer of 2018.  Apply here: http://www.nber.org/jobs/Dingel_Chicago%20Booth.pdf. More generally, you can find a list of such opportunities on the NBER website.