FX BANK FORECAST · METHODOLOGY
How the Consensus Engine works
Effective 5 May 2026 — revised quarterly
1. Consensus pressure map
For each currency pair and forecast horizon (3M, 6M, 12M), we render a Gaussian kernel density estimate over the set of latest published firm targets. Bandwidth is selected via Silverman’s rule-of-thumb. The current spot is overlaid as a colored dot positioned at its percentile within the distribution. See it live at /research/pressure.
- Stretched bull (red dot). Spot sits in the upper 15% of the forecast distribution — the tape has run further than the Street expected.
- Stretched bear (green dot). Spot sits in the lower 15% — the tape has fallen further than expected.
- In range. Spot is between the 15th and 85th percentile of forecasts. Most pairs sit here most of the time.
- Insufficient coverage. Tiles render only when at least five firm forecasts are available.
2. Disagreement variance
Cell color in the Disagreement Map encodes the coefficient of variation across firm forecasts within each (pair, horizon) bucket:
CV = stdDev(firm_targets) / |mean(firm_targets)| × 100
Loud cells indicate high dispersion across the sell side — the buckets where alpha is most likely to live. Cells are normalized per-render across the actual data spread, so the color encoding remains visible regardless of whether variances cluster near 0.5% or 50%.
3. Forecaster accuracy
For each (firm, currency, horizon, lookback) tuple, we walk the firm’s published forecasts whose horizon date falls inside the window. The predicted value is the firm’s stated quarter target.
Realized value (v1 proxy). The full target metric is the spot price on the actual horizon date. While the forecast corpus is still young — many horizons remain open — v1 uses the latest observed spot for the currency as a proxy. This computes current divergence from target rather than realized accuracy at horizon. Forecasters whose targets currently sit close to spot rank high; those whose targets are far from spot rank low. As horizons close and the corpus grows, this proxy is replaced by an OANDA historical-spot lookup at the horizon date. The scorecard surface notes this period explicitly.
- Median absolute error (primary metric). The median of
|predicted − realized| / realized × 10000expressed in basis points. Robust to outliers and meaningful at every sample size. - Directional hit rate (secondary). Fraction of forecasts whose predicted direction (vs spot at the time of forecast) matches the realized direction. Sign-only. Degenerate at sample size 1, so used only as a tooltip field while the corpus is sparse.
- Sample-size floor. The published target is ten samples per (firm, currency, horizon, window) bucket. While the corpus is young, the floor is one — every available data point is shown.
4. Refresh cadence
- Pressure map / disagreement matrix: every five minutes via ISR.
- The Brief: four times daily — 07:00, 11:00, 15:00, 19:00 UTC.
- Audio brief: synthesizes immediately after each brief.
- Forecaster accuracy backtest: nightly at 02:00 UTC.
- Live commentary ticker: updates within sixty seconds of a new aggregator pass.
- Forward calendar: every thirty minutes.
5. Sources
Inputs come from publicly available sell-side bank research published by the firms themselves. Bank commentary is aggregated from the same firms’ RSS feeds. News articles are sourced from Financial Modeling Prep. Live spot rates come from OANDA.
We are not affiliated with any of the firms whose research we aggregate. Firm logos are used under nominative fair use to identify their published views.
FX BANK FORECAST · COVERAGE
Institutional FX coverage in your inbox
Aggregated year-end forecasts, scenario shifts, and curated analyst notes from eight institutional desks. No promotion.