Moody’s Downgrades US Government Debt

Author

Martina R.

Published

17 May 2025

Code
# Fetch the data from FRED using quantmod
series_id <- "FYFSGDA188S"
getSymbols(series_id, src = "FRED", from = "1975-01-01", to = "2024-12-31")

# Get the data into a dataframe
us_deficit_gdp_data <- as.data.frame(get(series_id))
us_deficit_gdp_data$date <- index(get(series_id))
us_deficit_gdp_data <- as_tibble(us_deficit_gdp_data) 
Code
# Plot the data
ggplot(us_deficit_gdp_data, aes(x = date, y = FYFSGDA188S)) + # Use the column name directly
  geom_line(color = mypalette[2], size = 1.2) +
  geom_hline(yintercept = 0, color = "black", linetype = "dashed") +
  labs(
    title = "US Fiscal Deficit to GDP",
    x = "Year",
    y = "Deficit/Surplus (% of GDP)",
    caption = "Source: Federal Reserve Economic Data (FRED), Series ID: FYFSGDA188S"
  ) +
  scale_x_date(date_breaks = "5 years", date_labels = "%Y") +
  theme_minimal() +
  theme(plot.title = element_text(size = 14, face = "bold", hjust = 0.5),
        axis.title.x = element_text(margin = margin(t = 10)),
        axis.title.y = element_text(margin = margin(r = 10)),
        plot.caption = element_text(hjust = 0),
        panel.background = element_rect(fill = "#f9f9f9",
                                colour = "#f9f9f9",
                                size = 0, linetype = "solid"),
    panel.border = element_blank(),
    plot.background = element_rect(fill = "#f9f9f9", color = NA),
    panel.grid.major.x = element_blank(), 
    panel.grid.minor = element_blank())+
    transition_reveal(date)+
  shadow_wake(wake_length = 0.3) 

Credit Downgrade

On Friday 16 May 2025, Moody’s Ratings Service downgraded the creditworthiness of the United States due to escalating government debt, increased interest payments, and rising entitlement spending. The rating was downgraded to Aa1 from Aaa, now in line of that of other rating agencies.

This decision reflects concerns regarding the long-term fiscal outlook, which Moody’s perceives as deteriorating since a prior warning issued in November 2023 about the potential loss of the U.S.’s pristine credit reputation.

The downgrade is expected to negatively impact borrowing costs for the government, as increased yields may be demanded by investors in reaction to the heightened risk associated with U.S. debt.This downgrade could also adds to economic pressure that is already mounting due to President Trump’s evolving tariff policies. According to Moody’s, projected federal deficits are anticipated to expand significantly, soaring from 6.4% of GDP in 2024 to nearly 9% by 2035, with interest payments becoming a substantial portion of government expenditures.

For the vast majority of the last four decades, the U.S. federal government has consistently spent more than it has taken in. Budget surpluses have been rare, occurring only during a brief period in the late 1990s under President Clinton. Typically, the U.S. has run deficits averaging 3.0% of GDP between 1985 and 2020. While the COVID-19 pandemic caused the deficit to surge to 13%, significant deficits have persisted even during the economic recovery that followed in 2021 and beyond.

The Congressional Budget Office (CBO) projects persistently high U.S. budget deficits averaging 7.0% of GDP over the next eight years, leading to a rapidly increasing national debt, forecast to reach 134% of GDP by 2034 and 211% by 2055. Compounding this issue, maturing low-interest debt is being refinanced at significantly higher current rates, driving up debt servicing costs and further widening deficits. Moody’s recent downgrade of the U.S. credit rating reflects these unsustainable debt trends. While U.S. Treasury bonds and the dollar remain dominant for now, the situation is not without risk, as demonstrated by the UK’s experience in 2022. A recession, higher interest rates, or policy errors could trigger a fiscal crisis.

