Bid-Ask Spread Explained: Two Prices, One Difference
Understand bid and ask, calculate the quoted spread, and read a real Forex example without confusing a displayed price with an executed trade.
Author · Editor
- Author
- Mykola Zavarov
- Editor
- Andriy Bondarenko
Reviewed
The essentials
Bid is the quoted buying side and ask is the quoted selling side. A customer selling against the quote looks at bid; a customer buying against it looks at ask.
The quoted spread is Ask − Bid. A price gap, a pip count and a cash amount are different measurements; each needs its own units.
Two displayed prices do not establish an available quantity, a fill price, execution speed or the best price across the market.
An unchanged-quote buy-and-sell example loses one full spread before separate fees, not two. Actual entry and exit fills already contain their price effects.
The historical tables below belong to 6 November 2026. An updating comparison does not rewrite those dated observations.
What is the bid-ask spread?
The bid-ask spread is the difference between a quoted selling price, called the ask or offer, and a quoted buying price, called the bid. In a two-sided quote, these are the two prices you need to read together. The word “buy” can be confusing unless you say whose side you mean: the participant posting a bid is willing to buy; a customer selling against that bid is taking the other side. Investor.gov defines bid and ask.
From the customer’s perspective, buying against the displayed offer refers to Ask; selling against the displayed bid refers to Bid. This describes the sides of a quote. It does not promise that an order will fill at either price. A limit order can instead specify a price, with different execution conditions; the order-types guide deals with that separate question.
The concept applies beyond Forex, but the market context matters. A stock-market quotation and an OTC dealer’s currency quote do not represent the same market structure. Our worked data are two Forex observations from one monitored MT5 account. They are not a consolidated market-wide best bid and offer. Investor.gov’s Forex explanation distinguishes exchange trading from off-exchange counterparties.
Ask is usually above Bid, but “always strictly above” is too strong. If the two valid prices are equal, the quoted spread is zero. That does not make every other cost zero. This example accepts zero and rejects negative or invalid differences under its own data-quality rules.
How to calculate the spread—and name the units
Start with prices for the same symbol, source and quote observation: quoted spread = Ask − Bid. For example, a hypothetical share quote of 50.00 bid and 50.05 ask has a spread of 0.05 currency units per share. The quantity and fees still have to be specified before turning that into a cost scenario.
For Forex, divide the price difference by the defined pip size to obtain pips, or by the terminal point size to obtain terminal points. For many currency pairs a pip is 0.0001; for a pair quoted in Japanese yen it is commonly 0.01. Read the instrument’s convention rather than counting the last digit on the screen. OANDA’s pip explanation.
Measurement | Calculation or meaning | What must be known |
|---|---|---|
Price spread | Ask − Bid | Same symbol, source and quote observation |
Spread in pips | (Ask − Bid) / pip size | The pair’s pip convention |
Spread in terminal points | (Ask − Bid) / point size | The terminal symbol’s point size |
Minimum tick | The allowed price increment in the specification | Tick size; it is not automatically a pip or a point |
Relative spread | 100 × (Ask − Bid) / midpoint; midpoint = (Ask + Bid) / 2 | A stated denominator and percent units |
Cash illustration | Price spread × contract size × lots, in quote currency for these linear FX examples | Contract, volume, and conversion if the display currency differs |
Scroll sideways to compare all columns ↔
MetaQuotes defines point size, minimum tick size and monetary tick value as separate properties. The two records in the historical snapshot include pip and point sizes but no minimum-tick field, so this article does not invent a tick count for them. A value in points is not a percentage or an amount in your account currency. The pips, points and ticks guide explains that distinction in more detail. Symbol properties.
Read the two prices together
In the example below, select EUR/USD or USD/JPY, then choose which side you want explained. The control highlights the relevant quoted price; it does not place an order. A small volume selector translates the same price gap into an educational money estimate when a usable valuation is available.
Read the symbol, account label and quote time with the prices. The source is FxPro Standard on MT5, a live-server account without funds. These are observations of quotes, not funded customer transactions. A data source identifies the example; it is not a broker recommendation.
An MT5 quote structure can contain both Bid and Ask at the last update even if only one side changed. Keeping both in the same observation avoids constructing an artificial quote from unrelated records. It does not mean both sides changed at exactly that instant. MetaQuotes: MqlTick.
Keep the dated example and an updating result separate. A recent API response can carry an old quote. Read the observation time and its status, and read a currency conversion’s own time when it is shown. An unavailable money estimate does not make otherwise valid prices disappear.
A real, dated example: EUR/USD and USD/JPY
These two records were collected on 6 November 2026 at about 06:56 UTC from the same fixed FxPro Standard / MT5 / live / unfunded source, with USD as the account and display currency. Each pair has its own quote timestamp; they are not claimed to be simultaneous. The dated input snapshot preserves the values used here.
Recorded field | EUR/USD | USD/JPY |
|---|---|---|
Quote time, 6 November 2026 · UTC | 06:56:02.046 | 06:56:02.609 |
Bid | 1.11838 | 158.099 |
Ask | 1.11852 | 158.114 |
Ask − Bid | 0.00014 USD per EUR | 0.015 JPY per USD |
Pip size | 0.0001 | 0.01 |
Quoted spread | 1.4 pips | 1.5 pips |
Terminal point size | 0.00001 | 0.001 |
Spread in terminal points | 14 | 15 |
Recorded contract per 1 lot | 100,000 EUR | 100,000 USD |
Scroll sideways to compare all columns ↔
The EUR/USD subtraction is 1.11852 − 1.11838 = 0.00014. Dividing by 0.0001 gives 1.4 pips; dividing by 0.00001 gives 14 terminal points. For USD/JPY, 158.114 − 158.099 = 0.015, which is 1.5 pips or 15 terminal points under this record’s definitions.
The larger displayed pip count does not tell you which example costs more in USD. The quote currency and pip value differ. Nor can two observations establish a typical spread, the best broker or a persistent difference between these pairs. Updates in a live block leave this historical table unchanged.
Why an unchanged-quote round trip is one spread
Use the historical EUR/USD quote only as a conditional arithmetic example. Assume 1 lot represents 100,000 EUR, the quote stays unchanged, both hypothetical transactions fill exactly at the displayed sides, and there are no commissions, financing charges or other costs. None of those assumed fills occurred in this dataset.
Hypothetical step | Calculation | USD amount |
|---|---|---|
Buy 100,000 EUR at Ask | 100,000 × 1.11852 | Pay 111,852 |
Sell the same 100,000 EUR at unchanged Bid | 100,000 × 1.11838 | Receive 111,838 |
Difference before separate costs | 111,838 − 111,852 | −14 |
Scroll sideways to compare all columns ↔
The loss in this scenario is 100,000 × (Ask − Bid) = 14 USD: one full spread. Subtracting another 14 USD “for closing” would count the same gap twice. Reversing the sequence—selling at Bid and buying back at the unchanged Ask—produces the same gap under these assumptions.
Another way to see it is to use the midpoint, 1.11845. Buying at Ask is 0.00007 above that reference and selling at Bid is 0.00007 below it. The two half-gaps add to 0.00014. This is a bookkeeping illustration, not a claim that anyone can trade at the midpoint.
When quotes change between entry and exit, use the actual relevant prices. A result computed from actual entry and exit fills already includes those fill-price effects; do not subtract an extra quoted spread from that result. Separately charged commissions or financing may still need to be included. The slippage guide keeps quoted references and execution records distinct.
Convert the gap into money without hiding other charges
For the linear FX contracts in the snapshot, multiplying the price spread by contract size and lots gives a quote-currency illustration. EUR/USD therefore gives 0.00014 × 100,000 × 1 = 14 USD. At 0.1 lot it is 1.40 USD; at 0.01 lot it is 0.14 USD. These figures scale the same observation and do not test whether those quantities were executable.
USD/JPY gives 0.015 × 100,000 × 1 = 1,500 JPY. The saved API valuation converts this to 9.48727598170523 USD before rounding, displayed as 9.49 USD. Its conversion observation is dated 6 November 2026, 06:56:01.974 UTC—separate from the pair quote. The snapshot does not contain the component quotes behind the conversion provider’s median, so it supports checking the JPY arithmetic and USD scaling, but not rebuilding that entire conversion source independently. Snapshot.
Scaling the unrounded USD value gives approximately 0.9487275982 USD at 0.1 lot and 0.0948727598 USD at 0.01 lot, displayed as 0.95 and 0.09 USD respectively. Multiplying the already rounded 9.49 would discard precision. This matters whenever a displayed number is reused in another calculation.
The selected source’s tariff commission in the saved response is zero. The widget still labels its output “spread only”: it is not a promise of zero total trading costs. Other accounts can charge a separate commission, and “per side” differs from “round turn”. Check the tariff’s units and when it applies. Investor.gov’s discussion of dealer charges and Raw Spread vs Standard address that separate comparison.
Quoted spread is not effective spread or a fill receipt
Quoted spread uses the displayed Bid and Ask. Effective-spread measures use an actual execution price and a specified reference, often a midpoint, under the measurement method being used. A quote snapshot contains no such execution. Schwab’s official explanation distinguishes the quoted gap from execution-based cost measures. Quoted versus effective spread.
A market order’s execution price is not guaranteed by the price shown when it was submitted. Order type, available quantity, price changes and routing can matter; the last traded price is also a different piece of information from the current two-sided quote. Investor.gov: order types.
Consequently, these MT5 observations cannot measure slippage, fill rate, requotes, execution speed or the amount you could transact. They do not provide an order book or a consolidated best price across venues. Calculating a hypothetical profit or loss from them would not turn them into evidence of a trade.
This is also why mixing the best Bid found at one broker with the best Ask at another is not a valid quote for this widget. Different accounts, timestamps and access conditions would describe a different experiment. Here the two sides remain bound to one source observation.
Why spreads change—and what one snapshot cannot explain
Spreads can vary with market conditions. OANDA, for example, states that changes in volatility and liquidity can widen its spreads around news, market openings and closings. That is an explanation of possible conditions in its service, not a rule that assigns a cause to every change in our dataset. OANDA’s spread policy.
A narrow spread is not a measurement of unlimited liquidity. Without quoted size, market depth and execution records, you cannot determine how a larger order would trade. Similarly, a wide observation cannot establish that a broker acted improperly or that a particular announcement caused it.
Time matters in two ways: the gap can change, and the displayed observation can become old. Under the policy recorded for this example, a quote is labelled fresh through 45 seconds, recent through 120 seconds, and stale after that. Re-fetching an unchanged observation does not restart its age. Those are product display thresholds, not guarantees that the market still offers the quote. Recorded policy.
To investigate historical conditions, you would need a defined source, interval, sample and missing-data policy. Our minute-sampled spread history, when used elsewhere, summarizes observed minute aggregates; it is not a complete tick stream or proof of the widest spread inside a minute. Two dated examples cannot answer that historical question.
A useful next comparison: the same pair, volume and cost basis
To work through your own numbers, open the Forex Spread Calculator. To compare observed account costs, use the EUR/USD spreads and commissions comparison. The widget links keep your selected pair and volume, but do not carry quoted prices into a future calculation. The comparison describes account-level cost scenarios; it is not a general broker ranking.
- Check the canonical pair, broker entity, account type and platform before comparing rows.
- Use the same volume, currency and observation basis; distinguish a latest quote from a historical statistic.
- Read the quote time and any conversion time. A successful refresh is not a new market observation.
- Keep spread and separately charged commission identifiable; a low quoted spread does not establish a low total cost.
- Check availability for your country and the relevant entity separately from the language of the page.
The snapshot’s source identification is evidence about where the example came from, not a recommendation to open that account. Broker reviews can provide context for a separate conditions-and-availability decision. Neither a zero spread nor the smallest value in a limited observation set proves safety or a suitable broker.
Frequently asked questions
Do I buy at Bid or Ask?
When buying against the displayed quote, Ask is the relevant offered side. When selling against it, Bid is the relevant buying side. These labels do not guarantee a fill: the order type, quantity, timing and execution conditions still matter.
Can the bid-ask spread be zero?
Yes. If two valid quoted prices are equal, Ask − Bid is zero. The example accepts this as a number rather than treating it as missing. Zero quoted spread does not imply zero commission, financing or execution-related costs.
Why is 0.015 on USD/JPY 1.5 pips rather than 150 pips?
In the recorded USD/JPY specification, one pip is 0.01. Therefore 0.015 / 0.01 = 1.5 pips. Its terminal point is 0.001, so the same price gap is 15 terminal points. Use the actual definitions instead of counting decimal places.
Do I pay the full spread twice when opening and closing?
In the explicit unchanged-quote example, buying at Ask and selling at Bid loses one full spread before separate charges. If you calculate a result from actual entry and exit fills, their price effects are already included. Do not subtract the same quoted spread again.
Is a lower spread always a cheaper account?
No. The commission convention, contract and volume, conversion, holding charges and observed period can differ. A quoted-spread comparison also does not measure actual execution quality or establish which account is available or suitable for you.
Is the money shown in the widget an executed loss?
No. It is a spread-only illustration for a stated volume, using a monitored quote and usable valuation. The observed MT5 account is live but unfunded; no customer fills or account cash-flow records are included.
Why can prices remain visible when the USD estimate is unavailable?
Bid and Ask may still form a valid observation while the required conversion or valuation is missing or stale. Keeping the prices with their timestamp and showing the money estimate as unavailable is more informative than inventing a conversion.
Does a live refresh change the historical table in this article?
No. The table belongs to the snapshot collected on 6 November 2026 at about 06:56 UTC. An updating widget displays its own observation times. The dated download remains a historical record; reopening it does not make its observations current.
Sources & further reading
- MetaQuotes — MqlTickChecked