Revenue per million is four businesses reported as one number
Markup, commission, swap and risk result have different drivers, different volatilities and different signs. Dividing their sum by notional volume produces a figure that cannot tell you which one moved.
Revenue per million is the number every broker quotes and the number that explains least. It is four businesses with different drivers, different volatilities and different signs, divided by one denominator. When it moves, the figure itself cannot tell you which of the four moved, and the usual response is to attribute it to whichever one was discussed most recently.
Four revenue lines, one ratio
RPM = ( markup + commission + swap + risk_result ) / ( notional_volume / 1,000,000 )Each term behaves differently enough that averaging them destroys the information you need.
- Markup is close to linear in volume and stable per symbol. It is the base rate of the business and the only component you fully control.
- Commission is linear by construction, set per lot or per million, and varies by account type rather than by market condition.
- Swap is a function of holding time, not of volume. A client who trades a million and closes in an hour contributes zero swap; one who holds the same million for three weeks contributes materially. Dividing it by volume is a category error that the ratio forces on you.
- Risk result is the P&L on flow you did not pass through. It is volatile, can be large in either direction, and its expected value depends on a classification decision rather than on activity.
Three of the four terms are fees. The fourth is a trading position. Reporting them as one rate per million describes a business nobody is running.
Mix shift looks exactly like price erosion
The most common misreading of a falling RPM is that pricing has deteriorated. Usually nothing has been repriced. The mix of volume has moved toward symbols or account types with a lower rate, and the blended figure has followed, because a blended ratio is a volume-weighted average of rates that were themselves unchanged.
- 01Markup per symbol unchangedno pricing decision taken
- 02Volume grows in majorstightest markup on the book
- 03Share of index CFDs fallshighest markup on the book
- 04Blended RPM fallsweighted average moves
- 05Read as price erosionwrong remedy applied
Separating the two is arithmetic, not judgement. Hold the previous period’s mix constant and recompute this period’s revenue at this period’s rates. The difference between that figure and the actual is mix. The remainder is rate. Any broker can run this decomposition and almost none do it monthly.
The denominator is not innocent either
Notional volume is itself a mix of things that are not comparable. A million of EURUSD, a million of gold and a million notional of an index CFD carry different margin, different holding periods and different risk. Summing them into one denominator means the ratio moves whenever the composition of volume changes, independent of anything happening to revenue.
- High-frequency scalping inflates notional volume with near-zero holding time, which depresses RPM while contributing normal markup per trade. The business is fine; the ratio is not.
- A single large institutional or professional account can dominate the denominator and make the retail book invisible inside the blended figure.
- Symbols priced per lot rather than per million convert into notional at a spot rate that itself moves, so the denominator drifts with the market.
| March | April | |
|---|---|---|
| Notional volume | $14.2bn | $18.9bn |
| Markup | $1,164,000 | $1,550,000 |
| Commission | $298,000 | $397,000 |
| Swap | $212,000 | $94,000 |
| Risk result | $186,000 | −$174,000 |
| Total revenue | $1,860,000 | $1,867,000 |
| Blended RPM | $131 | $99 |
| RPM excluding risk result | $118 | $108 |
Illustrative figures, chosen to show the mechanism. Your own numbers will differ.
Reporting it so it can be acted on
Split the position out of the fees
Report fee RPM and risk result as two lines that are never added together in a headline. Fee RPM is a pricing and mix number that the commercial side owns. Risk result is a position that the risk side owns. They have different owners, different time horizons and different acceptable variances, and combining them means neither owner can be held to anything.
Take swap out of the ratio entirely
Swap belongs to holding time. Report it per overnight lot, which is the unit it is actually earned in, and leave it out of any per million figure. That change alone removes most of the month to month noise in a book with meaningful carry.
Run the mix decomposition every month
- Rate effect, mix effect and volume effect, per symbol group and per account type, on the same page as the headline.
- The same decomposition per client segment, because a segment that is growing at a low rate is a distribution result and a segment that is repricing is a competitive one.
- A flag when the top ten accounts exceed a set share of the denominator, which is the point at which the blended figure stops describing the retail book.
Every input for this sits in systems you already run: trade records for volume and markup, the rollover journal for swap, the book classification for risk result, and the account register for segment. They have to be joined per trade and kept joined as symbols and account types change. That is the work, and it is the reason the headline stays blended.