How do Australia’s lithium production concentration and export controls impact China’s economic stability and commodity pricing?

Source: The New York Times

1. Introduction

Critical minerals are extremely vulnerable in the event of trade disruptions because their global production is highly concentrated. Trade disruptions in critical mineral markets significantly threaten global economic stability by leading to volatile commodity prices. This volatility affects the affordability of clean energy technologies and overall economic growth.

Take Lithium as an example. The lithium market has been experiencing rapid growth, with batteries emerging as the primary application for lithium. Demand for lithium has surged, with a 30% increase in consumption in 2022 following a doubling of demand in 2021 compared to 2017. Production levels are also on the rise, with an annual growth rate ranging between 25% and 35%.

Price volatility has characterized the lithium market in recent years, with prices initially rising steadily until early 2022 before cooling off due to destocking in Chinese markets and increased supplies. However, prices have begun to rise again. In 2022, there was a shortage of lithium chemical supplies, particularly in battery-grade products, but this deficit has been gradually alleviated in 2023 due to increased supply from existing producers and new entrants.

2.1 Australia and China: Pivotal Players in the Global Lithium Market Dynamics

  1. Australia’s Lithium Production: Historically, Australia has been a significant player in lithium mining, particularly in “hard rock” spodumene ore mines. Australian hard rock mining operations are competitive in the market and are retaining their competitiveness despite the recent decline in lithium prices. The country has also been investing in downstream processing capacities to transform lithium carbonate into lithium hydroxide, traditionally concentrated in China.

  2. China’s Role in the Lithium Market: Approximately 53 percent of the world’s lithium supply, which comes from Australia, is virtually all sold to China. China has been a dominant force in the downstream refining process of lithium.The country has progressively increased its domestic lithium mining capacity, although it faces challenges due to the geological conditions of its deposits. In 2022, there was a notable interest in lepidolite plays in China, particularly in Jiangxi province, due to their resource base. Chinese companies like CATL, Gotion, and BYD have announced investments in expanding lepidolite mining and conversion facilities. However, challenges like hight cost and substantial waste remain in producing battery-grade lithium from lepidolite.

  1. Record Growth in Battery Demand: The global demand for batteries, especially in clean energy applications, experienced significant growth in 2022. Battery demand for clean energy applications increased by two-thirds, driven primarily by the transportation sector, with electric car sales surpassing 10 million units. Energy storage systems also saw rapid growth, with capacity additions doubling in 2022.
Code
library(tidyverse) # pretty much always...
── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
✔ dplyr     1.1.4     ✔ readr     2.1.5
✔ forcats   1.0.0     ✔ stringr   1.5.1
✔ ggplot2   3.4.4     ✔ tibble    3.2.1
✔ lubridate 1.9.3     ✔ tidyr     1.3.1
✔ purrr     1.0.2     
── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag()    masks stats::lag()
ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
Code
library(readxl) # for reading excel files
# install.packages("here") # install the package if you haven't yet
library(here) # for using relative file paths
here() starts at /Users/fangjun/Desktop/Sais/Year2/Term2/Sustainable Finance/Paper 2
Code
path_to_sheet <- here("CM_Data_Explorer.xlsx")

path_to_sheet
[1] "/Users/fangjun/Desktop/Sais/Year2/Term2/Sustainable Finance/Paper 2/CM_Data_Explorer.xlsx"
Code
read_key_minerals_sheet <- partial(
  # provide the function, in this case readxl::read_excel()
  .f = read_excel,
  # provide any arguments you want filled in
  path = path_to_sheet,
  sheet = "1 Total demand for key minerals",
  col_names = FALSE
)

# now all we have to do is provide the range
sheet_header <- read_key_minerals_sheet(range = "A4:W5")
New names:
• `` -> `...1`
• `` -> `...2`
• `` -> `...3`
• `` -> `...4`
• `` -> `...5`
• `` -> `...6`
• `` -> `...7`
• `` -> `...8`
• `` -> `...9`
• `` -> `...10`
• `` -> `...11`
• `` -> `...12`
• `` -> `...13`
• `` -> `...14`
• `` -> `...15`
• `` -> `...16`
• `` -> `...17`
• `` -> `...18`
• `` -> `...19`
• `` -> `...20`
• `` -> `...21`
• `` -> `...22`
• `` -> `...23`
Code
sheet_header
# A tibble: 2 × 23
  ...1   ...2 ...3  ...4    ...5  ...6  ...7  ...8  ...9 ...10 ...11 ...12 ...13
  <lgl> <dbl> <lgl> <chr>  <dbl> <dbl> <dbl> <dbl> <dbl> <lgl> <chr> <dbl> <dbl>
