Powrót do bloga

The 4pm London Fix Explained: How the WMR Benchmark Is Really Calculated

V
Vlado Grigirov
August 31, 2026
Currency API Exchange Rates Market Analysis FX Benchmarks Finexly

Once a day, for five minutes, the foreign exchange market stops behaving like a market. The 4pm London fix — the WMR closing spot benchmark published by LSEG — is the rate that trillions of dollars of index funds, pension portfolios and corporate books get marked against, and because so much execution is deliberately timed to land inside that window, the window itself moves prices. If you have ever seen EUR/USD run 40 pips in four minutes on a day with no news, you have watched the fix happen.

Today, 31 August 2026, is one of the more awkward versions of it: it is the last calendar day of the month, so month-end rebalancing flows are in play, and it is also the UK Summer Bank Holiday, so the city whose name is on the benchmark is shut. The fix still gets calculated. The liquidity behind it does not.

This article covers what the 4pm London fix actually is, how LSEG genuinely computes it — which is not what most explainer pages say — why month-end fixes move markets, and what changes in your code when a business requirement says "use the fix rate" instead of "use the current rate."

What Is the 4pm London Fix?

The 4pm London fix is a benchmark exchange rate: a single published number, per currency pair, per day, that everyone can agree to use. Spot FX trades continuously across time zones with no central exchange, so there is no natural "closing price" the way there is for a stock. Somebody has to nominate one. Since the early 1990s that somebody has been the WM/Reuters benchmark, now WMR FX Benchmarks, administered by Refinitiv Benchmark Services (UK) Limited under LSEG and regulated by the FCA as a benchmark administrator.

In LSEG's own terminology the distinction is simple. Per the methodology's glossary, rates are produced throughout the day, and all rates except the 4pm London rates are "Intraday". The 4pm UK publication is the Closing Rate — and it is designated a Critical Benchmark, which carries extra regulatory cessation procedures.

What it gets used for:

  • Fund and portfolio valuation — a global equity fund holding assets in 20 currencies needs one consistent FX snapshot to strike a NAV.
  • Index calculation — MSCI, FTSE Russell, S&P, JPMorgan and STOXX multi-currency indices are built on WMR rates.
  • Derivative settlement and mark-to-market.
  • Execution — asset managers place "at the fix" orders so their trade price matches the rate their portfolio is valued at, eliminating tracking error against the benchmark.

That last one is the whole story. The benchmark is not merely observed, it is traded on, and that reflexivity is why the fix has its own market microstructure.

Why This Timestamp and Not Another

Coverage is the reason. At 16:00 London, the European session is still fully open and New York has been trading for a couple of hours — the deepest overlap of the day, as covered in our guide to forex market hours. Any earlier and Asia-Pacific pricing is stale; any later and Europe has gone home. The FX market as a whole turned over $9.6 trillion per day in April 2025 according to the BIS Triennial Central Bank Survey — a 28% jump on 2022 — and a disproportionate share of the day's benchmark-linked volume compresses into that one window.

How the WMR Fix Is Actually Calculated

Here is where nearly every explainer article on the internet is wrong. Search for this topic and you will repeatedly read that the fix is a "volume-weighted median of trades." The phrase "volume-weighted" does not appear anywhere in LSEG's published methodology (WMR FX Benchmarks, Spot, Forward, NDF and Metal Rates, v30, January 2026). The real mechanism is a plain median over a sample, with a spread rule bolted on. The difference matters if you are trying to reconcile a fix rate against your own tick data.

The Five-Minute Window — and the Sampling Rate

The window is five minutes wide, centred on the fix: from 2 minutes 30 seconds before to 2 minutes 30 seconds after 16:00 London. That is true for both liquid and illiquid currencies. What differs is the sampling frequency and the input type:

Trade CurrenciesNon-Trade Currencies
Window5 min (−2m30s to +2m30s)5 min (−2m30s to +2m30s)
Sample intervalEvery 1 secondEvery 15 seconds
InputExecuted trades, then order ratesIndicative multi-contributor quotes
SourcesLSEG Matching, EBSLSEG quote feeds
LSEG is candid that this is a sample, not a census: trading "occurs in milliseconds on the trading platforms and therefore not every trade or order is captured, just a sample." One traded rate is captured per source per second.

