TICled: Global FX reserves and U.S. treasury holders

TIC data and more.
sovereign debt
FX reserves

Benjamin Braun


May 4, 2023

Reserve currencies: The global landscape

Why dedicate the first post to the perennial question of global dollar hegemony? Many reasons: Herman Mark Schwartz just arrived at the MPIfG, where he’ll deliver a 3-part Scholar-in-Residence lecture series with the enticing title Triffin Reloaded: The Matrix of Contradictions around the Dollar’s Global Dominance; Adam Tooze’s most recent Chartbooks #211 and #212 have focused on the global role of the dollar; the debt-ceiling sovereign default (non-)scenario is upon us; I just taught a class on finance and geopolitics for the first time; finally, most importantly: The U.S. Treasury just released its annual update of the historical Treasury International Capital (TIC) system time series data, which proved irresistible. That’s plenty of reasons to take a closer look at the data sources that underpin the discussion on the evolution of the global official reserve landscape in general, and on the holder structure of U.S. government debt in particular.

Currency composition of official FX reserves

The first point of entry into this discussion is the IMF’s data on the Composition of Official Foreign Exchange Reserves (COFER). The good news is that COFER is easy to access and use. The bad news is that COFER provides only highly aggregated data, showing the currency composition of official reserve only at the global level.

Side note: Whenever possible, I pull data from dbnomics, rather than from the various individual central banks, statistical agencies, etc. dbnomics is hosted by the Banque de France and is an inexplicably underrated public data infrastructure that, in combination with learning R and learning how to use the rdbnomics package, has changed my life. To reveal the R code that downloads the COFER data and generates the chart, click ‘Code’ below.1

#Get IMF COFER data 
cofer_raw <- rdb("IMF", "COFER", mask = "Q.W00..")
cofer <- cofer_raw[!is.na(value)]
cofer <- as_tibble(cofer)

#Select variables
cofer <- cofer %>% 
  select(Indicator, INDICATOR, period, value)

#Rename indicators
cofer <- cofer %>% 
  mutate(Indicator = str_replace(Indicator, "Allocated Reserves, Claims in ", ""))
cofer <- cofer %>% 
  mutate(Indicator = str_replace(Indicator, ", US Dollars", ""))

#Filter for nominal reserves denominated in USD and for main currencies
cofer_nominal <-cofer %>%
  filter(!str_detect(Indicator, "Shares")) %>% 
  filter(!str_detect(Indicator, "ECU|French|Deutsch|Netherlands|Allocated|Unallocated|Foreign Exchange"))

#Filter for nominal values and for main currencies
p1 <- cofer_nominal %>%
  ggplot(aes(x = period, y = value/1000000, fill = Indicator)) +
  geom_area(position = "stack") +
  scale_fill_manual(values = natparks.pals("Yellowstone", 9)) +
  labs(title = "Absolute composition",
       y = "USD, trillion", 
       x = NULL,
       fill = NULL,
       caption = "Data: IMF COFER") +
  theme_bw() +

p2 <- cofer_nominal %>%
  ggplot(aes(x = period, y = value, fill = Indicator)) +
  geom_area(position = "fill") +
  scale_fill_manual(values = natparks.pals("Yellowstone", 9)) +
  labs(title = "Relative composition",
       y = "Share of total", 
       x = NULL,
       fill = NULL,
       caption = "Data: IMF COFER") +

plot_grid(p1, p2, labels = c('A', 'B'), rel_widths = c(1, 1.6),
          label_size = 12, nrow = 1)

What does the COFER data show us? First, as shown in panel A, global official FX reserves increased 10-fold between 1999 and 2020, from USD 1.25 trillion to USD 12 trillion. That is the famous official foreign reserve glut, fueled by the aftershock of the Asian financial crisis and by the massive trade surpluses of, first and foremost, China and Japan. That is a spectacular change.

However, when it comes to the composition of those global reserve holdings, the picture is one of continuity. As shown in panel B, the share of U.S. dollar share has fallen, but only modestly, from 71% in 1999 to 58% today. What is more, the 1999 value marked an all-time high—in 1995, the U.S. dollar share was 59%.

Does the emergence of the Australian and Canadian dollars, and of the Chinese Renminbi, indicate a trend towards dedollarization? As Tooze put it in Chartbook #211:

Surely not. The financial systems of all the countries on this list other than China - countries accounting for 75 percent of the total - are firmly anchored within the dollar system, a status indicated by the fact that their central banks are within the privileged circle of those to which the Fed extends dollar swap lines. So far, moves beyond the dollar system defined in these broader terms are of no great significance.

But this is aggregate data—it may obscure shifts that become visible only at a more granular level.

Currency composition of FX reserves: By country

