Skip to content

Commit b4317b0

Browse files
Merge pull request #124 from StephanieWillis/update-rates-and-grant
Update rates and grant
2 parents 625d241 + f8a43c0 commit b4317b0

File tree

6 files changed

+38
-42
lines changed

6 files changed

+38
-42
lines changed

Diff for: README.md

+12-14
Original file line numberDiff line numberDiff line change
@@ -94,11 +94,11 @@ In the step where we pickle the demand profile we normalize it so the profiles s
9494

9595
### Heating system efficiencies
9696

97-
**Heat pumps** - using rounded values from 5 kW
98-
[Vaillant arotherm SCOP data](https://www.vaillant.co.uk/downloads/aproducts/renewables-1/arotherm-plus/arotherm-plus-1/quick-guides/new-5/installers-quick-guide-arotherm-plus-1949445.pdf),
99-
with flow temperature of 55C. These efficiencies are above
97+
**Heat pumps** - using rounded values from 7 kW
98+
[Vaillant arotherm SCOP data](https://www.vaillant.co.uk/downloads/aproducts/renewables-1/arotherm-plus/arotherm-plus-spec-sheet-1892564.pdf)
99+
with flow temperature of 55C. These efficiencies are above
100100
recorded averages (2.76 according to this [nesta analysis](https://www.nesta.org.uk/report/reduce-the-cost-of-heat-pumps/))
101-
but lower than reported values for high quality installs.
101+
but lower than reported values for [high quality installs](https://heatpumpmonitor.org/graph).
102102

103103
**Gas boiler** - using 84%, as used in this
104104
[Delta EE report](https://www.climatexchange.org.uk/media/1897/electrification_of_heat_and_impact_on_scottish_electricity_system_-_final_report1.pdf)). Using 80% for water heating due to lower
@@ -119,30 +119,28 @@ Electricity emissions factors are UK average from the start of 2022 to 2022-10-2
119119
### Tariffs
120120

121121
The default tariffs for gas and electricity are based on the average rate under the
122-
[Energy Price Guarantee](https://www.gov.uk/government/publications/energy-bills-support/energy-bills-support-factsheet-8-september-2022),
123-
which is active until April 2023.
124-
Without further government support, bills will increase after that date, at least in the short term. Some clues
125-
as where rates might go in [this Cornwall Insights analysis](https://www.cornwall-insight.com/predicted-fall-in-the-april-2023-price-cap-but-prices-remain-significantly-above-the-epg/)
126-
and [this nesta analysis](https://www.nesta.org.uk/report/how-the-energy-crisis-affects-the-case-for-heat-pumps/how-the-costs-of-heat-pumps-compare-to-gas-boilers-since-the-energy-crisis-1/#content)
122+
[October 2023 price cap](https://www.ofgem.gov.uk/energy-price-cap),
123+
which is active until the 30th of December 2023.
124+
The electricity export tariff is Octopus's [Outgoing Fixed](https://octopus.energy/smart/outgoing/).
127125
The oil tariff is a rough average based on [Boiler Juice](https://www.boilerjuice.com/heating-oil-prices/)
128-
data since prices stabilised in April 2022.
126+
data for September and October 2023.
129127

130128

131129
### Cost data
132130
Solar costs are from [BEIS data](https://www.data.gov.uk/dataset/738a7bdb-a533-443d-bd02-69a8dd7fe68d/solar-pv-cost-data)
133131
for 2021/22 installs accredited under MCS.
134132
We used the upper confidence interval given prices have likely risen since 2021/2022
135133

136-
Heat pump and gas boiler costs from Nesta's [How to reduce the cost of heat pupms report](
134+
Heat pump and gas boiler costs from Nesta's [How to reduce the cost of heat pumps report](
137135
https://media.nesta.org.uk/documents/How_to_reduce_the_cost_of_heat_pumps_v4_1.pdf)
138136
- Used tables 1 (for semi only) and 2 (for terrace, flat, detached) from
139137
- Corrected gas boiler cost for semi-detached by same amount as heat pump shifts to keep equivalent
140138
- Assumed oil and direct electric baseline costs are the same as gas boiler costs. This is probably a poor assumption in the direct electric case
141139

142140
The Nesta prices were in £2021 so we inflated the figures by ratio of retail price index from [Oct 2021](
143-
https://www.crosslandsolicitors.com/site/hr-hub/October-2021-inflation-data-CPI-CPIH-RPI) to [Oct 2022](
144-
https://www.crosslandsolicitors.com/site/media/October-2022-inflation-data-CPI-CPIH-RPI). That amounts
145-
to a 14% cost increase.
141+
https://www.crosslandsolicitors.com/site/hr-hub/October-2021-inflation-data-CPI-CPIH-RPI) to [September 2023](
142+
https://www.crosslandsolicitors.com/site/media/hr-hub/September-2023-inflation-CPI-CPIH-RPI). That amounts
143+
to a 21% cost increase.
146144

147145
Other relevant cost resources [here](
148146
https://assets.publishing.service.gov.uk/government/uploads/system/uploads/attachment_data/file/656866/BEIS_Update_of_Domestic_Cost_Assumptions_031017.pdf)

Diff for: src/constants.py

+14-14
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,12 @@
1111
BASE_YEAR_HOURLY_INDEX = pd.date_range(start="2013-01-01", end="2014-01-01", freq="1H", inclusive="left")
1212
EMPTY_TIMESERIES = pd.Series(index=BASE_YEAR_HOURLY_INDEX, data=0)
1313

14-
KWH_PER_LITRE_OF_OIL = 10.35 # https://www.thegreenage.co.uk/is-heating-oil-a-cheap-way-to-heat-my-home/
1514
ELEC_TCO2_PER_KWH = 186 / 10 ** 6
1615
ELECTRICITY = Fuel("electricity", tco2_per_kwh=ELEC_TCO2_PER_KWH)
1716
GAS_TCO2_PER_KWH = 202 / 10 ** 6
1817
GAS = Fuel(name="gas", tco2_per_kwh=GAS_TCO2_PER_KWH)
1918
OIL_TCO2_PER_KWH = 260 / 10 ** 6
19+
KWH_PER_LITRE_OF_OIL = 10.35 # https://www.thegreenage.co.uk/is-heating-oil-a-cheap-way-to-heat-my-home/
2020
OIL = Fuel(name="oil", units="litres", converter_consumption_units_to_kwh=KWH_PER_LITRE_OF_OIL,
2121
tco2_per_kwh=OIL_TCO2_PER_KWH)
2222
FUELS = [ELECTRICITY, GAS, OIL]
@@ -94,27 +94,27 @@ class HeatingConstants:
9494
normalized_hourly_heat_demand_profile=NORMALIZED_HOURLY_HEAT_DEMAND_DF[
9595
'Normalised_Resistance_heater_heat']),
9696
"Heat pump": HeatingConstants(
97-
efficiency=3.0,
97+
efficiency=3.4,
9898
fuel=ELECTRICITY,
9999
normalized_hourly_heat_demand_profile=NORMALIZED_HOURLY_HEAT_DEMAND_DF['Normalised_ASHP_heat']),
100100
}
101101

102-
RPI_ratio_oct_21_to_oct_22 = 356.2/312.0
103-
HEAT_PUMP_COSTS = {"Terrace": 10000 * RPI_ratio_oct_21_to_oct_22,
104-
"Semi-detached": 11100 * RPI_ratio_oct_21_to_oct_22,
105-
"Flat": 9100 * RPI_ratio_oct_21_to_oct_22,
106-
"Detached": 13100 * RPI_ratio_oct_21_to_oct_22}
107-
GAS_BOILER_COSTS = {"Terrace": 1800 * 10000 / 11100 * RPI_ratio_oct_21_to_oct_22,
108-
"Semi-detached": 1800 * RPI_ratio_oct_21_to_oct_22,
109-
"Flat": 1500 * RPI_ratio_oct_21_to_oct_22,
110-
"Detached": 2200 * RPI_ratio_oct_21_to_oct_22}
102+
RPI_ratio_oct_21_to_sept_23 = 378.4/312.0
103+
HEAT_PUMP_COSTS = {"Terrace": 10000 * RPI_ratio_oct_21_to_sept_23,
104+
"Semi-detached": 11100 * RPI_ratio_oct_21_to_sept_23,
105+
"Flat": 9100 * RPI_ratio_oct_21_to_sept_23,
106+
"Detached": 13100 * RPI_ratio_oct_21_to_sept_23}
107+
GAS_BOILER_COSTS = {"Terrace": 1800 * 10000 / 11100 * RPI_ratio_oct_21_to_sept_23,
108+
"Semi-detached": 1800 * RPI_ratio_oct_21_to_sept_23,
109+
"Flat": 1500 * RPI_ratio_oct_21_to_sept_23,
110+
"Detached": 2200 * RPI_ratio_oct_21_to_sept_23}
111111
HEATING_SYSTEM_COSTS = {"Gas boiler": GAS_BOILER_COSTS,
112112
"Heat pump": HEAT_PUMP_COSTS,
113113
"Oil boiler": GAS_BOILER_COSTS, # assume they are the same
114114
"Direct electric": GAS_BOILER_COSTS
115115
}
116116
HEATING_SYSTEM_GRANTS = {"Gas boiler": 0,
117-
"Heat pump": 5000, # Boiler upgrade scheme,
117+
"Heat pump": 7500, # Boiler upgrade scheme,
118118
"Oil boiler": 0,
119119
"Direct electric": 0
120120
}
@@ -135,8 +135,8 @@ class TariffConstants:
135135

136136

137137
STANDARD_TARIFF = TariffConstants(
138-
p_per_kwh_gas=10.3, p_per_kwh_elec_import=34.0, p_per_kwh_elec_export=15.0,
139-
p_per_L_oil=95.0, p_per_day_gas=28.0, p_per_day_elec=46.0)
138+
p_per_kwh_gas=7.0, p_per_kwh_elec_import=27.0, p_per_kwh_elec_export=15.0,
139+
p_per_L_oil=79.0, p_per_day_gas=30.0, p_per_day_elec=53.0)
140140

141141

142142
@dataclass()

Diff for: src/house_questions.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -327,10 +327,10 @@ def render_tariff_overwrite_options(house: House) -> House:
327327
tariffs["oil"].p_per_unit_import = st.session_state.p_per_unit_heating_fuel_import
328328

329329
st.caption(
330-
"Our default tariffs reflect the current [Energy Price Guarantee]("
331-
"https://www.gov.uk/government/publications/energy-bills-support/energy-bills-support-factsheet-8-september-2022)"
332-
" which is in place until April. "
333-
"Rates will go up in April, but we don't yet know how this will be split between electricity and gas. \n \n"
330+
"Our default tariffs reflect the current [Ofgem price cap](https://www.ofgem.gov.uk/energy-price-cap). "
331+
"Cheaper electricity rates are available. For example Ovo is offering a [15p/kWh heat pump tariff]("
332+
"https://company.ovo.com/cheaper-than-a-gas-boiler-ovo-launches-best-in-market-heat-pump-offer/) where "
333+
"you get this low rate just for the electricity your heat pump uses. \n \n"
334334
"The electricity export rate of 15p/kWh is based on [Octopus Outgoing](https://octopus.energy/outgoing)"
335335
)
336336

Diff for: src/place_search/index.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
font-size: 16px;
1414
}
1515
</style>
16-
<input id="postcode" placeholder="Enter your postcode to find your roof (then click on the matching address)" class="stTextInput postcode-input"/>
16+
<input id="postcode" placeholder="Enter your address to find your roof (click on the matching address)" class="stTextInput postcode-input"/>
1717
<div id="output" value="" style="z-index: 99999"/>
1818
<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyDE1h8LmQYFqt5_aHPd_7KKF-wpv14sJBA&libraries=places&callback=autoComplete&locationbias=ipBias"
1919
async defer></script>

Diff for: src/savings_outputs.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ def render_heat_pump_overwrite_options(upgrade_heating: HeatingSystem) -> Heatin
104104
st.caption(
105105
"The efficiency of your heat pump depends on how well the system is designed and how low a flow "
106106
"temperature it can run at. A COP of 3.6 or better is possible with a [high quality, low flow temperature "
107-
"install](https://heatpumpmonitor.org). \n \n"
107+
"install](https://heatpumpmonitor.org/graph). \n \n"
108108
"A good installer is key to ensuring your heat pump runs efficiently. The [heat geek map"
109109
"](https://www.heatgeek.com/find-a-heat-geek/) is a great place to start your search."
110110
)

Diff for: tests/test_house.py

+6-8
Original file line numberDiff line numberDiff line change
@@ -132,21 +132,19 @@ def test_set_up_house_from_heating_name():
132132

133133

134134
def test_typical_home_hits_price_cap():
135-
# price cap under Energy price guarantee is £2500 for house that uses 12,000kWh of gas and 2,900kWh of elec
135+
# October 2023 price cap for house is 1834 for house that uses 11,500kWh of gas and 2,900kWh of elec
136136
gas_boiler = building_model.HeatingSystem.from_constants(
137137
name='Gas boiler',
138138
parameters=constants.DEFAULT_HEATING_CONSTANTS['Gas boiler'])
139-
demand = 2900 * constants.NORMALIZED_HOURLY_BASE_DEMAND
139+
demand = 2700 * constants.NORMALIZED_HOURLY_BASE_DEMAND
140140
envelope = building_model.BuildingEnvelope(house_type='typical',
141-
annual_heating_demand=12000 * gas_boiler.efficiency,
141+
annual_heating_demand=11500 * gas_boiler.efficiency,
142142
base_electricity_demand_profile_kwh=demand)
143143
gas_house = building_model.House.set_up_from_heating_name(envelope=envelope, heating_name='Gas boiler')
144144
assert gas_house.has_multiple_fuels is True
145-
np.testing.assert_almost_equal(gas_house.annual_consumption_per_fuel_kwh['electricity'], 2900)
146-
np.testing.assert_almost_equal(gas_house.annual_consumption_per_fuel_kwh['gas'], 12000)
147-
np.testing.assert_almost_equal(gas_house.total_annual_bill, 2492.1) # looks like it isn't exactly 2500 after all
145+
np.testing.assert_almost_equal(gas_house.total_annual_bill, 1837, 0) # prices we are using are rounded
148146
np.testing.assert_almost_equal(gas_house.total_annual_tco2,
149-
(12000 * constants.GAS_TCO2_PER_KWH + 2900 * constants.ELEC_TCO2_PER_KWH))
147+
(11500 * constants.GAS_TCO2_PER_KWH + 2700 * constants.ELEC_TCO2_PER_KWH))
150148

151149

152150
def test_upgrade_buildings():
@@ -190,6 +188,6 @@ def test_upgrade_buildings():
190188
assert solar_house.percent_self_use_of_solar > 0
191189
assert round(solar_house.percent_self_use_of_solar, 3) == 0.827 # so high because only 0.8kW of panels
192190
assert both_house.percent_self_use_of_solar > solar_house.percent_self_use_of_solar
193-
assert round(both_house.percent_self_use_of_solar, 3) == 0.920
191+
assert round(both_house.percent_self_use_of_solar, 3) == 0.914
194192

195193
return hp_house, solar_house, both_house

0 commit comments

Comments
 (0)