import pandas as pd
df = pd.read_csv('./data/jahresabschluss_vorstand.csv')
df_orig = df
df_bemessung = pd.read_csv('./data/bemessung.csv')
df = pd.merge(df, df_bemessung, on='sparkasse')
Wie hoch ist der Anteil erfolgsabhängiger Gehälter am Gesamtgehalt?¶
Die erfolgsabhängigen Bezüge für einen Vorstand werden immer erst im nächsten Jahr ausgewiesen, daher gelten die Werte von erfolgsabhaengige_bezuege von 2014 für den Zeitraum von 2013, in dem diejenige Person im Vorstand war.
# convert to date
df.since = pd.to_datetime(df.since)
df.until = pd.to_datetime(df.until)
# set year
df['year'] = df.until.map(lambda x: x.year)
# get "feste_bezuege" of year before
def get_salary(row):
if row.year == 2014:
lookup = df[(df.name == row['name']) & (df.year == 2013) & (df.sparkasse == row['sparkasse'])]
if len(lookup) == 1:
return lookup.iloc[0].feste_bezuege
df['feste_bezuege_2013'] = df.apply(get_salary, axis=1)
# calculate quota
df['bezuege_quote'] = df.erfolgsabhaengige_bezuege / df.feste_bezuege_2013
# calculate diff to erfolgs bezuege if quota would be .15
df['erfolgs_bezuege_diff'] = df.erfolgsabhaengige_bezuege - df.feste_bezuege_2013*0.15
# only relevant data
df = df[(df.bezuege_quote > 0) & (df.year == 2014)]
# shortcut for often used cols
columns = ['sparkasse', 'name', 'position', 'feste_bezuege', 'erfolgsabhaengige_bezuege', 'bezuege_quote', 'erfolgs_bezuege_diff']
"In Nordrhein-Westfalen haben sieben Sparkassenvorstände ungewöhnlich hohe Bonuszahlungen erhalten. Die Prämien aus dem Jahr 2014 übetreffen den empfohlenen Grenzwert."
"Trotzdem hielten sich sieben Vorstände im Jahr 2014 nicht an diese Richtlinie"
len(df[(df.bezuege_quote > 0.15) & (df.state == 'Nordrhein-Westfalen')].index)
"Im Nachbarland Hessen sind die Richtlinien geheim. Dort liegen sogar 32 Vorstände über dem in NRW gültigen Grenzwert."
len(df[(df.bezuege_quote > 0.15) & (df.state == 'Hessen')].index)
"In Hessen lag sogar der Bonus von mehr als jedem zweiten Sparkassenchef über diesem Richtwert."
df[df.state == 'Hessen'].bezuege_quote.quantile(0.5)
"Die Sparkasse KölnBonn hat ihrem kompletten Vorstand einen Bonus von gut 22 Prozent genehmigt. Der Vorsitzende Artur Grzesiek bekam neben einem Festgehalt von 590.600 Euro im Jahr 2013 noch weitere 137.500 Euro als Prämie ausgezahlt. Das sind fast 50.000 Euro mehr, als die beiden Sparkassenverbände in NRW als Richtwert festgeschrieben haben."
df[df.sparkasse == 'Sparkasse KölnBonn'][columns]
"Direkt nebenan, in Leverkusen, erhielt der ehemalige Chef Manfred Herpolsheimer satte 26 Prozent seines Festgehaltes als Bonus. Macht 2014 allein 103.000 Euro zusätzlich – 42.000 Euro mehr als vorgesehen."
df[df.sparkasse == 'Sparkasse Leverkusen'][columns]
"Die Sparkasse Märkisches Sauerland Hemer-Menden bezahlte ihrem Vorsitzenden einen Bonus von 23 Prozent. Dietmar Tacke, schon seit 1999 im Vorstand, bekam 62.000 als Prämie. Der Betrag liegt 22.000 Euro über dem vorgesehenen Grenzwert."
df[df.sparkasse == 'Sparkasse Märkisches Sauerland Hemer-Menden'][columns]
"Die Stadtsparkasse Haltern am See zählt mit rund 100 Mitarbeitern zu den kleinsten Sparkassen in Deutschland. Dementsprechend ist das Gehalt der Vorstände vergleichsweise überschaubar. Im Vorstand sitzt Jutta Kuhn, die für ihre Arbeit im Jahr 2013 113.000 Euro bekam. Der Bonus von 23.000 Euro entspricht einem Fünftel Ihres Grundgehaltes. Das sind 6.050 Euro mehr als die beiden Sparkassen-Verbände in NRW empfehlen."
df[df.sparkasse == 'Stadtsparkasse Haltern am See'][columns]
df_bemessung.sort_values('bemessung_2014')[:13]
"Für die Sparkasse Märkisches Sauerland war 2013 ein schwieriges Jahr. Sie hielt knapp die schwarze null und machte nur 120.000 Euro Gewinn. Im Folgejahr waren fast 5 Prozent aller Unternehmenskredite notleidend."
df_kerndaten = pd.read_csv('./data/jahresabschluss_kerndaten.csv')
df_kerndaten[df_kerndaten.sparkasse == 'Sparkasse Märkisches Sauerland Hemer-Menden'][[
'sparkasse',
'jahresueberschuss_2013',
'npl_quote_unternehmen_2014'
]]
"Auffällig ist in Hessen: [...]. Davon bewegen sich die Boni von 28 Vorständen bis an die 20 Prozent Grenze."
len(df[(df.state == 'Hessen') & (df.bezuege_quote > 0.15) & (df.bezuege_quote <= 0.2)].index)
"Eine Ausnahme ist der vierköpfige Vorstand der Frankfurter Sparkasse mit Bonuszahlungen zwischen 55 und 68 Prozent."
df[df.sparkasse == 'Frankfurter Sparkasse'][columns]
"In einer neuen Datenbank von correctiv.org und FAZ finden sich hunderte Gehälter von Vorständen aus 134 Sparkassen."
len(df.index), len(df_orig[df_orig.gesamtverguetung > 0].sparkasse.unique())
"Mittlerweile veröffentlicht fast jede dritte Sparkasse ihre Vorstandgehälter. Im Jahr 2014 hatten 134 der damals noch 417 Sparkassen (jetzt 409) ihre Gehälter veröffentlicht."
[len(df_orig[df_orig.gesamtverguetung > 0].sparkasse.unique()) / len(df_orig.sparkasse.unique()),
len(df_kerndaten.sparkasse.unique())]
"In NRW sind es 102 von 105 Sparkassen,..."
[len(df_orig[(df_orig.state == 'Nordrhein-Westfalen') & (df_orig.gesamtverguetung > 0)].sparkasse.unique()),
len(df_orig[df_orig.state == 'Nordrhein-Westfalen'].sparkasse.unique())]
"...in Hessen 30 von 34."
[len(df_orig[(df_orig.state == 'Hessen') & (df_orig.gesamtverguetung > 0)].sparkasse.unique()),
len(df_orig[df_orig.state == 'Hessen'].sparkasse.unique())]
"Dazu veröffentlichen die Sparkassen in München und Berlin ihre Gehälter."
'Stadtsparkasse München' in df_orig[df_orig.gesamtverguetung > 0].sparkasse.values
'Berliner Sparkasse' in df_orig[df_orig.gesamtverguetung > 0].sparkasse.values
"Von den übrigen, schweigenden Sparkassen veröffentlicht rund die Hälfte zumindest das Gesamtgehalt aller Vorstände."
sparkassen_schweigend = set(df_kerndaten.sparkasse.values) - set(df_orig[df_orig.gesamtverguetung > 0].sparkasse.values)
sparkassen_gesamtgehalt = sparkassen_schweigend & set(df_kerndaten[df_kerndaten.gesamtbezuege_2014 > 0].sparkasse.values)
len(sparkassen_gesamtgehalt) / len(sparkassen_schweigend)