tariffkit 0.2.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- tariffkit/__init__.py +52 -0
- tariffkit/account/__init__.py +41 -0
- tariffkit/account/cli.py +493 -0
- tariffkit/account/errors.py +25 -0
- tariffkit/account/model.py +641 -0
- tariffkit/account/rates.py +61 -0
- tariffkit/account/repository.py +329 -0
- tariffkit/billing/__init__.py +56 -0
- tariffkit/billing/engine.py +505 -0
- tariffkit/billing/ledger.py +365 -0
- tariffkit/billing/models.py +274 -0
- tariffkit/billing/netting.py +137 -0
- tariffkit/billing/trueup.py +498 -0
- tariffkit/cca.py +122 -0
- tariffkit/cli.py +809 -0
- tariffkit/config.py +296 -0
- tariffkit/data/__init__.py +40 -0
- tariffkit/data/cca/mce/2023-01-01.toml +61 -0
- tariffkit/data/cca/mce/2026-04-01.toml +152 -0
- tariffkit/data/export/pge/acc_plus/2023-04-15.toml +43 -0
- tariffkit/data/export/pge/nbt00.json.gz +0 -0
- tariffkit/data/export/pge/nbt23.json.gz +0 -0
- tariffkit/data/export/pge/nbt24.json.gz +0 -0
- tariffkit/data/export/pge/nbt25.json.gz +0 -0
- tariffkit/data/export/pge/nbt26.json.gz +0 -0
- tariffkit/data/holidays.toml +36 -0
- tariffkit/data/manifest.json +56 -0
- tariffkit/data/nsc/pge.toml +57 -0
- tariffkit/data/tariff/pge/eelec/2025-01-01.toml +151 -0
- tariffkit/data/tariff/pge/eelec/2025-03-01.toml +150 -0
- tariffkit/data/tariff/pge/eelec/2025-09-01.toml +150 -0
- tariffkit/data/tariff/pge/eelec/2026-01-01.toml +153 -0
- tariffkit/data/tariff/pge/eelec/2026-03-01.toml +157 -0
- tariffkit/data/tariff/pge/etouc/2025-01-01.toml +222 -0
- tariffkit/data/tariff/pge/etouc/2025-03-01.toml +221 -0
- tariffkit/data/tariff/pge/etouc/2025-09-01.toml +221 -0
- tariffkit/data/tariff/pge/etouc/2026-01-01.toml +224 -0
- tariffkit/data/tariff/pge/etouc/2026-03-01.toml +231 -0
- tariffkit/data/tariff/pge/ev2a/2025-01-01.toml +144 -0
- tariffkit/data/tariff/pge/ev2a/2025-03-01.toml +143 -0
- tariffkit/data/tariff/pge/ev2a/2025-09-01.toml +143 -0
- tariffkit/data/tariff/pge/ev2a/2026-01-01.toml +146 -0
- tariffkit/data/tariff/pge/ev2a/2026-03-01.toml +153 -0
- tariffkit/data/tax/ca_energy_resources/2025-01-01.toml +27 -0
- tariffkit/data/tax/ca_energy_resources/2026-01-01.toml +27 -0
- tariffkit/data/versioned.py +118 -0
- tariffkit/engine.py +82 -0
- tariffkit/errors.py +19 -0
- tariffkit/export/__init__.py +5 -0
- tariffkit/export/nbt.py +207 -0
- tariffkit/interop/__init__.py +21 -0
- tariffkit/interop/emhass.py +79 -0
- tariffkit/interop/predbat.py +102 -0
- tariffkit/interop/slots.py +63 -0
- tariffkit/models.py +164 -0
- tariffkit/mqtt/__init__.py +6 -0
- tariffkit/mqtt/discovery.py +84 -0
- tariffkit/mqtt/publisher.py +305 -0
- tariffkit/providers/__init__.py +1 -0
- tariffkit/providers/pge/__init__.py +33 -0
- tariffkit/providers/pge/reconcile.py +828 -0
- tariffkit/providers/pge/statements/__init__.py +26 -0
- tariffkit/providers/pge/statements/errors.py +20 -0
- tariffkit/providers/pge/statements/model.py +320 -0
- tariffkit/providers/pge/statements/ocr.py +193 -0
- tariffkit/providers/pge/statements/parse.py +813 -0
- tariffkit/py.typed +0 -0
- tariffkit/secrets.py +164 -0
- tariffkit/sources/__init__.py +71 -0
- tariffkit/sources/greenbutton.py +318 -0
- tariffkit/sources/homeassistant.py +342 -0
- tariffkit/sources/influx.py +359 -0
- tariffkit/sources/pge.py +1153 -0
- tariffkit/tariff/__init__.py +5 -0
- tariffkit/tariff/retail.py +271 -0
- tariffkit/timeutil.py +120 -0
- tariffkit/web/__init__.py +5 -0
- tariffkit/web/app.py +220 -0
- tariffkit-0.2.0.dist-info/METADATA +260 -0
- tariffkit-0.2.0.dist-info/RECORD +83 -0
- tariffkit-0.2.0.dist-info/WHEEL +4 -0
- tariffkit-0.2.0.dist-info/entry_points.txt +2 -0
- tariffkit-0.2.0.dist-info/licenses/LICENSE +21 -0
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
# Pacific Gas and Electric Schedule EV2-A -- retail time-of-use rates.
|
|
2
|
+
#
|
|
3
|
+
# Source: https://www.pge.com/tariffs/assets/pdf/tariffbook/ELEC_SCHEDS_EV2%20(Sch).pdf
|
|
4
|
+
#
|
|
5
|
+
# GENERATED by `python -m tools.regen tariff` -- do not hand-edit the rate tables.
|
|
6
|
+
# Regenerate with:
|
|
7
|
+
# python -m tools.regen tariff --provider ev2a
|
|
8
|
+
#
|
|
9
|
+
# A tariff book's sheets revise independently, so each carries its own
|
|
10
|
+
# advice letter and effective date. The snapshot is dated from the sheet
|
|
11
|
+
# carrying the unbundled rate table, which is when these values took
|
|
12
|
+
# force -- not the latest date in the book. Sheets read:
|
|
13
|
+
# Sheet 2: Advice 7469-E, effective 2025-01-01
|
|
14
|
+
# Sheet 4: Advice 7469-E, effective 2025-01-01
|
|
15
|
+
#
|
|
16
|
+
# The unbundled components below sum exactly to the published totals in
|
|
17
|
+
# [totals]; regeneration refuses to write unless they do, which is what
|
|
18
|
+
# makes a silent mis-parse essentially impossible.
|
|
19
|
+
|
|
20
|
+
schema = 1
|
|
21
|
+
utility = "PGE"
|
|
22
|
+
tariff = "EV2-A"
|
|
23
|
+
effective = "2025-01-01"
|
|
24
|
+
advice_letter = "7469-E"
|
|
25
|
+
source_url = "https://www.pge.com/tariffs/assets/pdf/tariffbook/ELEC_SCHEDS_EV2%20(Sch).pdf"
|
|
26
|
+
currency = "USD/kWh"
|
|
27
|
+
|
|
28
|
+
# Structure the sheet does not publish, carried forward from the previous
|
|
29
|
+
# snapshot. Changing any of it is a deliberate human edit.
|
|
30
|
+
has_baseline = false
|
|
31
|
+
|
|
32
|
+
[seasons]
|
|
33
|
+
summer_start = "06-01"
|
|
34
|
+
summer_end = "09-30"
|
|
35
|
+
|
|
36
|
+
[periods]
|
|
37
|
+
peak = [[16, 21]]
|
|
38
|
+
part_peak = [[15, 16], [21, 24]]
|
|
39
|
+
|
|
40
|
+
# Season- and period-dependent components.
|
|
41
|
+
|
|
42
|
+
[energy.summer.peak]
|
|
43
|
+
generation = 0.23985
|
|
44
|
+
distribution = 0.32064
|
|
45
|
+
|
|
46
|
+
[energy.summer.part_peak]
|
|
47
|
+
generation = 0.19514
|
|
48
|
+
distribution = 0.25486
|
|
49
|
+
|
|
50
|
+
[energy.summer.off_peak]
|
|
51
|
+
generation = 0.154
|
|
52
|
+
distribution = 0.09398
|
|
53
|
+
|
|
54
|
+
[energy.winter.peak]
|
|
55
|
+
generation = 0.18298
|
|
56
|
+
distribution = 0.2504
|
|
57
|
+
|
|
58
|
+
[energy.winter.part_peak]
|
|
59
|
+
generation = 0.17049
|
|
60
|
+
distribution = 0.24619
|
|
61
|
+
|
|
62
|
+
[energy.winter.off_peak]
|
|
63
|
+
generation = 0.14701
|
|
64
|
+
distribution = 0.10097
|
|
65
|
+
|
|
66
|
+
# Flat riders applied to all usage in every period and season.
|
|
67
|
+
[adders]
|
|
68
|
+
transmission = 0.05122
|
|
69
|
+
transmission_rate_adjustments = -0.01509
|
|
70
|
+
reliability_services = 0.00032
|
|
71
|
+
public_purpose_programs = 0.02644
|
|
72
|
+
nuclear_decommissioning = -0.00013
|
|
73
|
+
competition_transition_charges = -0.00072
|
|
74
|
+
energy_cost_recovery = 0.00001
|
|
75
|
+
wildfire_fund_charge = 0.00595
|
|
76
|
+
new_system_generation = 0.00574
|
|
77
|
+
wildfire_hardening = 0.00494
|
|
78
|
+
recovery_bond_charge = 0.0065
|
|
79
|
+
recovery_bond_credit = -0.0065
|
|
80
|
+
bundled_pcia = -0.02327
|
|
81
|
+
|
|
82
|
+
# Riders a CCA or Direct Access customer does not pay, because PG&E is not
|
|
83
|
+
# supplying their generation.
|
|
84
|
+
[cca]
|
|
85
|
+
drop_components = ["generation", "bundled_pcia"]
|
|
86
|
+
|
|
87
|
+
# Vintaged PCIA a CCA/DA customer pays instead of the bundled PCIA, keyed
|
|
88
|
+
# by the year their generation service began.
|
|
89
|
+
[cca.pcia_vintages]
|
|
90
|
+
2009 = 0.01071
|
|
91
|
+
2010 = 0.01149
|
|
92
|
+
2011 = 0.01161
|
|
93
|
+
2012 = 0.01169
|
|
94
|
+
2013 = 0.01125
|
|
95
|
+
2014 = 0.01119
|
|
96
|
+
2015 = 0.01111
|
|
97
|
+
2016 = 0.0111
|
|
98
|
+
2017 = 0.01073
|
|
99
|
+
2018 = 0.0067
|
|
100
|
+
2019 = 0.00337
|
|
101
|
+
2020 = 0.00324
|
|
102
|
+
2021 = -0.01908
|
|
103
|
+
2022 = -0.01926
|
|
104
|
+
2023 = -0.02202
|
|
105
|
+
2024 = -0.02756
|
|
106
|
+
2025 = -0.02327
|
|
107
|
+
|
|
108
|
+
# Franchise fee surcharge, which a CCA/DA customer pays and a bundled one
|
|
109
|
+
# does not. Published in a separate schedule (E-FFS) and read from it,
|
|
110
|
+
# because carrying it forward would let that schedule be reissued without
|
|
111
|
+
# anything noticing -- it is live rate data on every CCA price.
|
|
112
|
+
[cca.franchise_fee_vintages]
|
|
113
|
+
2009 = 0.00105
|
|
114
|
+
2010 = 0.00105
|
|
115
|
+
2011 = 0.00105
|
|
116
|
+
2012 = 0.00104
|
|
117
|
+
2013 = 0.00105
|
|
118
|
+
2014 = 0.00105
|
|
119
|
+
2015 = 0.00105
|
|
120
|
+
2016 = 0.00105
|
|
121
|
+
2017 = 0.00105
|
|
122
|
+
2018 = 0.00108
|
|
123
|
+
2019 = 0.00111
|
|
124
|
+
2020 = 0.00111
|
|
125
|
+
2021 = 0.00127
|
|
126
|
+
2022 = 0.00127
|
|
127
|
+
2023 = 0.00129
|
|
128
|
+
2024 = 0.00133
|
|
129
|
+
2025 = 0.0013
|
|
130
|
+
|
|
131
|
+
# No daily fixed charge on this schedule at this vintage. AB 205's Base
|
|
132
|
+
# Services Charge began 2026-03-01; before it these schedules had none,
|
|
133
|
+
# so the section is absent rather than zeroed.
|
|
134
|
+
|
|
135
|
+
# The sheet's own published totals; the components above sum to these.
|
|
136
|
+
[totals.summer]
|
|
137
|
+
peak = 0.6159
|
|
138
|
+
part_peak = 0.50541
|
|
139
|
+
off_peak = 0.30339
|
|
140
|
+
|
|
141
|
+
[totals.winter]
|
|
142
|
+
peak = 0.48879
|
|
143
|
+
part_peak = 0.47209
|
|
144
|
+
off_peak = 0.30339
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
# Pacific Gas and Electric Schedule EV2-A -- retail time-of-use rates.
|
|
2
|
+
#
|
|
3
|
+
# Source: https://www.pge.com/tariffs/assets/pdf/tariffbook/ELEC_SCHEDS_EV2%20(Sch).pdf
|
|
4
|
+
#
|
|
5
|
+
# GENERATED by `python -m tools.regen tariff` -- do not hand-edit the rate tables.
|
|
6
|
+
# Regenerate with:
|
|
7
|
+
# python -m tools.regen tariff --provider ev2a
|
|
8
|
+
#
|
|
9
|
+
# A tariff book's sheets revise independently, so each carries its own
|
|
10
|
+
# advice letter and effective date. The snapshot is dated from the sheet
|
|
11
|
+
# carrying the unbundled rate table, which is when these values took
|
|
12
|
+
# force -- not the latest date in the book. Sheets read:
|
|
13
|
+
# Sheet 2: Advice 7516-E, effective 2025-03-01
|
|
14
|
+
#
|
|
15
|
+
# The unbundled components below sum exactly to the published totals in
|
|
16
|
+
# [totals]; regeneration refuses to write unless they do, which is what
|
|
17
|
+
# makes a silent mis-parse essentially impossible.
|
|
18
|
+
|
|
19
|
+
schema = 1
|
|
20
|
+
utility = "PGE"
|
|
21
|
+
tariff = "EV2-A"
|
|
22
|
+
effective = "2025-03-01"
|
|
23
|
+
advice_letter = "7516-E"
|
|
24
|
+
source_url = "https://www.pge.com/tariffs/assets/pdf/tariffbook/ELEC_SCHEDS_EV2%20(Sch).pdf"
|
|
25
|
+
currency = "USD/kWh"
|
|
26
|
+
|
|
27
|
+
# Structure the sheet does not publish, carried forward from the previous
|
|
28
|
+
# snapshot. Changing any of it is a deliberate human edit.
|
|
29
|
+
has_baseline = false
|
|
30
|
+
|
|
31
|
+
[seasons]
|
|
32
|
+
summer_start = "06-01"
|
|
33
|
+
summer_end = "09-30"
|
|
34
|
+
|
|
35
|
+
[periods]
|
|
36
|
+
peak = [[16, 21]]
|
|
37
|
+
part_peak = [[15, 16], [21, 24]]
|
|
38
|
+
|
|
39
|
+
# Season- and period-dependent components.
|
|
40
|
+
|
|
41
|
+
[energy.summer.peak]
|
|
42
|
+
generation = 0.23985
|
|
43
|
+
distribution = 0.32486
|
|
44
|
+
|
|
45
|
+
[energy.summer.part_peak]
|
|
46
|
+
generation = 0.19514
|
|
47
|
+
distribution = 0.25908
|
|
48
|
+
|
|
49
|
+
[energy.summer.off_peak]
|
|
50
|
+
generation = 0.154
|
|
51
|
+
distribution = 0.0982
|
|
52
|
+
|
|
53
|
+
[energy.winter.peak]
|
|
54
|
+
generation = 0.18298
|
|
55
|
+
distribution = 0.25462
|
|
56
|
+
|
|
57
|
+
[energy.winter.part_peak]
|
|
58
|
+
generation = 0.17049
|
|
59
|
+
distribution = 0.25041
|
|
60
|
+
|
|
61
|
+
[energy.winter.off_peak]
|
|
62
|
+
generation = 0.14701
|
|
63
|
+
distribution = 0.1052
|
|
64
|
+
|
|
65
|
+
# Flat riders applied to all usage in every period and season.
|
|
66
|
+
[adders]
|
|
67
|
+
transmission = 0.05122
|
|
68
|
+
transmission_rate_adjustments = -0.01213
|
|
69
|
+
reliability_services = 0.00032
|
|
70
|
+
public_purpose_programs = 0.02644
|
|
71
|
+
nuclear_decommissioning = -0.00024
|
|
72
|
+
competition_transition_charges = -0.00072
|
|
73
|
+
energy_cost_recovery = 0.00001
|
|
74
|
+
wildfire_fund_charge = 0.00595
|
|
75
|
+
new_system_generation = 0.00574
|
|
76
|
+
wildfire_hardening = 0.00474
|
|
77
|
+
recovery_bond_charge = 0.00647
|
|
78
|
+
recovery_bond_credit = -0.00647
|
|
79
|
+
bundled_pcia = -0.02327
|
|
80
|
+
|
|
81
|
+
# Riders a CCA or Direct Access customer does not pay, because PG&E is not
|
|
82
|
+
# supplying their generation.
|
|
83
|
+
[cca]
|
|
84
|
+
drop_components = ["generation", "bundled_pcia"]
|
|
85
|
+
|
|
86
|
+
# Vintaged PCIA a CCA/DA customer pays instead of the bundled PCIA, keyed
|
|
87
|
+
# by the year their generation service began.
|
|
88
|
+
[cca.pcia_vintages]
|
|
89
|
+
2009 = 0.01071
|
|
90
|
+
2010 = 0.01149
|
|
91
|
+
2011 = 0.01161
|
|
92
|
+
2012 = 0.01169
|
|
93
|
+
2013 = 0.01125
|
|
94
|
+
2014 = 0.01119
|
|
95
|
+
2015 = 0.01111
|
|
96
|
+
2016 = 0.0111
|
|
97
|
+
2017 = 0.01073
|
|
98
|
+
2018 = 0.0067
|
|
99
|
+
2019 = 0.00337
|
|
100
|
+
2020 = 0.00324
|
|
101
|
+
2021 = -0.01908
|
|
102
|
+
2022 = -0.01926
|
|
103
|
+
2023 = -0.02202
|
|
104
|
+
2024 = -0.02756
|
|
105
|
+
2025 = -0.02327
|
|
106
|
+
|
|
107
|
+
# Franchise fee surcharge, which a CCA/DA customer pays and a bundled one
|
|
108
|
+
# does not. Published in a separate schedule (E-FFS) and read from it,
|
|
109
|
+
# because carrying it forward would let that schedule be reissued without
|
|
110
|
+
# anything noticing -- it is live rate data on every CCA price.
|
|
111
|
+
[cca.franchise_fee_vintages]
|
|
112
|
+
2009 = 0.00105
|
|
113
|
+
2010 = 0.00105
|
|
114
|
+
2011 = 0.00105
|
|
115
|
+
2012 = 0.00104
|
|
116
|
+
2013 = 0.00105
|
|
117
|
+
2014 = 0.00105
|
|
118
|
+
2015 = 0.00105
|
|
119
|
+
2016 = 0.00105
|
|
120
|
+
2017 = 0.00105
|
|
121
|
+
2018 = 0.00108
|
|
122
|
+
2019 = 0.00111
|
|
123
|
+
2020 = 0.00111
|
|
124
|
+
2021 = 0.00127
|
|
125
|
+
2022 = 0.00127
|
|
126
|
+
2023 = 0.00129
|
|
127
|
+
2024 = 0.00133
|
|
128
|
+
2025 = 0.0013
|
|
129
|
+
|
|
130
|
+
# No daily fixed charge on this schedule at this vintage. AB 205's Base
|
|
131
|
+
# Services Charge began 2026-03-01; before it these schedules had none,
|
|
132
|
+
# so the section is absent rather than zeroed.
|
|
133
|
+
|
|
134
|
+
# The sheet's own published totals; the components above sum to these.
|
|
135
|
+
[totals.summer]
|
|
136
|
+
peak = 0.62277
|
|
137
|
+
part_peak = 0.51228
|
|
138
|
+
off_peak = 0.31026
|
|
139
|
+
|
|
140
|
+
[totals.winter]
|
|
141
|
+
peak = 0.49566
|
|
142
|
+
part_peak = 0.47896
|
|
143
|
+
off_peak = 0.31027
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
# Pacific Gas and Electric Schedule EV2-A -- retail time-of-use rates.
|
|
2
|
+
#
|
|
3
|
+
# Source: https://www.pge.com/tariffs/assets/pdf/tariffbook/ELEC_SCHEDS_EV2%20(Sch).pdf
|
|
4
|
+
#
|
|
5
|
+
# GENERATED by `python -m tools.regen tariff` -- do not hand-edit the rate tables.
|
|
6
|
+
# Regenerate with:
|
|
7
|
+
# python -m tools.regen tariff --provider ev2a
|
|
8
|
+
#
|
|
9
|
+
# A tariff book's sheets revise independently, so each carries its own
|
|
10
|
+
# advice letter and effective date. The snapshot is dated from the sheet
|
|
11
|
+
# carrying the unbundled rate table, which is when these values took
|
|
12
|
+
# force -- not the latest date in the book. Sheets read:
|
|
13
|
+
# Sheet 2: Advice 7684-E, effective 2025-09-01
|
|
14
|
+
#
|
|
15
|
+
# The unbundled components below sum exactly to the published totals in
|
|
16
|
+
# [totals]; regeneration refuses to write unless they do, which is what
|
|
17
|
+
# makes a silent mis-parse essentially impossible.
|
|
18
|
+
|
|
19
|
+
schema = 1
|
|
20
|
+
utility = "PGE"
|
|
21
|
+
tariff = "EV2-A"
|
|
22
|
+
effective = "2025-09-01"
|
|
23
|
+
advice_letter = "7684-E"
|
|
24
|
+
source_url = "https://www.pge.com/tariffs/assets/pdf/tariffbook/ELEC_SCHEDS_EV2%20(Sch).pdf"
|
|
25
|
+
currency = "USD/kWh"
|
|
26
|
+
|
|
27
|
+
# Structure the sheet does not publish, carried forward from the previous
|
|
28
|
+
# snapshot. Changing any of it is a deliberate human edit.
|
|
29
|
+
has_baseline = false
|
|
30
|
+
|
|
31
|
+
[seasons]
|
|
32
|
+
summer_start = "06-01"
|
|
33
|
+
summer_end = "09-30"
|
|
34
|
+
|
|
35
|
+
[periods]
|
|
36
|
+
peak = [[16, 21]]
|
|
37
|
+
part_peak = [[15, 16], [21, 24]]
|
|
38
|
+
|
|
39
|
+
# Season- and period-dependent components.
|
|
40
|
+
|
|
41
|
+
[energy.summer.peak]
|
|
42
|
+
generation = 0.23985
|
|
43
|
+
distribution = 0.3163
|
|
44
|
+
|
|
45
|
+
[energy.summer.part_peak]
|
|
46
|
+
generation = 0.19514
|
|
47
|
+
distribution = 0.25052
|
|
48
|
+
|
|
49
|
+
[energy.summer.off_peak]
|
|
50
|
+
generation = 0.154
|
|
51
|
+
distribution = 0.08965
|
|
52
|
+
|
|
53
|
+
[energy.winter.peak]
|
|
54
|
+
generation = 0.18298
|
|
55
|
+
distribution = 0.24606
|
|
56
|
+
|
|
57
|
+
[energy.winter.part_peak]
|
|
58
|
+
generation = 0.17049
|
|
59
|
+
distribution = 0.24185
|
|
60
|
+
|
|
61
|
+
[energy.winter.off_peak]
|
|
62
|
+
generation = 0.14701
|
|
63
|
+
distribution = 0.09664
|
|
64
|
+
|
|
65
|
+
# Flat riders applied to all usage in every period and season.
|
|
66
|
+
[adders]
|
|
67
|
+
transmission = 0.05122
|
|
68
|
+
transmission_rate_adjustments = -0.01213
|
|
69
|
+
reliability_services = 0.00032
|
|
70
|
+
public_purpose_programs = 0.02644
|
|
71
|
+
nuclear_decommissioning = -0.00024
|
|
72
|
+
competition_transition_charges = -0.00072
|
|
73
|
+
energy_cost_recovery = 0.00001
|
|
74
|
+
wildfire_fund_charge = 0.00595
|
|
75
|
+
new_system_generation = 0.00574
|
|
76
|
+
wildfire_hardening = 0.00339
|
|
77
|
+
recovery_bond_charge = 0.00778
|
|
78
|
+
recovery_bond_credit = -0.00778
|
|
79
|
+
bundled_pcia = -0.02327
|
|
80
|
+
|
|
81
|
+
# Riders a CCA or Direct Access customer does not pay, because PG&E is not
|
|
82
|
+
# supplying their generation.
|
|
83
|
+
[cca]
|
|
84
|
+
drop_components = ["generation", "bundled_pcia"]
|
|
85
|
+
|
|
86
|
+
# Vintaged PCIA a CCA/DA customer pays instead of the bundled PCIA, keyed
|
|
87
|
+
# by the year their generation service began.
|
|
88
|
+
[cca.pcia_vintages]
|
|
89
|
+
2009 = 0.01071
|
|
90
|
+
2010 = 0.01149
|
|
91
|
+
2011 = 0.01161
|
|
92
|
+
2012 = 0.01169
|
|
93
|
+
2013 = 0.01125
|
|
94
|
+
2014 = 0.01119
|
|
95
|
+
2015 = 0.01111
|
|
96
|
+
2016 = 0.0111
|
|
97
|
+
2017 = 0.01073
|
|
98
|
+
2018 = 0.0067
|
|
99
|
+
2019 = 0.00337
|
|
100
|
+
2020 = 0.00324
|
|
101
|
+
2021 = -0.01908
|
|
102
|
+
2022 = -0.01926
|
|
103
|
+
2023 = -0.02202
|
|
104
|
+
2024 = -0.02756
|
|
105
|
+
2025 = -0.02327
|
|
106
|
+
|
|
107
|
+
# Franchise fee surcharge, which a CCA/DA customer pays and a bundled one
|
|
108
|
+
# does not. Published in a separate schedule (E-FFS) and read from it,
|
|
109
|
+
# because carrying it forward would let that schedule be reissued without
|
|
110
|
+
# anything noticing -- it is live rate data on every CCA price.
|
|
111
|
+
[cca.franchise_fee_vintages]
|
|
112
|
+
2009 = 0.00105
|
|
113
|
+
2010 = 0.00105
|
|
114
|
+
2011 = 0.00105
|
|
115
|
+
2012 = 0.00104
|
|
116
|
+
2013 = 0.00105
|
|
117
|
+
2014 = 0.00105
|
|
118
|
+
2015 = 0.00105
|
|
119
|
+
2016 = 0.00105
|
|
120
|
+
2017 = 0.00105
|
|
121
|
+
2018 = 0.00108
|
|
122
|
+
2019 = 0.00111
|
|
123
|
+
2020 = 0.00111
|
|
124
|
+
2021 = 0.00127
|
|
125
|
+
2022 = 0.00127
|
|
126
|
+
2023 = 0.00129
|
|
127
|
+
2024 = 0.00133
|
|
128
|
+
2025 = 0.0013
|
|
129
|
+
|
|
130
|
+
# No daily fixed charge on this schedule at this vintage. AB 205's Base
|
|
131
|
+
# Services Charge began 2026-03-01; before it these schedules had none,
|
|
132
|
+
# so the section is absent rather than zeroed.
|
|
133
|
+
|
|
134
|
+
# The sheet's own published totals; the components above sum to these.
|
|
135
|
+
[totals.summer]
|
|
136
|
+
peak = 0.61286
|
|
137
|
+
part_peak = 0.50237
|
|
138
|
+
off_peak = 0.30036
|
|
139
|
+
|
|
140
|
+
[totals.winter]
|
|
141
|
+
peak = 0.48575
|
|
142
|
+
part_peak = 0.46905
|
|
143
|
+
off_peak = 0.30036
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
# Pacific Gas and Electric Schedule EV2-A -- retail time-of-use rates.
|
|
2
|
+
#
|
|
3
|
+
# Source: https://www.pge.com/tariffs/assets/pdf/tariffbook/ELEC_SCHEDS_EV2%20(Sch).pdf
|
|
4
|
+
#
|
|
5
|
+
# GENERATED by `python -m tools.regen tariff` -- do not hand-edit the rate tables.
|
|
6
|
+
# Regenerate with:
|
|
7
|
+
# python -m tools.regen tariff --provider ev2a
|
|
8
|
+
#
|
|
9
|
+
# A tariff book's sheets revise independently, so each carries its own
|
|
10
|
+
# advice letter and effective date. The snapshot is dated from the sheet
|
|
11
|
+
# carrying the unbundled rate table, which is when these values took
|
|
12
|
+
# force -- not the latest date in the book. Sheets read:
|
|
13
|
+
# Sheet 2: Advice 7797-E, effective 2026-01-01
|
|
14
|
+
# Sheet 4: Advice 7797-E, effective 2026-01-01
|
|
15
|
+
#
|
|
16
|
+
# The unbundled components below sum exactly to the published totals in
|
|
17
|
+
# [totals]; regeneration refuses to write unless they do, which is what
|
|
18
|
+
# makes a silent mis-parse essentially impossible.
|
|
19
|
+
|
|
20
|
+
schema = 1
|
|
21
|
+
utility = "PGE"
|
|
22
|
+
tariff = "EV2-A"
|
|
23
|
+
effective = "2026-01-01"
|
|
24
|
+
advice_letter = "7797-E"
|
|
25
|
+
source_url = "https://www.pge.com/tariffs/assets/pdf/tariffbook/ELEC_SCHEDS_EV2%20(Sch).pdf"
|
|
26
|
+
currency = "USD/kWh"
|
|
27
|
+
|
|
28
|
+
# Structure the sheet does not publish, carried forward from the previous
|
|
29
|
+
# snapshot. Changing any of it is a deliberate human edit.
|
|
30
|
+
has_baseline = false
|
|
31
|
+
|
|
32
|
+
[seasons]
|
|
33
|
+
summer_start = "06-01"
|
|
34
|
+
summer_end = "09-30"
|
|
35
|
+
|
|
36
|
+
[periods]
|
|
37
|
+
peak = [[16, 21]]
|
|
38
|
+
part_peak = [[15, 16], [21, 24]]
|
|
39
|
+
|
|
40
|
+
# Season- and period-dependent components.
|
|
41
|
+
|
|
42
|
+
[energy.summer.peak]
|
|
43
|
+
generation = 0.1883
|
|
44
|
+
distribution = 0.32361
|
|
45
|
+
|
|
46
|
+
[energy.summer.part_peak]
|
|
47
|
+
generation = 0.14359
|
|
48
|
+
distribution = 0.25783
|
|
49
|
+
|
|
50
|
+
[energy.summer.off_peak]
|
|
51
|
+
generation = 0.10245
|
|
52
|
+
distribution = 0.09696
|
|
53
|
+
|
|
54
|
+
[energy.winter.peak]
|
|
55
|
+
generation = 0.13143
|
|
56
|
+
distribution = 0.25337
|
|
57
|
+
|
|
58
|
+
[energy.winter.part_peak]
|
|
59
|
+
generation = 0.11894
|
|
60
|
+
distribution = 0.24916
|
|
61
|
+
|
|
62
|
+
[energy.winter.off_peak]
|
|
63
|
+
generation = 0.09546
|
|
64
|
+
distribution = 0.10395
|
|
65
|
+
|
|
66
|
+
# Flat riders applied to all usage in every period and season.
|
|
67
|
+
[adders]
|
|
68
|
+
transmission = 0.04638
|
|
69
|
+
transmission_rate_adjustments = 0.00315
|
|
70
|
+
reliability_services = 0.00013
|
|
71
|
+
public_purpose_programs = 0.02829
|
|
72
|
+
nuclear_decommissioning = -0.00002
|
|
73
|
+
competition_transition_charges = 0.00027
|
|
74
|
+
energy_cost_recovery = 0.00002
|
|
75
|
+
wildfire_fund_charge = 0.00591
|
|
76
|
+
new_system_generation = 0.00792
|
|
77
|
+
wildfire_hardening = 0.00339
|
|
78
|
+
recovery_bond_charge = 0.00778
|
|
79
|
+
recovery_bond_credit = -0.00778
|
|
80
|
+
bundled_pcia = -0.01011
|
|
81
|
+
|
|
82
|
+
# Riders a CCA or Direct Access customer does not pay, because PG&E is not
|
|
83
|
+
# supplying their generation.
|
|
84
|
+
[cca]
|
|
85
|
+
drop_components = ["generation", "bundled_pcia"]
|
|
86
|
+
|
|
87
|
+
# Vintaged PCIA a CCA/DA customer pays instead of the bundled PCIA, keyed
|
|
88
|
+
# by the year their generation service began.
|
|
89
|
+
[cca.pcia_vintages]
|
|
90
|
+
2009 = 0.02973
|
|
91
|
+
2010 = 0.03366
|
|
92
|
+
2011 = 0.03492
|
|
93
|
+
2012 = 0.03676
|
|
94
|
+
2013 = 0.03708
|
|
95
|
+
2014 = 0.03686
|
|
96
|
+
2015 = 0.0368
|
|
97
|
+
2016 = 0.03687
|
|
98
|
+
2017 = 0.03661
|
|
99
|
+
2018 = 0.03679
|
|
100
|
+
2019 = 0.03725
|
|
101
|
+
2020 = 0.03632
|
|
102
|
+
2021 = 0.05264
|
|
103
|
+
2022 = 0.05272
|
|
104
|
+
2023 = 0.0538
|
|
105
|
+
2024 = 0.05066
|
|
106
|
+
2025 = -0.01011
|
|
107
|
+
2026 = -0.01011
|
|
108
|
+
|
|
109
|
+
# Franchise fee surcharge, which a CCA/DA customer pays and a bundled one
|
|
110
|
+
# does not. Published in a separate schedule (E-FFS) and read from it,
|
|
111
|
+
# because carrying it forward would let that schedule be reissued without
|
|
112
|
+
# anything noticing -- it is live rate data on every CCA price.
|
|
113
|
+
[cca.franchise_fee_vintages]
|
|
114
|
+
2009 = 0.00064
|
|
115
|
+
2010 = 0.00061
|
|
116
|
+
2011 = 0.0006
|
|
117
|
+
2012 = 0.00059
|
|
118
|
+
2013 = 0.00059
|
|
119
|
+
2014 = 0.00059
|
|
120
|
+
2015 = 0.00059
|
|
121
|
+
2016 = 0.00059
|
|
122
|
+
2017 = 0.00059
|
|
123
|
+
2018 = 0.00059
|
|
124
|
+
2019 = 0.00059
|
|
125
|
+
2020 = 0.00059
|
|
126
|
+
2021 = 0.00048
|
|
127
|
+
2022 = 0.00048
|
|
128
|
+
2023 = 0.00047
|
|
129
|
+
2024 = 0.00049
|
|
130
|
+
2025 = 0.00093
|
|
131
|
+
2026 = 0.00093
|
|
132
|
+
|
|
133
|
+
# No daily fixed charge on this schedule at this vintage. AB 205's Base
|
|
134
|
+
# Services Charge began 2026-03-01; before it these schedules had none,
|
|
135
|
+
# so the section is absent rather than zeroed.
|
|
136
|
+
|
|
137
|
+
# The sheet's own published totals; the components above sum to these.
|
|
138
|
+
[totals.summer]
|
|
139
|
+
peak = 0.59724
|
|
140
|
+
part_peak = 0.48675
|
|
141
|
+
off_peak = 0.28474
|
|
142
|
+
|
|
143
|
+
[totals.winter]
|
|
144
|
+
peak = 0.47013
|
|
145
|
+
part_peak = 0.45343
|
|
146
|
+
off_peak = 0.28474
|