{"openapi":"3.1.0","info":{"title":"FX Correlation Matrix API","version":"1.0.0","description":"How the major currency pairs move together, computed live from Yahoo Finance daily closes — no key, nothing stored. Correlation is the input every FX desk needs before sizing a book: going long EUR/USD and long GBP/USD is not two bets but one, because the pairs move almost in lockstep; shorting USD/JPY against long EUR/USD doubles the same dollar view. This API turns the majors and key crosses into the pairwise correlation grid traders use to avoid stacking the same risk and to find genuine diversifiers. The matrix endpoint returns the full correlation matrix across ~14 pairs over a chosen window. The pair endpoint returns one pair's correlation to every other, ranked — its closest co-movers and its best hedges (the most negatively correlated). The highlights endpoint surfaces the most correlated and most inversely correlated pairs across the whole grid, the actionable extremes. Correlation is computed on daily log returns aligned over common trading days. This is the FX-pair correlation cut — distinct from the cross-asset-class correlation matrix (stocks/bonds/gold/oil/crypto/dollar), the currency-strength meter, the FX heat-map (which shows the day's move, not co-movement) and the price APIs in the catalogue.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/fxcorrelation-api","description":"oanor gateway"}],"tags":[{"name":"Matrix"},{"name":"Pair"},{"name":"Highlights"},{"name":"Meta"}],"components":{"securitySchemes":{"oanorKey":{"type":"apiKey","in":"header","name":"x-oanor-key","description":"Get your key at https://www.oanor.com/developer/keys"}}},"security":[{"oanorKey":[]}],"paths":{"/v1/matrix":{"get":{"operationId":"get_v1_matrix","tags":["Matrix"],"summary":"Full FX correlation matrix across all pairs","description":"","parameters":[{"name":"window","in":"query","required":false,"description":"Lookback in trading days (20-365)","schema":{"type":"string"},"example":"60"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"Pairwise Pearson correlation of daily log returns over window_days, aligned on common trading days. +1 = pairs move together (stacking the same risk); -1 = they move oppositely (a hedge); near 0 = independent. Read fresh per call, nothing cached.","count":14,"pairs":["EURUSD","GBPUSD","USDJPY","USDCHF","AUDUSD","USDCAD","NZDUSD","EURGBP","EURJPY","GBPJPY","EURCHF","AUDJPY","USDMXN","USDCNY"],"matrix":{"AUDJPY":{"AUDJPY":1,"AUDUSD":0.785,"EURCHF":0.076,"EURGBP":-0.049,"EURJPY":0.664,"EURUSD":0.631,"GBPJPY":0.662,"GBPUSD":0.537,"NZDUSD":0.598,"USDCAD":-0.46,"USDCHF":-0.48,"USDCNY":-0.23,"USDJPY":-0.005,"USDMXN":-0.633},"AUDUSD":{"AUDJPY":0.785,"AUDUSD":1,"EURCHF":-0.086,"EURGBP":-0.244,"EURJPY":0.194,"EURUSD":0.871,"GBPJPY":0.331,"GBPUSD":0.822,"NZDUSD":0.857,"USDCAD":-0.649,"USDCHF":-0.776,"USDCNY":-0.4,"USDJPY":-0.622,"USDMXN":-0.833},"EURCHF":{"AUDJPY":0.076,"AUDUSD":-0.086,"EURCHF":1,"EURGBP":0.24,"EURJPY":0.293,"EURUSD":0.014,"GBPJPY":0.141,"GBPUSD":-0.097,"NZDUSD":-0.222,"USDCAD":0.357,"USDCHF":0.543,"USDCNY":0.191,"USDJPY":0.238,"USDMXN":0.007},"EURGBP":{"AUDJPY":-0.049,"AUDUSD":-0.244,"EURCHF":0.24,"EURGBP":1,"EURJPY":0.217,"EURUSD":-0.161,"GBPJPY":-0.381,"GBPUSD":-0.596,"NZDUSD":-0.292,"USDCAD":0.227,"USDCHF":0.274,"USDCNY":0.063,"USDJPY":0.333,"USDMXN":0.255},"EURJPY":{"AUDJPY":0.664,"AUDUSD":0.194,"EURCHF":0.293,"EURGBP":0.217,"EURJPY":1,"EURUSD":0.353,"GBPJPY":0.819,"GBPUSD":0.188,"NZDUSD":0.117,"USDCAD":-0.117,"USDCHF":-0.128,"USDCNY":-0.009,"USDJPY":0.528,"USDMXN":-0.246},"EURUSD":{"AUDJPY":0.631,"AUDUSD":0.871,"EURCHF":0.014,"EURGBP":-0.161,"EURJPY":0.353,"EURUSD":1,"GBPJPY":0.429,"GBPUSD":0.888,"NZDUSD":0.807,"USDCAD":-0.628,"USDCHF":-0.831,"USDCNY":-0.401,"USDJPY":-0.607,"USDMXN":-0.829},"GBPJPY":{"AUDJPY":0.662,"AUDUSD":0.331,"EURCHF":0.141,"EURGBP":-0.381,"EURJPY":0.819,"EURUSD":0.429,"GBPJPY":1,"GBPUSD":0.528,"NZDUSD":0.283,"USDCAD":-0.239,"USDCHF":-0.28,"USDCNY":-0.053,"USDJPY":0.304,"USDMXN":-0.386},"GBPUSD":{"AUDJPY":0.537,"AUDUSD":0.822,"EURCHF":-0.097,"EURGBP":-0.596,"EURJPY":0.188,"EURUSD":0.888,"GBPJPY":0.528,"GBPUSD":1,"NZDUSD":0.792,"USDCAD":-0.612,"USDCHF":-0.802,"USDCNY":-0.364,"USDJPY":-0.648,"USDMXN":-0.793},"NZDUSD":{"AUDJPY":0.598,"AUDUSD":0.857,"EURCHF":-0.222,"EURGBP":-0.292,"EURJPY":0.117,"EURUSD":0.807,"GBPJPY":0.283,"GBPUSD":0.792,"NZDUSD":1,"USDCAD":-0.653,"USDCHF":-0.797,"USDCNY":-0.489,"USDJPY":-0.629,"USDMXN":-0.748},"USDCAD":{"AUDJPY":-0.46,"AUDUSD":-0.649,"EURCHF":0.357,"EURGBP":0.227,"EURJPY":-0.117,"EURUSD":-0.628,"GBPJPY":-0.239,"GBPUSD":-0.612,"NZDUSD":-0.653,"USDCAD":1,"USDCHF":0.729,"USDCNY":0.31,"USDJPY":0.474,"USDMXN":0.457},"USDCHF":{"AUDJPY":-0.48,"AUDUSD":-0.776,"EURCHF":0.543,"EURGBP":0.274,"EURJPY":-0.128,"EURUSD":-0.831,"GBPJPY":-0.28,"GBPUSD":-0.802,"NZDUSD":-0.797,"USDCAD":0.729,"USDCHF":1,"USDCNY":0.444,"USDJPY":0.647,"USDMXN":0.699},"USDCNY":{"AUDJPY":-0.23,"AUDUSD":-0.4,"EURCHF":0.191,"EURGBP":0.063,"EURJPY":-0.009,"EURUSD":-0.401,"GBPJPY":-0.053,"GBPUSD":-0.364,"NZDUSD":-0.489,"USDCAD":0.31,"USDCHF":0.444,"USDCNY":1,"USDJPY":0.358,"USDMXN":0.358},"USDJPY":{"AUDJPY":-0.005,"AUDUSD":-0.622,"EURCHF":0.238,"EURGBP":0.333,"EURJPY":0.528,"EURUSD":-0.607,"GBPJPY":0.304,"GBPUSD":-0.648,"NZDUSD":-0.629,"USDCAD":0.474,"USDCHF":0.647,"USDCNY":0.358,"USDJPY":1,"USDMXN":0.541},"USDMXN":{"AUDJPY":-0.633,"AUDUSD":-0.833,"EURCHF":0.007,"EURGBP":0.255,"EURJPY":-0.246,"EURUSD":-0.829,"GBPJPY":-0.386,"GBPUSD":-0.793,"NZDUSD":-0.748,"USDCAD":0.457,"USDCHF":0.699,"USDCNY":0.358,"USDJPY":0.541,"USDMXN":1}},"source":"Yahoo Finance","unavailable":[],"window_days":60},"meta":{"timestamp":"2026-06-12T10:34:50.487Z","request_id":"92d57011-78a2-4d1a-966b-a29f79bb5060"},"status":"ok","message":"FX correlation matrix retrieved successfully","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/pair":{"get":{"operationId":"get_v1_pair","tags":["Pair"],"summary":"One pair's correlations ranked into co-movers and hedges","description":"","parameters":[{"name":"pair","in":"query","required":true,"description":"Canonical 6-letter code","schema":{"type":"string"},"example":"EURUSD"},{"name":"window","in":"query","required":false,"description":"Lookback in trading days (20-365)","schema":{"type":"string"},"example":"60"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"name":"Euro / US Dollar","note":"Correlation of EURUSD to every other pair over window_days of daily log returns. most_correlated move with it (avoid stacking); best_hedges are the most negatively correlated (genuine diversifiers / hedges). Read fresh per call, nothing cached.","pair":"EURUSD","source":"Yahoo Finance","best_hedges":[{"name":"US Dollar / Swiss Franc","pair":"USDCHF","correlation":-0.831,"observations":60},{"name":"US Dollar / Mexican Peso","pair":"USDMXN","correlation":-0.829,"observations":60},{"name":"US Dollar / Canadian Dollar","pair":"USDCAD","correlation":-0.628,"observations":60}],"window_days":60,"correlations":[{"name":"British Pound / US Dollar","pair":"GBPUSD","correlation":0.888,"observations":60},{"name":"Australian Dollar / US Dollar","pair":"AUDUSD","correlation":0.871,"observations":60},{"name":"New Zealand Dollar / US Dollar","pair":"NZDUSD","correlation":0.807,"observations":60},{"name":"Australian Dollar / Japanese Yen","pair":"AUDJPY","correlation":0.631,"observations":60},{"name":"British Pound / Japanese Yen","pair":"GBPJPY","correlation":0.429,"observations":60},{"name":"Euro / Japanese Yen","pair":"EURJPY","correlation":0.353,"observations":60},{"name":"Euro / Swiss Franc","pair":"EURCHF","correlation":0.014,"observations":60},{"name":"Euro / British Pound","pair":"EURGBP","correlation":-0.161,"observations":60},{"name":"US Dollar / Chinese Yuan","pair":"USDCNY","correlation":-0.401,"observations":60},{"name":"US Dollar / Japanese Yen","pair":"USDJPY","correlation":-0.607,"observations":60},{"name":"US Dollar / Canadian Dollar","pair":"USDCAD","correlation":-0.628,"observations":60},{"name":"US Dollar / Mexican Peso","pair":"USDMXN","correlation":-0.829,"observations":60},{"name":"US Dollar / Swiss Franc","pair":"USDCHF","correlation":-0.831,"observations":60}],"most_correlated":[{"name":"British Pound / US Dollar","pair":"GBPUSD","correlation":0.888,"observations":60},{"name":"Australian Dollar / US Dollar","pair":"AUDUSD","correlation":0.871,"observations":60},{"name":"New Zealand Dollar / US Dollar","pair":"NZDUSD","correlation":0.807,"observations":60}]},"meta":{"timestamp":"2026-06-12T10:34:50.640Z","request_id":"73df55b7-d3c7-417b-8a36-a41bedbaf522"},"status":"ok","message":"Pair correlations retrieved successfully","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/highlights":{"get":{"operationId":"get_v1_highlights","tags":["Highlights"],"summary":"Most correlated and most inversely correlated pairs","description":"","parameters":[{"name":"window","in":"query","required":false,"description":"Lookback in trading days (20-365)","schema":{"type":"string"},"example":"60"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"The most correlated and most inversely correlated pairs across the whole grid over window_days. High positive = the same trade twice; high negative = natural hedges. avg_abs_correlation gauges how tightly the FX complex is moving together overall. Read fresh per call, nothing cached.","source":"Yahoo Finance","window_days":60,"pairs_compared":91,"most_correlated":[{"a":"EURUSD","b":"GBPUSD","correlation":0.888},{"a":"EURUSD","b":"AUDUSD","correlation":0.871},{"a":"AUDUSD","b":"NZDUSD","correlation":0.857},{"a":"GBPUSD","b":"AUDUSD","correlation":0.822},{"a":"EURJPY","b":"GBPJPY","correlation":0.819}],"avg_abs_correlation":0.439,"most_inversely_correlated":[{"a":"AUDUSD","b":"USDMXN","correlation":-0.833},{"a":"EURUSD","b":"USDCHF","correlation":-0.831},{"a":"EURUSD","b":"USDMXN","correlation":-0.829},{"a":"GBPUSD","b":"USDCHF","correlation":-0.802},{"a":"USDCHF","b":"NZDUSD","correlation":-0.797}]},"meta":{"timestamp":"2026-06-12T10:34:50.784Z","request_id":"0b0523c7-a2c4-447f-a2c6-0f2ba4328318"},"status":"ok","message":"Correlation highlights retrieved successfully","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/meta":{"get":{"operationId":"get_v1_meta","tags":["Meta"],"summary":"Service metadata","description":"","parameters":[],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"window is 20-365 trading days (default 60). pair is a canonical 6-letter code (EURUSD, USDJPY, GBPJPY, ...). Correlation uses daily log returns aligned on common trading days. Read fresh per call, nothing cached.","pairs":["EURUSD","GBPUSD","USDJPY","USDCHF","AUDUSD","USDCAD","NZDUSD","EURGBP","EURJPY","GBPJPY","EURCHF","AUDJPY","USDMXN","USDCNY"],"source":"Yahoo Finance daily closes, live","service":"fxcorrelation-api","endpoints":{"GET /v1/meta":"This document.","GET /v1/pair":"One pair's correlations ranked into co-movers and hedges (pair=EURUSD, window=60).","GET /v1/matrix":"The full FX correlation matrix across all pairs (window=60).","GET /v1/highlights":"The most correlated and most inversely correlated pairs across the grid (window=60)."},"description":"FX correlation matrix — how the major currency pairs move together, live from Yahoo Finance daily closes (no key, nothing stored). matrix returns the full pairwise correlation grid across ~14 majors and crosses; pair returns one pair's correlation to every other ranked into its closest co-movers and best hedges; highlights surfaces the most correlated and most inversely correlated pairs across the grid. Correlation on daily log returns over a chosen window. The FX-pair correlation cut — distinct from the cross-asset-class correlation matrix, the currency-strength meter, the FX heat-map (day's move, not co-movement) and the price APIs.","pairs_count":14,"upstream_status":"ok","tightest_pair_60d":"EURUSD/GBPUSD"},"meta":{"timestamp":"2026-06-12T10:34:50.915Z","request_id":"1eeafb22-875f-40bd-a857-35dbe52c8c93"},"status":"ok","message":"Meta","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}}},"x-oanor-pricing":[{"slug":"free","name":"Free","price_cents_month":0,"monthly_call_quota":710,"rps_limit":2,"hard_limit":true},{"slug":"starter","name":"Starter","price_cents_month":1170,"monthly_call_quota":15200,"rps_limit":6,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":3520,"monthly_call_quota":83000,"rps_limit":16,"hard_limit":true},{"slug":"mega","name":"Mega","price_cents_month":7920,"monthly_call_quota":468000,"rps_limit":40,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/fxcorrelation-api"}