Brexit and the feedback of uncertainty through asset prices

The medium- and long-run consequences of Brexit are unknown, but increased uncertainty in response to the event will likely have real global effects of its own. Individuals are now less confident in their guesses about the future, and this uncertainty changes behavior, increasing risk aversion and decreasing business investment. Global markets reaction to Brexit reflects not only the new average belief about expected future earnings, but also the indirect feedback effects of the higher level of uncertainty.

Medium- and long-term effects unclear

The U.K.’s June 23 vote to leave the European Union, termed ‘Brexit’, surprised many analysts. As the referendum vote neared, markets (representing the average belief of individuals) increasingly expected the ‘remain’ party to win. Some well-educated analysts explained how Brexit would never happen (possibly what Nassim Nicholas Taleb would consider proof of a black swan). The ‘leave’ campaign won with 51.9 percent of the vote, prompting David Cameron’s announced resignation.

The medium-term consequences for the U.K. and E.U. (or anywhere else) are entirely unclear. For example, should unemployment increase and production falter in the U.K. during the next few months, the Bank of England may need to ease monetary policy further and adopt very unconventional tools. However, if the market reaction to Brexit can be fully absorbed by exchange rate adjustment, the Bank of England may need to raise interest rates in response.

On June 24, the pound sterling fell more than eight percent against the dollar (figure 1). In response to the currency depreciation, many here in the U.S. joked about buying goods online from the U.K. or planning vacations. Many others expressed uncertainty about the future of the U.K. and the E.U., and the economic and political implications for the U.S.

Figure 1. The pound sterling fell against most currencies following the Brexit vote, including by more than eight percent in one day against the U.S. dollar.

Markets reminded of their anxiety issues

Within hours of the ‘leave’ campaign victory, stock prices of some financial services companies, such as Lloyds, fell by 30 percent. Although real changes from the vote may take two years to implement, the average belief about the appropriate cost of equity for these firms changed dramatically overnight. The fundamentals for people and businesses in the U.K. do not immediately change, but their behavior and asset prices do, and this has an indirect feedback effect on the fundamentals

Likewise, the U.S. is clearly not part of the E.U. or U.K., however, it is intimately linked to both markets through trade and investment. The Dow Jones Industrial Average fell 610 points (3.39%) on Friday in response to the news. The most widely-used measure of market volatility jumped nearly 50 percent (figure 2). The sales revenue of the largest U.S. companies is practically unchanged, however, individuals’ collective behavior has changed in response to uncertainty.

Individuals are repricing the assets that they previously overvalued. However, if the Bank of England is forced to wait to decide which direction its key policy will turn, how well can individuals immediately reprice future earnings? The immediate reaction to Brexit reflects not a new certainty about future earnings but increased uncertainty. Individuals never know what the future will hold, but these large unexpected events make them less confident in all of their guesses, and it changes their behavior.

Figure 2. VIX, the CBOE measure of expected near-term equity market volatility, saw an almost 50 percent daily increase following the Brexit result

Searching for safety and the uncertainty feedback loop

When people are less certain about the future, they take fewer risks. For example, business investment falls when equity market volatility is high. Individual and institutional investors also show preference for safe assets during times of increased uncertainty. In an immediate reaction to Brexit, U.S. treasuries, gold, and Japanese Yen saw inflows, while equity markets saw net outflows. Neither business fundamentals nor any rules had changed; people were showing risk aversion.

Investors’ increased aversion to equity investment raises firms’ equity cost of capital. This cost of capital is a major factor in firms’ investment decisions, especially for smaller and less-cash-flush firms. Therefore, the uncertainty induced asset price shock has a feedback mechanism through which it affects the future value of companies. This dangerous feedback mechanism can be procyclical.

What it means for the U.S.

The medium- and long-term direct effects of Brexit on the U.S. are very unclear. Brexit-induced equity market volatility, higher levels of uncertainty, and the negative effects these entail can however be analyzed with attention to the current U.S. macroeconomic environment. Three potential short-run consequences emerge:

1) Continued volatility in equity markets and strong demand for treasuries;

