Expand model tag support: add GLM-5.1, simplify Anthropic IDs, scan tags anywhere in message
- 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
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
---
|
||||
description: "FX triangular arbitrage that exploits momentary mispricing across three currency pairs by executing a circular chain of exchanges to lock in a riskless profit."
|
||||
tags: [fx, arbitrage, triangular, market-microstructure]
|
||||
---
|
||||
|
||||
# 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:
|
||||
1. A → B → C → A
|
||||
2. 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.
|
||||
Reference in New Issue
Block a user