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.
Files changed (83) hide show
  1. tariffkit/__init__.py +52 -0
  2. tariffkit/account/__init__.py +41 -0
  3. tariffkit/account/cli.py +493 -0
  4. tariffkit/account/errors.py +25 -0
  5. tariffkit/account/model.py +641 -0
  6. tariffkit/account/rates.py +61 -0
  7. tariffkit/account/repository.py +329 -0
  8. tariffkit/billing/__init__.py +56 -0
  9. tariffkit/billing/engine.py +505 -0
  10. tariffkit/billing/ledger.py +365 -0
  11. tariffkit/billing/models.py +274 -0
  12. tariffkit/billing/netting.py +137 -0
  13. tariffkit/billing/trueup.py +498 -0
  14. tariffkit/cca.py +122 -0
  15. tariffkit/cli.py +809 -0
  16. tariffkit/config.py +296 -0
  17. tariffkit/data/__init__.py +40 -0
  18. tariffkit/data/cca/mce/2023-01-01.toml +61 -0
  19. tariffkit/data/cca/mce/2026-04-01.toml +152 -0
  20. tariffkit/data/export/pge/acc_plus/2023-04-15.toml +43 -0
  21. tariffkit/data/export/pge/nbt00.json.gz +0 -0
  22. tariffkit/data/export/pge/nbt23.json.gz +0 -0
  23. tariffkit/data/export/pge/nbt24.json.gz +0 -0
  24. tariffkit/data/export/pge/nbt25.json.gz +0 -0
  25. tariffkit/data/export/pge/nbt26.json.gz +0 -0
  26. tariffkit/data/holidays.toml +36 -0
  27. tariffkit/data/manifest.json +56 -0
  28. tariffkit/data/nsc/pge.toml +57 -0
  29. tariffkit/data/tariff/pge/eelec/2025-01-01.toml +151 -0
  30. tariffkit/data/tariff/pge/eelec/2025-03-01.toml +150 -0
  31. tariffkit/data/tariff/pge/eelec/2025-09-01.toml +150 -0
  32. tariffkit/data/tariff/pge/eelec/2026-01-01.toml +153 -0
  33. tariffkit/data/tariff/pge/eelec/2026-03-01.toml +157 -0
  34. tariffkit/data/tariff/pge/etouc/2025-01-01.toml +222 -0
  35. tariffkit/data/tariff/pge/etouc/2025-03-01.toml +221 -0
  36. tariffkit/data/tariff/pge/etouc/2025-09-01.toml +221 -0
  37. tariffkit/data/tariff/pge/etouc/2026-01-01.toml +224 -0
  38. tariffkit/data/tariff/pge/etouc/2026-03-01.toml +231 -0
  39. tariffkit/data/tariff/pge/ev2a/2025-01-01.toml +144 -0
  40. tariffkit/data/tariff/pge/ev2a/2025-03-01.toml +143 -0
  41. tariffkit/data/tariff/pge/ev2a/2025-09-01.toml +143 -0
  42. tariffkit/data/tariff/pge/ev2a/2026-01-01.toml +146 -0
  43. tariffkit/data/tariff/pge/ev2a/2026-03-01.toml +153 -0
  44. tariffkit/data/tax/ca_energy_resources/2025-01-01.toml +27 -0
  45. tariffkit/data/tax/ca_energy_resources/2026-01-01.toml +27 -0
  46. tariffkit/data/versioned.py +118 -0
  47. tariffkit/engine.py +82 -0
  48. tariffkit/errors.py +19 -0
  49. tariffkit/export/__init__.py +5 -0
  50. tariffkit/export/nbt.py +207 -0
  51. tariffkit/interop/__init__.py +21 -0
  52. tariffkit/interop/emhass.py +79 -0
  53. tariffkit/interop/predbat.py +102 -0
  54. tariffkit/interop/slots.py +63 -0
  55. tariffkit/models.py +164 -0
  56. tariffkit/mqtt/__init__.py +6 -0
  57. tariffkit/mqtt/discovery.py +84 -0
  58. tariffkit/mqtt/publisher.py +305 -0
  59. tariffkit/providers/__init__.py +1 -0
  60. tariffkit/providers/pge/__init__.py +33 -0
  61. tariffkit/providers/pge/reconcile.py +828 -0
  62. tariffkit/providers/pge/statements/__init__.py +26 -0
  63. tariffkit/providers/pge/statements/errors.py +20 -0
  64. tariffkit/providers/pge/statements/model.py +320 -0
  65. tariffkit/providers/pge/statements/ocr.py +193 -0
  66. tariffkit/providers/pge/statements/parse.py +813 -0
  67. tariffkit/py.typed +0 -0
  68. tariffkit/secrets.py +164 -0
  69. tariffkit/sources/__init__.py +71 -0
  70. tariffkit/sources/greenbutton.py +318 -0
  71. tariffkit/sources/homeassistant.py +342 -0
  72. tariffkit/sources/influx.py +359 -0
  73. tariffkit/sources/pge.py +1153 -0
  74. tariffkit/tariff/__init__.py +5 -0
  75. tariffkit/tariff/retail.py +271 -0
  76. tariffkit/timeutil.py +120 -0
  77. tariffkit/web/__init__.py +5 -0
  78. tariffkit/web/app.py +220 -0
  79. tariffkit-0.2.0.dist-info/METADATA +260 -0
  80. tariffkit-0.2.0.dist-info/RECORD +83 -0
  81. tariffkit-0.2.0.dist-info/WHEEL +4 -0
  82. tariffkit-0.2.0.dist-info/entry_points.txt +2 -0
  83. tariffkit-0.2.0.dist-info/licenses/LICENSE +21 -0