2) More downward pressure on business investment, which was already negative in the first quarter of 2016; and

3) Delay of the next Federal Funds rate hike in response to the above.

While the downward pressure on already weak business investment is worrisome, none of the above are enough to induce major concern. Households, many of which have recently started seeing long-awaited wage and income increases, will play a key role in determining whether recent asset price volatility will spill into consumer sentiment and awake a much worse set of feedback mechanisms.

Check out the dashboard and please leave feedback

Nearly 100 freshly updated charts:

U.S. Macro and Markets Dashboard (Updated June 26, 2016)

References and additional reading

Networks, Crowds, and Markets: Reasoning About a Highly Connected World by David Easley and Jon Kleinberg

Nick Bloom comment on Brexit 

BBC: The UK’s EU referendum: All you need to know


Global trade network analysis with Python: central players in bluefin tuna and large aircraft

Network analysis provides useful insights into complex bilateral trade data. Two methods are presented for calculating with Python each country’s influence in the global trade network for individual goods. Related concepts in graph and international trade theories are discussed.

Modern goods have complex trade networks

The things we buy increasingly travel long distances and from scattered origins before they reach us. Take one man’s repeatedly failed attempt to build a toaster (from scratch). Over several decades companies have changed their production techniques, relying on global value chains, for example, to keep costs low. These changes have gradually contributed to long-term growth in global trade.

The more deeply a country becomes involved in global trade, and in global supply chains in particular, the more subjected its economy becomes to changes abroad. This can be good; historically many powerful cities began as ports. However, the potential for higher returns from servicing foreign demand carries with it increased risk of economic contagion.

It is not hard to imagine how global supply chain connections transmit effects from other countries. If a strike in France delays the delivery of a crucial intermediate good, it may cause an assembly line stoppage in Taiwan. On an aggregate level, the recent slowdown in global trade results in vast shifts of wealth.

It may therefore prove useful to examine the complex networks of global trade using the tools provided largely by graph theory. As an example, let’s start with a graph of the global trade of tires in 2012.

Trade networks are complex and large. Data source: UN Comtrade

Each country that exported or imported automobile tires in 2012 is represented above by one node labeled with its three letter country code (for example Germany is DEU). The precise location of a node on the graph is not critical (it is often arbitrary), but generally countries more central to the trade of tires are closer to the center of the network. Likewise, countries are generally graphed near their largest trading partners.

Each trading relationship is shown on the graph as an edge (a line connecting two nodes). If France exports tires to Aruba, the graph will include an edge connecting the two nodes labeled FRA and ABW. Trade network edges are considered directed, as the flow of goods has a direction (either imports or exports).

Rat’s nest or Rorschach?

You may look at the above ‘visualization’ and simply see a rat’s nest. This is a correct interpretation. The graph shows overall complexity in the trade network, not individual bilateral relationships (there are more than 4400 edges in this network). Indeed the automobile tire trade network is particularly large and dense. Many countries currently produce internationally competitive tires and all countries use them and import at least some. In fact, the average country imports tires from many other countries. A graph of the resultant trade network is reminiscent of a gray blob and practically as useful.

More useful, however, are individual metrics of network structure. For example, which countries tend to trade only with a select subgroup of other countries? Which goods are traded in networks where one country dominates trade? These questions relate theoretically to the respective graph theory concepts of clustering and centrality.

Let’s take a look at how the Python programming language can be used to measure centrality in trade networks, and discuss two specific measures of centrality.

Python for trade network analysis

What follows is a more technical segment with sample code for trade network analysis of using Python 2.7.

Let’s start by importing the packages

In [1]:

import networkx as nx
import csv
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
from matplotlib import cm
from mpl_toolkits.axes_grid1 import make_axes_locatable
%matplotlib inline

We will rely heavily on NetworkX and give it the short name nx. Numpy is used to do certain calculations, and matplotlib helps with the visualizations.

Load the data and build the network