1 NA       NA NA    State…    NA    NA    NA    NA    NA NA    Anno…    NA    NA
2 NA     2022 NA    2025    2030  2035  2040  2045  2050 NA    2025   2030  2035
# ℹ 10 more variables: ...14 <dbl>, ...15 <dbl>, ...16 <dbl>, ...17 <lgl>,
#   ...18 <chr>, ...19 <dbl>, ...20 <dbl>, ...21 <dbl>, ...22 <dbl>,
#   ...23 <dbl>
Code
sheet_header_processed <- sheet_header |> 
  # transpose the data
  t() |>
  # turn it back into a tibble
  as_tibble() |>
  # make them meaningful
  rename(scenario = V1, year = V2) |>
  # fill scenario down
  fill(scenario) |>
  #insert "Current" at top
  replace_na(list(scenario = "Current Year"))
Warning: The `x` argument of `as_tibble.matrix()` must have unique column names if
`.name_repair` is omitted as of tibble 2.0.0.
ℹ Using compatibility `.name_repair`.
Code
sheet_header_processed
# A tibble: 23 × 2
   scenario                 year 
   <chr>                    <chr>
 1 Current Year             <NA> 
 2 Current Year             2022 
 3 Current Year             <NA> 
 4 Stated policies scenario 2025 
 5 Stated policies scenario 2030 
 6 Stated policies scenario 2035 
 7 Stated policies scenario 2040 
 8 Stated policies scenario 2045 
 9 Stated policies scenario 2050 
10 Stated policies scenario <NA> 
# ℹ 13 more rows
Code
mineral_name <- read_key_minerals_sheet(range = "A32") |> 
  pull()
New names:
• `` -> `...1`
Code
mineral_name
[1] "Lithium"
Code
mineral_info <- read_key_minerals_sheet(range = "A33:W38")
New names:
• `` -> `...1`
• `` -> `...2`
• `` -> `...3`
• `` -> `...4`
• `` -> `...5`
• `` -> `...6`
• `` -> `...7`
• `` -> `...8`
• `` -> `...9`
• `` -> `...10`
• `` -> `...11`
• `` -> `...12`
• `` -> `...13`
• `` -> `...14`
• `` -> `...15`
• `` -> `...16`
• `` -> `...17`
• `` -> `...18`
• `` -> `...19`
• `` -> `...20`
• `` -> `...21`
• `` -> `...22`
• `` -> `...23`
Code
mineral_info
# A tibble: 6 × 23
  ...1          ...2 ...3     ...4    ...5    ...6    ...7    ...8    ...9 ...10
  <chr>        <dbl> <lgl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl> <lgl>
1 Electric …  69.7   NA    123.    228.    325.    433.    491.    466.    NA   
2 Grid batt…   3.44  NA      5.66   11.8    20.3    26.9    27.6    24.6   NA   
3 Total cle…  73.2   NA    129.    240.    346.    460.    518.    490.    NA   
4 Other uses  57     NA     70      79      87      95     104     113     NA   
5 Total dem… 130.    NA    199.    319.    433.    555.    622.    603.    NA   
6 Share of …   0.562 NA      0.648   0.752   0.799   0.829   0.833   0.813 NA   
# ℹ 13 more variables: ...11 <dbl>, ...12 <dbl>, ...13 <dbl>, ...14 <dbl>,
#   ...15 <dbl>, ...16 <dbl>, ...17 <lgl>, ...18 <dbl>, ...19 <dbl>,
#   ...20 <dbl>, ...21 <dbl>, ...22 <dbl>, ...23 <dbl>
Code
mineral_info_col_names <- names(mineral_info)

mineral_info_col_names
 [1] "...1"  "...2"  "...3"  "...4"  "...5"  "...6"  "...7"  "...8"  "...9" 
[10] "...10" "...11" "...12" "...13" "...14" "...15" "...16" "...17" "...18"
[19] "...19" "...20" "...21" "...22" "...23"
Code
sheet_headers_and_col_names <- sheet_header_processed |> 
  add_column(mineral_info_col_names = mineral_info_col_names)

sheet_headers_and_col_names
# A tibble: 23 × 3
   scenario                 year  mineral_info_col_names
   <chr>                    <chr> <chr>                 
 1 Current Year             <NA>  ...1                  
 2 Current Year             2022  ...2                  
 3 Current Year             <NA>  ...3                  
 4 Stated policies scenario 2025  ...4                  
 5 Stated policies scenario 2030  ...5                  
 6 Stated policies scenario 2035  ...6                  
 7 Stated policies scenario 2040  ...7                  
 8 Stated policies scenario 2045  ...8                  
 9 Stated policies scenario 2050  ...9                  
10 Stated policies scenario <NA>  ...10                 
# ℹ 13 more rows
Code
mineral_info_long <- mineral_info |> 
  rename(indicator = `...1`) |> 
  pivot_longer(cols = -indicator,
               names_to = "mineral_info_col_names") |> 
  add_column(mineral_name)

