A chart move and the account statement can use different prices, units and cost scopes. A mismatch does not establish that the platform is correct or wrong. Start with confirmed fill prices and executed units, then reconcile separately booked fees, financing and conversion. The hypothetical example below shows why a thirty-pip Bid move need not produce thirty dollars net, without subtracting spread or slippage twice.

Why "move times lots" is only gross revenue

First identify the prices used in the calculation. For a linear FX contract, the difference between actual opening and closing fills, multiplied by the contract units, gives price P/L in the quote currency. Those fills already include the quoted spread. Separately booked commission, financing and currency conversion then affect the account result; financing or price improvement can add value as well as reduce it. A chart-only move uses a different baseline, so keep that distinction explicit rather than subtracting a spread twice.

Keep three amounts distinct: a chart-based estimate, price P/L from actual fills, and the final account-currency result after separately booked entries. Costs and credits follow the contract; their size need not be fixed or independent of volume and holding time. Use the statement and applicable terms to explain each difference rather than call every discrepancy a charge.

The spread, the loss you see before the price moves

The first and most often overlooked leak is the spread. You open a long position at the ask, the higher of the two quotes, while the platform measures your live result against the bid, the lower one. The mechanics of execution on the bid and ask side are exactly what I cover in the article on bid and ask prices and order execution. The result is that at the instant of opening, the position shows a loss equal to the spread, even though the rate has not moved. If the EUR/USD spread is one pip, a long position starts at roughly minus one pip.

Against an explicitly Bid-to-Bid baseline, a long’s Ask entry can reduce the fill-price result by the entry spread in a simple model. A mid-price or Ask-based baseline, changing spread or adverse execution needs a different reconciliation. Actual opening and closing fills already reflect spread. Do not deduct another spread from that price result or assume every comparison loses one identical spread.

Slippage is the difference between a defined reference price and the actual execution price. It can be adverse or favourable. Define the reference consistently and record both signs; do not treat all slippage as a fixed charge or deduct it again when it is already included in the executed-price P/L.

Commission and swap, the costs that are easy to skip

Commission can be a separate charge, but labels such as ECN, raw and standard do not establish its amount or booking mode. Check whether a rate is per side or for the complete open-and-close cycle, its units and any minimum. Compare the same instrument and volume using actual fills and separate charges. See spread versus commission as real trading costs.

The swap, or financing adjustment, depends on the contract’s accrual cutoff, calculation mode and long/short rate. Use its booked sign: it can debit or credit the result. One local calendar day can cross a cutoff, and one accrual can use a multi-day multiplier. In the model below, total financing is an assumed 0.60 USD debit, not a provider’s two-night rate.

Add entries in the same currency, using each applied rate

When a profit and a fee are converted separately, do not replace both rates with one chosen history-row rate.

Scroll sideways to see the full diagram

Add entries in the same currency, using each applied rateHypothetical profit of 20 USD is converted at 4.00 PLN/USD; a 2 USD cost at 4.20. The sum is 71.60 PLN. One shared rate of 4.00 would overstate it by 0.40 PLN.TWO ENTRIES • TWO RATESPrice profit: +20 USD× 4.00 PLN/USD = +80.00 PLNSeparately charged cost: −2 USD× 4.20 PLN/USD = −8.40 PLNSum of PLN entries80.00 − 8.40 = 71.60 PLNOne conversion at 4.00 would give 72.00.

An original model of two booked cash flows. Both rates are hypothetical and already include the entire applied conversion; no separate conversion fee or other cost. These are not IG rates or charges. IG describes conversion of results, funding and commissions, depending on account settings.

Hypothetical profit of 20 USD is converted at 4.00 PLN/USD; a 2 USD cost at 4.20. The sum is 71.60 PLN. One shared rate of 4.00 would overstate it by 0.40 PLN.

Reconciliation trail: record the source amount, its sign, applied rate and booked amount for each flow. Then add amounts in the account currency. The difference from one shared rate is 2 × (4.20 − 4.00) = 0.40 PLN here; it is not missing EUR/USD slippage.

Converting the result and the pip-value trap

If profit currency differs from account currency, convert using the rate and units actually applied. GBP/JPY price P/L arises in JPY in the linear model; a PLN account needs the applicable conversion. Conversion changes units rather than necessarily creating a separate loss. Identify any markup or fee and whether it is already inside the rate. Profit and fees can be converted separately at different times.

An incorrect pip value for the pair can also explain a discrepancy. Calculate units from volume × actual contract size, multiply by the stated pip and convert if necessary. With a 100,000-EUR contract, a 0.0001 EUR/USD pip and USD result, 1.00, 0.10 and 0.01 lot give 10, 1 and 0.10 USD per pip. Those conditional numbers do not validate a statement or diagnose every mismatch.

Let us run the numbers (an illustrative example)

Use the same hypothetical model as the Polish lesson: long 10,000 EUR, contract size 100,000 EUR per lot, USD price P/L, entry quotes Bid 1.10000 / Ask 1.10010 and a complete Buy fill at Ask. The complete closing Sell fill is Bid 1.10300, with no extra slippage. Assume separate commission of 0.35 USD per side and total booked financing of −0.60 USD. These are model inputs, not an ECN tariff.