The example uses cleaned bilateral UN Comtrade trade data for scrap aluminum exports in 2012. The data follow the HS2002 classification system at the six-digit level of aggregation, and are sourced from WITS (subscription required for bulk download). Data are read from a csv file with the equivalent of three ‘columns’: the exporting country code, the importing country code, and the inflation-adjusted US Dollar value of exports in the one year period.

Data from the csv file are read line by line to build the network quickly. NetworkX is used to build the network, which is called G according to convention,  as a series of edges.

Read the data and build a network called G

In [2]:

G = nx.DiGraph() # create a directed graph called G
# Loop reads a csv file with scrap aluminum bilateral trade data
with open('760200_2012.csv', 'r') as csvfile:

     csv_f = csv.reader(csvfile)

# Now we build the network by adding each row of data 
# as an edge between two nodes (columns 1 and 2).
     for row in csv_f:

Let’s look at a specific bilateral trade relationship to verify that the new network, G, is correct. Exports of scrap aluminum from the U.S. to China should be quite large in 2012.

Check individual trade flow (edge)

In [3]:

usachnexp = G.edge['USA']['CHN']['weight']
print 'USA 2012 scrap aluminum exports to China, in USD: ' + str(usachnexp)
USA 2012 scrap aluminum exports to China, in USD: 1199682944
Central players can affect the market

Now that the network has been built, we can use indicators from graph theory to identify potential weaknesses and risks in the network’s structure. In this example, we will look for the presence of dominant countries in the trade network. Dominant importers or exporters have the ability to influence supply and demand and therefore price. These dominant countries are highly influential players in the trade network, a characteristic measured in graph theory as centrality.

There are several measures of centrality and two are discussed briefly in this post. The first is eigenvector centrality, which iteratively computes the weighted and directed centrality of a node based on the centrality scores of its connections. The example below scores each importer country as a function of the import-value-weighted scores of its trading partners. That is, an importer is considered influential to a trade network (receives a high eigenvector centrality score) if it imports a lot from countries that are also influential. Mathematically, eigenvector centrality computes the left or right (left is import centrality, right is export centrality) principle eigenvector for the network matrix.

See the NetworkX documentation for questions on the code or this for more details on the the math.

Calculate eigenvector centrality of imports

In [4]:

# Calculate eigenvector centrality of matrix G 
# with the exports value as weights
ec = nx.eigenvector_centrality_numpy(G, weight='weight')

# Set this as a node attribute for each node
nx.set_node_attributes(G, 'cent', ec)

# Use this measure to determine the node color in viz
node_color = [float(G.node[v]['cent']) for v in G]
Calculate total exports

Next we calculate each country’s total exports of scrap aluminum in 2012 as the sum total of its individual exports (edges) to other nodes. In the script, total export data is assigned as a node attribute and set aside to be used as the node size in the visualization.

Calculate each country’s total exports

In [5]:

# Blank dictionary to store total exports
totexp = {}

# Calculate total exports of each country in the network
for exp in G.nodes(): 
     tx=sum([float(g) for exp,f,g in G.out_edges_iter(exp, 'weight')])
     totexp[exp] = tx
     avgexp = np.mean(tx)
nx.set_node_attributes(G, 'totexp', totexp)

# Use the results later for the node's size in the graph
node_size = [float(G.node[v]['totexp']) / avgexp for v in G]
Visualization of the scrap aluminum network

NetworkX works well with matplotlib to produce the spring layout visualization. It is another rat’s nest, but you may notice a different color on one of the medium-sized nodes.

Create graph using NetworkX and matplotlib

In [6]:

# Visualization
# Calculate position of each node in G using networkx spring layout
pos = nx.spring_layout(G,k=30,iterations=8) 

# Draw nodes
nodes = nx.draw_networkx_nodes(G,pos, node_size=node_size, \
                               node_color=node_color, alpha=0.5) 
# Draw edges
edges = nx.draw_networkx_edges(G, pos, edge_color='lightgray', \
                               arrows=False, width=0.05,)

# Add labels

