Quick Answer: We measured the correlation of daily moves between every two of 28 forex pairs over their last 20, 60 and 250 common sessions of Dukascopy hourly bid candles, ending September 30, 2026. Of the 378 pair combinations, 29 read +0.70 or higher over 250 sessions and 10 read -0.70 or lower; 200 sat between -0.30 and +0.30, and 80 of those were inside -0.10 to +0.10, close to independent. The strongest positive reading was EUR/JPY with GBP/JPY at +0.87 and the strongest negative was EUR/USD with USD/CHF at -0.86. The pairs least tied to the rest of the set were EUR/GBP, EUR/JPY, EUR/CHF and AUD/NZD (mean absolute correlation 0.20 to 0.22 against the other 27); the most tied were NZD/USD and AUD/USD (0.45 and 0.43). A correlation is a description of sessions that have already happened, not a forecast, and most retail traders lose money trading forex however well they diversify.
| Pair A | Pair B | 250 sessions | 60 sessions | 20 sessions |
|---|---|---|---|---|
| Move together | ||||
| EUR/JPY | GBP/JPY | +0.87 | +0.94 | +0.96 |
| NZD/USD | NZD/CAD | +0.86 | +0.79 | +0.79 |
| EUR/JPY | CHF/JPY | +0.85 | +0.88 | +0.94 |
| EUR/USD | GBP/USD | +0.84 | +0.84 | +0.84 |
| AUD/USD | NZD/USD | +0.84 | +0.74 | +0.83 |
| AUD/USD | AUD/CAD | +0.84 | +0.72 | +0.85 |
| AUD/JPY | NZD/JPY | +0.84 | +0.81 | +0.90 |
| USD/JPY | CAD/JPY | +0.83 | +0.88 | +0.97 |
| EUR/AUD | GBP/AUD | +0.82 | +0.83 | +0.83 |
| EUR/JPY | CAD/JPY | +0.81 | +0.93 | +0.96 |
| Move opposite | ||||
| EUR/USD | USD/CHF | -0.86 | -0.88 | -0.78 |
| EUR/AUD | AUD/CHF | -0.83 | -0.74 | -0.75 |
| EUR/NZD | NZD/CHF | -0.81 | -0.69 | -0.71 |
| NZD/USD | EUR/NZD | -0.78 | -0.81 | -0.74 |
| EUR/NZD | NZD/CAD | -0.77 | -0.85 | -0.87 |
| GBP/USD | USD/CHF | -0.74 | -0.74 | -0.67 |
| EUR/AUD | AUD/CAD | -0.74 | -0.81 | -0.87 |
| AUD/USD | EUR/AUD | -0.73 | -0.71 | -0.84 |
| EUR/CAD | CAD/CHF | -0.73 | -0.67 | -0.48 |
| GBP/AUD | AUD/CHF | -0.71 | -0.61 | -0.63 |
As of September 30, 2026. Source: Dukascopy hourly bid candles. Each pair's daily level is the midpoint ((high + low) / 2) of the last hourly bid bar of each qualifying UTC day - a close proxy, since the hourly cache stores highs and lows only. A day qualifies only if it is a weekday carrying at least 12 hourly bars and a non-zero daily high-low range, the identical rule scripts/adr-table.py applies. The return series is the day-over-day natural log change of that level. Each cell is the Pearson correlation of two pairs' daily returns over the most recent 20, 60 or 250 sessions the two pairs have in common; a window with fewer than 15 aligned sessions is published as null rather than computed on a handful of days. +1.00 means the two pairs' daily changes moved in the same direction in proportion every day of the window, -1.00 the opposite direction, 0.00 no linear relationship. Correlation of daily changes says nothing about which pair moved more - see the average daily range table for size. Past correlation describes sessions that have already happened and is not a forecast of the next one.
Running a grid on two pairs? Two pairs at +0.85 are close to one position at double size, and two at -0.85 are close to a hedge that pays spread twice. Our free GridMaster EA runs one chart per instance, so the exposure across instances is yours to add up; download all 7 free MT4 & MT5 EAs →
The Full 28 x 28 Matrix
Blue cells are pairs that moved together over the last 250 sessions, red cells pairs that moved opposite, and the depth of the colour is the strength. Hover a cell to see the same two pairs over 60 and 20 sessions. Pair names link to each pair’s own range page.
| Pair | EUR/ USD | GBP/ USD | USD/ JPY | USD/ CHF | AUD/ USD | USD/ CAD | NZD/ USD | EUR/ GBP | EUR/ JPY | GBP/ JPY | EUR/ CHF | EUR/ AUD | EUR/ CAD | EUR/ NZD | GBP/ CHF | GBP/ AUD | GBP/ CAD | GBP/ NZD | AUD/ JPY | AUD/ CAD | AUD/ CHF | AUD/ NZD | NZD/ JPY | CAD/ JPY | CHF/ JPY | CAD/ CHF | NZD/ CAD | NZD/ CHF |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| EUR/USD | – | 0.84 | -0.58 | -0.86 | 0.70 | -0.63 | 0.75 | 0.05 | 0.14 | 0.11 | -0.21 | -0.03 | 0.61 | -0.18 | -0.19 | -0.06 | 0.48 | -0.21 | 0.13 | 0.45 | -0.09 | -0.17 | 0.23 | -0.24 | 0.25 | -0.62 | 0.55 | 0.04 |
| GBP/USD | 0.84 | – | -0.53 | -0.74 | 0.69 | -0.58 | 0.76 | -0.50 | 0.06 | 0.31 | -0.22 | -0.17 | 0.46 | -0.34 | 0.19 | 0.12 | 0.72 | -0.04 | 0.17 | 0.48 | 0.04 | -0.19 | 0.28 | -0.22 | 0.18 | -0.51 | 0.59 | 0.18 |
| USD/JPY | -0.58 | -0.53 | – | 0.57 | -0.43 | 0.41 | -0.47 | 0.06 | 0.73 | 0.64 | 0.27 | 0.05 | -0.31 | 0.16 | 0.16 | 0.01 | -0.30 | 0.12 | 0.52 | -0.26 | 0.10 | 0.13 | 0.45 | 0.83 | 0.53 | 0.43 | -0.33 | 0.02 |
| USD/CHF | -0.86 | -0.74 | 0.57 | – | -0.60 | 0.66 | -0.69 | 0.00 | -0.03 | -0.03 | 0.68 | 0.03 | -0.41 | 0.22 | 0.52 | 0.03 | -0.34 | 0.22 | -0.04 | -0.31 | 0.34 | 0.22 | -0.17 | 0.21 | -0.39 | 0.78 | -0.45 | 0.20 |
| AUD/USD | 0.70 | 0.69 | -0.43 | -0.60 | – | -0.63 | 0.84 | -0.17 | 0.07 | 0.15 | -0.15 | -0.73 | 0.23 | -0.60 | 0.00 | -0.63 | 0.31 | -0.51 | 0.55 | 0.84 | 0.54 | 0.19 | 0.46 | -0.07 | 0.15 | -0.28 | 0.65 | 0.45 |
| USD/CAD | -0.63 | -0.58 | 0.41 | 0.66 | -0.63 | – | -0.63 | 0.06 | -0.04 | -0.06 | 0.36 | 0.29 | 0.22 | 0.35 | 0.23 | 0.25 | 0.14 | 0.32 | -0.22 | -0.11 | -0.05 | 0.06 | -0.26 | -0.17 | -0.23 | 0.06 | -0.15 | -0.11 |
| NZD/USD | 0.75 | 0.76 | -0.47 | -0.69 | 0.84 | -0.63 | – | -0.20 | 0.07 | 0.17 | -0.24 | -0.46 | 0.30 | -0.78 | -0.04 | -0.33 | 0.39 | -0.67 | 0.36 | 0.63 | 0.26 | -0.37 | 0.58 | -0.12 | 0.19 | -0.39 | 0.86 | 0.57 |
| EUR/GBP | 0.05 | -0.50 | 0.06 | 0.00 | -0.17 | 0.06 | -0.20 | – | 0.11 | -0.39 | 0.07 | 0.28 | 0.12 | 0.35 | -0.64 | -0.31 | -0.56 | -0.27 | -0.11 | -0.17 | -0.20 | 0.08 | -0.15 | 0.02 | 0.06 | -0.05 | -0.21 | -0.27 |
| EUR/JPY | 0.14 | 0.06 | 0.73 | -0.03 | 0.07 | -0.04 | 0.07 | 0.11 | – | 0.87 | 0.14 | 0.04 | 0.14 | 0.04 | 0.03 | -0.03 | 0.05 | -0.03 | 0.74 | 0.07 | 0.05 | 0.01 | 0.74 | 0.81 | 0.85 | -0.00 | 0.06 | 0.06 |
| GBP/JPY | 0.11 | 0.31 | 0.64 | -0.03 | 0.15 | -0.06 | 0.17 | -0.39 | 0.87 | – | 0.10 | -0.10 | 0.07 | -0.14 | 0.35 | 0.12 | 0.32 | 0.10 | 0.74 | 0.15 | 0.15 | -0.02 | 0.76 | 0.74 | 0.75 | 0.02 | 0.17 | 0.20 |
| EUR/CHF | -0.21 | -0.22 | 0.27 | 0.68 | -0.15 | 0.36 | -0.24 | 0.07 | 0.14 | 0.10 | – | 0.02 | 0.10 | 0.16 | 0.71 | -0.03 | 0.04 | 0.12 | 0.10 | 0.06 | 0.53 | 0.17 | 0.00 | 0.07 | -0.40 | 0.60 | -0.07 | 0.44 |
| EUR/AUD | -0.03 | -0.17 | 0.05 | 0.03 | -0.73 | 0.29 | -0.46 | 0.28 | 0.04 | -0.10 | 0.02 | – | 0.27 | 0.66 | -0.18 | 0.82 | 0.03 | 0.50 | -0.65 | -0.74 | -0.83 | -0.42 | -0.41 | -0.12 | 0.03 | -0.20 | -0.39 | -0.58 |
| EUR/CAD | 0.61 | 0.46 | -0.31 | -0.41 | 0.23 | 0.22 | 0.30 | 0.12 | 0.14 | 0.07 | 0.10 | 0.27 | – | 0.13 | -0.01 | 0.19 | 0.75 | 0.05 | -0.07 | 0.45 | -0.16 | -0.15 | 0.02 | -0.47 | 0.08 | -0.73 | 0.53 | -0.06 |
| EUR/NZD | -0.18 | -0.34 | 0.16 | 0.22 | -0.60 | 0.35 | -0.78 | 0.35 | 0.04 | -0.14 | 0.16 | 0.66 | 0.13 | – | -0.12 | 0.45 | -0.12 | 0.81 | -0.42 | -0.52 | -0.47 | 0.40 | -0.64 | -0.05 | -0.05 | 0.00 | -0.77 | -0.81 |
| GBP/CHF | -0.19 | 0.19 | 0.16 | 0.52 | 0.00 | 0.23 | -0.04 | -0.64 | 0.03 | 0.35 | 0.71 | -0.18 | -0.01 | -0.12 | – | 0.20 | 0.42 | 0.27 | 0.15 | 0.17 | 0.55 | 0.08 | 0.11 | 0.04 | -0.35 | 0.50 | 0.10 | 0.53 |
| GBP/AUD | -0.06 | 0.12 | 0.01 | 0.03 | -0.63 | 0.25 | -0.33 | -0.31 | -0.03 | 0.12 | -0.03 | 0.82 | 0.19 | 0.45 | 0.20 | – | 0.36 | 0.66 | -0.58 | -0.63 | -0.71 | -0.46 | -0.32 | -0.14 | -0.02 | -0.16 | -0.26 | -0.42 |
| GBP/CAD | 0.48 | 0.72 | -0.30 | -0.34 | 0.31 | 0.14 | 0.39 | -0.56 | 0.05 | 0.32 | 0.04 | 0.03 | 0.75 | -0.12 | 0.42 | 0.36 | – | 0.22 | 0.02 | 0.50 | 0.00 | -0.17 | 0.12 | -0.40 | 0.02 | -0.57 | 0.59 | 0.14 |
| GBP/NZD | -0.21 | -0.04 | 0.12 | 0.22 | -0.51 | 0.32 | -0.67 | -0.27 | -0.03 | 0.10 | 0.12 | 0.50 | 0.05 | 0.81 | 0.27 | 0.66 | 0.22 | – | -0.36 | -0.43 | -0.36 | 0.36 | -0.56 | -0.06 | -0.09 | 0.04 | -0.65 | -0.66 |
| AUD/JPY | 0.13 | 0.17 | 0.52 | -0.04 | 0.55 | -0.22 | 0.36 | -0.11 | 0.74 | 0.74 | 0.10 | -0.65 | -0.07 | -0.42 | 0.15 | -0.58 | 0.02 | -0.36 | – | 0.55 | 0.61 | 0.30 | 0.84 | 0.70 | 0.63 | 0.13 | 0.32 | 0.44 |
| AUD/CAD | 0.45 | 0.48 | -0.26 | -0.31 | 0.84 | -0.11 | 0.63 | -0.17 | 0.07 | 0.15 | 0.06 | -0.74 | 0.45 | -0.52 | 0.17 | -0.63 | 0.50 | -0.43 | 0.55 | – | 0.66 | 0.29 | 0.40 | -0.21 | 0.04 | -0.32 | 0.74 | 0.50 |
| AUD/CHF | -0.09 | 0.04 | 0.10 | 0.34 | 0.54 | -0.05 | 0.26 | -0.20 | 0.05 | 0.15 | 0.53 | -0.83 | -0.16 | -0.47 | 0.55 | -0.71 | 0.00 | -0.36 | 0.61 | 0.66 | – | 0.46 | 0.36 | 0.14 | -0.23 | 0.50 | 0.30 | 0.74 |
| AUD/NZD | -0.17 | -0.19 | 0.13 | 0.22 | 0.19 | 0.06 | -0.37 | 0.08 | 0.01 | -0.02 | 0.17 | -0.42 | -0.15 | 0.40 | 0.08 | -0.46 | -0.17 | 0.36 | 0.30 | 0.29 | 0.46 | – | -0.26 | 0.10 | -0.08 | 0.24 | -0.43 | -0.25 |
| NZD/JPY | 0.23 | 0.28 | 0.45 | -0.17 | 0.46 | -0.26 | 0.58 | -0.15 | 0.74 | 0.76 | 0.00 | -0.41 | 0.02 | -0.64 | 0.11 | -0.32 | 0.12 | -0.56 | 0.84 | 0.40 | 0.36 | -0.26 | – | 0.65 | 0.68 | -0.00 | 0.57 | 0.59 |
| CAD/JPY | -0.24 | -0.22 | 0.83 | 0.21 | -0.07 | -0.17 | -0.12 | 0.02 | 0.81 | 0.74 | 0.07 | -0.12 | -0.47 | -0.05 | 0.04 | -0.14 | -0.40 | -0.06 | 0.70 | -0.21 | 0.14 | 0.10 | 0.65 | – | 0.71 | 0.43 | -0.26 | 0.09 |
| CHF/JPY | 0.25 | 0.18 | 0.53 | -0.39 | 0.15 | -0.23 | 0.19 | 0.06 | 0.85 | 0.75 | -0.40 | 0.03 | 0.08 | -0.05 | -0.35 | -0.02 | 0.02 | -0.09 | 0.63 | 0.04 | -0.23 | -0.08 | 0.68 | 0.71 | – | -0.32 | 0.10 | -0.18 |
| CAD/CHF | -0.62 | -0.51 | 0.43 | 0.78 | -0.28 | 0.06 | -0.39 | -0.05 | -0.00 | 0.02 | 0.60 | -0.20 | -0.73 | 0.00 | 0.50 | -0.16 | -0.57 | 0.04 | 0.13 | -0.32 | 0.50 | 0.24 | -0.00 | 0.43 | -0.32 | – | -0.46 | 0.36 |
| NZD/CAD | 0.55 | 0.59 | -0.33 | -0.45 | 0.65 | -0.15 | 0.86 | -0.21 | 0.06 | 0.17 | -0.07 | -0.39 | 0.53 | -0.77 | 0.10 | -0.26 | 0.59 | -0.65 | 0.32 | 0.74 | 0.30 | -0.43 | 0.57 | -0.26 | 0.10 | -0.46 | – | 0.66 |
| NZD/CHF | 0.04 | 0.18 | 0.02 | 0.20 | 0.45 | -0.11 | 0.57 | -0.27 | 0.06 | 0.20 | 0.44 | -0.58 | -0.06 | -0.81 | 0.53 | -0.42 | 0.14 | -0.66 | 0.44 | 0.50 | 0.74 | -0.25 | 0.59 | 0.09 | -0.18 | 0.36 | 0.66 | – |
As of September 30, 2026. Source: Dukascopy hourly bid candles. Each pair's daily level is the midpoint ((high + low) / 2) of the last hourly bid bar of each qualifying UTC day - a close proxy, since the hourly cache stores highs and lows only. A day qualifies only if it is a weekday carrying at least 12 hourly bars and a non-zero daily high-low range, the identical rule scripts/adr-table.py applies. The return series is the day-over-day natural log change of that level. Each cell is the Pearson correlation of two pairs' daily returns over the most recent 20, 60 or 250 sessions the two pairs have in common; a window with fewer than 15 aligned sessions is published as null rather than computed on a handful of days. +1.00 means the two pairs' daily changes moved in the same direction in proportion every day of the window, -1.00 the opposite direction, 0.00 no linear relationship. Correlation of daily changes says nothing about which pair moved more - see the average daily range table for size. Past correlation describes sessions that have already happened and is not a forecast of the next one.
How This Table Is Computed
Every figure comes from the same Dukascopy hourly bid candle cache behind the average daily range table, the hourly table and the session table, with the same day filter: a UTC calendar day counts only if it is a weekday carrying at least 12 hourly bars and a non-zero high-low range. That drops weekends, the Sunday-evening opening hours and near-closed holidays.
One honest limitation. The cache stores each hourly bar’s high and low and nothing else, so there is no daily close to correlate. The daily level used here is the midpoint of the last hourly bar of each qualifying day, which sits within half of one hourly bar’s range of the true 23:00 UTC close. The return series is the day-over-day natural log change of that level, and each cell is the Pearson correlation of two pairs’ returns over the most recent 20, 60 or 250 sessions the two pairs have in common. A window with fewer than 15 aligned sessions is published as empty rather than computed on a handful of days. Nothing is estimated and nothing is carried over from a previous run: a pair whose history fails to download is omitted and named under the table.
Two consequences of the method worth knowing before you use the numbers. First, because the level is a bid midpoint rather than a mid price, wide-spread crosses carry a little more noise than majors, which pushes their readings slightly toward zero. Second, a daily correlation says nothing about intraday behaviour: two pairs can read +0.80 on daily changes and still diverge for hours inside a session, which is exactly the window a scalping or grid rule lives in.
Reading the Three Windows Together
The 250-session column is the slow truth, the 20-session column is the current regime, and the gap between them is the actionable part. Where all three agree, as EUR/USD with GBP/USD does at +0.84 on every window, the relationship is structural and you can plan around it. Where they disagree, the shorter window is telling you something the long average has not caught up with yet.
As of September 30, 2026 the widest disagreement in the set involved NZD/JPY. USD/CAD with NZD/JPY read -0.26 over 250 sessions but +0.72 over the last 20; NZD/USD with NZD/JPY flipped from +0.58 to -0.29, and AUD/USD with NZD/JPY from +0.46 to -0.35. Three relationships that had been mildly positive or mildly negative for a year all moved sharply in the same month, which is the signature of a single currency, here the yen, driving the short window on its own. The per-pair summary below names, for every pair, the partner whose 20-session reading has drifted furthest from its 250-session one.
| Pair | Moves with | 250 / 60 / 20 | Moves against | 250 / 60 / 20 | Mean |r| vs other 27 | Biggest 20-session shift |
|---|---|---|---|---|---|---|
| EUR/USD | GBP/USD | +0.84 / +0.84 / +0.84 | USD/CHF | -0.86 / -0.88 / -0.78 | 0.35 | NZD/JPY: +0.23 → -0.44 |
| GBP/USD | EUR/USD | +0.84 / +0.84 / +0.84 | USD/CHF | -0.74 / -0.74 / -0.67 | 0.37 | NZD/JPY: +0.28 → -0.38 |
| USD/JPY | CAD/JPY | +0.83 / +0.88 / +0.97 | EUR/USD | -0.58 / -0.56 / -0.70 | 0.35 | NZD/JPY: +0.45 → +0.88 |
| USD/CHF | CAD/CHF | +0.78 / +0.78 / +0.74 | EUR/USD | -0.86 / -0.88 / -0.78 | 0.36 | CHF/JPY: -0.39 → +0.12 |
| AUD/USD | NZD/USD | +0.84 / +0.74 / +0.83 | EUR/AUD | -0.73 / -0.71 / -0.84 | 0.43 | NZD/JPY: +0.46 → -0.35 |
| USD/CAD | USD/CHF | +0.66 / +0.68 / +0.75 | EUR/USD | -0.63 / -0.75 / -0.75 | 0.27 | NZD/JPY: -0.26 → +0.72 |
| NZD/USD | NZD/CAD | +0.86 / +0.79 / +0.79 | EUR/NZD | -0.78 / -0.81 / -0.74 | 0.45 | NZD/JPY: +0.58 → -0.29 |
| EUR/GBP | EUR/NZD | +0.35 / +0.36 / +0.27 | GBP/CHF | -0.64 / -0.59 / -0.62 | 0.20 | GBP/JPY: -0.39 → -0.11 |
| EUR/JPY | GBP/JPY | +0.87 / +0.94 / +0.96 | USD/CAD | -0.04 / +0.10 / +0.63 | 0.22 | USD/CAD: -0.04 → +0.63 |
| GBP/JPY | EUR/JPY | +0.87 / +0.94 / +0.96 | EUR/GBP | -0.39 / -0.29 / -0.11 | 0.29 | USD/CAD: -0.06 → +0.64 |
| EUR/CHF | GBP/CHF | +0.71 / +0.81 / +0.77 | CHF/JPY | -0.40 / -0.34 / -0.28 | 0.22 | AUD/NZD: +0.17 → -0.10 |
| EUR/AUD | GBP/AUD | +0.82 / +0.83 / +0.83 | AUD/CHF | -0.83 / -0.74 / -0.75 | 0.33 | AUD/JPY: -0.65 → -0.09 |
| EUR/CAD | GBP/CAD | +0.75 / +0.78 / +0.75 | CAD/CHF | -0.73 / -0.67 / -0.48 | 0.26 | NZD/CHF: -0.06 → +0.42 |
| EUR/NZD | GBP/NZD | +0.81 / +0.82 / +0.76 | NZD/CHF | -0.81 / -0.69 / -0.71 | 0.36 | NZD/JPY: -0.64 → -0.02 |
| GBP/CHF | EUR/CHF | +0.71 / +0.81 / +0.77 | EUR/GBP | -0.64 / -0.59 / -0.62 | 0.25 | EUR/CAD: -0.01 → +0.34 |
| GBP/AUD | EUR/AUD | +0.82 / +0.83 / +0.83 | AUD/CHF | -0.71 / -0.61 / -0.63 | 0.31 | AUD/JPY: -0.58 → -0.15 |
| GBP/CAD | EUR/CAD | +0.75 / +0.78 / +0.75 | CAD/CHF | -0.57 / -0.52 / -0.40 | 0.30 | NZD/CHF: +0.14 → +0.41 |
| GBP/NZD | EUR/NZD | +0.81 / +0.82 / +0.76 | NZD/USD | -0.67 / -0.70 / -0.54 | 0.32 | NZD/JPY: -0.56 → -0.06 |
| AUD/JPY | NZD/JPY | +0.84 / +0.81 / +0.90 | EUR/AUD | -0.65 / -0.31 / -0.09 | 0.39 | USD/CAD: -0.22 → +0.52 |
| AUD/CAD | AUD/USD | +0.84 / +0.72 / +0.85 | EUR/AUD | -0.74 / -0.81 / -0.87 | 0.40 | NZD/JPY: +0.40 → +0.03 |
| AUD/CHF | NZD/CHF | +0.74 / +0.58 / +0.69 | EUR/AUD | -0.83 / -0.74 / -0.75 | 0.35 | AUD/JPY: +0.61 → +0.06 |
| AUD/NZD | AUD/CHF | +0.46 / +0.54 / +0.44 | GBP/AUD | -0.46 / -0.58 / -0.59 | 0.22 | USD/CHF: +0.22 → -0.27 |
| NZD/JPY | AUD/JPY | +0.84 / +0.81 / +0.90 | EUR/NZD | -0.64 / -0.39 / -0.02 | 0.39 | USD/CAD: -0.26 → +0.72 |
| CAD/JPY | USD/JPY | +0.83 / +0.88 / +0.97 | EUR/CAD | -0.47 / -0.37 / -0.10 | 0.30 | USD/CAD: -0.17 → +0.58 |
| CHF/JPY | EUR/JPY | +0.85 / +0.88 / +0.94 | EUR/CHF | -0.40 / -0.34 / -0.28 | 0.28 | USD/CAD: -0.23 → +0.49 |
| CAD/CHF | USD/CHF | +0.78 / +0.78 / +0.74 | EUR/CAD | -0.73 / -0.67 / -0.48 | 0.32 | EUR/AUD: -0.20 → +0.30 |
| NZD/CAD | NZD/USD | +0.86 / +0.79 / +0.79 | EUR/NZD | -0.77 / -0.85 / -0.87 | 0.42 | NZD/JPY: +0.57 → +0.16 |
| NZD/CHF | AUD/CHF | +0.74 / +0.58 / +0.69 | EUR/NZD | -0.81 / -0.69 / -0.71 | 0.35 | AUD/JPY: +0.44 → -0.13 |
As of September 30, 2026. Source: Dukascopy hourly bid candles. Each pair's daily level is the midpoint ((high + low) / 2) of the last hourly bid bar of each qualifying UTC day - a close proxy, since the hourly cache stores highs and lows only. A day qualifies only if it is a weekday carrying at least 12 hourly bars and a non-zero daily high-low range, the identical rule scripts/adr-table.py applies. The return series is the day-over-day natural log change of that level. Each cell is the Pearson correlation of two pairs' daily returns over the most recent 20, 60 or 250 sessions the two pairs have in common; a window with fewer than 15 aligned sessions is published as null rather than computed on a handful of days. +1.00 means the two pairs' daily changes moved in the same direction in proportion every day of the window, -1.00 the opposite direction, 0.00 no linear relationship. Correlation of daily changes says nothing about which pair moved more - see the average daily range table for size. Past correlation describes sessions that have already happened and is not a forecast of the next one.
Readings near zero deserve a word too. 80 of the 378 combinations sat inside -0.10 to +0.10 over 250 sessions, and EUR/USD with EUR/GBP was one of them at +0.05. A reading that low over a year is not two pairs that happen to disagree; it is two pairs whose daily moves carry almost no shared information, which is the property a second position is supposed to have if it is meant to diversify the first.
What the Numbers Mean for Running Two EAs
The practical question is almost never whether two pairs are correlated; it is how much exposure you actually hold when you think you hold two separate positions.
- Two pairs at +0.80 or higher, same direction. You are close to one position at double size. A grid on EUR/JPY and a grid on GBP/JPY (+0.87) will fill their levels on the same days and draw down together; the combined floating loss is roughly twice what either backtest showed. The why grid EAs blow up guide treats this as a sizing failure, not a strategy failure, and the fix is to halve the lot on each or run only one.
- Two pairs at -0.80 or lower, same direction. You are close to flat, paying spread and swap on both. EUR/USD long and USD/CHF long (-0.86) is a hedge that costs money every day it is open. Two sell grids on that pair of pairs are a hedge with a doubled margin bill.
- Two pairs inside -0.30 to +0.30. This is the band where a second system adds information rather than size. Over 250 sessions that describes 200 of the 378 combinations, so there is more room to diversify in this set than the famous positive clusters suggest.
- Mean absolute correlation against the rest. The last column of the summary table is the quickest way to pick a second or third pair: EUR/GBP at 0.20 and AUD/NZD at 0.22 sit furthest from everything else, NZD/USD at 0.45 and AUD/USD at 0.43 closest. A pair with a low figure can be added to almost any portfolio without doubling an existing bet.
Correlation also sets a floor under how much a position-sizing rule can protect you. The risk management guide sizes each trade to a fixed fraction of equity on the assumption that trades are independent; at +0.85 that assumption is wrong by nearly a factor of two, and the honest fix is to size the correlated group, not each member. Our guide on how much capital a forex EA needs works through that arithmetic for a multi-pair setup.
Why the Clusters Look the Way They Do
Nearly every strong reading in the table has a mechanical explanation, which is worth knowing because it tells you which relationships are likely to persist and which are a coincidence of the window.
Pairs that share a currency on the same side move together, and the more that currency dominated the year, the tighter the cluster. The yen crosses are the clearest case: EUR/JPY, GBP/JPY, CHF/JPY and CAD/JPY all read +0.71 or higher with each other, from +0.71 for CHF/JPY with CAD/JPY to +0.87 for EUR/JPY with GBP/JPY, because one leg of each is the same currency and it has been the active one. The antipodean pairs are the second cluster: AUD/USD with NZD/USD at +0.84, and both of them with their CAD crosses at +0.84 and +0.86, because the Australian, New Zealand and Canadian dollars respond to the same risk-appetite and commodity flows.
Pairs that share a currency on opposite sides move against each other. EUR/USD with USD/CHF (-0.86) is the textbook case: the euro and the franc are tightly linked and the dollar sits on opposite sides of the two quotes, so a dollar move pushes them apart by construction. The same logic produces EUR/AUD against AUD/CHF (-0.83) and EUR/NZD against NZD/CHF (-0.81).
Pairs that share no currency, or that pit two currencies from the same bloc against each other, sit near zero. EUR/GBP, EUR/CHF and AUD/NZD each pair two currencies that respond to the same flows, so most of the common movement cancels inside the pair and little is left to correlate with anything else. That is why they top the least-correlated list, and why they are the natural candidates for a second grid once a EUR/USD or AUD/USD grid is already running.
Refresh Schedule and What Can Go Stale
The data file behind every table on this page is rebuilt after each month closes, on the same schedule as the average daily range table, and the as-of date under each table is the last completed session in the file. The 250-session readings quoted in the prose above change slowly and are re-read at every refresh; the 20-session readings quoted in the section on windows are the ones most likely to have moved if you are reading this some weeks after the as-of date, and the summary table is the place to check them.
Related Tables and Guides
- Forex Average Daily Range Table — how far each of these 28 pairs moves in a day, the size half of the question this page answers for direction
- Forex Pip Value Table — what each pip of that movement is worth per lot, in the pair’s quote currency
- Best Forex Pairs for Grid Trading — which of these pairs suit a grid at all
- Why Grid EAs Blow Up — the sizing failure that two correlated grids reproduce
- How Much Capital Do You Need to Run a Forex EA? — margin and drawdown arithmetic for a multi-pair setup
This guide is for educational purposes only and is not investment advice. The correlations above describe sessions that have already happened; they do not indicate how any two pairs will move next. Forex trading carries substantial risk and most retail traders lose money.