XS MomentumRisk: Medium

Cross-Sectional Momentum

Rank G10 currencies by 6-month return and long the winners, short the losers

Risk

Medium

Holding Period

1 month (monthly rebalanced)

Best For

Markets with clear currency leadership (strong USD or strong JPY regimes)

How it works

Different from the existing TSMOM (each asset vs. itself), cross-sectional momentum is about *relative* strength: even in a down market we long the ones that fell least. Asness, Moskowitz & Pedersen (2013) showed this is a distinct factor from time-series momentum. For FX we rank currencies, not pairs, and express each long/short through the available quote (inverting direction when necessary).

Mathematical Foundation

rank_i = R_i,6M (currency vs USD) long top_k, short bottom_k

Signal Generation Logic

  1. 1Build each G10 currency's 'price vs USD' series (direct if ccy_USD is available, inverted if only USD_ccy)
  2. 2At each rebalance date, compute the trailing 6-month log return for every currency with enough history
  3. 3Rank currencies by this return — USD itself is implicitly the base
  4. 4Long the top_k currencies (strongest vs USD), short the bottom_k (weakest)
  5. 5Express each currency exposure through its available pair — if only USD_ccy exists, flip direction accordingly
  6. 6Rebalance monthly — this is a slower factor than daily trading

Parameters Explained

lookback_months

Ranking window for trailing currency returns (in months). 6 months is the Asness–Moskowitz–Pedersen standard; 3 captures faster shifts but is noisier, 12 is slower but steadier.

Default

6
top_k

Number of longs and number of shorts per rebalance. Smaller k = higher conviction but less diversification.

Default

2
rebalance_freq

How often to re-rank and re-emit. Monthly matches the academic convention for cross-sectional momentum.

Default

monthly

When It Works

When there is a clear dispersion of currency strength — e.g. the strong-USD regimes of 2014-2015 and 2022, or strong-JPY regimes in risk-off periods. Benefits from USD as a stable anchor currency.

When It Fails

When currency leadership churns monthly without follow-through. Also whipsaws around macro surprises that flip the ranking (central bank pivots, political shocks).

Risks & Limitations

  • Correlated losses across multiple legs during global risk-on/off flips
  • Inverted-quote handling: ranking is by currency but signal lives on a pair — UI must explain why 'rank #1 JPY' shows as 'short USD_JPY'
  • Rebalancing lag: 6-month ranking reacts slowly to sudden regime shifts

Implementation

currency_vs_usd_series() handles both direct (ccy_USD) and inverted (USD_ccy) quote resolution by taking 1/price on the inverted case. rank_returns() computes trailing log returns using only data on-or-before the rebalance date — no look-ahead.

Model parameters

Lookback

Ranking window for trailing currency returns vs USD

6 months

Top K

Number of longs and number of shorts per rebalance

2

Rebalance

Re-rank G10 universe at month start

Monthly

Academic background

Academic Basis

Based on Asness, Moskowitz & Pedersen (2013), 'Value and Momentum Everywhere', Journal of Finance

Backtest this strategy

Run the exact model on your selected assets and date range. See trade-by-trade performance.

Backtest This