A retail CFD broker makes money from its F4 engines. Flow (execution): you earn spread and commission only to the extent you capture it after LP and PoP costs, slippage, rejects, rebates and per-trade fees. Financing is the time business: you earn the net of what you charge clients to hold leveraged exposure versus what it costs you to fund or hedge it. Franchise Risk (risk warehousing) is the exposure-management business: if you internalise selectively, part of client trading P&L becomes broker P&L, but it only counts when measured risk-adjusted, expected value minus a tail-risk charge. Float is the balance business, earning interest on client cash.
Director takeaways
- Run the broker on engines, not line items. Stop reading the business as trading income plus interest income. Re-cut it into the four economic engines, each with its own unit, so you always know which engine actually moved and why.
- Measure everything in dollars per $1m of the right thing. Normalise your P&L into $/m traded (Flow), $/m notional-day (Financing), risk-adjusted $/m internalised (Franchise Risk) and $/m cash-day (Float). That is how you see hidden margin erosion while notional, balances and actives are still going up and to the right.
- Use the F4 lens to change Q+1 behaviour, not just describe Q. For each engine, pair the unit metric with explicit levers: IB and LP economics and pricing for Flow; funding curves and product mix for Financing; hedge ratios and limits for Franchise Risk; treasury duration and client yield policy for Float. Manage them to target bands instead of debating vibes in the boardroom.
- Make risk-adjusted warehousing a first-class profit metric. Treat internalisation as an engine with a capital charge, not free P&L. Track risk-adjusted r_FR and return on capital against stress losses and capital, and let those numbers drive where you warehouse, where you hedge out, and how far you stand into the fire.
- Institutionalise an F4 dashboard and reconciliation. Put r_Flow, r_Fin, r_Float, r_FR, their bases and stress loss versus capital into the management and board packs, and reconcile them back to trading income and interest income every quarter. Once that reconciliation holds, a blended CFD P&L becomes something you can forecast, compare across geos and deliberately grow.
The hidden mistake CFD directors make
Most CFD directors don't lose control of their P&L because they're bad at risk or pricing. They lose control because they're reading the business through the wrong lens.
The default view is always the same: trading income up, interest income up, client money and open positions up. The quarter looks good, so the slide turns green and the meeting moves on. But those big line items only tell you what happened, never why, and almost never whether the economics are healthy, sustainable, or quietly rotting underneath.
That's the core mistake: running a CFD broker off gross P&L and balances instead of engine-level unit economics. When you don't normalise your business into dollars per $1m of the right thing, three value-destructive behaviours creep in:
- Scale hides margin erosion. More notional, more balances, more actives mean everything looks up and to the right. You can report record trading income while Flow $/m traded is down double digits, Financing $/m-day is flat as you carry more exposure, and Float $/m-day is compressing because treasury and rate policy haven't kept pace. You grow the top line while quietly degrading the business model.
- Levers become vibes, not arithmetic. "Revenue is up $1m" tells you nothing about where to act. Until you see Flow, Financing, Float and Franchise Risk in $/m terms, steering is mostly arguments and anecdotes.
- You miss the early warning signals. Big P&L numbers are lagging indicators. Unit metrics move first. A director should be able to say: "Revenue is up 18%, but Flow margin is down 16% per $1m traded, and risk-adjusted warehousing is down 25% per $1m internalised. Here's why, and here's what we're changing next quarter." Without unit economics, all you can say is "Revenue's up but so are costs; we're looking into it."
The F4 model: four engines, four units
To make unit economics useful at a CFD broker you need two things nailed down: what the unit is (the denominator), and what engines actually drive profit on that unit (the model). For a retail CFD broker, both are surprisingly clean. The business naturally falls into four exposure bases and four engines, what we at Jupiter Tech call the F4 model.
Once you see these four, your P&L stops being a wall of line items and becomes something you can steer.
Engine 1: Flow (execution on turnover)
Question it answers: how much do we keep when clients trade, after paying for liquidity and distribution?
Unit: notional traded, the total client exposure turned over in a period. Measured as $/m traded.
r_Flow = Π_Flow ÷ (N_traded ÷ 1,000,000)
Read it as: "We earn r_Flow dollars for every $1m of client notional that trades."
Main levers: pricing (spreads, commissions); the LP stack (cost, routing, slippage, reject and last-look logic); variable distribution (IB, affiliate and white-label deals); product and client mix.
Engine 2: Financing (overnight funding on positions)
Question it answers: how much do we earn per day of leveraged exposure?
Unit: notional-days, dollar exposure multiplied by time. Measured as $/m-day.
r_Fin = Π_Fin ÷ (ND ÷ 1,000,000)
Read it as: "We earn r_Fin dollars for every $1m of exposure we hold for one day."
Main levers: the shape and markup of your funding curves; product mix (indices versus FX versus equities) and client holding patterns; internal transfer pricing between trading and treasury; how quickly you re-price client rates against changes in your own funding costs.
Engine 3: Franchise Risk (risk-adjusted warehousing)
Question it answers: after charging for tail risk, are we being paid enough per unit of risk we warehouse instead of hedging?
Unit: internalised notional, the risk-bearing notional you don't fully hedge. Measured as risk-adjusted $/m internalised.
r_FR = Π_FR,RA ÷ (N_int ÷ 1,000,000)
Read it as: "We earn r_FR risk-adjusted dollars for every $1m of internalised notional."
Main levers: hedge ratios by product, client segment and time of day; segmentation of which flows are safe to internalise versus must be hedged out; exposure and concentration limits, correlation and stress frameworks; automated de-risking (kill switches, dynamic hedging playbooks).
Engine 4: Float (net interest on client cash)
Question it answers: how much do client cash balances contribute, per day, independent of trading?
Unit: cash-days, client dollar balances multiplied by time. Measured as $/m cash-day.
r_Float = Π_Float ÷ (CD ÷ 1,000,000)
Read it as: "We earn r_Float dollars for every $1m of client cash we hold for one day."
Main levers: client rate policy (how much yield you pass back); balance stickiness and client behaviour; currency mix, treasury deployment and counterparties; decisions about running surplus cash alongside client money where allowed.
Case study: how a director actually uses the F4 model
Broker X is a mid-size retail CFD broker. Here is Q1 versus Q2 through the F4 lens, and how this view leads to different decisions than a "nice quarter" read of the line items.
1. Headline financials: the nice quarter story
| Broker X, summary P&L (USD m) | Q1 FY25 | Q2 FY25 | Change |
|---|---|---|---|
| Trading income | 17.6 | 21.1 | +19.5% |
| Interest income (float) | 1.2 | 2.0 | +62.0% |
| Total revenue | 18.9 | 23.1 | +22.2% |
| Operating expenses | (11.0) | (12.2) | +10.9% |
| Operating profit | 7.9 | 10.9 | +38.0% |
Revenue up 22%, operating profit up nearly 40%, cost growth below revenue growth. On that slide alone, Q2 is a very good quarter. Now the same two quarters through the F4 engine view.
2. F4 snapshot: bases, unit economics, engine P&L
| Base (denominator) | Q1 | Q2 |
|---|---|---|
| Notional traded (Flow) | 20.0bn | 24.0bn |
| Notional-days (Financing) | 90.0bn | 99.0bn |
| Internalised notional (Franchise Risk) | 10.0bn | 12.0bn |
| Cash-days (Float) | 22.5bn | 27.0bn |
| Engine | Q1 P&L | Q1 unit economic | Q2 P&L | Q2 unit economic |
|---|---|---|---|---|
| Flow | $4.2m | $210 / m traded | $4.1m | $171 / m traded |
| Financing | $3.4m | $38 / m-day | $4.4m | $44 / m-day |
| Franchise Risk (raw) | $10.0m | $1,000 / m internalised | $12.6m | $1,050 / m internalised |
| Float | $1.2m | $55 / m cash-day | $2.0m | $74 / m cash-day |
3. Engine by engine: what really moved, why, and how to react
3.1 Flow: execution on turnover
Notional traded +20%. Flow P&L flat ($4.2m to $4.1m). Unit economics 210 → 171 $/m traded. Broker X is now doing more volume for slightly less Flow dollars. When we see that pattern the diagnosis is usually a mix of more growth via IBs on heavy rebate structures, headline pricing pressure eroding markup, and LP cost creep and slippage that isn't watched at $/m level. Cutting Flow by segment makes it clear:
| Segment | Q1 share of notional | Q1 $/m | Q2 share | Q2 $/m |
|---|---|---|---|---|
| Direct / high-balance | 40% | ~245 | 35% | ~230 |
| IB / high-turnover | 60% | ~190 | 65% | ~145 |
| Weighted average | 100% | ≈210 | 100% | ≈171 |
The mix shifted towards cheaper IB flow, and the economics on that IB book deteriorated. That is what pulled r_Flow from a healthy 210 to a marginal 171.
How Broker X responded in Q3. Objective: bring r_Flow on core flow back into the 190 to 230 $/m band without destroying volume. They re-tiered IB rev-share where r_Flow was below 160 $/m and reduced rebates by 2 to 3 bps on those books, tying higher payouts to demonstrated engine contribution rather than volume. They reviewed LP performance by pair and session, targeting a 1 to 2 bps LP cost reduction on 60 to 70% of notional, and tightened slippage and reject metrics into the Flow KPI pack. They kept pricing for high-balance direct clients in a healthy band rather than subsidising IB books by compressing their best unit economics. Broker X did not simply optimise spreads; they explicitly pushed r_Flow back into range.
3.2 Financing: overnight on positions
Notional-days +10%. Financing P&L $3.4m to $4.4m. Unit economics 38 → 44 $/m-day. The opposite picture from Flow: the Financing engine is strengthening. Clients are holding slightly longer, or the curves and markups are working in Broker X's favour, or both. Continued growth comes from understanding what's driving it: rates and swap curves, product mix, client behaviour. You don't want this uplift treated as accidental; it needs explicit ownership.
How Broker X responded in Q3. They rebuilt the economics for key books, mapping client rate against hedge and funding cost by asset and converting to $/m-day, and flagged products outside their intended band. They decomposed notional-days and r_Fin by instrument and segment to see which cohorts are now effectively a financing story, and decided which to support with marketing and product. They ran a −100 and −150 bps rate scenario and quantified the hit to Financing P&L, and brought that into strategic planning so nobody is surprised when rates normalise. Treat r_Fin as intentional margin, not something that simply happens when rates move.
3.3 Franchise Risk: warehousing, risk-adjusted
Internalised notional 10bn to 12bn. Raw Franchise Risk P&L $10.0m to $12.6m. Raw unit economics 1,000 → 1,050 $/m internalised. On the surface, the golden child. However, the risk team updates the stress metrics: the 1-in-20-quarter stress loss on the warehoused book rose from $6m in Q1 to $9m in Q2, with more concentration and worse correlations.
Applying a simple internal risk charge of one times stress loss:
| Q1 | Q2 | |
|---|---|---|
| Raw Franchise Risk P&L | $10.0m | $12.6m |
| Stress loss (risk charge) | $6.0m | $9.0m |
| Risk-adjusted P&L | $4.0m | $3.6m |
| Risk-adjusted r_FR | ≈ 400 $/m | ≈ 300 $/m |
| Capital allocated | $30m | $30m |
| Risk-adjusted return on capital | ≈ 13.3% | ≈ 12.0% |
With an 11% hurdle for this type of risk, both quarters are above hurdle but trending down, while stress loss has increased by 50%. The firm is earning more raw warehousing dollars by standing closer to the fire, but the risk-adjusted economics per $1m internalised are deteriorating, with heavier tails.
How Broker X responded in Q3. Objective: keep risk-adjusted r_FR in a disciplined band (350 to 550 $/m) and return on capital at or above the 11% hurdle, while reducing stress loss back towards Q1 levels. They reduced internalisation on the most concentrated single-name and crowded index books by 15 to 20 percentage points until r_FR was back around 400 $/m, kept higher internalisation on diversified, short-horizon flow where stress contribution was low, tightened per-symbol and per-client limits in the clusters that contributed most to the $9m stress number, and made risk-adjusted r_FR and stress loss versus allocated capital standing metrics in the risk committee and board pack. You are not debating A-book versus B-book in the abstract. You are targeting a risk-adjusted $/m and return on capital, and adjusting hedge ratio and segmentation accordingly.
3.4 Float: net interest on client cash
Cash-days +20%. Float P&L $1.2m to $2.0m. Unit economics 55 → 74 $/m cash-day. Exactly what you would expect in a rising-rate, growing-balances environment: same clients, more cash, higher rates. It is a meaningful improvement, and it means the business is now materially more rate-sensitive than the headline P&L suggests. A rate cut would hit this engine directly.
How Broker X responded in Q3. Objective: manage r_Float as a governed net interest margin, not a windfall. They agreed a target duration and instrument mix for cash deployment (laddered term deposits, repos, money market funds) so a rate cut does not translate into an immediate collapse in r_Float. They decided explicitly how much of r_Float to share with clients through tiered yields by balance and currency, and changed the culture to treat it as a retention and growth lever rather than a cost. They implemented Jupiter Tech's wallet feature, which rewards clients for keeping and recycling funds inside the broker's environment rather than constantly cashing in and out. And they reviewed r_Float by currency and counterparty to avoid over-reliance on a single high-yield but higher-risk currency or bank, with stress tests for balance and rate changes. Engine 4 is a significant profit source. Treat it accordingly.
4. Why this example matters
The same two quarters, viewed two ways. The line-item view: trading income up 19.5%, interest income up 62%, operating profit up 38%. Great quarter. The F4 view: Flow monetisation of turnover has slipped below target (210 → 171 $/m); Financing and Float have become major drivers and a rate risk; Franchise Risk raw P&L is up but risk-adjusted return per $1m internalised is down (400 → 300 $/m) with higher stress loss.
Only one of those perspectives tells you what to do in Q3. That is the power of reading a CFD broker through the F4 lens, each engine with a clear unit, instead of relying on headline line items alone.
FAQ: CFD broker unit economics, F4 engines and P&L
How does a retail CFD broker actually make money?
From four economic engines, not just "spreads and swaps": Flow (execution margin on client turnover), Financing (overnight funding on leveraged positions), Float (net interest on client cash balances) and Franchise Risk (risk-adjusted profit from internalising part of client risk). On the public P&L these show up as trading income (Flow + Financing + Franchise Risk) and interest income (Float).
What are unit economics for a CFD broker, in plain English?
"How many dollars do we make per $1m of the thing that actually matters for this engine?" Flow: $ per $1m notional traded. Financing: $ per $1m notional-day. Float: $ per $1m cash-day. Franchise Risk: risk-adjusted $ per $1m internalised notional. Instead of only looking at total trading income, you look at r_Flow, r_Fin, r_Float and r_FR. That is what lets directors compare quarters, products and segments like for like.
Why is it dangerous to manage a CFD broker only by trading income and interest income?
Because they hide which engine is doing the work. Trading income lumps together Flow, Financing and Franchise Risk. Interest income lumps together Float and sometimes returns on your own cash. You can have both up while Flow $/m traded is collapsing (bad LP costs, over-rebated IBs, over-tight spreads), Financing $/m-day is flat while exposure grows, and Franchise Risk $/m internalised is falling with bigger stress losses. Line items tell you what happened. The four unit economics tell you which part of the model is winning and which is bleeding.
How is Flow different from spreads and commissions?
Spreads and commissions are gross. Flow is net execution margin per unit of turnover: spreads plus commissions, minus LP and venue costs and slippage, minus bridge and tech fees tied to flow, minus IB, affiliate and white-label rebates on that flow, normalised per $1m traded. That is the real spread business of a CFD platform.
What is the difference between Financing and Float?
Both live in the funding world, but they are different engines. Financing is overnight funding on positions, based on notional-days: clients pay or receive swap and roll charges, the broker pays funding and hedge costs. Float is net interest on client cash balances, based on cash-days. A CFD broker in a high-rate environment can have modest Flow but very strong Financing and Float. Without splitting them, you can't tell whether your funding income is coming from positions, cash, or both.
How does A-book versus B-book fit into the F4 model?
A-book versus B-book is a routing and risk policy; F4 is agnostic. In a pure A-book or STP broker almost all client risk is passed out, Franchise Risk is close to zero and profitability is mostly Flow, Financing and Float. In a hybrid or internalising broker Franchise Risk becomes material: r_FR and stress loss versus capital become critical. Either way the question is the same: what does each engine earn per unit, with warehousing shown as its own risk-adjusted engine rather than blended into trading income.
What KPIs should a CFD broker board see every quarter?
Flow: r_Flow by product and segment, and the spread triangle (markup minus LP cost minus rebates, in bps). Financing: r_Fin by asset class and client segment, notional-days by product and segment. Float: r_Float by currency and segment, cash-days and average balances. Franchise Risk: risk-adjusted r_FR, stress loss versus capital and versus quarterly profit, risk-adjusted return on capital on the warehoused book. All reconciled to trading income and interest income.
How does F4 help compare performance across quarters or geographies?
Because everything is expressed in unit terms, you can compare Q1 against Q2 against Q3 even if notional and balances doubled, region A against region B even if one book is half the size of the other, and the IB channel against direct clients even if their activity levels are wildly different. Then you decide where to push growth and where to tighten risk or pricing based on engine-level margins, not just revenue per region.
Why is F4 better than tracking revenue per active client?
ARPU is useful, but it mixes all four engines together. High ARPU could be strong Flow and funding with modest risk, or weak Flow and funding with huge warehousing gains in a lucky quarter. F4 breaks ARPU into contributions from Flow, Financing, Float and Franchise Risk, and shows whether a segment's revenue is coming from stable engines or from riskier warehousing. That is crucial when deciding which client cohorts and IBs to grow, where to invest in product and pricing, and how to explain your business model to regulators, investors and the board.
How can a CFD broker start implementing the F4 model in practice?
- Tag the data: every trade and position carries product, segment, channel, hedge ratio and internalised or hedged flags.
- Attribute P&L by engine: execution P&L to Flow, overnight funding to Financing, net interest on client cash to Float, client trading P&L on internalised exposures (plus hedge P&L) to Franchise Risk.
- Compute the bases: notional traded, notional-days, cash-days, internalised notional.
- Calculate unit metrics: r_Flow, r_Fin, r_Float and risk-adjusted r_FR by product, segment and region.
- Reconcile to P&L: Flow + Financing + Franchise Risk ≈ trading income; Float ≈ interest income.
Once that reconciliation holds, you can safely put F4 unit economics into your monthly management pack and quarterly board deck, and stop flying the broker using only trading income and interest income headlines.
Conclusion: run the broker on four engines, not two lines
If you strip this whole piece down to one idea, it's this: a CFD broker is not trading income plus interest income. It's four engines, Flow, Financing, Float and Franchise Risk, each with its own unit. Once you start reading your business that way, the P&L stops being a blur of good and bad quarters and becomes something you can actually steer. The spreadsheets and geographies will differ, but the structure won't: four engines, four units, one coherent way to run a CFD broker.
One practical next step: grow your Float engine on purpose
If you want an easy first win, start with Engine 4. Every extra day that safe, ready-to-trade cash sits in your ecosystem increases cash-days, lifts and stabilises r_Float, and gives you more room to invest in spreads, products and risk controls without squeezing margin elsewhere. That is exactly what Jupiter Tech's wallet and funding features are built for: they reward clients for keeping and recycling funds inside your environment rather than constantly cashing in and out, directly amplifying your Float engine. Book a demo and we will plug your turnover, balances and P&L into the F4 framework and show you what a better wallet and funding experience could add to your $ per $1m cash-day, and to the broker as a whole.