The IMF does, of course, have disaggregated, country-level data on official foreign reserves. It just but does not publish those numbers To overcome this data gap, Hiro Ito and Robert McCauley have gone to considerable length to assemble a disaggregated data set for 75 countries and the four major reserve currencies, covering the period 1999-2020. Country coverage is not great, unfortunately, the major gap being Latin American countries. China, too, is missing. The dataset is not easy to find—it can be downloaded here. Users should cite Ito and McCauley (2020) and Chinn, Ito, and McCauley (2022).

The plot shows the currency composition for a selection of countries. Here, too, the picture is generally one of continuity: The data shows little change in the currency composition of FX reserves for the Euro Area (as a whole), the UK, or even Russia (data up to 2020). For several African countries, the USD-share in their reserve mix has significantly increased over the past two decades.

Holders of U.S. treasuries

If we want to know more about the composition of foreign holdings of U.S. securities, we need TIC data.

Holder structure of U.S. treasuries: Global perspective

The data provided by the Treasury International Capital (TIC) disaggregates foreign holdings of U.S. securities—including treasuries—by country. The historical file is updated annually and is available here. The latest version is brand new (released on 29 April 2023). TIC data is an invaluable resource—no other .csv file contains more information about the finance-geopolitics nexus. (Unfortunately, it is also an untidy mess.)

One challenge when working with the detailed historical file is to aggregate countries into the smallest number of groups that can still tell a story. Besides China and Japan, I am putting the emphasis on offshore financial jurisdictions (Anglo: UK & British Overseas, Euro: Benelux-Ireland, Asia: Hong Kong-Singapore, Misc. oligarch: Switzerland), as well as on the oil-exporting countries. These groups together hold three quarters of foreign-held U.S. treasuries.

The TIC data makes a distinction between treasuries with long (maturity of one year or more) and short remaining maturities. Short-dated treasuries account for only $1 trillion, vs $6 trillion of long-term debt, meaning we need to focus on the first panel. The big story is familiar by now: The share of the two largest foreign creditors of the U.S. government, China and Japan, peaked just after the global financial crisis at just above 50% of all foreign-held treasuries. This share has since declined at a steady clip and is down, as of 2022, to just above 30%.

Does this mean China and Japan have sold off their holdings of U.S. treasuries? For this, we need to look at nominal amounts. The next plot shows foreign-held U.S. treasuries of all maturities, long and short. We can see that the total volume of foreign-held U.S. debt has skyrocketed since 1994, from $500 billion to over $7 trillion. Zooming in on the big-2, it appears that China has indeed shrunk its U.S. treasury portfolio quite significantly, from $1.3 trillion in 2011 to just under $1 trillion today. Since that would be too easy, this decline in direct holdings is counteracted by a significant increase, after 2010, of indirect holdings via custodial accounts Belgium. Brad Setser has been documenting this for many years. Japan, meanwhile, has held on to its direct treasury holdings, which currently stand at $1.2 trillion). Regardless of the precise size of China’s custodial Belgian holdings, China and Japan have reversed or slowed their accumulation of treasuries but remain the largest—by far—foreign creditor to the U.S. government.

There is, of course, an elephant in this room: Total outstanding U.S. government debt held by the public has massively increased in recent years and stands at $25 trillion today (intragovernmental holdings add another $6 trillion to the total, see here). Who has absorbed this increased supply?

Holder structure of U.S. treasuries: Domestic vs foreign

To better understand the domestic distribution and the domestic-international divide in the holder structure of (publicly held) U.S. treasuries, we can turn to the Fed financial accounts. Getting this data via rdbnomics works, but is a little bit finicky. I went to this page to select one time series per sector (13 total). (Download via API link, see code below.)

This chart immediately makes obvious what we miss when looking only a COFER and TIC data: The massive internationalization of U.S. treasury holdings between 1945 and 2008, from virtually zero in 1945 to just below half of the outstanding volume by 2008. Equally astonishingly, the this trend towards the internationalization of the holder structure of U.S. treasuries has since reversed and currently stands at about 30%. In other words, although foreign holdings of U.S. treasuries have continued to grow, the relative share of foreigners in the holder structure has been in decline ever since the global financial crisis. The slack has been picked up, of course, by the Fed.