It Is a Median, With a Synthetic Spread

The calculation for a Trade Currency runs like this:

  1. Each captured trade is tagged as a bid or an offer depending on whether it was a buy or a sell — you only ever observe one side.
  2. The missing side is synthesised. A spread taken from the order rate captured at the same instant is applied to the trade rate to construct the opposite bid or offer.
  3. Valid trades from all sources are pooled, and a median bid and a median offer are calculated independently.
  4. The mid is the midpoint of those two medians.
  5. A minimum "Standard Spread" — pre-defined per currency and per calculation time — is then applied back to that mid to publish a new bid and offer.

So the published bid/offer is not an observed bid/offer. It is a reconstruction around a median mid. If the market's own spread is wider than the pre-set minimum but narrower than the pre-set maximum, the market spread is used instead; wider than the maximum triggers manual analysis.

If there are too few valid trades — the threshold is LSEG's expert judgement, not a published number — the calculation falls back to order rates, and here the rules change: order rates from different sources are not pooled. Each source gets its own median, and the source with the highest count of valid orders wins. Below that sits a third tier: bank quotes from RICs, used when neither trades nor orders are available.

The 25 Trade Currencies

Only 25 currencies get the transaction-based treatment:

AUD, CAD, CHF, CNH, CZK, DKK, EUR, GBP, HKD, HUF, ILS, INR, JPY, MXN, NOK, NZD, PLN, RON, RUB, SEK, SGD, THB, TOF, TRY, ZAR

Eleven of those (AUD, CAD, CHF, CNH, EUR, GBP, HKD, JPY, NZD, RUB, SGD) draw on both LSEG Matching and EBS; the other fourteen use LSEG Matching alone. Everything else in the 157-currency spot coverage is a Non-Trade Currency, priced off indicative quotes. If your product touches, say, KES, PKR or BOB, the "benchmark" for those pairs is a median of dealer quotes — closer in nature to an indicative reference rate than to a traded price, a distinction we go into in where exchange rate APIs get their data.

One more detail worth knowing: the base currency is not always USD. CZK, DKK, HUF, NOK, PLN, RON and SEK are captured against the euro. Everything else is captured against the dollar.

Month-End: Why the Fix Moves the Market

The fix is a benchmark on 250-odd days a year and an event on about twelve of them. Month-end is when mechanical, price-insensitive flow concentrates into those five minutes.

The dominant driver is hedge rebalancing. A European pension fund holding US equities runs a currency hedge sized to its dollar exposure. If US equities rally hard over the month, that dollar exposure grows, the existing hedge is now too small, and the fund must sell dollars to restore its target hedge ratio. A sharp US equity fall produces the mirror image: dollar buying. Because the hedge is measured against the benchmark, the trade is executed at the benchmark — which pushes the benchmark.

A second, earlier flow comes from corporate treasury. Companies repatriating foreign revenue want the cash to land on the final business day, and spot FX settles at T+2, so that trade has to be done roughly two business days earlier. Corporate month-end flow therefore shows up before the final day, not on it — a direct consequence of the settlement conventions covered in our guide to FX value dates and T+2 settlement.

Note that these two flows can point in opposite directions in the same week, and bank estimates for any given month-end routinely disagree with each other. Month-end flow is a reason for a move that has already started, not a forecast.

Today's Wrinkle: A Bank Holiday Month-End

31 August 2026 is the UK Summer Bank Holiday. LSEG's holiday policy is that closing spot rates are produced as normal so long as two or more of the US, UK, Germany and Japan are open — three of the four are, so today's 4pm fix will be published. But UK banks are shut, London desks are skeletal, and thin books plus concentrated benchmark orders is exactly the combination that produces outsized fix prints.

The settlement side is more interesting. For EUR/USD, 31 August is a normal business day in both Frankfurt and New York, so a Friday 28 August trade settles Tuesday 1 September. For GBP/USD, sterling's settlement centre is closed today, so the same trade date pushes out to Wednesday 2 September. Two pairs, one trade date, two different value dates — the sort of divergence that quietly breaks reconciliation logic that assumes a single business-day calendar.

