Lukas Püttmann    About    Research    Blog

Collected links

  1. From director Wolfgang Herzog’s Reddit “Ask Me Anything”:

    I do traveling for very intense quests in my life. I do that on foot.

  2. Paul Romer likes Jekyll (which powers this website). Oh, and he’ll be the next Chief Economist of the World Bank.

  3. Robert Shiller on the “Economic Policy Uncertainty” index:

    But do contractions cause uncertainty, they ask, or does uncertainty cause contractions? Given that we know that people are highly reactive to each other, the causality most likely runs both ways, in a feedback loop.

    The deeper and more interesting question concerns what initiates this uncertainty.

  4. Paul Romer (again) discusses a paper by Martin Stuermer and Gregor Schwerhoff (pdf):

    It is conditional optimism that brings out the best in us.

    A point similarly made by Peter Thiel.

  5. The Economist covers (google for it if paywalled) George Borjas’ reappraisal of the Mariel boatlift.


In the book by Swiss author Martin Suter “Der Koch” (The Chef), the Tamil cook Maravan comes from Sri Lanka to Zurich as a refugee. He works in a good Swiss restaurant and his cooking skills have unexpected side effects.

When I studied in Zurich, I lived in a ramshackle old house next to the forest at the edge of the city and in the apartment above us lived a Tamil family. When they cooked, the stairway filled with the scent of spices and a couple of times they brought us food.

Sri Lanka’s largest ethnic group are the Sinhalese of which most are Buddhists. The North of Sri Lanka with its center Jaffna is predominantly Tamil who are Hindus. Tamils also populate India’s state Tamil Nadu just across the Palk Strait. Their language is a Dravidian non-Indo-European language and there are visible cultural differences. Men wear lungis and the Tamil Temples are adorned by colorful figures and look more like angled Mayan pyramids than the curved shapes of the North of India.

The Tamil Tigers have been seeking independence from the rest of Sri Lanka for several decades and in 2008 and 2009, they were finally defeated by the Sri Lankan army.

Switzerland has a sizable Tamil community. And back then, I saw the family’s father at a demonstration. He wore a Tamil Tigers T-Shirt and flag and marched with a group of other Swiss Tamils over the Quay Bridge towards Bellevue.

I traveled to Sri Lanka last year and the differences between North and South are stark. The South is better developed than India, there are more middle-class cars and fewer beggars.

Sri Lanka’s capital and largest city Colombo is in the Southwest, the island’s Southern center is moist and lush with green tea plantations and in the East there are laid-back surfer villages. But as you get to the North, the country becomes more flat. The sun burns and you can view far into the distance. The Lonely Planet likens it to the savannas of East Africa.

Jaffna is a weird place. There are many ruins. At night, large swarms of bats cross the city. Singapore’s Lee Kuan Yew had just died and there were posters in the street mourning for him.

The military holds a strong presence in the Northern Province. This is criticized, as they basically treat it like a colony.

It felt not just more Tamil there, but more Indian. The food was better, especially the Dosas. In the South it’s “rice and curry” most of the time.

The Dutch left the city a castle and the library is pretty. But when the Lonely Planet says the most exciting place to go during evenings is an expat bar run by former aid workers during the civil war, then you know there isn’t much going on.

In the book, Maravan cannot escape the troubles from home. And Jaffna, too, is a far from having recovered.

Related posts:

Grande Peur

“La Grande Peur” or the Great Fear was a time of great uncertainty that happened in France just before the onset of the Revolution. Rumors of violent hords of bandits roaming the country-side spread and people thought the old order had stopped functioning.

Are we experiencing a Great Fear right now?

