diff --git a/changelog.d/676.md b/changelog.d/676.md new file mode 100644 index 000000000..edc8deb86 --- /dev/null +++ b/changelog.d/676.md @@ -0,0 +1 @@ +- Add the Rural Fuel Duty Relief Scheme: a 5p/litre reduction on petrol and diesel for households in eligible rural postcodes, exposed through a new `in_rural_fuel_duty_relief_area` input. diff --git a/policyengine_uk/parameters/gov/hmrc/fuel_duty/rural_fuel_duty_relief.yaml b/policyengine_uk/parameters/gov/hmrc/fuel_duty/rural_fuel_duty_relief.yaml new file mode 100644 index 000000000..2f3bd49ba --- /dev/null +++ b/policyengine_uk/parameters/gov/hmrc/fuel_duty/rural_fuel_duty_relief.yaml @@ -0,0 +1,11 @@ +description: Per-litre reduction in fuel duty applied to petrol and diesel purchased in eligible rural areas under the Rural Fuel Duty Relief Scheme. +values: + 2012-03-01: 0.05 +metadata: + unit: currency-GBP + label: Rural Fuel Duty Relief rate + reference: + - title: Rural fuel duty relief scheme — Notice 2001 + href: https://www.gov.uk/guidance/rural-duty-relief-scheme-notice-2001 + - title: Hydrocarbon Oil (Mileage Allowance for Rural Petrol Filling Stations) Regulations 2011 (SI 2011/2935) + href: https://www.legislation.gov.uk/uksi/2011/2935/contents/made diff --git a/policyengine_uk/tests/policy/baseline/gov/hmrc/fuel_duty/rural_fuel_duty_relief.yaml b/policyengine_uk/tests/policy/baseline/gov/hmrc/fuel_duty/rural_fuel_duty_relief.yaml new file mode 100644 index 000000000..67ac33f83 --- /dev/null +++ b/policyengine_uk/tests/policy/baseline/gov/hmrc/fuel_duty/rural_fuel_duty_relief.yaml @@ -0,0 +1,59 @@ +- name: Household outside the Rural Fuel Duty Relief area pays the full fuel duty rate + period: 2025 + absolute_error_margin: 0.01 + input: + people: + adult: + age: 40 + benunits: + benunit: + members: [adult] + households: + household: + members: [adult] + petrol_litres: 1_000 + diesel_litres: 0 + in_rural_fuel_duty_relief_area: False + output: + # 1,000 litres * 0.5295 GBP/L / 0.5 (statutory) * 1 (economic) = 1,059 + fuel_duty: 1_059 + +- name: Household inside the Rural Fuel Duty Relief area receives the 5p/L reduction + period: 2025 + absolute_error_margin: 0.01 + input: + people: + adult: + age: 40 + benunits: + benunit: + members: [adult] + households: + household: + members: [adult] + petrol_litres: 1_000 + diesel_litres: 0 + in_rural_fuel_duty_relief_area: True + output: + # 1,000 litres * (0.5295 - 0.05) GBP/L / 0.5 (statutory) * 1 (economic) = 959 + fuel_duty: 959 + +- name: Rural relief applies to both petrol and diesel litres + period: 2025 + absolute_error_margin: 0.01 + input: + people: + adult: + age: 40 + benunits: + benunit: + members: [adult] + households: + household: + members: [adult] + petrol_litres: 600 + diesel_litres: 400 + in_rural_fuel_duty_relief_area: True + output: + # (600 + 400) litres * (0.5295 - 0.05) GBP/L / 0.5 * 1 = 959 + fuel_duty: 959 diff --git a/policyengine_uk/variables/gov/hmrc/fuel_duty/fuel_duty.py b/policyengine_uk/variables/gov/hmrc/fuel_duty/fuel_duty.py index 8d07d015e..b45631361 100644 --- a/policyengine_uk/variables/gov/hmrc/fuel_duty/fuel_duty.py +++ b/policyengine_uk/variables/gov/hmrc/fuel_duty/fuel_duty.py @@ -15,8 +15,12 @@ def formula(household, period, parameters): fd = parameters(period).gov.hmrc.fuel_duty petrol_litres = household("petrol_litres", period.this_year) / MONTHS_IN_YEAR diesel_litres = household("diesel_litres", period.this_year) / MONTHS_IN_YEAR + in_relief_area = household("in_rural_fuel_duty_relief_area", period.this_year) + effective_rate = ( + fd.petrol_and_diesel - in_relief_area * fd.rural_fuel_duty_relief + ) return ( - fd.petrol_and_diesel + effective_rate * (petrol_litres + diesel_litres) / STATUTORY_CONSUMER_INCIDENCE * ECONOMIC_CONSUMER_INCIDENCE diff --git a/policyengine_uk/variables/input/consumption/in_rural_fuel_duty_relief_area.py b/policyengine_uk/variables/input/consumption/in_rural_fuel_duty_relief_area.py new file mode 100644 index 000000000..8c0fd15ab --- /dev/null +++ b/policyengine_uk/variables/input/consumption/in_rural_fuel_duty_relief_area.py @@ -0,0 +1,18 @@ +from policyengine_uk.model_api import * + + +class in_rural_fuel_duty_relief_area(Variable): + label = "In Rural Fuel Duty Relief scheme area" + documentation = ( + "Whether the household is located in a postcode eligible for the Rural " + "Fuel Duty Relief Scheme, which provides a flat per-litre reduction on " + "petrol and diesel purchased from registered retailers. Eligible areas " + "include the Inner and Outer Hebrides, the Northern Isles, the Islands " + "in the Clyde, the Isles of Scilly, and specified rural parts of " + "Cumbria, Devon and Northumberland." + ) + entity = Household + definition_period = YEAR + value_type = bool + default_value = False + reference = "https://www.gov.uk/guidance/rural-duty-relief-scheme-notice-2001"