What Changes in Code When You Use Fix Rates

If a requirement lands on your desk saying "value the portfolio at the 4pm London rate," several assumptions in a typical rates integration stop holding.

The DST Trap

The fix is defined in London local time, which means it is 15:00 UTC in British Summer Time and 16:00 UTC in GMT. Hardcoding either one is wrong for roughly half the year. Compute it:

from datetime import datetime, timedelta, timezone
from zoneinfo import ZoneInfo

LONDON = ZoneInfo("Europe/London")

def fix_window_utc(day, hour=16):
    """UTC start/end of the WMR fix window: 2m30s either side of 16:00 London."""
    centre = datetime(day.year, day.month, day.day, hour, 0, tzinfo=LONDON)
    return (
        (centre - timedelta(seconds=150)).astimezone(timezone.utc),
        (centre + timedelta(seconds=150)).astimezone(timezone.utc),
    )

# 2026-08-31 (BST) -> 14:57:30Z .. 15:02:30Z
# 2026-01-15 (GMT) -> 15:57:30Z .. 16:02:30Z

The same logic in JavaScript, using the longOffset time-zone name rather than a hardcoded offset table:

function londonOffsetMinutes(d) {
  const s = new Intl.DateTimeFormat('en-GB', {
    timeZone: 'Europe/London', timeZoneName: 'longOffset',
  }).format(d);                                  // "31/08/2026, GMT+01:00"
  const m = s.match(/GMT([+-])(\d{2}):(\d{2})/);
  return m ? (m[1] === '-' ? -1 : 1) * (+m[2] * 60 + +m[3]) : 0;
}

export function fixWindowUTC(isoDate, hour = 16) {
  const guess = new Date(`${isoDate}T${String(hour).padStart(2, '0')}:00:00Z`);
  const centre = new Date(guess.getTime() - londonOffsetMinutes(guess) * 60_000);
  return {
    start: new Date(centre.getTime() - 150_000).toISOString(),
    end:   new Date(centre.getTime() + 150_000).toISOString(),
  };
}

Both produce identical output. To pull a market rate anchored to that moment, hit the Finexly API with the computed timestamp:

curl "https://api.finexly.com/v1/historical?date=2026-08-31&base=EUR&symbols=USD,GBP,JPY" \
  -H "Authorization: Bearer YOUR_API_KEY"
{
  "success": true,
  "base": "EUR",
  "date": "2026-08-31",
  "rates": { "USD": "…", "GBP": "…", "JPY": "…" }
}

Store that response against your computed fix timestamp rather than against "today" — the date the rate belongs to and the date you fetched it are not the same field.

Cross Rates Are Derived, Not Observed

WMR captures currencies against USD (or EUR, for the seven listed above) and calculates the crosses arithmetically. The published formulae multiply or divide same-side quotes:

GBP/CAD bid   = (USD/CAD bid)   × (GBP/USD bid)
GBP/CAD offer = (USD/CAD offer) × (GBP/USD offer)

GBP/AUD bid   = (GBP/USD bid)   / (AUD/USD offer)
GBP/AUD offer = (GBP/USD offer) / (AUD/USD bid)

Two consequences follow, and both are explicit in the methodology. CAD, RUB, TRY and PHP settle T+1 rather than T+2, and no adjustment is made — the cross is calculated as if both legs were T+2. And no adjustment is made when a market holiday is observed in either the primary or the crossing currency. A cross-rate benchmark can therefore be published for a pair on a day when one leg of it could not actually have been dealt. If you are building reconciliation around crosses, see cross exchange rates explained for the arithmetic in full.

Precision and Rounding Are Specified

Bid and offer are published to a maximum of four decimal places; mids to five. The mid is the arithmetic mean of the already-rounded bid and offer, and a trailing 5 rounds up. If you store fix rates in a column narrower than that, or recompute the mid from unrounded inputs, you will produce a number that disagrees with the official one in the last digit — which is enough to fail an audit tie-out. Our guide to currency rounding and decimal places covers the downstream money-arithmetic side.

The Fix Can Be Revised

