Causality APIs 17: BRICS Traded Around The Dollar. Did That Weaken It?

Rocket Vector rocket logo on a dark branded background.

BRICS began as shorthand for Brazil, Russia, India, China, and South Africa, and the group has since expanded. In 2025, BRICS leaders continued work on local-currency financing and cross-border payment discussions [1].

That makes an easy headline:

  • BRICS traded around the U.S. dollar (USD)
  • therefore the dollar weakened

The mechanism is plausible. The conclusion is too fast.

Local-currency settlement can reduce dollar demand in one trade channel without proving broad dollar devaluation, because reserve demand, foreign exchange liquidity, and payment infrastructure move on different margins.

Share: BRICS local-currency settlement is a mechanism, not by itself a causal estimate of dollar weakness. #Causality #BRICS #Economy

In this article, we turn the claim into a smaller causal question:

  • what happens to dollar-demand pressure when local-currency settlement is pushed, holding dollar liquidity and geopolitical selection apart?

Start with the denominator

The Bank for International Settlements (BIS) reported that the dollar was on one side of 89.2 percent of all foreign exchange (FX) trades in April 2025 [2]. FX means foreign exchange trading across currencies.

The International Monetary Fund (IMF) also warns that reserve-share headlines can be distorted by exchange-rate movements. In the second quarter of 2025, the raw dollar share of allocated reserves fell to 56.32 percent, but the exchange-rate-adjusted decline was much smaller [3].

Those facts do not say BRICS payment efforts are irrelevant. They say the dollar system has more than one layer:

  • trade invoicing and settlement
  • reserve management by central banks
  • deep FX markets
  • payment rails and sanctions exposure
  • safe-asset demand

The causal question has to name which layer is moving.

Draw the graph

The directed acyclic graph (DAG), a graph whose arrows do not loop back, uses these variables:

  • LocalCurrencySettlement: trade settled outside the dollar
  • DollarDemandPressure: pressure supporting dollar use
  • ReserveDiversification: movement away from dollar reserves
  • DollarLiquidity: the market depth and convenience that keeps the dollar useful
  • PaymentInfrastructure: rails that make non-dollar settlement easier
  • GeopoliticalRisk: sanctions risk and geopolitical pressure

Directed acyclic graph linking geopolitical risk, dollar liquidity, payment infrastructure, local-currency settlement, reserve diversification, and dollar-demand pressure

Here is the same graph as a py-scm setup, including the toy coefficients that define the settlement, liquidity, reserve, and demand links:

import numpy as np

from pyscm.reasoning import create_reasoning_model

nodes = [
    "GeopoliticalRisk",
    "DollarLiquidity",
    "PaymentInfrastructure",
    "LocalCurrencySettlement",
    "ReserveDiversification",
    "DollarDemandPressure",
]

weighted_edges = [
    ("GeopoliticalRisk", "LocalCurrencySettlement", 0.70),
    ("GeopoliticalRisk", "ReserveDiversification", 0.40),
    ("GeopoliticalRisk", "DollarDemandPressure", -0.20),
    ("DollarLiquidity", "LocalCurrencySettlement", -0.50),
    ("DollarLiquidity", "DollarDemandPressure", 1.10),
    ("PaymentInfrastructure", "LocalCurrencySettlement", 0.80),
    ("PaymentInfrastructure", "DollarDemandPressure", -0.10),
    ("LocalCurrencySettlement", "ReserveDiversification", 0.40),
    ("LocalCurrencySettlement", "DollarDemandPressure", -0.35),
    ("ReserveDiversification", "DollarDemandPressure", -0.45),
]

idx = {node: i for i, node in enumerate(nodes)}
B = np.zeros((len(nodes), len(nodes)))
for parent, child, weight in weighted_edges:
    B[idx[child], idx[parent]] = weight

A = np.eye(len(nodes)) - B
cov = np.linalg.inv(A) @ np.eye(len(nodes)) @ np.linalg.inv(A).T

model = create_reasoning_model(
    {"nodes": nodes, "edges": [(p, c) for p, c, _ in weighted_edges]},
    {"v": nodes, "m": [0.0] * len(nodes), "S": cov.tolist()},
)

The backdoor paths matter. Geopolitical risk can cause both local-currency settlement and lower dollar demand. Dollar liquidity can suppress local-currency settlement while supporting dollar demand. If we read the raw settlement slice, we mix all of that together.

Build the toy structural model

The example uses a structural causal model (SCM). An SCM is a set of simple equations that generate each variable from its direct causes. The numbers are illustrative. The model is not estimating BRICS policy from public data.

The inference code asks for the observed settlement slice and the intervention effect:

mean, _ = model.pquery({"LocalCurrencySettlement": 1.0})
raw_slice = float(mean["DollarDemandPressure"])

do_high = model.iquery("DollarDemandPressure", {"LocalCurrencySettlement": 1.0})
do_low = model.iquery("DollarDemandPressure", {"LocalCurrencySettlement": 0.0})
intervention = model.equery(
    "DollarDemandPressure",
    {"LocalCurrencySettlement": 1.0},
    {"LocalCurrencySettlement": 0.0},
)

raw_slice asks how dollar-demand pressure differs when we observe high local-currency settlement. do_high and do_low ask what changes when settlement is set directly, and intervention reports the contrast.

Observed dollar-demand gap: -0.91
Intervention effect:        -0.53
Observed minus intervention: -0.38

The negative sign means lower dollar-demand pressure. The observed slice looks more dramatic because it also contains geopolitical risk and dollar-liquidity selection.

Observed local-currency settlement slice compared with the intervention effect on dollar-demand pressure

The intervention is still negative. In this toy world, local-currency settlement does weaken dollar-demand pressure in that channel. It just does not own the whole observed association.

Why this is not the same as devaluation

Dollar devaluation usually refers to the dollar losing value against other currencies or goods. Local-currency settlement is a mechanism that can reduce dollar use in specific transactions.

Those are related, but they are not identical.

A payment initiative can be real and still too small to move global dollar value. A reserve shift can be visible in raw data and still mostly reflect exchange-rate valuation. A trade settlement change can reduce demand for working balances without replacing the dollar’s role in FX markets.

The model forces the claim into a testable form:

model.equery(
    "DollarDemandPressure",
    {"LocalCurrencySettlement": 1.0},
    {"LocalCurrencySettlement": 0.0},
)

That is narrower than “BRICS devalued the dollar.” It says:

  • hold the background structure fixed
  • push local-currency settlement
  • measure the change in dollar-demand pressure

The practical read

The better headline is not “BRICS ended dollar dominance.” It is also not “nothing happened.”

The better causal claim is:

BRICS local-currency settlement can reduce dollar demand in specific settlement channels, but broad dollar weakness requires evidence that the mechanism is large enough to overcome dollar liquidity, reserve behavior, and FX-market network effects.

That is the kind of claim a causal graph can defend.

Sources

  1. Rio de Janeiro Declaration, BRICS, accessed April 28, 2026.
  2. OTC foreign exchange turnover in April 2025, Bank for International Settlements, accessed April 28, 2026.
  3. IMF Data Brief: Currency Composition of Official Foreign Exchange Reserves, International Monetary Fund, accessed April 28, 2026.

Download the runnable standalone Python example: Python example ZIP.

Leave a Reply

Discover more from Blogs

Subscribe now to keep reading and get access to the full archive.

Continue reading