Gross and Net Spread: How to Assess the Potential of an Arbitrage Trade

#arbitrage#spread

The spread is the difference between the prices of one asset, or of contracts on it, in two markets. In cross-exchange arbitrage, this difference helps assess the terms for opening and closing a bundle.

The basic formula for the difference in percent

Spread = (higher price − lower price) ÷ lower price × 100%

For example, at prices of 100 and 102 USDT

(102 − 100) ÷ 100 × 100% = 2%

But the same formula can give results with different meanings. It all depends on which prices you use: last trade prices, the best offers in the order books, or the weighted average execution prices of a specific lot.

In this article we look at how a difference in quotes turns into the estimated potential of a bundle with a long and a short.

Spread from last prices

The last price is the result of a trade that has already taken place between market participants.

Accordingly, the spread from last prices shows the difference formed by past trades on two venues. It does not reflect the prices at which your lot can be executed right now.

Suppose the last trades went through:

  • on exchange A — at 100 USDT;
  • on exchange B — at 102 USDT.

The difference is 2%. However, the orders those trades were made against may have been filled completely. A new purchase or sale will go through at other available offers.

To assess the execution terms, you need to look at the current orders and the available volumes.

Spread from order books

An order book shows the current orders of market participants: at what prices and in what volume they are ready to buy or sell the instrument.

An order book has two sides:

  • ask — sellers' orders, against which you can buy;
  • bid — buyers' orders, against which you can sell.

When you open a long, you buy the instrument; when you open a short, you sell it. So to calculate the entry spread, you compare the sellers' offers on one exchange with the buyers' offers on the other.

However, comparing only the best prices is not enough. The best level may hold only part of your lot. The rest of the volume will have to be executed at the next levels of the order book.

Why lot size changes the spread

Suppose you are going to open a long and a short of 10 coins each in contract equivalent.

On exchange A — sellers' orders (ask): you buy against them
Price Available volume
99 USDT 5 coins
101 USDT 5 coins
On exchange B — buyers' orders (bid): you sell against them
Price Available volume
103 USDT 5 coins
101 USDT 5 coins
At the best prices, the difference is

(103 − 99) ÷ 99 × 100% ≈ 4.04%

But buying at 99 and selling at 103 USDT is possible for only 5 coins. Your lot is twice as large, so each operation will touch two price levels.

To find the spread for the whole lot, you first need to calculate the weighted average price of each leg.

How the weighted average price is calculated

The weighted average price takes into account what part of the lot is executed at each price.

Formula

Weighted average price = sum of price × volume at each level ÷ total volume

For the purchase in our example

(99 × 5 + 101 × 5) ÷ 10 = 100 USDT

For the sale

(103 × 5 + 101 × 5) ÷ 10 = 102 USDT

So the whole lot can be bought at an average of 100 USDT and sold at an average of 102 USDT.

If the last level used holds more volume than needed, only the required part of it is included in the calculation.

The larger the lot, the more levels it may touch and the further the weighted average prices may move away from the best offers.

If there are not enough orders for the whole lot, its full execution cannot be calculated from the current order book. This happens mostly in low-liquidity markets and with large lots.

Gross spread: the price difference before fees

The gross spread is the difference between the weighted average execution prices of the chosen lot, before trading fees.

For an entry where we sell higher than we buy

Gross spread = (average sell price − average buy price) ÷ average buy price × 100%

Substituting the values from the example

(102 − 100) ÷ 100 × 100% = 2%

Comparing the best prices showed 4.04%, but for the full lot of 10 coins the gross spread is 2%.

The difference is explained by the volumes available at the price levels. It is already included in the weighted average prices — there is no need to subtract it again as separate “slippage on volume”.

When calculating a trading bundle, it is also important to keep the direction: on which leg we buy and on which we sell. The formula with the higher and the lower price shows the size of the gap, but on its own it does not tell a favourable direction from an unfavourable one.

Entry spread and exit spread

Opening and closing a bundle use different sides of the order books:

Bundle leg Entry Exit
Long Buy at ask Sell at bid
Short Sell at bid Buy at ask

So the exit spread cannot be calculated from the same orders as the entry spread. For the volume being closed, the weighted average prices of selling the long and buying back the short have to be calculated separately.

