Functional Weave
Code in Rust

energy.price-cap@1.0.2

README.md

4,075 bytes · view raw

# energy.price-cap

The Ofgem default tariff cap ("energy price cap") in force on a date: the
unit rate per kWh and the daily standing charge a supplier may charge a
household on a standard variable tariff, for electricity or gas.

```
priceCap("electricity", "direct-debit", "2026-05-01")
  -> unitRate 24670 (24.67p/kWh), standingCharge 57210 (57.21p/day), vatBasisPoints 500
```

## Scope of the data

- **GB average, Direct Debit, single-rate electricity.** These are the
  figures Ofgem publishes as the headline cap for each period: the average
  across England, Scotland and Wales for a customer paying by Direct Debit.
  Nine periods, **1 October 2024 to 31 December 2026**.
- **Not regional.** The cap differs by the 14 electricity regions. Ofgem
  publishes the regional rates only in its interactive tables and
  spreadsheets, which this version does not carry; a regional bill needs the
  supplier's own rates (which may be below the cap anyway).
- **Not standard credit or prepayment.** The types list them because the cap
  is set for each, but Ofgem does not publish GB-average unit rates for them
  in a form that could be checked here, so asking for one is an error rather
  than a guess. They will be new rows, not new code.
- **Not Economy 7 / multi-rate.** Ofgem caps a multi-register meter as a
  whole rather than publishing a GB-average day and night rate.

## Units and VAT

Rates are integers in **thousandths of a penny**, matching the rest of the
`energy.*` capabilities (`energy.tariff-time-of-use`, `energy.bill-calculate`);
Ofgem's figures are rounded to two decimal places, so the last digit is
always 0.

The figures **include VAT**, and `vatBasisPoints` says how much: 5% on
everything, except electricity from 1 October 2026, which the government
zero-rated for domestic customers in Great Britain from 1 October 2026 to
31 March 2027 (Ofgem: "It does not include VAT from 1 October 2026 to
31 March 2027"). To get the pre-VAT rate for a bill, divide by
`1 + vatBasisPoints / 10000`.

## Dates

A period runs `validFrom` to `validTo` inclusive (calendar quarters). A date
outside every period this version carries is an error: the cap for a period
not yet announced is not today's cap. A build installed with
`history=current` keeps only periods still running and refuses older dates
with an explanation.

## Sources

Ofgem news releases, "Changes to energy price cap between ..." (each gives the
Direct Debit GB-average unit rate and standing charge for electricity and
gas, and states the VAT they include):

- 1 January to 31 March 2026: https://www.ofgem.gov.uk/news/changes-energy-price-cap-between-1-january-and-31-march-2026
- 1 April to 30 June 2026: https://www.ofgem.gov.uk/news/changes-energy-price-cap-between-1-april-and-30-june-2026
- 1 July to 30 September 2026: https://www.ofgem.gov.uk/news/changes-energy-price-cap-between-1-july-and-30-september-2026
- 1 October to 31 December 2026: https://www.ofgem.gov.uk/news/changes-energy-price-cap-between-1-october-and-31-december-2026

Ofgem, "Energy price cap" consumer page, as archived by the Internet Archive
(https://web.archive.org/web/2025*/https://www.ofgem.gov.uk/information-consumers/energy-advice-households/energy-price-cap)
in February, May, August and November 2025, each showing the current and
next period: October to December 2024, and each quarter of 2025.

Ofgem, "Energy price cap (default tariff) levels",
https://www.ofgem.gov.uk/energy-regulation/domestic-and-non-domestic/energy-pricing-rules/energy-price-cap/energy-price-cap-default-tariff-levels
(the regional and per-payment-method models this version does not carry).

1.0.1 fixes Python accepting a trailing newline or non-ASCII digits in onDate; adds tests.

## Notices

Contains public sector information licensed under the Open Government
Licence v3.0 (https://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/).

Source: Ofgem (Crown copyright), reused under the Open Government Licence v3.0.

1.0.2 adds its attribution notices (NOTICE). The code and the tests are unchanged.