Memo·Conceptual outline · implementation in progress

Investment·Case Study 04

Case Study 04 · FX · Tick Data · EDA · GARCH · Time-Series Regression

FX Liquidity & Time-Series Arbitrage

Global macro funds trade currencies around the clock. But executing a large FX order at the wrong time means the market moves against you before the trade is filled; a cost that compounds at scale. This project performs exploratory data analysis on historical to identify when , then trains a -based time-series model to forecast short-term liquidity drop-offs.

The Travel Industry Connection

Travel companies are among the largest non-financial FX users in the world. A tour operator selling EUR-denominated holidays to British customers collects GBP revenues but pays USD-denominated hotel contracts and JPY-denominated Japan packages. An airline generates revenues in 50+ currencies but pays for jet fuel (priced in USD) globally.

TUI AG, for example, hedges over €4 billion of FX exposure annually. Timing those hedges badly (executing in a thin market or ahead of a macro release) adds measurable cost to the P&L. Knowing when the will spike is not just a trading advantage; it is a treasury management problem for any company with global travel revenues.

FX PairTravel Industry Relevance
EUR/USDEuro-area inbound travel revenues vs. USD costs
USD/JPYJapan inbound tourism (USD spending) vs. JPY operations
GBP/EURUK outbound operators (TUI, Thomas Cook legacy)
USD/CHFSwiss luxury travel & alpine hospitality segment
AUD/JPYAsia-Pacific leisure corridor, carry-funded travel flows

The Method

EDA → → Regression Forecast

The analysis starts with exploratory data analysis on raw : building time-of-day spread profiles, intraday heatmaps, and event-window studies. EDA reveals structural liquidity patterns: not from theory, but from the data itself.

The modelling phase fits a on the spread residuals to capture volatility clustering, the empirical finding that wide-spread periods tend to persist. The structure (Ljung-Box test) confirms that spread time series has memory, making it forecastable. A final regression model uses GARCH conditional variance plus lagged features to predict spread 5 minutes ahead.

σ²ₜ = ω + α·ε²ₜ₋₁ + β·σ²ₜ₋₁

GARCH(1,1): α = shock, β = persistence; α+β < 1 required

spread̂ₜ₊₅ = f(spreadₜ, σ²ₜ, lagₜ₋ₖ, eventₜ)

OLS regression; event = binary dummy for macro releases in next 60 min

EDA · Intraday Spread Profile (EUR/USD, UTC)

SessionUTC WindowSpreadNote
Sydney22:00 – 06:00WideThin liquidity, few major dealers active
Tokyo00:00 – 09:00MediumJPY pairs tighten; others remain wide
London Open07:00 – 08:00NarrowPeak liquidity: most dealers online
London / NY12:00 – 17:00NarrowHighest volume window of the day
NY Close20:00 – 22:00WideningLiquidity drains; spreads expand 1.5–2×
NFP Release13:30 (Fri)3–5×Spreads spike; smart money avoids execution

Technical Pipeline

01

Tick Data Ingestion

Python · Dukascopy · Parquet

Download historical bid/ask tick data for 5 FX pairs (2015–present). Store in columnar Parquet format. ~80 GB compressed per pair for the full history.

02

Exploratory Data Analysis

pandas · polars · matplotlib

Compute time-of-day spread profiles. Plot intraday spread heatmaps by weekday and hour. Identify structural liquidity drop-off windows. Correlate with scheduled macro event calendar.

03

Feature Engineering

pandas · TA-Lib

Aggregate ticks to 1-minute bars. Compute: realised spread (5-min window), lagged spread, volume proxy (tick count per minute), event dummies (NFP, ECB, BOJ, CPI releases).

04

GARCH Volatility Model

arch · statsmodels

Fit GARCH(1,1) on spread residuals per session to capture volatility clustering. Ljung-Box test confirms significant autocorrelation in squared spread series.

05

Regression Forecast

scikit-learn · statsmodels

OLS / Ridge regression to forecast spread t+5 minutes using lagged features + GARCH conditional variance. Evaluate on held-out year of tick data.

06

Signal Output

FastAPI · WebSocket

Real-time inference endpoint: given current time, recent spread, and scheduled events in the next 60 minutes, output a liquidity forecast and recommended execution window.

Key EDA Findings

1.2 pips

EUR/USD spread at London/NY overlap

Tightest window of the trading day

3.8 pips

EUR/USD spread at NY Close

3× wider than the London overlap window

5–7×

Spread spike on NFP release (5-min)

Market makers widen aggressively to hedge

~78%

GARCH variance explained

α+β ≈ 0.97: high persistence in spread volatility

Conclusion

Liquidity is not constant. Its pattern is predictable.

The in FX markets follows a highly structured intraday pattern, one driven by session overlaps, dealer staffing, and the cadence of macro data releases. This pattern is not random: it exhibits strong and volatility clustering that a model can capture.

For a travel company hedging multi-billion-dollar FX exposures, the practical implication is direct: executing at 13:00 UTC on a Tuesday (London/NY overlap, no events) is structurally cheaper than executing at 20:30 UTC or within 30 minutes of an NFP release. Quantifying that difference, and automating the execution window selection, is the value this model delivers.

In FX, the cost of the trade is determined before the trade is placed.