mineral_info_long
# A tibble: 132 × 4
   indicator         mineral_info_col_names value mineral_name
   <chr>             <chr>                  <dbl> <chr>       
 1 Electric vehicles ...2                    69.7 Lithium     
 2 Electric vehicles ...3                    NA   Lithium     
 3 Electric vehicles ...4                   123.  Lithium     
 4 Electric vehicles ...5                   228.  Lithium     
 5 Electric vehicles ...6                   325.  Lithium     
 6 Electric vehicles ...7                   433.  Lithium     
 7 Electric vehicles ...8                   491.  Lithium     
 8 Electric vehicles ...9                   466.  Lithium     
 9 Electric vehicles ...10                   NA   Lithium     
10 Electric vehicles ...11                  145.  Lithium     
# ℹ 122 more rows
Code
combined_data <- mineral_info_long |> 
  left_join(sheet_headers_and_col_names, by = join_by(mineral_info_col_names)) |> 
  # filter out what were empty columns (where years are NA) 
  filter(!is.na(year)) |> 
  # case_when is supercharged if else
  mutate(unit = case_when(
    indicator == "Share of clean technologies in total demand" ~ "Percent",
    .default = "kiloton"
    ),
    # convert the year column from character to numeric
    year = as.integer(year)
  ) |> 
  select(mineral_name, indicator, scenario, unit, year, value)

combined_data
# A tibble: 114 × 6
   mineral_name indicator         scenario                   unit     year value
   <chr>        <chr>             <chr>                      <chr>   <int> <dbl>
 1 Lithium      Electric vehicles Current Year               kiloton  2022  69.7
 2 Lithium      Electric vehicles Stated policies scenario   kiloton  2025 123. 
 3 Lithium      Electric vehicles Stated policies scenario   kiloton  2030 228. 
 4 Lithium      Electric vehicles Stated policies scenario   kiloton  2035 325. 
 5 Lithium      Electric vehicles Stated policies scenario   kiloton  2040 433. 
 6 Lithium      Electric vehicles Stated policies scenario   kiloton  2045 491. 
 7 Lithium      Electric vehicles Stated policies scenario   kiloton  2050 466. 
 8 Lithium      Electric vehicles Announced pledges scenario kiloton  2025 145. 
 9 Lithium      Electric vehicles Announced pledges scenario kiloton  2030 349. 
10 Lithium      Electric vehicles Announced pledges scenario kiloton  2035 671. 
# ℹ 104 more rows
Code
library(esquisse)
combined_data %>%
 filter(indicator %in% c("Electric vehicles", "Grid battery storage", "Other uses")) %>%
 ggplot() +
  aes(
    x = indicator,
    y = value,
    fill = indicator,
    colour = indicator
  ) +
  geom_col() +
  scale_fill_hue(direction = 1) +
  scale_color_hue(direction = 1) +
  labs(
    x = "Usage",
    y = "Value",
    title = "Lithium Demand for Clean Energy",
    subtitle = "Electric Vehicle and Battery account for the most",
    caption = "Jun!"
  ) +
  theme_minimal()

Code
library(dplyr)
library(ggplot2)

combined_data %>%
 filter(indicator %in% "Share of clean technologies in total demand") %>%
 ggplot() +
 aes(x = year, y = value, fill = scenario, colour = scenario) +
 geom_point(shape = "circle", 
 size = 1.5) +
 geom_smooth(span = 0.75) +
 scale_fill_brewer(palette = "BrBG", direction = 1) +
 scale_color_brewer(palette = "BrBG", 
 direction = 1) +
 labs(title = "Total Demand Forecast for Lithium in All Scenarios", subtitle = "The share of EV and Battery is growing in total demand", 
 caption = "Jun!") +
 theme_minimal()+
 theme(legend.text = element_text(size = 8)) # Adjust the size as needed
`geom_smooth()` using method = 'loess' and formula = 'y ~ x'
Warning in max(ids, na.rm = TRUE): no non-missing arguments to max; returning
-Inf

Warning in max(ids, na.rm = TRUE): no non-missing arguments to max; returning
-Inf

Warning in max(ids, na.rm = TRUE): no non-missing arguments to max; returning
-Inf

  1. China’s Growing Battery Demand: One of a key reason for China’s high demand for lithium is it has experiencing been a significant increase in battery demand for electric vehicles, with sales rising rapidly. Battery demand for vehicles in China grew by more than 70% in 2022 as electric car sales surged. This surge in demand has contributed to the overall growth in the lithium market, as batteries are a primary application for lithium.

Overall, these trends underscore the dynamic nature of the lithium market, with Australia and China playing crucial roles in the production, processing, and supply of lithium to meet the rising demand for battery technologies.

2.2 Australia Tries to Break Its Dependence on China for Lithium Mining

