Generate daily gas consumption values using the BDEW/VKU/GEODE synthetic standard load profile procedure (SigLinDe method).
Usage
slp_gas(
profile_id,
dates,
temperatures,
kundenwert,
variant = c("34", "33"),
holidays = NULL
)Source
https://www.bdew.de/energie/standardlastprofile-gas/
BDEW/VKU/GEODE. Leitfaden Abwicklung von Standardlastprofilen Gas, Kooperationsvereinbarung Gas, Annex XIV.2, as of 2025-10-28, Appendix 6. https://www.bdew.de/media/documents/251028_LF_SLP_Gas_KoV_XIV.2.pdf
Arguments
- profile_id
gas load profile identifier, required. One of
"HEF","HMF","HKO","GKO","GHA","GMK","GBD","GBH","GWA","GGA","GBA","GGB","GPD","GMF","GHD". Multiple values are supported.- dates
a Date vector or character vector in ISO 8601 format (
"YYYY-MM-DD"). Each element is the start date of a gas day (German: Gastag, 06:00–06:00). Must have the same length astemperatures.- temperatures
a numeric vector of daily temperatures in degrees Celsius, one value per gas day. Must have the same length as
dates. The temperature should be the allocation temperature (German: Allokationstemperatur) for that gas day. Two options are supported by the Leitfaden (see Details):Simple daily mean (Tagesmitteltemperatur): arithmetic average of hourly values over the gas day.
Geometrically-weighted 4-day mean: recommended by BDEW for distribution network operators.
In production contexts, distribution network operators increasingly use the gas forecast temperature (German: Gasprognosetemperatur, GPT) published by DWD or DTN instead of a raw daily mean. The GPT incorporates a multi-day weighted average and seasonal adjustment that reduces the systematic seasonal allocation bias of pure temperature-based profiles (VKU SLP evaluation reports 2023, 2025). This function accepts whichever temperature values are passed; the choice of method is the caller's responsibility.
- kundenwert
numeric scalar, required. Customer value (Kundenwert) in kWh/day — the daily gas consumption at the reference temperature of 8 °C. Derive it once from a full reference year with
slp_gas_kundenwert(), or supply a value you already know. See Details.- variant
SigLinDe variant (German: Ausprägung) to use. Either
"34"(default) or"33". Variant 34 has a 57 % linear component and a steeper heating slope; variant 33 has a 45 % linear component. The BDEW Leitfaden recommends that distribution network operators test both variants against their own grid data and select the better fit. See Details.The
"HKO"profile is a pure sigmoid with no linear part and is unaffected by this argument.- holidays
controls public holiday treatment:
NULL(default): built-in nationwide German holidays are used.NA: no dates are treated as public holidays.a character or Date vector in ISO 8601 format (
"YYYY-MM-DD"): only these dates are treated as public holidays; the built-in data are ignored entirely.
Value
A data.frame with three variables:
profile_id, character, gas load profile identifierdate, Date, start date of the gas day (06:00 local time)kwh, numeric, estimated gas consumption in kWh for that gas day
Details
Background
In the (German) gas market, standard load profiles (Standardlastprofile, SLP) are used to allocate gas volumes to low-pressure customers who are not continuously metered. The synthetic procedure computes a daily gas quantity as:
$$Q(D) = KW \times h(\vartheta_D) \times F_{WT}$$
where:
\(KW\) is a customer-specific scaling factor in kWh/day (German: Kundenwert).
\(h(\vartheta_D)\) is the SigLinDe profile function value for the daily temperature \(\vartheta_D\).
\(F_{WT}\) is the weekday factor for the profile and day type.
SigLinDe Profile Function
The SigLinDe function is defined in two variants (German: Ausprägungen). The pure sigmoid term was introduced by TU München (Geiger / Hellwig 2002); the linear envelope on top — together with the 33 / 34 variant split — was added by FfE in the 2015 research report Weiterentwicklung des Standard- lastprofilverfahrens Gas (Appendix 7.1). The current operational coefficient set is published in the BDEW Leitfaden, Appendix 6 (as of 2025-10-28):
$$h(\vartheta) = \frac{A}{1 + \left(\frac{B}{\vartheta - \vartheta_0}\right)^C} + D + \max(m_H \vartheta + b_H,\; m_W \vartheta + b_W)$$
The first four terms form the sigmoid part; the last term is the linear part (space-heating and hot water lines). Variant 34 (57 % linear component, steeper heating slope) is the default. Variant 33 (45 % linear component) is an alternative for distribution network areas where it fits better. Distribution network operators are advised to test both against their own grid data.
The HKO profile (Kochgasprofil) is a pure sigmoid retained from the
pre-SigLinDe era; it has no 33/34 variant and its linear part is always
zero.
Allocation temperature
The allocation temperature can be computed in two ways:
Simple daily mean — arithmetic mean of hourly temperatures: $$\vartheta_D = \frac{1}{24} \sum_{h=1}^{24} T_h$$
Geometrically-weighted 4-day mean (recommended by BDEW for network operators): $$\vartheta_D = \frac{T_D + 0.5 \times T_{D-1} + 0.25 \times T_{D-2} + 0.125 \times T_{D-3}}{1.875}$$
This function accepts whichever temperature values the user provides in
temperatures; the choice of method is the user's responsibility.
Kundenwert
The Kundenwert \(KW\) scales the dimensionless profile to a customer's actual consumption and is a required input. The recommended workflow is two steps:
Derive \(KW\) once from a full reference year of temperatures with
slp_gas_kundenwert(): $$KW = \frac{E_a}{\sum_D h(\vartheta_D) \times F_{WT,D}}$$ where \(E_a\) is the annual consumption.Pass that \(KW\) to
slp_gas()for any period you want to generate.
Keeping the two steps separate is deliberate: kundenwert is a property
of the customer and their climate zone, computed from a representative
(ideally multi-year) temperature mean. Deriving it from the same short
series you are generating over would collapse the seasonal denominator and
bias the result — for a single day the \(h\) values cancel entirely.
Profile IDs
There are 15 gas profile IDs defined in the BDEW Leitfaden:
Residential:
HEF: single-family home (Einfamilienhaus)HMF: multi-family home (Mehrfamilienhaus)HKO: cooking and hot water only (Kochen / Warmwasser)
Commercial / industrial:
GKO: small commercial (Kleinstgewerbe)GHA: trade and commerce (Handel)GMK: metal and automotive (Metall / Kfz)GBD: services (Dienstleistung)GBH: accommodation (Beherbergung)GWA: laundries (Wäscherei)GGA: gastronomy (Gastronomie)GBA: bakeries (Bäckerei)GGB: mixed commercial (gemischtes Gewerbe)GPD: paper and printing (Papier / Druck)GMF: large multi-family / mixed use (Mehrfamilienhaus groß)GHD: trade, commerce and services aggregate (GHD-Stützpunkt)
Weekday Factors
Unlike the electricity profiles, gas weekday factors use seven individual
weekdays (Mo, Tu, We, Th, Fr, Sa, Su) rather than three day types. Public
holidays are treated as Sunday (Su); 24 December and 31 December are
treated as Saturday (Sa) unless they fall on a Sunday.
For the residential profiles HEF, HMF, and HKO all weekday factors
are 1, meaning no day-of-week differentiation is applied.
The built-in holiday data cover the years 1990 to 2099. For dates outside
this range, holidays = NULL will yield no public holiday adjustments; pass
holidays explicitly if needed.
See also
slp_gas_kundenwert() to derive the kundenwert;
slp_gas_coefficients() and slp_gas_siglinde() for the underlying
coefficients and profile function.
Examples
dates <- seq.Date(as.Date("2026-01-01"), as.Date("2026-01-07"), by = "day")
temps <- c(2.1, -1.3, 0.5, 3.8, 5.2, 4.0, 1.9)
# Supply the Kundenwert directly (kWh/day)
slp_gas("HEF", dates, temps, kundenwert = 55.1)
#> profile_id date kwh
#> 1 HEF 2026-01-01 95.53071
#> 2 HEF 2026-01-02 117.87083
#> 3 HEF 2026-01-03 106.25679
#> 4 HEF 2026-01-04 83.85639
#> 5 HEF 2026-01-05 74.16239
#> 6 HEF 2026-01-06 82.47256
#> 7 HEF 2026-01-07 96.88841
# Multiple profiles
slp_gas(c("HEF", "HMF", "GKO"), dates, temps, kundenwert = 55.1)
#> profile_id date kwh
#> 1 HEF 2026-01-01 95.53071
#> 2 HEF 2026-01-02 117.87083
#> 3 HEF 2026-01-03 106.25679
#> 4 HEF 2026-01-04 83.85639
#> 5 HEF 2026-01-05 74.16239
#> 6 HEF 2026-01-06 82.47256
#> 7 HEF 2026-01-07 96.88841
#> 8 HMF 2026-01-01 87.32526
#> 9 HMF 2026-01-02 104.02730
#> 10 HMF 2026-01-03 95.41578
#> 11 HMF 2026-01-04 78.32423
#> 12 HMF 2026-01-05 70.66946
#> 13 HMF 2026-01-06 77.24199
#> 14 HMF 2026-01-07 88.35808
#> 15 GKO 2026-01-01 99.09886
#> 16 GKO 2026-01-02 130.41347
#> 17 GKO 2026-01-03 104.62147
#> 18 GKO 2026-01-04 85.50262
#> 19 GKO 2026-01-05 81.36665
#> 20 GKO 2026-01-06 93.55573
#> 21 GKO 2026-01-07 111.48772