In a convergence strategy, the trader opens the bundle at a wider spread and closes it at a narrower one.

For example
  • entry spread — 2%;
  • target exit spread — 0.5%;
  • difference between the levels — 1.5 percentage points.

This is a preliminary estimate of the potential of the spread's movement before fees. The entry spread on its own is not yet an earned profit.

Net spread: entry, exit and fees

To assess the potential of the whole trade, you need to account for the fees of four operations:

  1. Opening the long.
  2. Opening the short.
  3. Closing the long.
  4. Closing the short.
For a simple estimate of a convergence trade

Net trade spread ≈ entry spread − exit spread − fees of both legs on entry and exit

Suppose the entry is planned at a 2% spread, the exit at 0%, and the fee for each operation is 0.05%.

Item Value
Entry spread 2%
Exit spread 0%
Fee for opening the long 0.05%
Fee for opening the short 0.05%
Fee for closing the long 0.05%
Fee for closing the short 0.05%
Estimated net trade spread ≈ 1.80%
Calculation

2% − 0% − 0.05% − 0.05% − 0.05% − 0.05% = 1.80%

If the same bundle is closed at a 0.5% spread, the estimate changes

2% − 0.5% − 0.20% = 1.30%

So it is not only the entry level that matters for assessing a trade. You need to understand what part of the spread you plan to capture and how much you will pay for opening and closing the bundle.

This is a simplified percentage calculation. The exact money result depends on the execution prices: fees are charged on the turnover of each operation, and the percentage entry and exit spreads may have different price bases. So the value obtained should not automatically be treated as a return on the margin posted.

How to check the result in money

Let's take the same lot: 10 coins on each leg. For the example we use linear contracts settled in USDT.

We open:

  • a long at an average price of 100 USDT;
  • a short at an average price of 102 USDT.

Later we close both positions at 101 USDT. The prices converged, and the exit spread is zero.

Long result

(closing price − opening price) × volume

(101 − 100) × 10 = 10 USDT

Short result

(opening price − closing price) × volume

(102 − 101) × 10 = 10 USDT

In total, we get 20 USDT before fees.

Fee for each operation

Fee = average execution price × volume × fee rate ÷ 100

At a 0.05% rate
Operation Turnover Fee
Opening the long 1,000 USDT 0.500 USDT
Opening the short 1,020 USDT 0.510 USDT
Closing the long 1,010 USDT 0.505 USDT
Closing the short 1,010 USDT 0.505 USDT
Total 4,040 USDT 2.02 USDT

Turnover adds up the amounts of trades without a sign, so on entry and on exit it is the same — 2,020 USDT each. The result depends on the direction: we count a purchase as an outflow and a sale as an inflow.

Where the 20 USDT comes from

Entry: −1,000 (buying the long) + 1,020 (selling the short) = +20 USDT

Exit: +1,010 (selling the long) − 1,010 (buying back the short) = 0 USDT

This is the price difference between the two legs, locked in at entry: 2 USDT per coin × 10 coins. At exit the prices converged, and closing cost nothing. The equal turnover is a coincidence of the example: the prices converged exactly in the middle. Had they converged at 100.5 USDT, the exit turnover would have been 2,010 USDT, and the result — the same 20 USDT.

Result after trading fees

10 + 10 − 2.02 = 17.98 USDT

Relative to the long's opening turnover of 1,000 USDT, this is

17.98 ÷ 1,000 × 100% = 1.798%

The simple percentage estimate gave 1.80%, and the calculation from actual turnovers — 1.798%. The small difference arises because each fee is calculated from its own trade amount.

How it works in Profit Cloud

Arbitrageur takes into account the prices and the available order volumes in the order books of both exchanges and calculates weighted average prices for the lot size you specify.

The chart shows the truly executable gross spread based on the current order books. Its calculation already accounts for which price levels will be needed to execute your volume.

When you set entry and exit trigger levels, the terminal automatically calculates the net spread between these levels, including the trading fees for opening and closing both legs.

The calculation uses the rates specified when the exchange connections were created. If no custom fees are set, the exchanges' base rates apply.

Profit Cloud calculates and shows the potential of a trade for your lot before it is opened.

The calculation reflects the current state of the order books. By the time of execution the orders may change, so actual prices and the final result may differ from the preliminary estimate.