Australia’s Efforts to Establish Domestic Lithium Refining Amid Geopolitical Shifts

In a strategic move to reduce its reliance on China for lithium mining, Australia is actively pursuing the development of its own lithium refining capabilities. This initiative, driven by the government and leading lithium corporations, aims to enhance job creation, mitigate environmental impacts of shipping spodumene (with 94 percent currently discarded as waste), and secure battery chemical supply chains in the face of rising geopolitical tensions.

Inflation Reduction Act: Refining lithium domestically positions Australia to capitalize on the Inflation Reduction Act introduced by the Biden administration in 2022. The Act incentivizes electric vehicle production using critical minerals sourced from North America or allied countries like Australia that have free trade agreements with the United States and are not influenced by ‘foreign entities of concern’ (FEOC). This legislation is designed to challenge China’s stronghold in the green energy sector by providing financial incentives to companies from allied nations.

G7 Summit Announcement: At the Group of 7 summit in 2023, President Biden and Australian Prime Minister Anthony Albanese unveiled joint projects to bolster the supply chain for clean energy “critical minerals.”

Corporate Acquisition Restrictions: Furthermore, in July 2023, Australia took decisive action to maintain sovereignty over its mineral resources by implementing lithium export controls. The FIRB, with support from Treasurer Jim Chalmers, barred the acquisition of Alita Resources Ltd by Austroid Corporation, linked to the Chinese mining sector. This prohibition is part of a broader strategic aim to fortify alliances and maintain autonomy over vital exports like lithium.

Despite these initiatives, trade data indicates that reducing dependence on China on lithium refining could require sustained long-term commitment and strategic planning. Detailed trade data indicates that after a brief period of redirected exports to other Asian markets during China’s economic sanctions, Australia’s trade with China is rebounding. From a peak of 43% in May 2020, China’s share of Australia’s exports had fallen to 28% but has since recovered to 36%. Meanwhile, Japan’s share has declined, and other Asian markets have also seen a reduction in trade with Australia.

Source: Australian Bureau of Statistics (six-month rolling total)

These developments highlight the complex and shifting nature of international trade, particularly in the realm of critical minerals like lithium, which are essential for the burgeoning clean energy industry. Australia’s endeavor to refine lithium domestically is not just an economic decision but also a geopolitical one, as the nation navigates its trade relationships and strives for greater economic independence.

2.3 Effects on China Market and Commodity Pricing

Many critical minerals that are vital for clean energy technologies experienced broad-based price increases in 2021 and early 2022, accompanied by strong volatility and significant peaks, particularly for nickel and lithium.

  1. Price Volatility from 2022-2023: The lithium market in China has experienced significant price volatility over the past few years. The lithium has more than tripled in price over 2022, and it’s rallied more than 1,200% since 2020. The extraordinary surge has been driven by tight supplies to electric-vehicle manufacturers, one of the bright spots in China’s struggling economy. However, as as cracks in near-term consumption started to surface, the initially rosen prices cooled off after Nov. 2022 due to destocking in Chinese markets and increased supplies.

  1. Price Discrepancies in 2023: In April 2023, lithium carbonate prices in China plummeted by over 60%, while prices in Europe dropped by only 20%. This disparity was primarily linked to destocking across the battery supply chain in China, which lowered apparent demand for lithium despite robust underlying demand. The domestic lithium prices in China have shown signs of rebound since May 2023, with growing optimism for a near-term recovery in demand 19.


3. Price Rebound in 2024: In 2024, China’s lithium market began showing signs of recovery after a significant downturn the previous year. The spot price of lithium carbonate, a crucial material for electric vehicle batteries, rebounded to its highest level since December, following a dramatic drop of over 80% in 2023. This rebound was influenced by a combination of factors, including speculation about the impacts of an environmental crackdown in a key supply region and production curtailments by major producers in response to the prior glut. Despite these positive signs, there remains a degree of skepticism regarding the durability of this recovery. Analysts caution that the market still faces a surplus, and the current price increase could be transitory, potentially influenced more by short-term speculative factors than by a fundamental shift in the market dynamics.


3. Conclusion

The dynamics of the global lithium market, with Australia and China playing pivotal roles, underscore the intricate interplay between geopolitics, market demand, and commodity pricing in the realm of critical minerals. Australia’s efforts to establish its own lithium refining capabilities reflect a strategic move to enhance economic independence and leverage geopolitical shifts, particularly in light of the Inflation Reduction Act. China’s experience with lithium price volatility and recent rebounds in domestic prices highlight the complexities of supply chain management and the impact of market sentiment on commodity pricing. As the global push for clean energy technologies accelerates, the lithium market’s evolution will continue to be shaped by these factors, influencing investment decisions and international trade dynamics. The ongoing geopolitical landscape and economic policies will undoubtedly play crucial roles in determining the future of lithium supply chains and the broader clean energy sector.