@@ -0,0 +1,221 @@
1
+ # Pacific Gas and Electric Schedule E-TOU-C -- retail time-of-use rates.
2
+ #
3
+ # Source: https://www.pge.com/tariffs/assets/pdf/tariffbook/ELEC_SCHEDS_E-TOU-C.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 etouc
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
+ # Sheet 3: Advice 7684-E, effective 2025-09-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 = "E-TOU-C"
23
+ effective = "2025-09-01"
24
+ advice_letter = "7684-E"
25
+ source_url = "https://www.pge.com/tariffs/assets/pdf/tariffbook/ELEC_SCHEDS_E-TOU-C.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 = true
31
+
32
+ [seasons]
33
+ summer_start = "06-01"
34
+ summer_end = "09-30"
35
+
36
+ [periods]
37
+ peak = [[16, 21]]
38
+
39
+ # Season- and period-dependent components.
40
+
41
+ [energy.summer.peak]
42
+ generation = 0.25797
43
+ distribution = 0.23472
44
+
45
+ [energy.summer.off_peak]
46
+ generation = 0.15497
47
+ distribution = 0.21472
48
+
49
+ [energy.winter.peak]
50
+ generation = 0.18725
51
+ distribution = 0.18061
52
+
53
+ [energy.winter.off_peak]
54
+ generation = 0.16057
55
+ distribution = 0.17729
56
+
57
+ # Flat riders applied to all usage in every period and season.
58
+ [adders]
59
+ transmission = 0.05122
60
+ transmission_rate_adjustments = -0.01213
61
+ reliability_services = 0.00032
62
+ public_purpose_programs = 0.02644
63
+ nuclear_decommissioning = -0.00024
64
+ competition_transition_charges = -0.00072
65
+ energy_cost_recovery = 0.00001
66
+ wildfire_fund_charge = 0.00595
67
+ new_system_generation = 0.00574
68
+ wildfire_hardening = 0.00339
69
+ recovery_bond_charge = 0.00778
70
+ recovery_bond_credit = -0.00778
71
+ bundled_pcia = -0.02327
72
+ conservation_incentive_adjustment = 0.06517
73
+
74
+ # The bill prints one baseline credit; the sheet implements it as two
75
+ # Conservation Incentive Adjustment rates whose spread is that credit.
76
+ [baseline]
77
+ within_rate = -0.03567
78
+ over_rate = 0.06517
79
+ credit = 0.10084
80
+
81
+ [baseline.quantities.basic.P]
82
+ summer = 13.5
83
+ winter = 11
84
+
85
+ [baseline.quantities.basic.Q]
86
+ summer = 9.8
87
+ winter = 11
88
+
89
+ [baseline.quantities.basic.R]
90
+ summer = 17.7
91
+ winter = 10.4
92
+
93
+ [baseline.quantities.basic.S]
94
+ summer = 15
95
+ winter = 10.2
96
+
97
+ [baseline.quantities.basic.T]
98
+ summer = 6.5
99
+ winter = 7.5
100
+
101
+ [baseline.quantities.basic.V]
102
+ summer = 7.1
103
+ winter = 8.1
104
+
105
+ [baseline.quantities.basic.W]
106
+ summer = 19.2
107
+ winter = 9.8
108
+
109
+ [baseline.quantities.basic.X]
110
+ summer = 9.8
111
+ winter = 9.7
112
+
113
+ [baseline.quantities.basic.Y]
114
+ summer = 10.5
115
+ winter = 11.1
116
+
117
+ [baseline.quantities.basic.Z]
118
+ summer = 5.9
119
+ winter = 7.8
120
+
121
+ [baseline.quantities.all_electric.P]
122
+ summer = 15.2
123
+ winter = 26
124
+
125
+ [baseline.quantities.all_electric.Q]
126
+ summer = 8.5
127
+ winter = 26
128
+
129
+ [baseline.quantities.all_electric.R]
130
+ summer = 19.9
131
+ winter = 26.7
132
+
133
+ [baseline.quantities.all_electric.S]
134
+ summer = 17.8
135
+ winter = 23.7
136
+
137
+ [baseline.quantities.all_electric.T]
138
+ summer = 7.1
139
+ winter = 12.9
140
+
141
+ [baseline.quantities.all_electric.V]
142
+ summer = 10.4
143
+ winter = 19.1
144
+
145
+ [baseline.quantities.all_electric.W]
146
+ summer = 22.4
147
+ winter = 19
148
+
149
+ [baseline.quantities.all_electric.X]
150
+ summer = 8.5
151
+ winter = 14.6
152
+
153
+ [baseline.quantities.all_electric.Y]
154
+ summer = 12
155
+ winter = 24
156
+
157
+ [baseline.quantities.all_electric.Z]
158
+ summer = 6.7
159
+ winter = 15.7
160
+
161
+ # Riders a CCA or Direct Access customer does not pay, because PG&E is not
162
+ # supplying their generation.
163
+ [cca]
164
+ drop_components = ["generation", "bundled_pcia"]
165
+
166
+ # Vintaged PCIA a CCA/DA customer pays instead of the bundled PCIA, keyed
167
+ # by the year their generation service began.
168
+ [cca.pcia_vintages]
169
+ 2009 = 0.01071
170
+ 2010 = 0.01149
171
+ 2011 = 0.01161
172
+ 2012 = 0.01169
173
+ 2013 = 0.01125
174
+ 2014 = 0.01119
175
+ 2015 = 0.01111
176
+ 2016 = 0.0111
177
+ 2017 = 0.01073
178
+ 2018 = 0.0067
179
+ 2019 = 0.00337
180
+ 2020 = 0.00324
181
+ 2021 = -0.01908
182
+ 2022 = -0.01926
183
+ 2023 = -0.02202
184
+ 2024 = -0.02756
185
+ 2025 = -0.02327
186
+
187
+ # Franchise fee surcharge, which a CCA/DA customer pays and a bundled one
188
+ # does not. Published in a separate schedule (E-FFS) and read from it,
189
+ # because carrying it forward would let that schedule be reissued without
190
+ # anything noticing -- it is live rate data on every CCA price.
191
+ [cca.franchise_fee_vintages]
192
+ 2009 = 0.00105
193
+ 2010 = 0.00105
194
+ 2011 = 0.00105
195
+ 2012 = 0.00104
196
+ 2013 = 0.00105
197
+ 2014 = 0.00105
198
+ 2015 = 0.00105
199
+ 2016 = 0.00105
200
+ 2017 = 0.00105
201
+ 2018 = 0.00108
202
+ 2019 = 0.00111
203
+ 2020 = 0.00111
204
+ 2021 = 0.00127
205
+ 2022 = 0.00127
206
+ 2023 = 0.00129
207
+ 2024 = 0.00133
208
+ 2025 = 0.0013
209
+
210
+ # No daily fixed charge on this schedule at this vintage. AB 205's Base
211
+ # Services Charge began 2026-03-01; before it these schedules had none,
212
+ # so the section is absent rather than zeroed.
213
+
214
+ # The sheet's own published totals; the components above sum to these.
215
+ [totals.summer]
216
+ peak = 0.61457
217
+ off_peak = 0.49157
218
+
219
+ [totals.winter]
220
+ peak = 0.48974
221
+ off_peak = 0.45974
@@ -0,0 +1,224 @@
1
+ # Pacific Gas and Electric Schedule E-TOU-C -- retail time-of-use rates.
2
+ #
3
+ # Source: https://www.pge.com/tariffs/assets/pdf/tariffbook/ELEC_SCHEDS_E-TOU-C.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 etouc
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 3: Advice 7797-E, effective 2026-01-01
15
+ # Sheet 7: Advice 7797-E, effective 2026-01-01
16
+ #
17
+ # The unbundled components below sum exactly to the published totals in
18
+ # [totals]; regeneration refuses to write unless they do, which is what
19
+ # makes a silent mis-parse essentially impossible.
20
+
21
+ schema = 1
22
+ utility = "PGE"
23
+ tariff = "E-TOU-C"
24
+ effective = "2026-01-01"
25
+ advice_letter = "7797-E"
26
+ source_url = "https://www.pge.com/tariffs/assets/pdf/tariffbook/ELEC_SCHEDS_E-TOU-C.pdf"
27
+ currency = "USD/kWh"
28
+
29
+ # Structure the sheet does not publish, carried forward from the previous
30
+ # snapshot. Changing any of it is a deliberate human edit.
31
+ has_baseline = true
32
+
33
+ [seasons]
34
+ summer_start = "06-01"
35
+ summer_end = "09-30"
36
+
37
+ [periods]
38
+ peak = [[16, 21]]
39
+
40
+ # Season- and period-dependent components.
41
+
42
+ [energy.summer.peak]
43
+ generation = 0.20782
44
+ distribution = 0.23301
45
+
46
+ [energy.summer.off_peak]
47
+ generation = 0.10482
48
+ distribution = 0.21301
49
+
50
+ [energy.winter.peak]
51
+ generation = 0.1371
52
+ distribution = 0.17889
53
+
54
+ [energy.winter.off_peak]
55
+ generation = 0.11042
56
+ distribution = 0.17557
57
+
58
+ # Flat riders applied to all usage in every period and season.
59
+ [adders]
60
+ transmission = 0.04638
61
+ transmission_rate_adjustments = 0.00315
62
+ reliability_services = 0.00013
63
+ public_purpose_programs = 0.02829
64
+ nuclear_decommissioning = -0.00002
65
+ competition_transition_charges = 0.00027
66
+ energy_cost_recovery = 0.00002
67
+ wildfire_fund_charge = 0.00591
68
+ new_system_generation = 0.00792
69
+ wildfire_hardening = 0.00339
70
+ recovery_bond_charge = 0.00778
71
+ recovery_bond_credit = -0.00778
72
+ bundled_pcia = -0.01011
73
+ conservation_incentive_adjustment = 0.06327
74
+
75
+ # The bill prints one baseline credit; the sheet implements it as two
76
+ # Conservation Incentive Adjustment rates whose spread is that credit.
77
+ [baseline]
78
+ within_rate = -0.03239
79
+ over_rate = 0.06327
80
+ credit = 0.09566
81
+
82
+ [baseline.quantities.basic.P]
83
+ summer = 13.5
84
+ winter = 11
85
+
86
+ [baseline.quantities.basic.Q]
87
+ summer = 9.8
88
+ winter = 11
89
+
90
+ [baseline.quantities.basic.R]
91
+ summer = 17.7
92
+ winter = 10.4
93
+
94
+ [baseline.quantities.basic.S]
95
+ summer = 15
96
+ winter = 10.2
97
+
98
+ [baseline.quantities.basic.T]
99
+ summer = 6.5
100
+ winter = 7.5
101
+
102
+ [baseline.quantities.basic.V]
103
+ summer = 7.1
104
+ winter = 8.1
105
+
106
+ [baseline.quantities.basic.W]
107
+ summer = 19.2
108
+ winter = 9.8
109
+
110
+ [baseline.quantities.basic.X]
111
+ summer = 9.8
112
+ winter = 9.7
113
+
114
+ [baseline.quantities.basic.Y]
115
+ summer = 10.5
116
+ winter = 11.1
117
+
118
+ [baseline.quantities.basic.Z]
119
+ summer = 5.9
120
+ winter = 7.8
121
+
122
+ [baseline.quantities.all_electric.P]
123
+ summer = 15.2
124
+ winter = 26
125
+
126
+ [baseline.quantities.all_electric.Q]
127
+ summer = 8.5
128
+ winter = 26
129
+
130
+ [baseline.quantities.all_electric.R]
131
+ summer = 19.9
132
+ winter = 26.7
133
+
134
+ [baseline.quantities.all_electric.S]
135
+ summer = 17.8
136
+ winter = 23.7
137
+
138
+ [baseline.quantities.all_electric.T]
139
+ summer = 7.1
140
+ winter = 12.9
141
+
142
+ [baseline.quantities.all_electric.V]
143
+ summer = 10.4
144
+ winter = 19.1
145
+
146
+ [baseline.quantities.all_electric.W]
147
+ summer = 22.4
148
+ winter = 19
149
+
150
+ [baseline.quantities.all_electric.X]
151
+ summer = 8.5
152
+ winter = 14.6
153
+
154
+ [baseline.quantities.all_electric.Y]
155
+ summer = 12
156
+ winter = 24
157
+
158
+ [baseline.quantities.all_electric.Z]
159
+ summer = 6.7
160
+ winter = 15.7
161
+
162
+ # Riders a CCA or Direct Access customer does not pay, because PG&E is not
163
+ # supplying their generation.
164
+ [cca]
165
+ drop_components = ["generation", "bundled_pcia"]
166
+
167
+ # Vintaged PCIA a CCA/DA customer pays instead of the bundled PCIA, keyed
168
+ # by the year their generation service began.
169
+ [cca.pcia_vintages]
170
+ 2009 = 0.02973
171
+ 2010 = 0.03366
172
+ 2011 = 0.03492
173
+ 2012 = 0.03676
174
+ 2013 = 0.03708
175
+ 2014 = 0.03686
176
+ 2015 = 0.0368
177
+ 2016 = 0.03687
178
+ 2017 = 0.03661
179
+ 2018 = 0.03679
180
+ 2019 = 0.03725
181
+ 2020 = 0.03632
182
+ 2021 = 0.05264
183
+ 2022 = 0.05272
184
+ 2023 = 0.0538
185
+ 2024 = 0.05066
186
+ 2025 = -0.01011
187
+ 2026 = -0.01011
188
+
189
+ # Franchise fee surcharge, which a CCA/DA customer pays and a bundled one
190
+ # does not. Published in a separate schedule (E-FFS) and read from it,
191
+ # because carrying it forward would let that schedule be reissued without
192
+ # anything noticing -- it is live rate data on every CCA price.
193
+ [cca.franchise_fee_vintages]
194
+ 2009 = 0.00064
195
+ 2010 = 0.00061
196
+ 2011 = 0.0006
197
+ 2012 = 0.00059
198
+ 2013 = 0.00059
199
+ 2014 = 0.00059
200
+ 2015 = 0.00059
201
+ 2016 = 0.00059
202
+ 2017 = 0.00059
203
+ 2018 = 0.00059
204
+ 2019 = 0.00059
205
+ 2020 = 0.00059
206
+ 2021 = 0.00048
207
+ 2022 = 0.00048
208
+ 2023 = 0.00047
209
+ 2024 = 0.00049
210
+ 2025 = 0.00093
211
+ 2026 = 0.00093
212
+
213
+ # No daily fixed charge on this schedule at this vintage. AB 205's Base
214
+ # Services Charge began 2026-03-01; before it these schedules had none,
215
+ # so the section is absent rather than zeroed.
216
+
217
+ # The sheet's own published totals; the components above sum to these.
218
+ [totals.summer]
219
+ peak = 0.58943
220
+ off_peak = 0.46643
221
+
222
+ [totals.winter]
223
+ peak = 0.4646
224
+ off_peak = 0.4346
@@ -0,0 +1,231 @@
1
+ # PG&E Schedule E-TOU-C -- retail time-of-use rates.
2
+ #
3
+ # Source: https://www.pge.com/tariffs/assets/pdf/tariffbook/ELEC_SCHEDS_E-TOU-C.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 etouc
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 1: Advice 7846-E, effective 2026-03-01
14
+ # Sheet 2: Advice 7921-E, effective 2026-06-01
15
+ # Sheet 3: Advice 7846-E, effective 2026-03-01
16
+ # Sheet 4: Advice 7846-E, effective 2026-03-01
17
+ # Sheet 5: Advice 7846-E, effective 2026-03-01
18
+ # Sheet 6: Advice 7846-E, effective 2026-03-01
19
+ # Sheet 7: Advice 7846-E, effective 2026-03-01
20
+ # Sheet 8: Advice 7846-E, effective 2026-03-01
21
+ # Sheet 9: Advice 7846-E, effective 2026-03-01
22
+ # Sheet 10: Advice 7846-E, effective 2026-03-01
23
+ #
24
+ # The unbundled components below sum exactly to the published totals in
25
+ # [totals]; regeneration refuses to write unless they do, which is what
26
+ # makes a silent mis-parse essentially impossible.
27
+
28
+ schema = 1
29
+ utility = "PGE"
30
+ tariff = "E-TOU-C"
31
+ effective = "2026-03-01"
32
+ advice_letter = "7846-E"
33
+ source_url = "https://www.pge.com/tariffs/assets/pdf/tariffbook/ELEC_SCHEDS_E-TOU-C.pdf"
34
+ currency = "USD/kWh"
35
+
36
+ # Structure the sheet does not publish, carried forward from the previous
37
+ # snapshot. Changing any of it is a deliberate human edit.
38
+ has_baseline = true
39
+
40
+ [seasons]
41
+ summer_start = "06-01"
42
+ summer_end = "09-30"
43
+
44
+ [periods]
45
+ peak = [[16, 21]]
46
+
47
+ # Season- and period-dependent components.
48
+
49
+ [energy.summer.peak]
50
+ generation = 0.20782
51
+ distribution = 0.20388
52
+
53
+ [energy.summer.off_peak]
54
+ generation = 0.10482
55
+ distribution = 0.18388
56
+
57
+ [energy.winter.peak]
58
+ generation = 0.1371
59
+ distribution = 0.14977
60
+
61
+ [energy.winter.off_peak]
62
+ generation = 0.11042
63
+ distribution = 0.14645
64
+
65
+ # Flat riders applied to all usage in every period and season.
66
+ [adders]
67
+ transmission = 0.04638
68
+ transmission_rate_adjustments = 0.00453
69
+ reliability_services = 0.00013
70
+ public_purpose_programs = 0.00614
71
+ nuclear_decommissioning = -0.00002
72
+ competition_transition_charges = 0.00027
73
+ energy_cost_recovery = 0.00002
74
+ wildfire_fund_charge = 0.00591
75
+ new_system_generation = 0.0
76
+ wildfire_hardening = 0.00391
77
+ recovery_bond_charge = 0.00857
78
+ recovery_bond_credit = -0.00857
79
+ bundled_pcia = -0.01011
80
+ conservation_incentive_adjustment = 0.05354
81
+
82
+ # The bill prints one baseline credit; the sheet implements it as two
83
+ # Conservation Incentive Adjustment rates whose spread is that credit.
84
+ [baseline]
85
+ within_rate = -0.02786
86
+ over_rate = 0.05354
87
+ credit = 0.0814
88
+
89
+ [baseline.quantities.basic.P]
90
+ summer = 13.5
91
+ winter = 11
92
+
93
+ [baseline.quantities.basic.Q]
94
+ summer = 9.8
95
+ winter = 11
96
+
97
+ [baseline.quantities.basic.R]
98
+ summer = 17.7
99
+ winter = 10.4
100
+
101
+ [baseline.quantities.basic.S]
102
+ summer = 15
103
+ winter = 10.2
104
+
105
+ [baseline.quantities.basic.T]
106
+ summer = 6.5
107
+ winter = 7.5
108
+
109
+ [baseline.quantities.basic.V]
110
+ summer = 7.1
111
+ winter = 8.1
112
+
113
+ [baseline.quantities.basic.W]
114
+ summer = 19.2
115
+ winter = 9.8
116
+
117
+ [baseline.quantities.basic.X]
118
+ summer = 9.8
119
+ winter = 9.7
120
+
121
+ [baseline.quantities.basic.Y]
122
+ summer = 10.5
123
+ winter = 11.1
124
+
125
+ [baseline.quantities.basic.Z]
126
+ summer = 5.9
127
+ winter = 7.8
128
+
129
+ [baseline.quantities.all_electric.P]
130
+ summer = 15.2
131
+ winter = 26
132
+
133
+ [baseline.quantities.all_electric.Q]
134
+ summer = 8.5
135
+ winter = 26
136
+
137
+ [baseline.quantities.all_electric.R]
138
+ summer = 19.9
139
+ winter = 26.7
140
+
141
+ [baseline.quantities.all_electric.S]
142
+ summer = 17.8
143
+ winter = 23.7
144
+
145
+ [baseline.quantities.all_electric.T]
146
+ summer = 7.1
147
+ winter = 12.9
148
+
149
+ [baseline.quantities.all_electric.V]
150
+ summer = 10.4
151
+ winter = 19.1
152
+
153
+ [baseline.quantities.all_electric.W]
154
+ summer = 22.4
155
+ winter = 19
156
+
157
+ [baseline.quantities.all_electric.X]
158
+ summer = 8.5
159
+ winter = 14.6
160
+
161
+ [baseline.quantities.all_electric.Y]
162
+ summer = 12
163
+ winter = 24
164
+
165
+ [baseline.quantities.all_electric.Z]
166
+ summer = 6.7
167
+ winter = 15.7
168
+
169
+ # Riders a CCA or Direct Access customer does not pay, because PG&E is not
170
+ # supplying their generation.
171
+ [cca]
172
+ drop_components = ["generation", "bundled_pcia"]
173
+
174
+ # Vintaged PCIA a CCA/DA customer pays instead of the bundled PCIA, keyed
175
+ # by the year their generation service began.
176
+ [cca.pcia_vintages]
177
+ 2009 = 0.02973
178
+ 2010 = 0.03366
179
+ 2011 = 0.03492
180
+ 2012 = 0.03676
181
+ 2013 = 0.03708
182
+ 2014 = 0.03686
183
+ 2015 = 0.0368
184
+ 2016 = 0.03687
185
+ 2017 = 0.03661
186
+ 2018 = 0.03679
187
+ 2019 = 0.03725
188
+ 2020 = 0.03632
189
+ 2021 = 0.05264
190
+ 2022 = 0.05272
191
+ 2023 = 0.0538
192
+ 2024 = 0.05066
193
+ 2025 = -0.01011
194
+ 2026 = -0.01011
195
+
196
+ # Schedule E-FFS franchise fee surcharge. A different schedule, so it is
197
+ # carried forward rather than read from this sheet.
198
+ [cca.franchise_fee_vintages]
199
+ 2009 = 0.00064
200
+ 2010 = 0.00061
201
+ 2011 = 0.0006
202
+ 2012 = 0.00059
203
+ 2013 = 0.00059
204
+ 2014 = 0.00059
205
+ 2015 = 0.00059
206
+ 2016 = 0.00059
207
+ 2017 = 0.00059
208
+ 2018 = 0.00059
209
+ 2019 = 0.00059
210
+ 2020 = 0.00059
211
+ 2021 = 0.00048
212
+ 2022 = 0.00048
213
+ 2023 = 0.00047
214
+ 2024 = 0.00049
215
+ 2025 = 0.00093
216
+ 2026 = 0.00093
217
+
218
+ [base_services_charge]
219
+ unit = "USD/day"
220
+ tier_1 = 0.19713
221
+ tier_2 = 0.39688
222
+ tier_3 = 0.79343
223
+
224
+ # The sheet's own published totals; the components above sum to these.
225
+ [totals.summer]
226
+ peak = 0.5224
227
+ off_peak = 0.3994
228
+
229
+ [totals.winter]
230
+ peak = 0.39757
231
+ off_peak = 0.36757