Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
1b3588c
Project the gambling duty bases with OBR Table 4.10
MaxGhenis Oct 31, 2026
a5bcc78
Test and document the gambling duty base projection
MaxGhenis Oct 31, 2026
7717413
State only what the sources show about the gambling base adjustments
MaxGhenis Oct 31, 2026
f1dd276
Merge origin/main into fix-2738-gambling-bases
MaxGhenis Oct 31, 2026
777af84
Grow the higher-stake machine games input by the Machine Games Duty i…
MaxGhenis Oct 31, 2026
148051f
Compare the higher-stake duty test at float32 precision
MaxGhenis Oct 31, 2026
2104009
Merge origin/main into fix-2738-gambling-bases
MaxGhenis Oct 31, 2026
6f4f8a0
Divide Machine Games Duty receipts by the rate with the higher-stake …
MaxGhenis Oct 31, 2026
c52ebb9
Document the higher-stake share and the shortfall without its input
MaxGhenis Oct 31, 2026
d4fb224
Merge origin/main into fix-2738-gambling-bases
MaxGhenis Oct 31, 2026
09c1c1f
Write the gambling projection notes in the active voice
MaxGhenis Oct 31, 2026
1995d66
Check the finished index before writing a series
MaxGhenis Oct 31, 2026
2dc10f5
Read the value in force each January in the index check
MaxGhenis Oct 31, 2026
84b1dbf
Check the index to the end of the growth file
MaxGhenis Oct 31, 2026
654b85c
Build the expected duty without writing in place
MaxGhenis Oct 31, 2026
dbba5ae
Grow the gambling bases per head of population
MaxGhenis Oct 31, 2026
27f0236
Describe the weighted constructed households and the importer's division
MaxGhenis Oct 31, 2026
d08fbb6
Divide a base's tail in receipts_tail, beside #2596's clearance tail
MaxGhenis Oct 31, 2026
f11dc5a
Separate the growth and index horizons in the gambling docs
MaxGhenis Oct 31, 2026
0037137
Name the government and the Treasury in the machines costing docs
MaxGhenis Oct 31, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions changelog.d/2738.fixed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Projected the sixteen gambling duty inputs per person from HMRC's 2025-26 receipts and the OBR's October 2026 betting and gaming forecast (receipts Table 4.10), divided by the rates the model charges and by population growth. The inputs no longer stay at their 2024-25 cash level, their weighted totals follow each duty's base as household weights grow with population, and the 2026 and 2027 remote gambling rate rises and the 2027 higher-stake machine rate rise apply once.
227 changes: 219 additions & 8 deletions docs/engineering/gambling-duties.md

Large diffs are not rendered by default.

