Compare costs for the same instrument, volume, number of complete transactions and holding period. Then reconcile the account records: execution-price effects may already be included in platform P/L, and a tax reserve is not necessarily a paid broker charge. The later fictional annual example assumes PLN 1,850 platform P/L and explicitly separate deductions; it is not an observed trader’s year or a catalogue of seven charges hidden from that person.

The spread — the layer everyone sees

Spread cost depends on the actual executable bid and ask, symbol contract and volume. A market-maker or ECN label does not establish a typical pip range. Sample the account’s quotes in your trading hours and distinguish a quoted minimum from the observations used in your comparison. Related reading: our article on fixed versus variable spread.

Hypothetical spread comparison: USD account, EUR/USD lot = EUR 100,000
Model A1.2 pips × USD 10 per pip = USD 12 per complete lot transaction.
Model B0.2 pips × USD 10 + USD 7 round-turn commission = USD 9.
AssumptionsUnchanged quote midpoint, the same spread at entry and exit, no other costs or minimum commission.
InterpretationOne complete spread is embedded in ask-to-bid execution. Different actual spreads require the entry/exit quotes, not an invented session average.

Commission — check the unit and both sides

Commission may be charged separately under different execution models. Read its unit, minimum, currency and per-side or round-turn basis. In a hypothetical standard EUR/USD lot with USD 10 pip value, one extra pip costs USD 10; compare that with the assumed USD 7 commission rather than claiming a universal USD 5–8 tariff. Related reading: spread versus commission, ECN versus market maker.

Do not multiply average position size by average duration

Calculate unequal positions separately first. This hypothetical model uses a charge of 2 USD per lot per charging unit. A is 0.1 lot for one unit; B is 0.5 lot for five. A unit is an assumed cost multiplier, not necessarily one charge per calendar day.

Scroll sideways to see the full diagram

Do not multiply average position size by average durationThe correct total is USD 5.20. Multiplying average size by average duration gives USD 3.60 because it loses the link between the larger position and longer holding period.A: 0.1 × 1 × 2 = 0.20 USDB: 0.5 × 5 × 2 = 5.00 USDCorrect: 0.20 + 5.00 = 5.20 USDShortcut: 0.3 × 3 × 2 positions × 2Separate averages give only 3.60 USD
The illustrative volume-and-charge breakdown explains the error in multiplying two averages.

The difference is 1.60 USD. The larger position lasts longer, a link that multiplying separate averages does not preserve. Record volume, rate and multiplier for each charge, then sum. Partial closures or rate changes require splitting the period. Specifications define swap units and multipliers; not every product uses USD per lot.

Example assumptions: A fictional fixed linear charge of USD 2 per lot per unit, without a minimum or other costs. Volume stays constant within each row. Mechanism source: MetaQuotes — Market Watch: Specification.

Overnight financing — check the charging event and units

Overnight financing follows the provider’s symbol-specific formula, holding cut-off and current inputs. Interest-rate differentials can matter, but broker adjustments, instrument design and conventions mean policy rates alone do not establish the actual debit or credit.

Read the symbol’s daily swap multipliers and holiday adjustments. A three-day charge often occurs in spot-FX conventions, but its weekday and amount are not universal across pairs, CFDs and providers. Related reading: what is a forex swap, how an Islamic (swap-free) account works and where the catch is.

Slippage — an execution-price effect

Slippage is the difference between an order’s reference price and its execution price. It can be favourable or adverse. A particular sample need not have equal positive and negative frequencies or a zero mean: market direction, order size, latency and order type matter. Compare timestamps, executable quotes and order records, and investigate unexplained one-sided treatment rather than treating two weeks of losses as proof of misconduct. Related reading: what is slippage.

Converting your currency into the account currency, plus hidden fees

Currency conversion can arise when funding, withdrawing or posting results in a different account currency. Obtain an actual quote including provider charges and any receiving-bank fees. Compare the amount delivered, and consider exchange-rate exposure before deciding to keep funds in USD or any other foreign currency.

Check the tariff for inactivity, withdrawals, data subscriptions, guaranteed stops and other optional services. Whether a fee applies depends on the entity, account, payment route and conditions; neither regulation nor an offshore address determines a universal withdrawal price.

Tax reporting — a Polish capital-income example

For a Polish tax resident, private transactions in eligible financial instruments can fall under the 19% capital-income regime reported on PIT-38, normally due by 30 April of the following year. This is not a rule for every activity called forex: business transactions and other products may differ. Reconcile income and deductible costs, applying the appropriate currency-conversion rules separately. Check any PIT-8C against complete records rather than assuming it settles all income.

A hypothetical annual tally — Paul's case

For the fictional annual example, assume platform P/L is PLN 1,850 and already includes execution-price effects and trade commissions. Separate amounts are a PLN 150 bank conversion charge, PLN 300 other externally posted fees and a PLN 350 reserve for a future tax bill. The amount remaining after these allocations is 1,850 − 150 − 300 − 350 = PLN 1,050; the tax reserve is not a calculation of tax due or necessarily a cash outflow. Do not subtract spread or slippage again.

A separate closed-account reconciliation starts at PLN 10,000, adds a PLN 500 deposit, records PLN 200 P/L from actual execution prices, and deducts a separate PLN 30 commission and PLN 20 financing. Ending balance is PLN 10,650. Removing the deposit leaves PLN 150 trading result, not the PLN 650 increase in balance. If an export already shows PLN 150 net, subtracting those fees again would wrongly give PLN 100. Open P/L, withdrawals and currency changes require their own reconciliation.

What to do — a cost checklist before you deposit

Before funding, compare spread, commission, financing, currency conversion and withdrawal terms for the account you will use. Reconcile posted charges with your records without counting costs twice. Choose account currency with exchange-rate exposure in mind, and prepare tax records for the rules of your tax residence. There is no universal acceptable cost-to-profit percentage. Related reading: the 2026 broker checklist.