4.62 Trading Non-USD Crosses with Vol-Weighted USD Legs
A cross like CAD/MXN is two USD legs in disguise, and relative volatility drives it, not macro. Weight the legs inversely to their vol so each contributes equal risk, not whatever the peso imposes.
Ask a macro trader about CAD/MXN and they will tell you a story about oil versus Mexican rates, about Canada's terms of trade versus Banxico's hiking cycle. The story is not wrong, but it is mostly beside the point on any horizon shorter than a quarter. CAD/MXN is a synthetic cross with no native market of its own. What you actually trade when you click "buy CAD/MXN" is two USD legs stapled together, and the thing that moves your P&L day to day is not the relative macro narrative, it is the relative volatility of those two legs. USD/MXN swings several times harder than USD/CAD, so a naive cross position is dominated by the peso leg whether you meant it to be or not.
The old article "Cross-Pair Signals: Can EUR Predict GBP?" made the structural point that two instruments move together because they share a driver. Every non-USD cross shares the dollar. CAD/MXN is CAD priced through the dollar against MXN priced through the dollar, which means it is a position in two USD pairs at once.
$$ \frac{\text{CAD}}{\text{MXN}} \;=\; \frac{\text{USD/MXN}}{\text{USD/CAD}} $$
The cross equals the ratio of its two dollar legs. Going long CAD/MXN, meaning long CAD and short MXN, decomposes into being short USD/CAD (long CAD against the dollar) and long USD/MXN (short MXN against the dollar). The dollar exposure in the two legs offsets and what is left is the clean CAD-versus-MXN bet you wanted. The decomposition is exact. The interesting question is how much of each leg to hold.
Equal notional is not equal risk
If you put on the two legs in equal notional size, you do not get a balanced CAD-versus-MXN position. You get a position whose risk is almost entirely the peso, because USD/MXN moves far more per day than USD/CAD. This is the same error the old article "Why Volatility-Adjusted Position Sizing Matters" attacked at the portfolio level: equal dollars is not equal bets, and the loudest instrument hijacks your P&L. Here the two instruments are the two legs of a single cross, and the fix is identical. Size each leg inversely to its own volatility so both contribute the same risk.
$$ N_i \;\propto\; \frac{1}{\sigma_i} \qquad\Longrightarrow\qquad \frac{N_{\text{USD/MXN}}}{N_{\text{USD/CAD}}} \;=\; \frac{\sigma_{\text{USD/CAD}}}{\sigma_{\text{USD/MXN}}} $$
The notional N_i of each leg scales as one over that leg's volatility σ_i, so the risk contribution N_i · σ_i comes out equal across the two legs. The ratio of the two notionals is the inverse ratio of the two volatilities: the more volatile leg gets the smaller notional. Because USD/MXN is the louder of the two, it carries less notional than USD/CAD, not more.
Put numbers on it the way Donnelly's source does. Suppose you would naively size the direct cross at 130 units. Measure the recent daily volatility of each leg and find USD/MXN running about a third hotter than USD/CAD, so the vol ratio σ_USD/CAD / σ_USD/MXN is roughly 0.75. Apply it and you hold the legs at long 75 USD/MXN against short 100 USD/CAD. The peso leg, the volatile one, takes the smaller notional precisely so it stops dominating the position. Now each leg contributes the same daily risk, and the trade delivers the relative-performance return you were actually betting on instead of a thinly disguised short-peso punt.

