A back-to-back hedged trade looks like it earns the gross margin. It does not. The actual margin is the gross margin minus two costs traders routinely miss: working-capital funding over the payment gap, and hedge-timing carry when the forward matures away from the cash receipt date. The model below is drawn from the real FX hedge book of a UK commodity importer. All figures are illustrative and rounded.
The trade looks fully de-risked. It is not.
Take a clean, well-run trade. The desk sells in GBP and sources in EUR, and the group reports in USD. To protect the margin, it places one FX forward per sales contract, sized to the full sale value, so the margin lands in EUR and the GBP leg is fully locked. A EUR loan funds the gap between paying the supplier on delivery and the customer paying on terms.
On paper this is textbook: priced, hedged, funded. The trader looks at the gross margin and books it as the result. But the gross margin is not what the trade earns. Two costs sit between the headline and the number that actually reaches the P&L.
The trade, on a timeline
The trade has a simple spine. Customer pays on 30 day terms, the supplier is paid on delivery, and a EUR loan bridges the gap.
Illustrative gross margin on the trade: EUR 50,000. That is the number the desk is tempted to claim. Now watch what comes out of it.
The four buckets of post-trade actual margin
Decompose the realised result into four buckets. Two are the trade as intended; two are the costs that quietly erode it.
Trading margin
The commercial margin between the purchase and the sale, realised on delivery. This is the trade doing its job.
FX P&L
When the hedge matches the physical, the currency leg nets out. The forward locks the rate the physical exposure carries, so there is no open FX gain or loss to speak of.
Working-capital funding
Interest plus spread on the EUR loan over the roughly 60 day gap between paying the supplier and being paid by the customer. Real cash, every time.
Hedge-timing carry
When the forward matures before the cash is received, the position has to be carried. The cost is roughly the GBP minus EUR rate differential over the carry period.
Why FX P&L is approximately zero
This is the bucket people expect to be the big one, and when the trade is run properly it is the smallest. A forward sized to the full sale, placed against a real physical exposure, offsets the currency movement on that exposure. The rate is locked. What remains is not FX risk, it is the cost of the funding and the cost of the timing, which is exactly why those two deserve their own buckets.
Why funding is unavoidable
Bucket 3 is the one most desks acknowledge but few price into the trade up front. The EUR loan is drawn on Day 30 and repaid on Day 90. Over that roughly 60 day window the trade pays interest plus the lending spread. Illustratively, EUR 5,500. It is not a risk, it is a certainty, and it comes straight out of the gross margin.
Why timing carry bites in the late case
Bucket 4 is the one that hides. The forward is sized and dated against the plan. If the cash arrives later than the forward matures, the hedge position has to be carried past its maturity to the actual receipt date, and that carry costs roughly the rate differential between the two currencies over the extra period. In this illustrative late case, EUR 1,920. When the cash lands on time, this bucket is close to zero. When it slips, it appears.
The headline overstates the result by about 15 percent
Put the buckets together for the late case.
EUR 42,580 actual against EUR 50,000 gross. The headline overstates the result by roughly 15 percent. On a single trade that might be tolerable. Across a book of dozens of trades, repeated every cycle, a desk that prices off the gross margin is systematically over-rewarding trades that look profitable and under-pricing the funding and timing that determine whether they actually are. All figures here are illustrative and rounded.
The number to price the next deal off
The actual margin, not the gross, is the benchmark for the next quote. If the desk knows a trade of this shape nets roughly 85 percent of its headline once funding and timing are paid, it can price the next one to clear its true cost of capital rather than its apparent one.
Two accounting notes a CFO will appreciate
Two valuation points sit underneath this and are worth stating plainly, because getting them wrong fabricates margin that was never there.
Do not mark contracted, hedged stock to market
Stock that is both contracted and hedged sits at cost. It has no open price risk and no open FX risk: the sale price is fixed and the currency is locked. Marking it to market introduces noise that does not reflect any real economic exposure. Mark to market only genuinely open positions, the ones where a price or a currency is still floating and can still move against you.
Value forwards against the forward curve, not spot
A forward should be valued against the forward curve for its maturity, not against today's spot rate. Value it against spot and you book a phantom day-one gain equal to the forward points, the interest-rate differential embedded in the forward price. That is not profit, it is the cost of carry showing up with the wrong sign. Valuing against the forward curve keeps the day-one mark honest and lets the carry appear where it belongs, in bucket 4, as it is actually incurred.
finPhlo computes the actual margin for you
None of this is exotic. It is arithmetic the desk could do by hand, which is exactly why it usually does not get done: every trade, every cycle, across funding and timing and currency, is too much to maintain in a spreadsheet. So the desk falls back on the gross margin because the gross margin is easy.
finPhlo computes the post-trade actual margin automatically, decomposed into the four buckets above, so the desk sees the real number rather than the headline and can price the next deal accordingly. The expected margin from feasibility is the benchmark; the actual margin is the verdict. The currency leg, including how a hedge is matched to the physical, is covered in FX and hedging.