This is the one that catches caching layers. LSEG's republication policy states that "under exceptional circumstances, it may be necessary to amend the rates for one or more currencies after publication," bounded only by this: a day's rates are never amended after the following weekday's rates at the same time are published. Practically, you have a roughly 24-hour revision window. Any system that fetches the fix once and treats it as immutable can end up permanently holding a superseded number. Re-fetch the previous day's benchmark before you close the books, and store a rate_asof timestamp alongside the value.

Publication is not instantaneous either: LSEG's stated target is 15 minutes after the calculation time for spot (30 minutes for forwards and NDFs). A job that fires at 16:00:01 London and expects the closing rate will get nothing.

Do You Actually Need the Official Fix?

For most software, no — and licensed WMR data is expensive. The honest test is whether an external party will check your number against theirs.

You need the licensed benchmark when you are striking a fund NAV, calculating or tracking an index, settling a contract that names the WMR rate, or producing figures an auditor will tie out to a custodian report.

A good market rate is sufficient for pricing pages, multi-currency checkout, expense conversion, analytics dashboards, internal reporting and SaaS billing. In these cases what matters is that the rate is close to the mid-market rate, consistently sourced, and stored with the timestamp you applied — not that it matches a specific benchmark to five decimal places.

The middle path most teams end up on: use a general currency exchange rate API for everything operational, and pin a daily snapshot taken at the fix timestamp as your internal book rate. You get a stable, defensible, reproducible daily rate that lines up with when the rest of the industry marks its books, without paying for a licensed benchmark feed. Store it in a dedicated column — see multi-currency ledger design — rather than recomputing it on read.

Frequently Asked Questions

What time is the 4pm London fix in UTC? 15:00 UTC during British Summer Time (late March to late October) and 16:00 UTC during GMT. The five-minute calculation window runs from 2 minutes 30 seconds before to 2 minutes 30 seconds after. Always derive it from the Europe/London time zone rather than hardcoding an offset.

Is the 4pm London fix a volume-weighted average? No. Despite how it is frequently described, LSEG's published methodology uses an unweighted median of sampled bid and offer rates, calculated independently, with a pre-defined minimum "Standard Spread" applied to the resulting mid. There is no volume weighting in the documented method.

Why does the exchange rate move so much at 4pm London? Because a large amount of execution is deliberately linked to the benchmark. Asset managers and index funds trade at the fix so their execution price matches their valuation price, concentrating one-directional, price-insensitive flow into a five-minute window. The effect is strongest at month-end, quarter-end and year-end.

Which currencies get transaction-based fix rates? 25 "Trade Currencies" — AUD, CAD, CHF, CNH, CZK, DKK, EUR, GBP, HKD, HUF, ILS, INR, JPY, MXN, NOK, NZD, PLN, RON, RUB, SEK, SGD, THB, TOF, TRY and ZAR. The remaining currencies in the 157-currency coverage are priced from indicative quote data instead.

Can I get 4pm London fix rates for free? Not the licensed WMR benchmark itself. LSEG does publish a limited free set with a 30-minute delay for the 2pm CET and 12 noon EST fixes covering 32 currencies. For most applications, a free currency API sampled at the fix timestamp gives you a rate that is materially equivalent for operational purposes — just don't call it the WMR fix in a document an auditor will read.

Is the fix published on public holidays? Closing spot rates are produced as long as two or more of the US, UK, Germany and Japan are open. Intraday rates may not be produced if one or more of those centres is closed. When rates aren't produced, the previous published time's rates carry forward.


Need consistent daily exchange rates you can pin to a fixed timestamp without licensing a benchmark feed? Get your free Finexly API key — no credit card required. 170+ currencies, historical data back to 1999, and 1,000 free requests a month to prove it works before you scale up on our pricing plans.

Sources: LSEG, Methodology: WMR FX Benchmarks, Spot, Forward, NDF and Metal Rates, v30, January 2026; LSEG, WMR FX Benchmarks product fact sheet; BIS, Triennial Central Bank Survey — OTC foreign exchange turnover in April 2025.

Vlado Grigirov

Senior Currency Markets Analyst & Financial Strategist

Vlado Grigirov is a senior currency markets analyst and financial strategist with over 14 years of experience in foreign exchange markets, cross-border finance, and currency risk management. He has wo...

View full profile →

Udostępnij ten artykuł