Why bother instead of clicking the cross
Two reasons, one structural and one practical. The structural one is control: when you build the cross from weighted legs you decide the risk split, instead of inheriting whatever split the volatility ratio happens to impose on a single ticket. You can run the legs at equal risk, or deliberately tilt toward the leg you have more conviction on, or hedge out one leg when its USD pair gets driven by something idiosyncratic. The decomposition turns one opaque bet into two dials you can set.
The practical one is liquidity. The direct cross CAD/MXN is thin, and the old FX-clock and bid/ask reality means a thin pair costs you a wider spread and more impact. Both USD legs, USD/CAD and USD/MXN, are far more liquid than the cross built from them, so executing the two legs separately often costs less than the single synthetic ticket your platform would have quoted anyway, since the platform builds it from those same legs and charges you for the construction.
Where this quietly breaks
The volatility you weight by is estimated, and the old article on volatility-adjusted sizing already flagged the catch: vol lags. When peso volatility jumps, your weights are stale, the MXN leg is briefly larger in risk terms than you intended, and you are oversized into exactly the move you were trying to balance against. Faster estimators and floors help, but the estimate is never current. Rebalance the leg weights as volatility shifts, and accept that you are always slightly behind.
The decomposition is exact in price but not in risk, because the two USD legs are correlated, and that correlation is not constant. When USD/CAD and USD/MXN both spike on a broad dollar move, the dollar exposure you thought cancelled does not fully cancel and you are left holding residual long or short dollar. The cleaner your equal-and-opposite dollar notionals, the smaller that residual, but a correlation-driven mismatch in the moves themselves can still leak USD beta into a position you booked as USD-neutral. Watch the residual dollar exposure, do not assume it is zero.
You also now pay two spreads and carry two financing legs instead of one. For a position you hold for weeks the construction cost is trivial against the risk control you gain. For something you flip intraday, two sets of round-trip costs can eat the edge, so the vol-weighted decomposition is a tool for holding a relative-value view, not for scalping a cross.
And the whole approach assumes the dollar legs really are the dominant driver, which is true most of the time and false exactly when a country-specific shock hits. A Banxico surprise or a Canadian oil shock drives one leg on its own news, the relative-beta framing stops describing the move, and you are back in the macro story the trade was built to sidestep. That is not a flaw in the method, it is the boundary of where it applies: vol-weighted legs capture the relative-volatility regime that governs the cross on normal days, and a genuine idiosyncratic shock is the regime change that ends it.
Building it
The recipe is short. Measure each leg's recent return volatility, set the leg notionals inversely proportional to those vols so risk contributions match, and orient the legs to express the cross direction you want. Rebalance when vols drift.
import numpy as np
import pandas as pd
def vol_weighted_legs(usd_quote_a: pd.Series, usd_quote_b: pd.Series,
gross_notional: float, lookback: int = 20) -> dict:
# usd_quote_a, usd_quote_b: e.g. USDCAD and USDMXN price series
# cross A/B (long A, short B) = short USD/A leg + long USD/B leg
sig_a = np.log(usd_quote_a).diff().rolling(lookback).std().iloc[-1]
sig_b = np.log(usd_quote_b).diff().rolling(lookback).std().iloc[-1]
inv = np.array([1.0 / sig_a, 1.0 / sig_b])
w = inv / inv.sum()
return {
"short_usd_a_notional": gross_notional * w[0], # short USD/A -> long A
"long_usd_b_notional": gross_notional * w[1], # long USD/B -> short B
"vol_a": float(sig_a),
"vol_b": float(sig_b),
}
The function returns the two leg notionals split by inverse volatility. The lookback is an arbitrary dial trading reactivity against noise in the vol estimate, the same trade-off every rolling volatility measure carries, and you should sweep it rather than trust the default. Orient usd_quote_a as the leg whose currency you want to be long in the cross and usd_quote_b as the leg you want to be short, and the signs follow from the decomposition above.
KEY POINTS
- A non-USD cross like CAD/MXN has no native market. It is two USD legs (USD/CAD and USD/MXN) stapled together, and on short horizons relative volatility, not the macro story, drives the P&L.
- Long CAD/MXN decomposes exactly into short USD/CAD plus long USD/MXN. The dollar exposure offsets and the clean CAD-versus-MXN bet remains.
- Equal notional on the two legs is not equal risk, the same error from the old article "Why Volatility-Adjusted Position Sizing Matters." The louder leg dominates, so size each leg inversely to its volatility: the more volatile USD/MXN gets the smaller notional (long 75 USD/MXN against short 100 USD/CAD in the worked case).
- Building the cross from weighted legs gives you two dials instead of one opaque ticket, and the liquid USD legs often execute cheaper than the thin direct cross, which the platform synthesizes from those same legs anyway.
- It breaks where vol estimates lag, where leg correlation leaks residual USD beta into a position booked as dollar-neutral, where double round-trip costs kill an intraday edge, and where a country-specific shock drives one leg on its own news and ends the relative-beta regime. This is a tool for holding a relative-value view, not for scalping.
References
- The Art of Currency Trading - Brent Donnelly (Amazon)
- Cross rate (Investopedia)
- Risk parity (Wikipedia)
- Volatility (finance) (Wikipedia)
- Trading Systems and Methods - Perry Kaufman (Amazon)
- Cybernetic Trading Strategies - Murray Ruggiero (Amazon)
- Triangular Arbitrage, Market Microstructure, and Correlation in Foreign Exchange Markets
- Dollar Dominance in FX Trading
- BIS Working Papers: FX market structure and liquidity (Global FX market microstructure overview)
- The Trend Is Our Friend: Risk Parity, Momentum and Trend Following in Global Asset Allocation
- Trend Following, Risk Parity and Momentum in Commodity Futures
- The Carry Trade: Risks and Drawdowns
- Liquidity in the Global Currency Market
- Liquidity Spillover in Foreign Exchange Markets