iconEuler Examples

Steuersatz Deutschland 2007

Berechnung der deutschen Einkommenssteuer, des Steuersatzes und
des Grenzsteuersatzes. Zugrunde liegt die Steuerfunktion von 2007.

Die Steuerfunktion ist ein quadratischer Spline, aus 5 Stücken
zusammengesetzt. Für Verheiratete ist aufgrund des Ehegattensplittings
die Steuerlast gleich dem Doppelten des Steuersatzes bei halbierten
Einkommen.
>function  map steuer (x:scalar, verheiratet:integer=0) ...
if verheiratet then xs=x/2; f=2; else xs=x; f=1; endif
if xs<7664 then return 0
elseif xs<12739 then y=(xs-7664)/10000; return (883.74*y+1500)*y*f
elseif xs<52151 then y=(xs-12739)/10000; return ((228.74*y+2397)*y+989)*f
elseif xs<250000 then return (0.42*xs-7914)*f
else return (0.45*xs-15414)*f
endif
endfunction

Die Progression

Der Plot zeigt den Anstieg der Steuer mit dem Einkommen, die Progression
(konvexe Kurve), und die Auswirkungen des Ehegattensplittings.
>plot2d("steuer",0,105000); plot2d("steuer";1,add=1,color=12); ...
 title("Steuerbelastung (blau : verheiratet)"); xlabel("ZvE"):

Steuersatz 2007

Im folgenden Plot haben wir die Nahtstellen zwischen den Funktionen
aufgenommen, aus denen die Steuerfunktion stückweise besteht.
>plot2d("steuer",0,125000); ...
 x=[7664,12739,52151,250000]; y=steuer(x); ...
 plot2d(x,y,points=true,add=true); insimg();

Steuersatz 2007

Der Steuersatz ist der Anteil der Steuer vom zu versteuernden
Einkommen.
>function steuersatz (x,verheiratet=0) := steuer(x,verheiratet)/x
Der Steuersatz eines Verheirateten mit 30000 Euro Einkommen liegt
bei 10.2%.
>steuersatz(30000,1)*100
10.2843677705
Der Folgende Plot vergleicht die Steuersätze zwischen Ledigen
und Verheirateten.
>plot2d("steuersatz(x)*100",a=1,b=105000,c=0,d=100); ...
 plot2d("steuersatz(x,1)*100";1,add=1,color=12); ...
 insimg;

Steuersatz 2007

Der Grenzsteuersatz gibt den prozentualen Abzug von Gehaltsänderungen
an. 

Zunächst ein Beispiel: Das Gehalt eines Verheirateten steigt von
30000 auf 31000 Euro. Es wird 25% des Anstiegs als Steuer einbehalten.
Der Steuersatz beträgt allerdings nur 10%.
>(steuer(31000,1)-steuer(30000,1))/1000*100
25.11873228
Der Grenzsteuersatz wird durch numerisches Ableiten des Steuersatzes
berechnet.
>function grenzsteuersatz (x,verheiratet=0) := diff("steuer",x;verheiratet)
>grenzsteuersatz(30000,1)*100
25.0043624746

Grenzsteuersatz

Wir fügen zum Plot die Grenzsteuersätze hinzu.

Die Grenzsteuersätze sind in Deutschland Streckenzüge mit Unstetigkeiten
beim Grundeinkommen und bei 250'000 Euro Einkommen, wo ein Sprung
stattfindet von 42% auf den Maximalsatz von 45%.
>plot2d("grenzsteuersatz(x)*100",add=1); ...
 plot2d("grenzsteuersatz(x,1)*100",add=1,color=12); ...
 title("Steuersatz und Grenzsteuersatz (blau : verheiratet)"); ...
 xlabel("ZvE"); ylabel("%"):

Steuersatz 2007

Der Grenzsteuersatz ist die Steigung der Tangenten, der Steuersatz
die Steigung der Geraden durch (0,0).
>plot2d("steuer",0,25000); ...
   x0=20000;  plot2d(x0,steuer(x0),points=1,add=true); ...
   plot2d("steuer(x0)+grenzsteuersatz(x0)*(x-x0)",color=4,add=true,style="--"); ...
   plot2d("steuer(x0)+steuersatz(x0)*(x-x0)",color=6,add=true,style="--"); ...
   label("Grenzsteuersatz",13500,1000,color=4); ...
   label("Steuersatz",6500,1000,color=6);
Die Steuerelastizität bestimmt, um wieviel % sich die Steuerlast
erhöht, wenn sich das Gehalt um 1% erhöht.
>function steuerelastizitaet (x) := grenzsteuersatz(x)*x/steuer(x)
>plot2d("steuerelastizitaet",10001,105000):

Steuersatz 2007

Interessanter ist oft, wieviel von 1% Gehaltserhöhung mehr in
der Tasche bleibt.
>plot2d("(1-grenzsteuersatz(x))*x/100",0,105000,n=500); ...
 plot2d("(1-grenzsteuersatz(x,1))*x/100",add=1,n=500,color=12):

Steuersatz 2007

Die Bierdeckelsteuer

Zum Vergleich die "Bierdeckelsteuer". Es wird angenommen, dass die
Steuersätze 14%, 25%, 35%, 42%, 45% sind, und jeweils für Einkommen
über 8000, 12500, 35000, 53000, 250000 Euro gelten sollen.
>function  map S(X) ...
S=0;
if X>=250000 then S=0.45*(X-250000); X=250000; endif;
if X>=53000 then S=S+0.42*(X-53000); X=53000; endif;
if X>=35000 then S=S+0.35*(X-35000); X=35000; endif;
if X>=12500 then S=S+0.25*(X-12500); X=12500; endif;
if X>=8000 then S=S+0.14*(X-8000); endif;
return S;
endfunction
Zum Vergleich die alte Steuerlast in rot.
>plot2d("steuer",1,300000,color=2); ...
   plot2d("S",add=1,title="Zu zahlende Steuer");  ...
   insimg;

Steuersatz 2007

Hier die Differenz zwischen den Steuermodellen in Form der
"Entlastung".
>plot2d("steuer(x)-S(x)",1,300000,title="Entlastung"):

Steuersatz 2007

Der Steuersatz steigt immer noch monoton. Zum Vergleich der alte
Steuersatz in rot.
>function SS(X) := Smap(X)/X
>plot2d("steuersatz(x)*100",1,300000,color=2); ...
 plot2d("SS(x)*100",add=1,title="Steuersatz"):

Steuersatz 2007

Der Grenzsteuersatz ist aufgrund der Konstruktion natürlich in den
Sprüngen unstetig.
>function dS(X) := diff("S",X)
>plot2d("grenzsteuersatz(x)*100",1,300000,color=2); ...
 plot2d("dS(x)*100",add=1,n=500,title="Grenzsteuersatz");  ...
   insimg;

Steuersatz 2007

Elastizität

Hier entstehen Unstetigkeiten bei den Sprüngen.
>function SE(X) := dS(X)*X/S(X)
>plot2d("SE",11000,105000,n=500,title="Elastizität der Steuer"):

Steuersatz 2007

Wieviel bleibt von 1% Gehaltserhöhung übrig?
>plot2d("(1-dS(x))*x/100",0,105000,n=500, ...
   title="Zugewinn bei 1% Gehaltswachstum");  ...
   insimg;

Steuersatz 2007

Examples Homepage