Although apprehension concerning the U.S. government’s financial stability has persisted over time, it is now being amplified. The possibility that current Republican budget proposals could worsen the situation is generating increased fears about an impending fiscal crisis.

While some level of market uncertainty was acknowledged, it was emphasized that U.S. assets, particularly Treasuries, continue to be viewed as strong and attractive by investors. Despite the existence of rumours regarding shifting preferences, confidence in dollar-denominated assets remains intact.

Ongoing Political Challenges

Amid ongoing political negotiations concerning President Trump’s tax cut proposals, Moody’s expressed skepticism about the current administration’s ability to implement effective measures to reverse the trend of rising deficits. The difficulty in reaching bipartisan agreement on fiscal reform has contributed to this assessment. The House Budget Committee’s recent decisions reflect the complexities and contention surrounding federal spending and deficit management.

Other Credit Rating Agencies

Other rating agencies have previously downgraded US debt. Fitch Ratings had downgraded U.S. government debt in 2023, while Standard & Poor’s made a similar adjustment over a decade ago following a high-stakes confrontation regarding the debt ceiling. The message from Moody’s emphasizes a need for remedial action to stabilize the fiscal situation, highlighting a continued reliance on increasing debt without addressing the underlying issues of mandatory spending and revenue generation.

Implications

The recent downgrade of the U.S. credit rating by Moody’s from Aaa to Aa1 carries several implications for the Treasury market. Firstly, it signals a potential decrease in investor confidence regarding the U.S. government’s ability to manage its debt and fiscal deficits. This could lead to a rise in Treasury yields across different maturities as investors may demand a higher premium to compensate for the perceived increased risk. As seen immediately after the announcement, both 10-year and 30-year Treasury yields experienced an upward movement. This increase in yields can make borrowing more expensive for the U.S. government, potentially exacerbating the very fiscal challenges that led to the downgrade. Furthermore, the downgrade might lead to some volatility in bond prices, as investors reassess their holdings of U.S. debt. While the U.S. Treasury market remains a deep and liquid market, a sustained loss of confidence could make it comparatively less attractive over time.

Diminished Role of USD?

The recent downgrade of the U.S. debt rating by Moody’s to Aa1 from Aaa can be seen as a potential catalyst, or at least a significant marker, in the ongoing trend of de-dollarization and a potential weakening of the U.S. dollar’s global standing. Moody’s explicitly cited concerns over the growing federal budget deficit and the challenges of refinancing increasing U.S. debt in an environment of high borrowing costs as key reasons for the downgrade. These very factors – fiscal irresponsibility and mounting debt – are often highlighted by nations seeking to reduce their reliance on the dollar.

Code
library(quantmod)
library(zoo)
library(tidyverse)
library(plotly)
library(ggthemes) # For more plot themes

# Get US Dollar Index data (symbol "DX-Y.NYB" from Yahoo Finance)
getSymbols("DX-Y.NYB", src = "yahoo", from = "2000-01-01") # Adjust the date range

us_dollar_index <- as.data.frame(`DX-Y.NYB`)
us_dollar_index$Date <- index(`DX-Y.NYB`) # Extract the date
us_dollar_index$Date <- as.Date(us_dollar_index$Date) # Ensure Date is a date format
colnames(us_dollar_index)[4] = "Close"
# Extract only the "Date" and "Close" columns
us_dollar_index_subset <- us_dollar_index[, c("Date", "Close")]
Code
p <- ggplot(us_dollar_index_subset, aes(x = Date, y = Close))+
  geom_line(color = "blue", linewidth = 1) + # Make the line blue and thicker
  labs(title = "US Dollar Index (DX-Y.NYB)",
       y = "Index Value",
       x = "") +
       theme_minimal() + 
  theme(plot.title = element_text(size = 14, face = "bold", hjust = 0.5),
        plot.caption = element_text(hjust = 0),
        panel.background = element_rect(fill = "#f9f9f9",
                                colour = "#f9f9f9",
                                size = 0, linetype = "solid"),
        panel.border = element_blank(),
        plot.background = element_rect(fill = "#f9f9f9", color = NA),
    panel.grid.major.x = element_blank(), 
    panel.grid.minor = element_blank(),
    legend.position = 'bottom')+
  scale_x_date(date_breaks = "2 years", date_labels = "%Y") #add date breaks

