- Flink update_bars debouncing - update_bars subscription idempotency bugfix - Price decimal correction bugfix of previous commit - Add GLM-5.1 model tag alongside renamed GLM-5 - Use short Anthropic model IDs (sonnet/haiku/opus) instead of full version strings - Allow @tags anywhere in message content, not just at start - Return hasOtherContent flag instead of trimmed rest string - Only trigger greeting stream when tag has no other content - Update workspace knowledge base references to platform/workspace and platform/shapes - Hierarchical knowledge base catalog - 151 Trading Strategies knowledge base articles - Shapes knowledge base article - MutateShapes tool instead of workspace patch
2.9 KiB
description, tags
| description | tags | ||||
|---|---|---|---|---|---|
| FX triangular arbitrage that exploits momentary mispricing across three currency pairs by executing a circular chain of exchanges to lock in a riskless profit. |
|
FX Triangular Arbitrage
Section: 8.5 | Asset Class: FX | Type: Arbitrage
Overview
Triangular arbitrage involves three currencies (A, B, C) and three currency pairs. If the cross-rate implied by trading A→B→C→A differs from the direct rate, a riskless profit exists. Such mispricings are extremely short-lived and require fast market data feeds and execution systems.
Construction / Mechanics
Given three currencies A, B, C and their bid/ask prices, there are two chains:
- A → B → C → A
- A → C → B → A (equivalent to swapping B and C in chain 1)
Focus on chain 1. The relevant rates are:
- Bid(A→B): rate at which A is exchanged into B
- Bid(B→C): rate at which B is exchanged into C
- Ask(C→A): rate at which C is exchanged back into A (cost = 1/Ask(C→A))
Note: Bid(B→A) = 1/Ask(B→A) and Ask(A→B) = 1/Bid(A→B).
The overall round-trip exchange rate for chain 1 is:
R(A→B→C→A) = Bid(A→B) × Bid(B→C) × (1 / Ask(C→A)) (453)
Profit condition: If R(A→B→C→A) > 1, the trader profits by executing all three legs simultaneously. Starting with 1 unit of A, the trader ends with R > 1 units of A.
Return Profile
The P&L per unit of A is R - 1 when R > 1. Profits are typically very small per trade (fractions of a pip) but can be accumulated at high frequency. The strategy is notionally riskless if all three legs are executed simultaneously; execution lag introduces market risk.
Key Parameters / Signals
| Parameter | Description |
|---|---|
| R(A→B→C→A) | Round-trip rate; > 1 signals a profitable arbitrage |
| Bid(A→B), Bid(B→C) | Bid rates for the two intermediate legs |
| Ask(C→A) | Ask rate for the closing leg |
| Execution speed | Critical: mispricings disappear in milliseconds |
Variations
- Multi-currency arbitrage: extend to more than 3 currency pairs (N-currency chains); computational complexity increases but can uncover deeper mispricings.
- Chain 2 (A→C→B→A): identical logic with B and C swapped; both chains should be monitored simultaneously.
Notes
- Opportunities are ephemeral; the strategy is effectively a latency arbitrage and is dominated by high-frequency traders with co-located infrastructure.
- Bid-ask spreads are the primary cost; even small spreads can eliminate the theoretical profit, so only very tight markets are viable.
- Unlike statistical arbitrage, this is a near-deterministic arbitrage: no model risk, but significant execution/technology risk.
- Applicable to crypto exchanges where cross-exchange and cross-pair mispricings can be larger and more persistent than in professional FX markets.