# Add labels and title
plt.text(0,-0.1, \
         'Node color is eigenvector centrality; \
         Node size is value of global exports', \
plt.title('Scrap Aluminum trade network, ' + y, fontsize=12)

# Bar with color scale for eigenvalues
cbar = plt.colorbar(mappable=nodes, cax=None, ax=None, fraction=0.015, pad=0.04)
cbar.set_clim(0, 1)

# Plot options

# Save as high quality png
plt.savefig(p + '.png', dpi=1000)
China (CHN) is influential to scrap aluminum trade in 2012. Data source: UN Comtrade
Central players on the demand side: scrap aluminum and bluefin tuna

The graph above shows plenty of large exporters (the large nodes) of scrap aluminum in 2012, including the US, Hong Kong (HKG), and Germany (DEU). The demand of one country in the network, however, actually dominates the market. In 2012, the booming Chinese economy was purchasing large quantities of industrial metals, including scrap metals. The surge in demand from China was enough to cause global price increases and lead to increased levels of recycling. Since 2012, however, Chinese imports of scrap aluminum have nearly halved, as has the market price of aluminum. The recent boom-and-bust cycle in scrap aluminum prices has a single country of origin but global ripples; the downturn generates domestic consequences for the large exporters and reduces the financial incentives for recycling.

The central influence of China in the 2012 scrap aluminum trade network is captured by its high eigenvector centrality score (node color in the graph above). We can also easily infer the out sized influence of China from a more simple measure–the high value of its imports relative to other countries. Centrality metrics, of which there are many, often prove useful in nuanced cases.

Chinese demand for scrap aluminum dominates the market in 2012. Data source: UN Comtrade

Another example of a central influence on a trade network can be found in Japanese demand for bluefin tuna. As shown below, Japan has very high eigenvector centrality for imports of this key ingredient in many sushi dishes.


Australia (AUS) dominates bluefin tuna exports, but by eigenvector import centrality Japan (JPN) is the influential player in the market. The first Tokyo tuna auction of 2013 saw one fish fetch a record 1.76 million USD. Indeed in 2012 Japan imported more than 100 times as much bluefin tuna as the second largest importer, Korea.

Like scrap aluminum, the story here follows the familiar boom-and-bust cycle; prices for bluefin tuna have returned to lower levels since 2012. The structure of the trade network, with one central player, introduces a higher level of price volatility. During a downturn in prices, this transmits financial consequences to fishermen throughout the world.

Supply-side influential players: large aircraft production

Trade network analysis can also help to identify influential exporters of goods. Cases that come to mind are rare earth minerals found only in certain countries, or large and complex transportation equipment. Commercial aircraft manufacturers, for example, are limited (unfortunately this may have more to do with subsidies than limited supply of technological prowess). Very large aircraft production is dominated by two firms: Airbus, with production sites primarily in France and Germany, and U.S. competitor, Boeing.

Instead of using eigenvector centrality to measure the influence of each exporting country in the large aircraft global trade network, let’s use a more simple method called outdegree centrality. We compute outdegree centrality for each country, i , as its number of outgoing (exporting) connections, k^{out}_i , divided by the total number of possible importers, (v - 1) :

c^{out}_D (i) = k^{out}_i / (v - 1) .

You can think of this measure as the share of importers that are serviced by each exporter. Nodes with a high outdegree centrality are considered influential exporters in the network.

Calculate outdegree centrality

In [7]:

oc = nx.out_degree_centrality(G) # replaces ec in the above
France, Germany, and the US dominate exports of large aircraft. Data source: UN Comtrade

As expected, France, Germany, and the U.S. receive high outdegree centrality scores. There simply aren’t many alternative countries from which to buy your large aircraft. Beyond lack of choice for buyers, central exporters in a trade network may introduce (or represent) vulnerability and barriers to competition.

Large aircraft suppliers are limited. Data for 2012, source: UN Comtrade
Network structure and (preventing) domestic consequences

Global trade is increasingly complex. Open economies are vulnerable to supply and demand shocks from the other countries in their trade network. The structure of the trade network itself determines in part the level of vulnerability and how and where supply and demand shocks may be transmitted. Certain trade networks, such as those for scrap aluminum or bluefin tuna, face dominant consumers and additional price volatility. Networks can also be subject to supply-side market structure issues, such as the virtual duopoly with very large aircraft.

Hindsight makes bubbles more visible; we easily find the previously missed warning signs once we know where to look. Decision makers aim for early detection of vulnerabilities, but face a geographically growing set of possible sources. Network analysis tools, such as centrality, can be applied to existing sets of complex bilateral trade data to provide new insight in the search for today’s warning signs. Such nontraditional tools may prove increasingly useful in a world where an individual is not capable of building a toaster from scratch, yet they sell down the street for $11.99.

Additional resources and reading
For fun:

The Toaster Project

Some references and further reading on networks and graph theory:

Easley and Kleinberg (2010) Networks, Crowds, and Markets: Reasoning about a Highly Connected World

Jackson (2010) Social and Economic Networks

Reading on trade and trade networks:

De Benedictis (2013) Network Analysis of World Trade using the BACI-CEPII dataset

Feenstra (2005) World Trade Flows

Nemeth (1985) International Trade and World-System Structure: A Multiple Network Analysis

Trade data source:

World Integrated Trade Solution (WITS)

Some python related resources:

Anaconda distribution for python


ComputSimu: Networks 1: Scraping + Data visualization + Graph stats (more useful code here)

Dashboard update: bond yields fall with renewed demand for safe assets and lower interest rate expectations

Monitor more than 80 economic indicators with the macro and markets dashboard:

United States Macroeconomic and Markets Dashboard: Updated June 11, 2016

Dashboard weekly update summary:

The latest labor market data show continued overall improvement in wages and low levels of new jobless claims, offering some consolation after the surprisingly weak May jobs report (see last week’s update). Equity market volatility increased, however, as already lackluster global growth forecasts were revised down by the World Bank. Domestic and foreign investors are shifting their portfolio of assets to fixed streams of income. Global bond yields, including on U.S. government and corporate debt, fell considerably during the past week’s rally. Investors are searching for higher returns on safe assets and responding to lower interest rate expectations.

Wages grow faster than productivity

Narrowing a long and persistent gap between productivity and wage growth, recent data suggest wages have been increasing in many industries. For most of the past decade, worker’s productivity (the output for each hour of work) grew more rapidly than their wages. The gap was in part from technology making work more efficient, but it also came from a weak labor market. An economy in which there are many qualified workers for each opening makes workers less likely to quit and more likely to accept no or small increases in wages. Companies simply do not need to rely on pay increases as a motivation when fear of unemployment is very strong.

While wage growth crawled along for a decade, productivity growth remained strong. Recent data suggest, however, that the long upward trend in productivity may be facing at least a hiccup. Meanwhile, overall measures show wages have been growing at a reasonable pace since mid-2014. Revised first quarter 2016 index data on wages and productivity shows the former nearly catching the latter.


When oil prices fall, for example, there is a transfer of wealth from the stakeholders of oil producers (who face a fall in revenue) to households (who spend less on fuel and energy). Likewise, a fall or stagnation in corporate profits can result in an increase in worker’s relative share of output. Wages, unlike commodity or stock prices, tend not to be cut. Where the past year has seen labor markets and workers’ bargaining power improve, it has seen productivity and corporate profits stagnate.


Additionally, data for the week of June 4 on new claims of joblessness was strong, with only 264,000 such claims. Overall, reasonable wage increases, an increasing labor share of output, and low headline unemployment paint a better picture for households and aggregate demand than the last jobs report’s payroll growth and participation rate data suggest. That said, labor market improvements are traditionally slow and gradual, while deterioration is rapid and steep. The June jobs report should therefore have major implications for the Fed’s rate hike decision.

Equity market volatility climbs

U.S. equity markets gains over the first four trading days of the week were erased on Friday by a large sell off. The CBOE volatility index, VIX, increased to 17 from 13.5 a week earlier. The bond rally described below suggests that there has been a flight to safety. Investors have been adjusting in part to new forecasts of generally lower global growth. Likewise, there are several large events on the horizon (brexit, elections, central bank policy divergence, etc.) suggesting fluctuations and jumps in equity markets (as well as debt and forex markets).


Bond markets rally as investors seek safe assets and interest rate expectations fall

Over the past week, U.S. treasury bonds, t-bills, and corporate bond yields fell. Elsewhere, ten-year German bund yields are nearly negative and Japanese ten-year government bond yields have fallen to -0.13%. People’s tolerance for extremely low returns is limited, and U.S. government debt offers a relatively higher return. During the past week, ten-year U.S. treasury bonds reached a four year low, partially as a result of strong foreign demand.


The spread between 10-year and 2-year treasuries sits currently at a nine-year low. Potential causes for the flat yield curve include the following: 1) investor search for return driving driving down long- and medium-duration bond yields, 2) investor fear of a business cycle downturn and a near future need for monetary easing, and 3) lower interest rate expectations as a result of recent data taking June (and potentially July) rate hikes off the table.


