guides
How to Calculate a Safe Buy-Sell Spread for a Currency Exchange Desk

A desk that prices too tight loses money on every trade; too wide and clients walk. Here's the actual formula for a safe buy-sell spread.
You quoted a spread that felt competitive. Three trades later, the market moved against you and you realize you priced the whole day at a loss — because your spread never accounted for volatility, volume risk, or your own operational float.
That's the moment every exchange desk operator hits eventually. Set your spread too tight and you're one volatile hour away from eating losses on every fill. Set it too wide and your clients quietly move to the desk down the street quoting 40 basis points tighter. Getting the number right isn't guesswork — it's a formula with specific inputs.
What is a safe buy-sell spread for a currency exchange desk?
A safe spread for a mid-size exchange desk typically falls between 0.5% and 2% of the transaction value, depending on the currency pair's volatility, your daily volume, and how much counterparty risk you're carrying. Major pairs (USD/EUR, USD/RUB in liquid markets) can run as tight as 0.3-0.8%, while exotic or thinly-traded pairs need 1.5-3%+ to cover the risk of holding inventory you can't offload quickly.
The number isn't static. A desk quoting the same spread on Monday morning and during a central bank announcement is doing it wrong — the formula has to flex with market conditions.
What goes into the spread formula?
Your spread needs to cover four separate cost buckets before a single dollar becomes profit. Miss one and you're subsidizing your clients without knowing it.
Base operating margin: your target profit per transaction — usually 0.2-0.5% for high-volume desks, higher for boutique or low-volume operations.
Volatility buffer: extra cushion sized to the pair's historical intraday swing. A pair that moves 1.5% in a normal session needs a wider buffer than one that moves 0.3%.
Inventory holding cost: the risk you carry between the moment you buy currency and the moment you offload it. The longer your average hold time, the bigger this slice needs to be.
Counterparty and liquidity risk: if you're settling with a bank partner or liquidity provider that charges its own fee or has settlement delay, that cost gets passed into the spread too.
Add those four together and you get your floor spread — the minimum you can quote and still be safe. Anything your competitors quote below that floor, let them have it.
How do you actually calculate it, step by step?
Here's the practical sequence most desks use to land on a number instead of a guess:
Pull 30 days of intraday volatility for the pair you're quoting. Use the average daily range, not just the close-to-close move — intraday swings are what actually hurt you mid-hold.
Set your holding window. If you typically offload inventory within an hour, your volatility exposure is small. If you're holding overnight or across a weekend, multiply your buffer accordingly.
Add your fixed costs per transaction — processor fees, compliance checks, settlement fees from your liquidity provider.
Layer in your target margin. This is the number you actually want to keep, separate from risk coverage.
Stress-test against a bad day. Run the formula against the worst single-day move in your 30-day sample. If your spread still covers costs on that day, it's safe. If it doesn't, widen it.
Re-check weekly. Volatility regimes shift. A spread that was safe in a calm month can be dangerously thin once volatility doubles.
How often should you adjust your spread?
Most desks review spreads weekly at minimum, daily during high-volatility periods — think rate decisions, geopolitical events, or sudden volume spikes. A spread calculated on calm-market data and left untouched through a volatile week is the single most common way desks bleed money without noticing until the monthly numbers come in.
If you're running a small team, this is exactly where things slip — one person is watching the market, another is quoting clients, and nobody owns the recalculation. A shift handover log that explicitly logs the current spread and the reasoning behind it keeps every shift quoting the same, correctly-updated number instead of whatever the last person remembered.
What mistakes make a spread unsafe?
Copying a competitor's quoted spread without knowing their volume, liquidity access, or risk tolerance — their safe number isn't necessarily yours.
Pricing exotic pairs the same as majors because it's easier to manage one number — exotic pairs need a wider buffer, full stop.
Ignoring settlement delay with your liquidity provider — if funds take 24 hours to settle, you're carrying overnight risk you haven't priced in.
Not logging who changed the spread and why — if your team is manually adjusting quotes through the day, undocumented changes make it impossible to audit what went wrong after a loss.
Treating the spread as permanent instead of a live number tied to current volatility data.
How do you keep a team quoting the same spread consistently?
If your desk runs client conversations and quotes through Telegram — common for exchange desks operating in CIS and emerging markets — the risk isn't just the math, it's keeping every chatter or operator aligned on the current number in real time. CRMChat runs CRM and chat on one screen, so your team can see the live spread policy alongside every client conversation instead of toggling between a spreadsheet and Telegram.
CRMChat also lets teams tag conversations and track notes per client, which matters when different clients are quoted different spreads based on volume or relationship — your operators can see the agreed terms without having to ask a supervisor mid-conversation. For desks managing multiple operators across shifts, pairing that with a documented shift handoff process closes the gap between "the spread is calculated correctly" and "every person quoting clients actually uses the right number."
What's a quick sanity check before you quote?
Before locking in a spread for the day, run this check:
Does it cover your worst day in the last 30? If not, widen it.
Does it account for your actual holding time, not an idealized "we offload instantly" assumption?
Is it documented somewhere your whole team can see, not just in one person's head?
Has anything material changed today — a rate announcement, a liquidity provider outage, a volume spike — that should move the number before you quote the next client?
Get those four right and you've got a spread that protects you without pricing yourself out of the market. Skip any one of them and you're one bad afternoon away from finding out the hard way.