ggplotly(p)

The argument for de-dollarization, as pointed out by GoldmanSachs analysts Suwanapruti and Jio of Goldman Sachs, often stems from a desire by countries to diversify their economic dependencies, reduce exposure to U.S. economic policies and potential sanctions, and foster greater use of their own currencies in international trade. President Trump’s tariff policies, by creating trade tensions and uncertainty, are indeed seen by many as an accelerant to this trend. Countries targeted by these tariffs or concerned about future unilateral actions might be more inclined to seek alternative currencies for trade and investment to mitigate risks associated with the U.S. dollar system.

Moody’s downgrade could reinforce the narrative that the long-term fiscal health of the U.S. is a concern, potentially making U.S. dollar-denominated assets comparatively less attractive over time. While the U.S. dollar still benefits from its deep and liquid markets and its established role in global finance, a sustained erosion of confidence due to factors highlighted by Moody’s could gradually encourage nations to explore alternatives.

Code
chp1 <- c("#999999", "#E69F00", "#56B4E9", "#009E73",
          "#F0E442", "#0072B2", "#D55E00", "#CC79A7",
          "#387176")

# Data Preparation

# Create the data frame
df <- data.frame(
  Currency = c("Australian dollar", "Canadian dollar", "Chinese yuan renminbi", "Euro", "Japanese yen", "Other currencies", "Pound sterling", "Swiss franc", "US dollar"),
  Q2_2023 = c(219.70, 279.60, 273.38, 2204.44, 600.18, 404.72, 532.63, 21.16, 6640.15),
  Q3_2023 = c(222.54, 275.40, 260.61, 2146.83, 601.30, 426.30, 527.92, 19.79, 6496.52),
  Q4_2023 = c(245.53, 296.47, 262.18, 2284.37, 651.68, 442.92, 557.14, 22.27, 6690.61),
  Q1_2024 = c(248.37, 295.58, 246.99, 2252.16, 654.67, 437.35, 562.25, 21.91, 6773.34),
  Q2_2024 = c(256.41, 306.80, 245.40, 2265.12, 642.00, 491.30, 566.75, 22.42, 6664.41),
  Q3_2024 = c(268.71, 324.46, 257.89, 2372.35, 690.01, 534.73, 589.78, 19.83, 6786.37),
  Q4_2024 = c(235.93, 317.93, 249.68, 2274.97, 667.12, 532.84, 542.45, 19.76, 6631.27)
)

df_long <- df %>%
  pivot_longer(cols = starts_with("Q"),
               names_to = "Quarter",
               values_to = "Reserves")

# Convert 'Quarter' to a factor with the correct order
df_long$Quarter <- factor(df_long$Quarter, levels = c("Q2_2023", "Q3_2023", "Q4_2023", "Q1_2024", "Q2_2024", "Q3_2024", "Q4_2024"))

# Plotting the Stacked Bar Chart
ggplot(df_long, aes(x = Quarter, y = Reserves, fill = Currency)) +
  geom_bar(stat = "identity") +
  labs(title = "Official Foreign Exchange Reserves by Currency (US Dollar, Billion)",
       x = "Quarter",
       y = "Reserves (US Dollar, Billion)",
       fill = "Currency") +
  theme_minimal() +
  theme(plot.title = element_text(size = 14, face = "bold", hjust = 0.5),
        plot.caption = element_text(hjust = 0),
        panel.background = element_rect(fill = "#f9f9f9",
                                colour = "#f9f9f9",
                                size = 0, linetype = "solid"),
        panel.border = element_blank(),
        plot.background = element_rect(fill = "#f9f9f9", color = NA),
        panel.grid.major.x = element_blank(), 
        panel.grid.minor = element_blank(),
        legend.position = 'bottom')+
  scale_fill_manual(values = chp1)