Check out the full dashboard for more than 80 indicators of U.S. economic activity:

U.S. Macroeconomic and Markets Dashboard, June 11, 2016

I also updated the dashboard for Japan:

Japan Macroeconomic and Markets Dashboard, June 11, 2016



U.S. economy added surprisingly few jobs in May, likely delaying the next Fed funds rate hike

Monitor more than 80 economic indicators with the macro and markets dashboard:

United States Macroeconomic and Markets Dashboard: Updated June 4, 2016

Dashboard update summary:

The employment summary released on Friday was surprisingly weak, with only 38,000 new jobs added to the U.S. economy during May and previous month figures revised down. The BLS estimate was dramatically below consensus forecasts. Many macroeconomic indicators remain positive and in line with Fed targets; households have been spending and investing more and inflation is above one percent. However, the surprise job growth weakness is sufficient to delay the expected timetable for Fed interest rate hikes.


Macro: GDP revised upward but business investment still strongly negative

In the second estimate, 2016 Q1 U.S. real gross domestic product (GDP) growth was revised upward to 0.8 percent from 0.5 percent. Private inventory investment did not decrease as much as previously estimated. Gross domestic investment from businesses remains strongly negative, following negative corporate profits in 2015 Q4 and very low profits in 2016 Q1. Slow real GDP growth is a result of the offset of negative business investment on sound household data. Household incomes increased in April, while expenditures decreased slightly in real terms but remain strong.