#Get Fed data on U.S. treasury holdings
treasury_holdings_fed_raw <- rdb(api_link = "https://api.db.nomics.world/v22/series?observations=1&series_ids=FED%2FOTHER_Z1%2FFL143061105.Q%2CFED%2FOTHER_Z1%2FFL153061105.Q%2CFED%2FOTHER_Z1%2FFL263061105.Q%2CFED%2FOTHER_Z1%2FFL403061105.Q%2CFED%2FOTHER_Z1%2FFL523061105.Q%2CFED%2FOTHER_Z1%2FFL563061103.Q%2CFED%2FOTHER_Z1%2FFL593061105.Q%2CFED%2FOTHER_Z1%2FFL623061103.Q%2CFED%2FOTHER_Z1%2FFL633061105.Q%2CFED%2FOTHER_Z1%2FFL653061105.Q%2CFED%2FOTHER_Z1%2FFL663061105.Q%2CFED%2FOTHER_Z1%2FFL703061105.Q%2CFED%2FOTHER_Z1%2FFL713061103.Q")
treasury_holdings_fed <- treasury_holdings_fed_raw[!is.na(value)]

#Select relevant variables
treasury_holdings_fed <- treasury_holdings_fed %>% 
  select(period, Sector, value)

#As tibble
treasury_holdings_fed <- as_tibble(treasury_holdings_fed)

#Remove unwanted extensions at end of sector names
treasury_holdings_fed$Sector <- sub('[ ][^ ]+$', '', treasury_holdings_fed$Sector)

#Fix Hedge & Exchange-traded ("funds" got cut off in previous step)
treasury_holdings_fed$Sector <- str_replace_all(treasury_holdings_fed$Sector, 
                                                c("Hedge" = "Hedge funds",
                                                "Exchange-traded" = "Exchange-traded funds"))

#Pivot wider 
treasury_holdings_fed <- treasury_holdings_fed %>% 
  pivot_wider(names_from = `Sector`, values_from = value)

treasury_holdings_fed <- treasury_holdings_fed %>% 
  rename("Banks" = "Private depository institutions") %>% 
  rename("Federal Reserve" = "Monetary authority") %>% 
  rename("Households" = "Households and nonprofit organizations")

#Eliminate negative values for `Security brokers and dealers`
treasury_holdings_fed <- treasury_holdings_fed %>% 
  mutate("Security brokers and dealers" = replace(`Security brokers and dealers`, 
                                                  `Security brokers and dealers` < 0, NA)) %>% 
  mutate("Households" = replace(`Households`, `Households` < 0, NA))

#Aggregate sectors  
treasury_holdings_fed <- treasury_holdings_fed %>% 
  rowwise() %>% 
  mutate("Other" = sum(c(`Nonfinancial business`, `Government-sponsored enterprises`, 
                         `Exchange-traded funds`, `Hedge funds`, `Security brokers and dealers`), 
                       na.rm = TRUE), .keep = "unused") %>%
  ungroup() %>% 
  mutate(Other = replace(Other, Other == 0, NA)) %>% 
  relocate(`Rest of the world`, .before = `Households`) %>% 
  relocate(Other, .before = `Federal Reserve`) %>% 
  pivot_longer("Rest of the world":"Federal Reserve", names_to = "Sector", values_to = "value")

#Define colors
cb_mono_green <- c("#80b1d3","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#005a32","#e34a33")

#Plot treasury holdings
treasury_holdings_fed %>%
  ggplot(aes(x = period, y = value,
             fill = factor(Sector, levels = unique(Sector)))) +
  geom_area(stat = "identity", position = "fill") +
  scale_fill_manual(values = natparks.pals("Yellowstone", 10)) +
  theme_bw() +
  labs(y = "Share of total", x = NULL, fill = NULL, 
       title = "Holders of U.S. federal debt, 1945 - 2022",
       caption = "Data: Federal Reserve, U.S. financial accounts.
Note: 'Other' includes nonfinancial businesses, GSEs, broker dealers,
ETFs, and hedge funds.")


Chinn, Menzie D., Hiro Ito, and Robert N. McCauley. 2022. “Do Central Banks Rebalance Their Currency Shares?” Journal of International Money and Finance 122: 102557.
Ito, Hiro, and Robert N. McCauley. 2020. “Currency Composition of Foreign Exchange Reserves.” Journal of International Money and Finance, Global Safe Assets, International Reserves, and Capital Flow, 102 (April): 102104. https://doi.org/10.1016/j.jimonfin.2019.102104.


  1. The R script generating these plots uses the packages rdbnomics, tidyverse, readxl, cowplot and NatParksPalettes.↩︎


BibTeX citation:
  author = {Braun, Benjamin},
  title = {TICled: {Global} {FX} Reserves and {U.S.} Treasury Holders},
  date = {2023-05-04},
  url = {https://www.benjaminbraun.org/posts/treasury-holdings},
  langid = {en}
For attribution, please cite this work as:
Braun, Benjamin. 2023. “TICled: Global FX Reserves and U.S. Treasury Holders.” May 4, 2023. https://www.benjaminbraun.org/posts/treasury-holdings.