Bid-chart reference(1.10300 − 1.10000) × 10,000 = 30 USD. This is not the fill-price result.
Actual model fills(1.10300 − 1.10010) × 10,000 = 29 USD. Spread is already included; do not subtract another dollar.
Separate opening and closing commission29.00 − 0.35 − 0.35 = 28.30 USD under the assumed fee schedule.
Booked financing debit28.30 − 0.60 = 27.70 USD. The total debit is hypothetical, not a universal nightly rate.
Account conversionFor a separate hypothetical PLN-account variant, convert once at 4.0000 PLN/USD: 27.70 × 4 = 110.80 PLN. An assumed separate 0.40 PLN conversion fee leaves 110.40 PLN before tax.

The thirty-dollar chart estimate becomes twenty-nine dollars from fills, then 27.70 USD after the separate commission and financing. The PLN variant uses one common conversion and one separate fee; real statements may apply different rates to individual flows, as the diagram shows. Reconcile those bookings rather than infer every difference is valid or repeat a charge already included.

How to reconcile the move with the result, step by step

Reconcile the trade using its actual fill prices, volume and contract calculation, then convert under the account’s rules. Add separately booked commission and signed financing entries from the transaction history. Do not subtract a spread again when it is already contained in the fills. If you instead start with a Bid-only chart move, state that baseline and account for the different entry quote; the model’s cost assumptions must remain consistent.

Check contract terms and statement labels, since Profit can describe different scopes. In the relevant MT5 report sections, Gross Profit/Loss excludes swaps and commissions, while Profit/Loss includes them. Do not subtract those costs again from a figure that already contains them. Further background appears in the forex basics section on forexmechanics.com.

How do you reconcile balance when a fee appears later?

Separate execution time from booking time. Record each signed amount, currency, identifier and whether a previously displayed total already includes it. MT5 reports separate result components; a “Profit” label does not replace checking the exact report section.

From a position result to a later balance

From a position result to a later balanceOwn model: 1,000 USD balance, −2 USD opening fee, +30 USD price result and later −2 USD fee. Final balance: 1,026 USD.After opening998 USD1 000 − 2After closing1 028 USD998 + 30After booking1 026 USD1 028 − 2Net result 26 USD; each fee is deducted exactly once.
Own model: 1,000 USD balance, −2 USD opening fee, +30 USD price result and later −2 USD fee. Final balance: 1,026 USD.

This is only a deferred-booking model, not any broker's fee schedule. With no other events: 1,000 − 2 + 30 − 2 = 1,026 USD. A 30 USD price result and a later 28 USD figure are not two amounts to add: 28 may already include the second fee. To measure the complete result from starting balance, also include the 2 USD charged at opening.

Do not deduct spread again when the calculation uses actual fill prices that already reflect it. For another currency, record each conversion and charge separately. Label an unexplained entry “to reconcile” instead of inventing a commission merely because balance fell. A guide to before-and-after execution history covers corrections to confirmed fills.

Check yourself: should all 4 USD of fees be deducted again from 1,026 USD?

No. Both commissions already affect the 1,026 USD balance. Subtracting them again produces 1,022 USD and double-counts the same expense.

What to do tomorrow

  1. Reconstruct your last trade from its records. Use the actual entry and exit fills, volume, contract size and account-currency conversion. Reconcile separately posted fees and financing with the transaction history. Investigate a mismatch by checking units, rounding, rates, additional charges and other balance operations; do not infer one cause from the discrepancy alone.
  2. Record each cost’s units and scope. Check commission per side or cycle, long/short financing rate and cutoff, spread at the relevant time and conversion terms. These support an estimate; they do not fix future spreads, fills or charges for every trade.
  3. Define the break-even baseline. Actual Ask/Bid fills already include spread in price P/L. Add only separate charges and signed financing to solve for net zero. A chart-based reference may require a quote-side adjustment first; keep the calculations distinct.
  4. Check the accrual event rather than local midnight. Under a cutoff-based contract, only a confirmed full close before the applicable cutoff removes that particular later accrual. Verify time zone, instrument rules and multi-day multipliers. Existing booked financing and other charges do not disappear when you close.

A position commission amount is not a per-lot rate

About 2 min calculator practice

The EUR/USD worked example uses 0.10 lot, EUR 100,000 per lot and assumed entry and exit fills of 1.1000 and 1.1050. Price P/L is USD 50. Whole-position commission of USD 0.70 and a USD 0.80 funding charge leave USD 48.50 net. Change only whole-position commission from USD 0.70 to USD 5.70.

Separate price P/L from separately booked fees

Check the result and explanation

Price P/L stays USD 50 and 50 pips. Net P/L falls to 50 − 5.70 − 0.80 = USD 43.50. The USD 5 increase deducts the entire USD 5: this field is the whole-position commission, not a rate to multiply again by 0.10 lot.

Execution fills already include spread. Deduct only separately booked entries; tariffs and the linear contract are fictional assumptions.