Code
data_usd <- data.frame(
  Category = factor(c("US in global trade", "US in global GDP", "USD in intl. SWIFT payments", "USD in official FX reserves", "USD in FX transaction volume"),
                    levels = c("US in global trade", "US in global GDP", "USD in intl. SWIFT payments", "USD in official FX reserves", "USD in FX transaction volume")),
  Value_2024 = c(11.3, 26.5, 47.9, 58.2, 89.8),
  Change_2014_2024 = c(0.7, 3.3, 2.9, -4.9, 7.1)
)

# Create the ggplot
ggplot(data_usd, aes(y = Category)) +
  geom_col(aes(x = Value_2024), fill = "#1f77b4") + # Dark blue color
  geom_text(aes(x = Value_2024 + sign(Change_2014_2024) * 2, label = Value_2024),
            hjust = 2.1, vjust = 0.5, size = 4) +
  geom_point(aes(x = ifelse(Change_2014_2024 >= 0, Value_2024 + Change_2014_2024 / 2, Value_2024 + Change_2014_2024 / 2),
                 color = ifelse(Change_2014_2024 >= 0, "Positive Change", "Negative Change")),
             size = 3) +
  geom_text(aes(x = ifelse(Change_2014_2024 >= 0, Value_2024 + Change_2014_2024 + 2, Value_2024 + Change_2014_2024 - 2),
                label = paste0(ifelse(Change_2014_2024 >= 0, "+", ""), Change_2014_2024)),
            hjust = "left", vjust = 0.5, size = 3) +
  scale_fill_manual(name = "Change from 2014", values = c("Positive" = "#018000", "Negative" = "#e31a1c"),
                    labels = c("Positive", "Negative")) +
  scale_color_manual(name = "Change from 2014", values = c("Positive Change" = "#018000", "Negative Change" = "#e31a1c"),
                     labels = c("Negative", "Positive")) +
  labs(title = "USD Role as a Global Currency",
       subtitle = "Share of the United States / the U.S. dollar in the global\neconomy and global financial transactions (in percent)",
       x = "Share (in %)",
       y = "",
       caption = "* Latest available (full year, latest quarter/month)\nSources: IMF, SWIFT, WTO, New York Fed") +
  theme_minimal() +
  theme(legend.position = "bottom",
        legend.title = element_text(size = 9),
        legend.text = element_text(size = 8),
        plot.title = element_text(size = 14, face = "bold", hjust = 0.5),
        plot.subtitle = element_text(size = 10),
        axis.text.y = element_text(hjust = 1),
        axis.ticks.y = element_blank(),
        panel.background = element_rect(fill = "#f9f9f9",
                                colour = "#f9f9f9",
                                size = 0, linetype = "solid"),
        panel.border = element_blank(),
        plot.background = element_rect(fill = "#f9f9f9", color = NA),
        panel.grid.major.x = element_blank(), 
        panel.grid.minor = element_blank(),
        plot.caption = element_text(hjust = 0, size = 8)) +
  guides(color = guide_legend(title = "Change from 2014 \n(in p.p.)", override.aes = list(shape = 16, size = 3))) # Remove fill legend as color legend represents change

However, the U.S. dollar’s decline, if it occurs at all, is likely to be a long way off. The dollar still underpins a significant portion of global trade, finance, and reserves due to the sheer size and stability of the U.S. economy and the liquidity of its financial markets. While Moody’s downgrade serves as a warning and aligns with de-dollarization arguments, it does not necessarily signify an imminent collapse of the dollar’s global status. It does, however, add weight to the concerns of countries seeking to diversify and potentially move away from over-reliance on the U.S. currency in the long run.