How Betfair commission really works — market base rate, Premium Charge, discount tiers — and how to model it correctly in a Java P&L calculator.
Most Betfair traders track gross P&L. They watch their running total climb, feel good about a profitable week, and then notice the actual balance is lower than expected. The gap is commission — and if you’re not modelling it correctly in every strategy calculation, you’re trading on numbers that don’t reflect reality.
Commission on Betfair is more complicated than a flat percentage. It has three layers: the market base rate, the discount rate applied to that base rate, and the Premium Charge for consistently profitable accounts. Get any one of them wrong and your edge calculations are fiction.
The default commission on most UK horse racing markets is 5%. UK and Irish football sits at 5%. Some international markets are lower — 2% is common on some international horse racing. The rate is applied on net winnings per market, not per individual bet. That distinction matters.
If you back a horse at 6.0 for £100 and it wins, your gross profit is £500. Commission is 5% of £500 = £25. Net profit is £475. Straightforward.
But if you have multiple bets in the same market — say you laid the favourite for a loss of £80 and backed the winner for a £500 gross profit — your net market position is £420 and commission is 5% of £420 = £21. Betfair nets your positions across the same market before applying commission.
What Betfair does not do is net losses against winnings across different markets. Each market is assessed independently. A bad day in market A does not reduce commission owed on a good day in market B.
Betfair rewards volume. The market base rate is reduced by a discount rate based on your Betfair Points balance, earned through transaction charges. At the highest tier, you can reduce a 5% base rate down to 2%. The discount is applied to the base rate, not added to it:
effective_commission = base_rate * (1 - discount_rate)
So at a 40% discount on a 5% market: 0.05 * (1 - 0.40) = 0.03 — 3% effective commission. Knowing your discount tier and applying it to every calculation is non-negotiable if you’re optimising for edge.
The Premium Charge (PC) is where Betfair’s commission model gets painful for profitable traders. If you are consistently profitable and your total commission paid is less than a threshold percentage of your lifetime gross winnings, Betfair tops up your commission to that threshold.
The two PC tiers are:
PC compounds the problem for good strategies. A strategy returning 8% ROI before commission might return 4% after standard commission — and that same strategy under Premium Charge could be marginally profitable or flat. PC is not deducted market by market; it is assessed weekly on your net weekly P&L, minus the commission you’ve already paid. The weekly charge is:
pc_payable = max(0, (gross_weekly_profit * pc_rate) - commission_already_paid)
If you paid £200 in market commission on £1,000 gross profit, and you’re at the 20% PC threshold: (1000 * 0.20) - 200 = 0. No PC due. But if your commission payments were low (perhaps you trade mainly lay markets on illiquid exchanges where volume is lower), the gap closes fast.
Here is a P&L calculator that handles all three layers correctly. The key insight is that you need to track both gross market winnings and commissions paid separately, because PC is assessed on the ratio of the two.
public class BetfairCommissionCalculator {
private final double marketBaseRate;
private final double discountRate;
private final PremiumChargeStatus premiumChargeStatus;
public BetfairCommissionCalculator(double marketBaseRate,
double discountRate,
PremiumChargeStatus premiumChargeStatus) {
this.marketBaseRate = marketBaseRate;
this.discountRate = discountRate;
this.premiumChargeStatus = premiumChargeStatus;
}
public double effectiveCommissionRate() {
return marketBaseRate * (1.0 - discountRate);
}
public MarketResult calculateMarketResult(double grossWinnings) {
if (grossWinnings <= 0) {
return new MarketResult(grossWinnings, 0.0, grossWinnings);
}
double commission = grossWinnings * effectiveCommissionRate();
double netWinnings = grossWinnings - commission;
return new MarketResult(grossWinnings, commission, netWinnings);
}
public WeeklyResult calculateWeeklyResult(List<MarketResult> marketResults) {
double totalGross = marketResults.stream()
.mapToDouble(MarketResult::grossWinnings)
.sum();
double totalCommission = marketResults.stream()
.mapToDouble(MarketResult::commissionPaid)
.sum();
double premiumCharge = 0.0;
if (premiumChargeStatus != PremiumChargeStatus.NOT_APPLICABLE && totalGross > 0) {
double pcRate = premiumChargeStatus == PremiumChargeStatus.STANDARD ? 0.20 : 0.40;
premiumCharge = Math.max(0.0, (totalGross * pcRate) - totalCommission);
}
double netPnl = totalGross - totalCommission - premiumCharge;
return new WeeklyResult(totalGross, totalCommission, premiumCharge, netPnl);
}
public record MarketResult(double grossWinnings, double commissionPaid, double netWinnings) {}
public record WeeklyResult(double grossWinnings,
double commissionPaid,
double premiumCharge,
double netPnl) {}
public enum PremiumChargeStatus {
NOT_APPLICABLE,
STANDARD, // 20%
HIGHER // 40%
}
}
Usage in a backtesting engine:
var calculator = new BetfairCommissionCalculator(
0.05, // 5% market base rate
0.20, // 20% discount (your tier)
BetfairCommissionCalculator.PremiumChargeStatus.STANDARD // PC applies
);
// Market 1: profitable race
MarketResult race1 = calculator.calculateMarketResult(320.0);
// gross=320, commission=12.80 (4% effective), net=307.20
// Market 2: losing race
MarketResult race2 = calculator.calculateMarketResult(-85.0);
// gross=-85, commission=0, net=-85
WeeklyResult week = calculator.calculateWeeklyResult(List.of(race1, race2));
// Calculates PC on the net profitable portion after deducting paid commission
A strategy edge calculation that ignores commission is wrong. If your model shows expected value of +3% on a market, the real question is whether that edge survives commission at your effective rate. For a 3% effective commission rate on a +3% EV strategy, you are operating at breakeven before any execution slippage.
The correct formula for adjusted edge:
adjusted_edge = (expected_value - effective_commission_rate) / (1 + expected_value)
For a strategy with 5% EV and 3% effective commission: (0.05 - 0.03) / 1.05 = 1.9% adjusted edge. Under Premium Charge at 20%, your effective drag rises substantially — recalculate with the blended rate you actually pay across a full week, not just the per-market rate.
The practical upshot: strategies with thin edge (2-4% EV) are fragile under commission. They look profitable in backtesting with gross figures, but commission eats the margin entirely. Only strategies with meaningful edge — typically 8%+ before commission — survive the full stack of market commission, discount tiers, and potential Premium Charge.
Model it correctly from day one. The numbers that matter are the ones that land in your account.
If you’re building or auditing a Betfair trading strategy and want an honest view of net profitability, get in touch.