Jobs day disappoints

Economists’ consensus view that between 100,000 to 200,000 jobs were added to the U.S. economy in May was met on Friday with a surprisingly paltry 38,000 increase estimate from the BLS. The weak data was surprising enough to cause large immediate jumps in bond and foreign exchange markets.

Meanwhile, the headline unemployment rate fell to 4.7 percent from 5.0 percent, the largest decrease in several months. The fall in the headline rate had more to do with people “leaving the labor force” than with the addition of new jobs, unfortunately. The labor force participation rate fell to 62.6 percent in May. Many of those who left the labor force had been unemployed for 27 weeks or more and where therefore discouraged enough to stop trying to find a job.


Bond and FX markets react

Treasury bill and bond constant maturity yields fell in response to the expected delay of interest rate hikes. The yield curve (see below a simple visualization) remains relatively low and flat. The real yield on a five year treasury, for example, fell to -0.22 percent on Friday, June 3. Foreign exchange markets saw an almost universally stronger U.S. dollar in response to the jobs report. The dollar closed roughly two percent weaker against the Euro, Yen, Australian Dollar, Krone (2), Krona, and Ruble, roughly one and a half percent weaker against the Swiss Franc, Real, Lira, and Ringgit, and more than three percent against the Rand.



Rate hike delay

Where U.S. macroeconomic data has not been thrilling, labor market strength and wage increases were, in the previous few months, supportive of a June Fed Funds target rate increase of a quarter point, to 0.5-0.75 percent. The new jobs report, therefore, softens the strongest pillar. Markets have basically taken a June hike off the table. The next jobs report will be watched very closely and will likely determine whether a July hike is appropriate. Given the timing of Fed meetings and the expected gradual increase rate, it is more likely that we only see one rate hike during 2016.

See more than 80 indicators in the Dashboard: