XAS Cross-Asset Signals
What gold, bonds, and the VIX can tell you about your FX trades
Learning Objectives
- •Identify meaningful cross-asset relationships for FX trading
- •Distinguish real lead-lag effects from spurious correlation
- •Implement and validate cross-asset features
- •Know which cross-asset signals survive out-of-sample testing
Explain Like I'm 5
Markets are connected. Bond yields affect currencies, equity risk sentiment spills into FX, and commodity prices lead economic data. Cross-asset signals use these connections as early warning systems.
Think of It This Way
Markets are like a row of dominoes. If you can see which domino falls first, you have a head start on predicting which ones fall next. Cross-asset signals are about watching those leading dominoes.
1Key Cross-Asset Relationships
2Lead-Lag Effects
3The Spurious Correlation Trap
4Practical Cross-Asset Features
5Implementation Notes
Key Formulas
Cross-Correlation at Lag k
Measures the correlation between asset X at time t and asset Y at time t+k, capturing lead-lag effects
Hands-On Code
Cross-Asset Feature Construction
import numpy as np
def cross_asset_features(leader_returns, follower_returns, lags=[1, 4, 8, 24], window=60):
"""Build cross-asset features from a leader-follower pair."""
n = len(follower_returns)
features = {}
for lag in lags:
if lag >= n:
continue
# Lagged leader return as a feature
lagged_leader = np.zeros(n)
lagged_leader[lag:] = leader_returns[:-lag] if lag > 0 else leader_returns
# Z-score the lagged feature using rolling window
z_scored = np.zeros(n)
for i in range(window + lag, n):
window_vals = lagged_leader[i - window:i]
mean = np.mean(window_vals)
std = np.std(window_vals)
z_scored[i] = (lagged_leader[i] - mean) / std if std > 0 else 0
features[f'leader_lag_{lag}_zscore'] = z_scored
# Rolling cross-correlation (stability monitor)
rolling_corr = np.zeros(n)
for i in range(window, n):
x = leader_returns[i - window:i]
y = follower_returns[i - window:i]
corr = np.corrcoef(x, y)[0, 1]
rolling_corr[i] = corr
features['rolling_correlation'] = rolling_corr
return featuresConstructs cross-asset features by computing lagged cross-correlations and building z-scored, lagged features from a leader asset for use as predictors.
Knowledge Check
Q1.Why are "changes" generally more predictive than "levels" for short-term cross-asset signals?
Q2.Testing 50 cross-asset pairs at 10 lags at the 5% significance level, you would expect about how many false positive "significant" results?
Assignment
Pick a commodity currency pair (e.g., AUD/USD or USD/CAD). Identify the corresponding commodity (iron ore, oil). Compute the cross-correlation at lags 0 through 24 hours. Plot the correlograms. Is there a statistically significant lead-lag? Build a simple cross-asset feature and test its IC for FX return prediction.