Triangulation and cross rates

Table of Contents

Summary

A direct rate is quoted without triangulation — preferred for pricing because it carries less noise. A cross / triangulated rate is computed by chaining two (or more) direct rates through a shared pivot currency (usually USD). For the spot level this is deterministic — just the product or ratio through the pivot (EUR/JPY is the product of EUR/USD and USD/JPY); no correlation is involved (correlation enters only for the volatility of a cross, not its level). A matrix may be one-way (single rate) or two-way (dealable bid/ask); keep them separate.

Detail

Direct vs triangulated

  • Direct: not triangulated; preferred for pricing.
  • Cross: chain direct rates through a shared currency. E.g. AUD/CAD derived from AUD/USD and USD/CAD, with Is Inverted and bid/offer handling flags.
  • A spot screen distinguishes auto-fed-directly pairs from "via Cross" pairs.
  • The pivot currency is the hub the legs cancel through (USD for most crosses).

One-way and two-way matrices

  • Two-way carries dealable bid/ask prices; one-way carries a single rate.
  • Best practice: keep two separate matrices — risk/valuation uses one, pricing the other.
  • Failover: if two-way is unavailable, fall back to one-way to price, but those prices are not dealable; when mixing, the one-way mid is used for both bid and ask and results stay non-dealable.

Sanity checks

  • Verify the driver crosses are present.
  • Detect zero rates.
  • Handle unconnected currencies — list those with no path in the graph yet.

See also

Emacs 29.3 (Org mode 9.6.15)