In many ways it’s not clear why we should. The world in 2016 is actually in quite a good shape. But somehow people seem to hold particularly gloomy views this year.

  • Tyler Cowen has to say on this issue:

    The broader and more disturbing implication is that the entire global economy may be more vulnerable to mood swings.


    Most likely, we’ll have to get used to a more mood-ruled world, and those will start off as being the moods of others, not our own. How do you feel about that?

  • And here are George Akerlof and Robert Shiller (added emphasis):

    The term overheated economy, as we shall use it, refers to a situation in which confidence has gone beyond normal bounds, in which an increasing fraction of people have lost their normal skepticism about the economic outlook and are ready to believe stories about a new economic boom. It is a time when careless spending by consumers is the norm and when bad real investments are made, […].


    Most economists are uncomfortable with such notions.


    Most academic economists, if asked to define the term overheated, would say that it describes a period in which inflation, […], has been increasing.


    Inflation itself, particularly when it is increasing, can ultimately create a negative effect on the atmosphere of an economy, akin to the effect of broken windows and graffiti on a city. These lead to a breakdown in the sense of civil society, in the sense that all is right with the world. (p65, “Animal Spirits”)

  • And Ben Bernanke:

    […] measures of the national “mood,” like Gallup’s “way things are going” question or questions about the “direction of the country,” show a high level of dissatisfaction.

Interesting papers at the NBER Summer Institute 2016

Check out the program or this non-representative pick of papers that caught my eye:

  • In the Corporate Finance session we get a piece by Atif Mian, Amir Sufi and Emil Verner:

    An increase in the household debt to GDP ratio in the medium run predicts lower subsequent GDP growth, higher unemployment, and negative growth forecasting errors in a panel of 30 countries from 1960 to 2012.

  • Also this (pdf) paper by Sydney Ludvigson, Sai Ma and Serena Ng in the Forecasting & Empirical Methods session looks good:

    […] we find that sharply higher uncertainty about real economic activity in recessions is fully an endogenous response to other shocks that cause business cycle fluctuations, while uncertainty about financial markets is a likely source of the fluctuations.

  • This piece by Andreas Fagereng, Luigi Guiso, Davide Malacrino and Luigi Pistaferri in the Aggregate Implications of Micro Consumption Behavior session is interesting:

    Third, returns are positively correlated with wealth. Fourth, returns have an individual permanent component that explains almost 20% of the variation.

  • Matthew Gentzkow, Jesse Shapiro and Matt Taddy present a paper in the Political Economy session:

    Partisanship [in US politics] was low and roughly constant from 1873 to the early 1990s, then increased dramatically in subsequent years.

Claudia Sahm offers good comments:

Recessions are almost by definition a time of instability, and it is hard to trace down the roots of instability in models that largely assume it away. I am a big fan of belief shocks, I don’t think we can fully understand recession/recovery without appealing to shifts in expectations. And yet, I have no idea how you cleanly, credibly separate beliefs from credit supply.

Simple example of how to write unit tests in Matlab

A unit test is a little program that checks if some part (or unit) of your code works as expected. What arguments are there for bothering to write such tests?

  • You find bugs more quickly
  • It’s reassuring to first run your tests when you haven’t touched your codes
  • Check if anything brakes if you change your code
  • Writing test also nudges you to keep functions small, as it’s more difficult to test functions when they have many input arguments.

Matlab ships with a unit testing framework since version R2013a. (See here if you’re using an earlier version).

I didn’t find the existing examples of how to use it easy to follow, so I’m putting here an explanation of how to test one individual function.

You can find all codes here.

Say we have a function add_one.m we want to test:

function y = add_one(x)
    y = x + 1;

For our unit test, we then write an additional script which we have to name with either test_ at the beginning or _test at the end. So here’s the new script test_add_one.m:

function tests = test_add_one
    tests = functiontests(localfunctions);

function test_normal1(testCase)
    x = 1;
    actSol = add_one(x);
    expSol = 2;
    verifyEqual(testCase, actSol, expSol)

The first three lines are always required and we only need to change the function name to match the name of the file.

The following function test_normal1 is our first test case. We will pass in the value x = 1 and check that the result is indeed 2.

So now go to the Matlab command line and run:


Which returns:

Running test_add_one
Done test_add_one

There’ll be a dot for every test case for this function. In this case everything worked fine, but there would be an extensive message if an error had occured.

So let’s add some more tests:

function test_normal_pi(testCase)
    x = pi;
    actSol = add_one(x);
    expSol = pi + 1;
    verifyEqual(testCase, actSol, expSol)

function test_irrationalNr(testCase)
    x = 3 + i;
    actSol = add_one(x);
    expSol = 4 + i;
    verifyEqual(testCase, actSol, expSol)

function test_negative(testCase)
    x = -5;
    actSol = add_one(x);
    expSol = -4;
    verifyEqual(testCase, actSol, expSol)

