Skip to content

Commit

Permalink
Update eink_st parameters and rounding rules (#803)
Browse files Browse the repository at this point in the history
This PR updates income tax parameters and law references for 2024.

Gesetz zur steuerlichen Freistellung des Existenzminimums 2024 has been
published: [G. v. 05.12.2024 BGBl. 2024 I Nr.
386](https://www.recht.bund.de/bgbl/1/2024/386/VO.html). New parameter
for Grundfreibetrag. New law reference for the full income tax tarif.

Additionally, this PR applies the correct rounding rules for
Ehegattensplitting. Before, we only rounded `eink_st_y_sn`. It seems
like in practice, there should be some intermediate rounding steps. In
particular, in the splitting case, `eink_st_y_sn` should be just the
doubled individual income tax which is rounded down.

Note: The parameter file seems to be inconsistent regarding whether the
end of the interval or the beginning of the following interval must be
used:
- 2020-01-01: End of the interval.
- 2021-01-01: End of the interval.
- 2022-01-01: End of the interval.
- 2023-01-01: Start of following interval.
- 2024-01-01: Start of following interval.

Here, I just keep the logic of the existing parameters for 2024. To be
precise, the function should be checked, and it should be documented in
the `eink_st_tarif` `note` key which value is the parameter in the yaml
file.

---------

Co-authored-by: Marvin Immesberger <[email protected]>
Co-authored-by: Marvin Immesberger <[email protected]>
  • Loading branch information
3 people authored Dec 12, 2024
1 parent 16d31e1 commit f415ddb
Show file tree
Hide file tree
Showing 10 changed files with 4,696 additions and 4,761 deletions.
2 changes: 2 additions & 0 deletions CHANGES.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ releases are available on [Anaconda.org](https://anaconda.org/conda-forge/gettsi

## Unpublished

- {gh}`803` Apply correct rounding rules for Ehegattensplitting and update EStG
parameters ({ghuser}`MImmesberger`, `mjbloemer`).
- {gh}`797` Update infrastructure to use pixi and modern pre-commit hooks
({ghuser}`timmens`).
- {gh}`787` Model classes for policy functions and policy environments
Expand Down
9,350 changes: 4,635 additions & 4,715 deletions pixi.lock

Large diffs are not rendered by default.

41 changes: 26 additions & 15 deletions src/_gettsim/parameters/eink_st.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,7 @@ eink_st_tarif:
upper_threshold: 250400
2010-01-01:
deviation_from: previous
reference: Artikel 1 G. v. 02.03.2009 BGBl. I S. 416
0:
upper_threshold: 8004
1:
Expand Down Expand Up @@ -161,13 +162,13 @@ eink_st_tarif:
2019-01-01:
deviation_from: previous
0:
upper_threshold: 9169
upper_threshold: 9168
1:
upper_threshold: 14255
upper_threshold: 14254
2:
upper_threshold: 55961
upper_threshold: 55960
3:
upper_threshold: 265327
upper_threshold: 265326
2020-01-01:
deviation_from: previous
reference: Art. 3 G. v. 29.11.2018 BGBl. I S. 2210
Expand All @@ -178,7 +179,7 @@ eink_st_tarif:
2:
upper_threshold: 57051
3:
upper_threshold: 270501
upper_threshold: 270500
2021-01-01:
deviation_from: previous
reference: Art. 1 G. v. 01.12.2020 BGBl. I S. 2616
Expand All @@ -189,7 +190,7 @@ eink_st_tarif:
2:
upper_threshold: 57918
3:
upper_threshold: 274613
upper_threshold: 274612
2022-01-01:
deviation_from: previous
reference: Art. 1 G. v. 23.05.2022 BGBl. I S. 749
Expand All @@ -208,24 +209,24 @@ eink_st_tarif:
deviation_from: previous
reference: Art. 2 G. v. 08.12.2022 BGBl. I S. 2230.
0:
upper_threshold: 10909
upper_threshold: 10908
1:
upper_threshold: 16000
upper_threshold: 15999
2:
upper_threshold: 62810
upper_threshold: 62809
3:
upper_threshold: 277826
upper_threshold: 277825
2024-01-01:
deviation_from: previous
reference: Art. 3 G. v. 08.12.2022 BGBl. I S. 2230.
reference: Art. 1 G. v. 05.12.2024 BGBl. 2024 I Nr. 386.
0:
upper_threshold: 11605
upper_threshold: 11784
1:
upper_threshold: 17006
upper_threshold: 17005
2:
upper_threshold: 66761
upper_threshold: 66760
3:
upper_threshold: 277826
upper_threshold: 277825
rente_ertragsanteil:
name:
de: >-
Expand Down Expand Up @@ -296,3 +297,13 @@ rounding:
base: 1
direction: down
reference: § 32a Abs. 1 S. 1 EStG
eink_st_ohne_kinderfreib_y:
2002-01-01:
base: 1
direction: down
reference: § 32a Abs. 1 S. 6 EStG
eink_st_mit_kinderfreib_y:
2002-01-01:
base: 1
direction: down
reference: § 32a Abs. 1 S. 6 EStG
5 changes: 1 addition & 4 deletions src/_gettsim/parameters/eink_st_abzuege.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -91,10 +91,7 @@ kinderfreib:
2024-01-01:
deviation_from: previous
sächl_existenzmin: 3306
reference: >-
Not implemented in law yet, but announced.
https://www.bmfsfj.de/bmfsfj/aktuelles/alle-meldungen/
spuerbare-verbesserungen-fuer-familien--234802
reference: Art. 1 G. v. 05.12.2024 BGBl. 2024 I Nr. 386.
vorsorge2004_vorwegabzug:
name:
de: Vorwegabzug der Vorsorgeaufwendungen der Rechtslage vor 2004.
Expand Down
27 changes: 16 additions & 11 deletions src/_gettsim/taxes/eink_st.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,8 @@
}


def eink_st_ohne_kinderfreib_y_sn(
@policy_info(params_key_for_rounding="eink_st")
def eink_st_ohne_kinderfreib_y(
_zu_verst_eink_ohne_kinderfreib_y_sn: float,
anz_personen_sn: int,
eink_st_params: dict,
Expand All @@ -37,20 +38,26 @@ def eink_st_ohne_kinderfreib_y_sn(
"""
zu_verst_eink_per_indiv = _zu_verst_eink_ohne_kinderfreib_y_sn / anz_personen_sn
out = anz_personen_sn * _eink_st_tarif(
zu_verst_eink_per_indiv, params=eink_st_params
)
out = _eink_st_tarif(zu_verst_eink_per_indiv, params=eink_st_params)

return out


@policy_info(end_date="2001-12-31", name_in_dag="eink_st_mit_kinderfreib_y_sn")
def eink_st_mit_kinderfreib_y_sn_bis_2001() -> float:
@policy_info(
end_date="2001-12-31",
name_in_dag="eink_st_mit_kinderfreib_y",
params_key_for_rounding="eink_st",
)
def eink_st_mit_kinderfreib_y_bis_2001() -> float:
raise NotImplementedError("Tax system before 2002 is not implemented yet.")


@policy_info(start_date="2002-01-01", name_in_dag="eink_st_mit_kinderfreib_y_sn")
def eink_st_mit_kinderfreib_y_sn_ab_2002(
@policy_info(
start_date="2002-01-01",
name_in_dag="eink_st_mit_kinderfreib_y",
params_key_for_rounding="eink_st",
)
def eink_st_mit_kinderfreib_y_ab_2002(
_zu_verst_eink_mit_kinderfreib_y_sn: float,
anz_personen_sn: int,
eink_st_params: dict,
Expand All @@ -72,9 +79,7 @@ def eink_st_mit_kinderfreib_y_sn_ab_2002(
"""
zu_verst_eink_per_indiv = _zu_verst_eink_mit_kinderfreib_y_sn / anz_personen_sn
out = anz_personen_sn * _eink_st_tarif(
zu_verst_eink_per_indiv, params=eink_st_params
)
out = _eink_st_tarif(zu_verst_eink_per_indiv, params=eink_st_params)

return out

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,4 +41,4 @@ inputs:
- 12.0
outputs:
arbeitsl_geld_m:
- 789.772
- 789.76
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
info:
note: ''
source: https://www.smart-rechner.de/einkommensteuer/rechner.php
source: Regression test.
inputs:
provided:
p_id:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
info:
note: ''
source: https://www.smart-rechner.de/einkommensteuer/rechner.php
source: https://www.bmf-steuerrechner.de
inputs:
provided:
p_id:
Expand Down Expand Up @@ -34,14 +34,14 @@ outputs:
- 2
- 2
eink_st_ohne_kinderfreib_y_sn:
- 62794.0
- 62794.0
- 62726.0
- 62726.0
eink_st_mit_kinderfreib_y_sn:
- 62794.0
- 62794.0
- 62726.0
- 62726.0
abgelt_st_y_sn:
- 0.0
- 0.0
soli_st_y_sn:
- 3157.55
- 3157.55
- 3149.45
- 3149.45
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
info:
note: ''
source: https://www.smart-rechner.de/einkommensteuer/rechner.php
source: https://www.bmf-steuerrechner.de
inputs:
provided:
p_id:
Expand All @@ -23,10 +23,10 @@ inputs:
assumed: {}
outputs:
eink_st_ohne_kinderfreib_y_sn:
- 31397.0
- 31363.0
eink_st_mit_kinderfreib_y_sn:
- 31397.0
- 31363.0
abgelt_st_y_sn:
- 0.0
soli_st_y_sn:
- 1578.77
- 1574.72
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
info:
note: ''
source: https://www.smart-rechner.de/einkommensteuer/rechner.php
source: https://www.bmf-steuerrechner.de
inputs:
provided:
p_id:
Expand All @@ -23,9 +23,9 @@ inputs:
assumed: {}
outputs:
eink_st_ohne_kinderfreib_y_sn:
- 10906.0
- 10872.0
eink_st_mit_kinderfreib_y_sn:
- 10906.0
- 10872.0
abgelt_st_y_sn:
- 0.0
soli_st_y_sn:
Expand Down

0 comments on commit f415ddb

Please sign in to comment.