27 changes: 27 additions & 0 deletions policyengine_uk/data/uprating_indices.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -170,6 +170,33 @@ gov.economic_assumptions.yoy_growth.obr.per_capita.mixed_income:
- self_employment_gross_receipts
- trading_loss
- owned_company_income_share
# Gambling duty bases grow per person, as household weights grow by
# population, with the OBR's receipts forecast for their duty divided by the
# rates the model charges, so the model applies its own rate changes to them
# once (#2738).
gov.economic_assumptions.yoy_growth.obr.per_capita.gambling_duty_bases.general_betting:
- betting_exchange_commission
- financial_spread_betting_net_losses
- horse_and_dog_pool_betting_net_losses
- land_based_fixed_odds_betting_net_losses
- other_spread_betting_net_losses
- remote_other_betting_net_losses
- remote_uk_horseracing_betting_net_losses
gov.economic_assumptions.yoy_growth.obr.per_capita.gambling_duty_bases.pool_betting:
- pool_betting_net_receipts
gov.economic_assumptions.yoy_growth.obr.per_capita.gambling_duty_bases.remote_gaming:
- remote_gaming_net_losses
gov.economic_assumptions.yoy_growth.obr.per_capita.gambling_duty_bases.machine_games:
- machine_games_higher_rate_net_takings
- machine_games_lower_rate_net_takings
- machine_games_standard_rate_higher_stake_net_takings
- machine_games_standard_rate_net_takings
gov.economic_assumptions.yoy_growth.obr.per_capita.gambling_duty_bases.gaming:
- land_based_casino_net_losses
gov.economic_assumptions.yoy_growth.obr.per_capita.gambling_duty_bases.bingo:
- bingo_net_receipts
gov.economic_assumptions.yoy_growth.obr.per_capita.gambling_duty_bases.lottery:
- national_lottery_ticket_spending
gov.economic_assumptions.yoy_growth.obr.private_pension_index:
- private_pension_income
gov.economic_assumptions.yoy_growth.obr.lagged_average_earnings:
Expand Down
31 changes: 31 additions & 0 deletions policyengine_uk/parameters/gov/economic_assumptions/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ GDP and population assumptions remain supported.
| `stamp_duty_land_tax.non_residential` | SDLT receipts from non-residential property | EFO receipts, property transactions taxes by sector: Table 4.7 in October 2026 |
| `business_rates.great_britain` | Business rates receipts, England, Scotland and Wales (cash) | EFO receipts, current receipts (cash basis): Table 4.8 in October 2026 |
| `business_rates.northern_ireland` | Northern Ireland business rates receipts | EFO receipts, other taxes: Table 4.2 in October 2026 |
| `per_capita.gambling_duty_bases.<duty>` | The base of each of the seven betting and gaming duties (receipts over the model's rate), per person | HMRC Betting and Gaming tables (2024-25, 2025-26), then EFO receipts, betting and gaming duties forecast breakdown: Table 4.10 in October 2026, over `ons.population` |

The four receipts series project the corporate SDLT and business rates
statistics (`gov.hmrc.stamp_duty.statistics`,
Expand All @@ -45,6 +46,26 @@ in an earlier EFO), the EFO's forecast years, and after them the
`average_earnings` path. Years before the outturn year are kept, so each
index keeps its base year.

The seven `per_capita.gambling_duty_bases` series (`general_betting`,
`pool_betting`, `remote_gaming`, `machine_games`, `gaming`, `bingo`,
`lottery`) grow the gambling duty inputs (#2738). They grow a duty's base,
not its receipts: each year's receipts divided by the rate the model charges
that fiscal year. The model then applies its own rate changes, such as
Remote Gaming Duty's rise from 21% to 40% on 1 April 2026, once. The OBR
publishes only forecasts in Table 4.10, so each series starts from HMRC's
2024-25 receipts, the model's base year, and its 2025-26 outturn, which the
importer holds in `RECEIPTS_SERIES_SPECS`. The importer holds a base flat in
any year whose rate is zero, as for Bingo Duty from 2026-27 on, and after the
forecast it grows every other base with `average_earnings`. The importer
writes each series per person, (1 +
base growth) / (1 + `ons.population` growth) - 1 to six decimals, in every
year to the last that `ons.population` states. Dataset projection grows
household weights by `ons.population`, so the weighted inputs grow with the
base. See
[gambling duties](../../../../docs/engineering/gambling-duties.md#projection)
for each duty's rates, the higher-stake share Machine Games Duty's rate
assumes, and the approximations.

`national_living_wage` projects the minimum wage rates
(`gov.hmrc.minimum_wage`) after the last rate set. It is the growth of the
rates set to 2027, then the OBR's estimates in Table 1.13 of the detailed
Expand Down Expand Up @@ -458,6 +479,16 @@ the forecast levels, though not their growth.
`policyengine_uk/tests/test_corporate_receipts_statistics.py`
(`OBR_RECEIPTS_BN`), which pin the series to the OBR's tables. Pass
`--skip-receipts-growth` only to leave them on the previous EFO.
The same run refreshes the `per_capita.gambling_duty_bases` series from
the new EFO's betting and gaming duties forecast breakdown and the
`ons.population` growth in `yoy_growth.yaml`, so rerun it after any change
to that population series. They read no previous EFO: the year before the
table's first comes from HMRC's receipts in each spec. When the table starts a year later (2027-28 in October 2027), add
HMRC's outturn for the year before from its latest Betting and Gaming
tables; the importer stops and names the year until you do. Check the
EFO's policy tables for any new measure in the betting and gaming lines.
Then update the published levels in
`policyengine_uk/tests/test_gambling_duty_base_projection.py`.
7. If the new EFO runs past `PROJECTION_END_YEAR`, move it on (see
[Dataset projection horizon](#dataset-projection-horizon)).
8. Refresh the household energy price inputs (see
Expand Down
Loading
Loading