function test_matrix(testCase)
    x = [1, 2; 3, 4];
    actSol = add_one(x);
    expSol = [2, 3; 4, 5];
    verifyEqual(testCase, actSol, expSol)

It’s a good idea to give the functions meaningful names so that when there’s an error, we know where things went wrong. Don’t worry if the names get really long, they’ll only live in this script anyway.

The tricky thing is to think of the irregular ways the function might be used. For example, the following tests check that we get the right output even if we pass in an empty matrix or an NaN value:

function test_empty(testCase)
    x = [];
    y = add_one(x);
    actSol = +isempty(y); % plus converts logical to double
    expSol = 1;
    verifyEqual(testCase, actSol, expSol)

function test_nan(testCase)
    x = nan;
    y = add_one(x);
    actSol = +isnan(y); % plus converts logical to double
    expSol = 1;
    verifyEqual(testCase, actSol, expSol)

Now let’s give the function something where would expect an error. If we pass the function a string 'Hello world' it returns a numerical vector. That’s not what we want, so let’s add

assert(isnumeric(x), 'Input must be numeric.')

to our add_one.m function. So now it fails if the input is not a number.

The following test case then checks if indeed an error is returned:

function test_stringError(testCase)
    x = 'Hello world';
        y = add_one(x);
        actSol = 0;
        actSol = 1;
    expSol = 1;
    verifyEqual(testCase, actSol, expSol)

I use try-catch here to check if the function returns an error. There might be better ways to do this, but this works for me.

But we don’t always just have to check that results are equal, as sometimes we want to make sure that the difference is below some numerical threshold. In this case, calculate the absolute or relative error as actDiff and check that it’s less than some acceptable error like this:

verifyLessThan(testCase, actDiff, 1e-10)

One thing I lack so far is a way to test local functions, so functions that you define within some other function and which only that function can use.

So that’s it. If somebody has ideas for improvements, please let me know!

Eugene Fama and Richard Thaler debate efficient markets

Text and video.

Fama: [The efficient-market hypothesis] a model, so it’s not completely true. […] The question is: “For what purposes are they good approximations?” As far as I’m concerned, they’re good approximations for almost every purpose. I don’t know any investors who shouldn’t act as if markets are efficient. […]

Thaler: For the first part—can you beat the market—we are in virtually complete agreement.

Fama also cites Daniel Kahneman as recommending people to invest in ETFs.

Also, Fama doesn’t think governments or central banks should step in to deflate asset market bubbles:

Fama: We disagree about whether policy makers are likely to get it right, though. On balance, I think they are likely to cause more harm than good.

Thaler argues that the rational model is how people should behave, but it’s not how they do behave. And if you want to predict how people act, you have to take that into account:

Thaler: I believe the rational model, and I think that a lot of people screw it up, and that we can build richer models with a better predictive power if we include the way people actually behave as opposed to [the behavior of] fictional “Econs” that are super smart and have no self-control problems.

Collected links

  1. Interesting thoughts by Chris Blattman:

    But as I read the story, I couldn’t help but think that it’s that smugness that makes half the country hate the Times audience and want to vote for a man like Trump.

    The so-called liberals of New York (like me) who push for equal rights with one hand while pushing their kids to private schools with the other. Or support more open borders on principle, failing to mention that it lowers the cost of their house help without threatening their own jobs.

  2. Philip Tetlock, the author of “Superforecasting”, has lunch with the FT [source: MR]:

    Tetlock sees a division of intellectual labour, where Martin Ford and his ilk shape interesting hypotheses and more cautious and statistically minded people break them into smaller, testable pieces.

    His politically mild background is important, as it turns out. His work has taught him that everyone takes a heavy ideological endowment from their environment.

    But Tetlock’s belief in the possibility of a more rational world seems, happily, to be the only one that is not open to revision in the face of contrary evidence.

  3. Nathan Lane points to this history by Richard Becker of the S programming language which then became R. See 28:12 for the history of the assignment operator <- in R over = in other languages. Spoiler: their keyboard had a button with an arrow.

  4. Sci-hub is back up:

    The ethics are quite clear…

  5. Andrew Gelman and David Rothschild on why political prediction markets are performing worse than expected:

    But more recently, prediction markets have developed an odd sort of problem. There seems to be a feedback mechanism now whereby the betting-market odds reify themselves.

Do the programming languages we use influence how we think?

This article says that which programming languages people or organizations use might influence their thinking and culture.

I’m reminded of the discussion in linguistics on the idea that language structure might shape how we think. This idea is controversial and Steven Pinker, who’s skeptical of it, writes:

And supposedly there is a scientific basis for these assumptions: the famous Sapir-Whorf hypothesis of linguistic determinism, stating that people’s thoughts are determined by the categories made available by their language, and its weaker version, linguistic relativity, stating that differences among languages cause differences in the thoughts of their speakers. […]

But it is wrong, all wrong. The idea that thought is the same thing as language is an example of what can be called a conventional absurdity: a statement that goes against all common sense but that everyone believes because they dimly recall having heard it somewhere and because it is so pregnant with implications. (p57, “The Language Instinct”)

This idea has made inroads into economic research. Keith Chen argues, for example, that how languages encode references to the future has implications on how people think about the future. So a German speaker who says “Ich gehe morgen in die Kirche” (“I go tomorrow to church”) without having to add any explicit grammatical marker for the future tense, is thus more patient and saves more for the future.

No matter if the Sapir-Whorf hypothesis makes sense for natural languages or not, might there be something in it for programming languages? In the article we read:

If you want to know why Facebook looks and works the way it does and what kinds of things it can do for and to us next, you need to know something about PHP, the programming language Mark Zuckerberg built it with.

Among programmers, PHP is perhaps the least respected of all programming languages.


You wouldn’t have built Google in PHP, because Google, to become Google, needed to do exactly one thing very well – it needed search to be spare and fast and meticulously well engineered. It was made with more refined and powerful languages, such as Java and C++. Facebook, by contrast, is a bazaar of small experiments, a smorgasbord of buttons, feeds, and gizmos trying to capture your attention. PHP is made for cooking up features quickly.

However, people and organizations get to choose which language to use, unlike natural languages that you have little say over.

But people don’t switch immediately when there’s a better language available. There’s a lot of sluggishness in how organizations change their systems. And if everybody else in your area of work uses some language, then you probably stick to it as well. And the structure and capabilities of that language might then shape how people think about problems.

This idea is actually mentioned in the good Wikipedia article on this topic which also refers to this Paul Graham essay in which he describes Lisp as his secret weapon.

But there’s also another viewpoint on this. The original article goes on to introduce OCaml, an exotic functional programming language used by the Hedge Fund Jane Street. Such a programming language demands more of the people who use it, but it’s easier to ensure correctness of the programs.

The culture of competitive intelligence and the use of a fancy programming language seem to go hand in hand.

So what if it’s mostly about signaling? Like those tough interview questions in consulting interviews or intelligence tests during applications for investment banks that might hold little predictive value of how good somebody will be at their job, but instead serve as a marketing tool to convince new hires that one must be really clever to work at this firm.

Maybe the reason some people are so make more productive is not the programming languages they use and they’d be similarly productive in other environments.

Do as I did

When I was finishing school, I went to two career events by the local Lions Club and Rotary Club in my town. In both, a group of stately men sat at tables scattered around the room and we went from table to table and asked them about their professions.

One of them was a former manager and had just started an executive search firm. One was an economist and senior member of the Bundesbank. One was a lawyer working as a lobbyist at the European institutions in Brussels. One was a computer scientist working as management consultant. Several others were business executives.

And they all said variations of the same: “Do as I did.”

  • “Computer science is the best way to learn how to think in a procedural way.”

  • “If you want a good career with a 100,000 euro starting salary, you have to study law.”

  • “Only studying economics can teach you where phenomena like inflation come from.”

  • “I was the president of the student organization in Berkeley and that was very important in my career. These extra-curricular activities are very valuable.”

The only types that didn’t say this were the people who had studied business and management. Instead they said:

  • “You could also study something like aeronautic engineering.”

  • “You could backpack around Asia.”

A lot of the advice is good, but the most important thing I learned was this: There’s a limit on the breadth of career advice somebody is able to give, as most people can only really pass judgment on the decisions they themselves made. They post-rationalize their choices and try to get you to follow the same path.