Ausblick 2024: Mit längeren Engpässen am Panamakanal ist zu rechnen

Ich hoffe, ich darf in diesem nüchtern gehaltenen Blog die Botschaft heute einmal dramatisieren: Ich bin Hobbyastronom. Gestern habe ich durch’s Fernrohr geschaut. Und einen Kometen gesehen, der auf die Erde zurast…

Es geht natürlich nicht um einen Kometen, sondern um den Panamakanal.

Meine Schlussfolgerungen basieren auf Szenarien, für die ich historische Daten heranziehe: ich verwende die Entwicklungen der vergangenen Jahrzehnte, um den derzeitigen (noch nicht kritischen, aber außergewöhnlich niedrigen) Wasserstand des Panamakanals in die Zukunft zu extrapolieren. Denn bis zum Ende des Jahres, also jetzt, muss der Gatúnsee gut gefüllt sein, damit der Panamakanal im nun folgenden Jahr sicher betrieben werden kann.

Die unten entwickelten Szenarien zeigen, dass wir im nächsten Jahr mit einer längeren Periode geringer Kapazität im Panamakanal rechnen müssen – und deshalb mit erheblichen Beeinträchtigungen weltweiter Lieferketten.

Bei der Supply Chain & Logistics Konferenz Anfang Dezember in Berlin kam über einem Kaffee das Thema auf, dass nicht nur der Suezkanal und die Straße von Hormuz für unvorhergesehene Störungen globaler Lieferketten sorgen können, sondern zunehmend auch der Panamakanal.

Der Panamakanal ist ein entscheidendes Element in der weltweiten Lieferketteninfrastruktur. Er dient als maritime Abkürzung, die einen effizienten und kostengünstigen Transport von Gütern zwischen Atlantik und Pazifik ermöglicht. Im Vergleich zur Umrundung von Kap Hoorn, und erst recht im Vergleich zum Weg durch die Nordwest-Passage, werden Reisedistanzen und -gefahren für Schiffe dank dieses Kanals erheblich verkürzt.

Schon dieses Jahr hat es an ungewöhnlich vielen Tagen im Panamakanal „bedenklich niedrige Wasserstände“ gegeben. Das führte jeweils dazu, dass große Schiffe („Panamax„) nicht mehr vollbeladen durch den Kanal fahren konnten. Auch sinkt die Kapazität des Kanals bei Niedrigstand, da dann zu wenig Wasser für einen häufigeren Schleusenbetrieb zur Verfügung steht.

Diese Dinge wollen wir uns heute genauer anschauen. Eine kurze Internetrecherche zeigt, dass es für den Betrieb des Kanals auf den Wasserstand des künstlich aufgestauten Gatúnsees ankommt. Bei einem Wasserstand von weniger als 79 Fuß wird es kritisch. Historische Daten dafür – leider aber nicht für die abgefertigte Tonnage oder die Anzahl der geschleusten Schiffe – werden dankenswerterweise von den Kanalbehörden bereitgestellt.

Datenbeschaffung und -aufbereitung

Wie sonst auch verwende ich ein R-Skript, was nicht zuletzt den Vorteil hat, dass ich meine Analyse bequem aktuell halten und in eine App einbauen kann: bei diesem Link auf den Reiter „Panama Canal“ klicken, um den aktuellen Stand im Jahr 2024 im Vergleich zu vorhergehenden Jahren zu sehen.

Die Daten enthalten zwei Spalten: das Datum und den Wasserstand in Fuß. Ich filtere einige Zeilen heraus, in denen ein unrealistischer Wasserstand von Null vermerkt ist, und erkenne, dass es für das Jahr 2002 lediglich zwei Einträge gibt. Sehr viel später fällt mir zudem auf, dass ausgerechnet zwischen den Jahren einige Werte „Ausreißer“ darstellen – vermutlich keine „echten“ Schwankungen des Wasserstandes, sondern Probleme in der Datenerfassung oder -übertragung.

Für die weitere Handhabung berechne ich aus der Datumsspalte weitere Spalten für das Jahr (1965 bis 2023), den Monat (1, 2, … 12) und den Tag des jeweiligen Jahres (1, 2, … 365). Da im Jahresverlauf Schwankungen auftreten (siehe unten), berechne ich für jeden Monat und für jeden Tag im Jahr einen Mittelwert. Puristen mögen einwenden, dass ich besser den Median verwenden sollte, denn die Daten sind nicht normalverteilt, wie auch die folgende Graphik schon zeigt:

Verlauf des Wasserstandes über das Jahr und über alle Jahre hinweg

Wie die vorherige Graphik zeigt, sind die mittleren Wasserstände in den Monaten April bis August am niedrigsten. Kritische Niedrigstände wurden bisher lediglich im April und Mai erreicht. Die Wasserstände streuen zudem stark – mit Ausreißern nach unten. Auf Tagesbasis stellt sich die Situation wie folgt dar:

Wir schauen uns den zeitlichen Verlauf über alle Jahre hinweg genauer an:

So erkennen wir, dass die jahreszeitlichen Schwankungen Mitte der 1970er Jahr mehrere Jahre nacheinander besonders stark nach unten ausgeschlagen haben. Im April 1998 gab es die ersten 12 Tage mit einem kritischen Wasserstand von weniger als 79 Fuß und zwei weitere Tage im Mai. Im Jahr 2016 traten 41 solcher Tage auf. Überhaupt scheinen sich niedrige Wasserstände in den letzten Jahren gehäuft zu haben – erkennbar an den häufiger gewordenen Ausreißern nach unten. Auch die Varianz des Wasserstandes (optisch der Abstand von Höchst- zu Tiefstwerten innerhalb eines Zeitraumes) scheint seit ca. 2015 deutlich angestiegen zu sein.

Ich habe längere Zeit herumprobiert und bin immer noch nicht so ganz schlüssig, denke aber, dass die folgende Graphik die Dramatik der Entwicklung ganz gut wiedergibt:

Hier stelle ich den vorher schon gezeigten Verlauf dar, allerdings nun den Ausschnitt seit den 1990er Jahren. Zusätzlich färbe die Punkte umso röter ein, je weiter der Wasserstand von seinem langjährigen Tagesmittel abweicht. Diese Mittelwerte – berechnet auf Grundlage aller Daten – zeige ich im Hintergrund grau. So werden die starken Abweichungen des Wasserstandes nach unten während der letzten Jahre deutlich sichtbar.

Auch jetzt, gegen Ende des Jahres 2023 (hellrot, ganz rechts in der Graphik), zu Zeiten seines Höchststandes, hat der See einen historischen Tiefstand für die Jahreszeit erreicht – deutlich unter den Tiefstständen sogar, die sonst in den Monaten April bis Juni erreicht werden.

Auf Grundlage der historischen Entwicklung erwarten wir also, dass es nun von den aktuell erreichten 81,6 Fuß wieder „bergab“ (!) geht. Somit besteht die Erwartung und Befürchtung, dass die Marke von 79 Fuß bald erreicht sein könnte.

Wie geht es weiter?

Um das genauer zu betrachten, schauen wir uns die Jahresverläufe an:

Der diesjährige Verlauf (rot) liegt weit außerhalb der zu dieser Jahreszeit jemals aufgetretenen Wasserstände.

Nun ist die spannende Frage, wie es wohl weitergehen könnte. Dafür stelle ich folgende Überlegung an: Ich verschiebe alle Verläufe der vergangenen Jahre auf den Startpunkt in diesem Jahr und schaue, wohin das führt. Dabei gab es noch eine Schwierigkeit: zwischen den Jahren zeigen die Wasserstände für einige Jahre (1997, 2015, 2019, 1982, 2008, 2013, 1971, 1998, 2016, 2020, 1983, 1977, 2014) einen erstaunlichen Sprung. Ein Messfehler? Ich verschiebe deshalb die Normalisierung auf einen früheren Termin, den 10. Dezember 2023 (der rote Punkt in der folgenden Graphik) und lasse die vergangenen Entwicklungen durch eine Verschiebung des Wasserniveaus dort starten:

Wir erkennen wir die ganze Dramatik dessen, was für 2024 droht: wenn sich der Wasserstand entwickelt wie in der Vergangenheit – und jede der gezeigten Kurven ist eine aus der Vergangenheit – dann führen manche Szenarien zu einem dramatischen und nie dagewesenen Niedrigwasser im Panamakanal – von dem sich dieser auch im gesamten nun folgenden Jahr nicht erholen würde.

Diese Szenarien lassen auch eine Wahrscheinlichkeitsbetrachtung zu: wir bestimmen dafür Tag für Tag den Anteil der Szenarien mit Niedrigwasser, also einem Stand von weniger als 79 Fuß. Das Ergebnis ist beunruhigend:

Spätestens ab dem März 2024 steigt die Wahrscheinlichkeit für Niedrigstand rasant an und erreicht Anfang Mai fast die 80-Prozent-Marke. Bis Ende Oktober liegt die Wahrscheinlichkeit für Niedrigwasser noch bei 10%: kein beruhigender Ausblick für das nun kommende Jahr!

Sind wir vorbereitet?

Dies ist „nur“ ein Blog, in dem ich öffentlich verfügbare Daten verwende und interpretiere. Ich glaube, dass das wichtig ist. Hier aber stellt sich die Frage: wie bewusst ist Stakeholdern und Entscheidern die Situation? Werden ausreichend Maßnahmen eingeleitet für dieses „Tagebuch einer angekündigten Krise“? Oder müssen wir uns für 2024 auf Engpässe in den weltweiten Lieferketten einstellen?

Anmerkung: auf Grundlage von Rückmeldungen habe ich diesen Artikel stark überarbeitet und in englischer Sprache auch auf LinkedIn veröffentlicht.

Patentstark wirtschaften – wo steht Deutschland im internationalen Vergleich?

Warum Du diesen Beitrag lesen solltest

Wir machen uns Sorgen darum, wie wir in Zukunft hochwertige Arbeitsplätze in Deutschland halten können. Angesichts von steigenden Energiekosten, Lieferkettenproblemen, der demographischen Entwicklung und dem damit einhergehendem Fach- und Führungskräftemangel ist ein Thema etwas ins Hintertreffen geraten: unsere „Erfolgsrezepte“. Intellektuelles Eigentum ist ein wesentlicher Baustein für die Zukunft.

In diesem Beitrag betrachte ich vor allem das Thema „Patente“, und das im internationalen Vergleich. Der Vorteil liegt vor allem darin, dass Daten frei verfügbar sind. Wusstest Du das? Nutzt Du diese? Auch wenn es sich bei Patenten um die „sichtbare Spitze eines Eisberges“ handelt, können wir aus Patentdaten interessante Einsichten und einige Handlungsempfehlungen ableiten.

Intellektuelles Eigentum als Erfolgsfaktor für die Zukunft

In einem vorherigen Beitrag habe ich beschrieben, wie Du Daten zu weltweit veröffentlichten Patenten beschaffen und visualisieren kannst. Wir hatten auch gesehen, dass in Asien ein immer größerer Anteil des weltweiten intellektuellen Eigentums erzeugt wird.

Verpassen wir hier den Anschluss?

Heute wollen wir zunächst fragen, welche Länder die meisten Patente pro Kopf der Bevölkerung veröffentlichen. Das ist ein Blickwinkel, den ich aus den Gesprächen der letzten Wochen mitgenommen habe.

Wir schauen uns die Lage zunächst „statisch“ an und wählen dafür einige Jahre aus:

Deutschland steht im Jahr 2020 immerhin auf Platz 4, allerdings mit ca. sieben mal weniger Patenten pro Kopf der Bevölkerung als Korea.

In Sachen Patenten zieht Korea „mit Siebenmeilenstiefel“ an uns vorbei.

Auch China legt in den 2010er Jahren eine beeindruckende Aufholjagd hin, erkennbar im folgenden „Film“. Du könntest einwerfen, deutsche Patente seien besser. Sicher?

Die schleichende Gefahr für Unternehmertum: ungenügende Absicherung des intellektuellen Eigentums

So kommen wir in meinen Gesprächen auf einen weiteren Einwand:

Beim Geschäftserfolg geht es nicht nur um Patente.

Das stimmt. Gehe aber bei nächster Gelegenheit einmal über eine Industriemesse und wähle einen Stand aus, um zu fragen: Wie in aller Welt dieser kleine Biegeradius in hoher Stückzahl fehlersicher hergestellt werden kann? Welche Toleranzen dafür gebraucht werden? Und welche Anforderungen an die umgebende Spritzgussmasse gestellt werden müssen? Man wird Dich nur mit der Kneifzange anfassen…

Am Frankfurter Flughafen, Terminal 1, unten bei den Autovermietungen, habe ich ca. im Jahr 2013 in der McDonalds Küche einmal einen riesengroßen Salzstreuer für Pommes gesehen – ganz offensichtlich clever abgeguckt von der Mutter Natur und der Mohnblume. Ich habe mich mit einer Telekamera auf die Lauer gelegt und ein Foto für meine Innovationstrainings gemacht – und musste kurz darauf das Bild unter Aufsicht einer hinzugerufenen Sicherheitsfachkraft wieder löschen…

Nicht alles wird patentiert. Das Patent auf den Salzstreuer habe ich damals nicht gefunden. Das für Coca Cola wäre längst abgelaufen, wenn sie ihr Rezept patentiert hätten. Open AI legt seine Algorithmen auch nicht im Schaufenster aus und Coco Chanel meldet ebenfalls keine Patente auf Düfte an. Viele Fertigungsprozesse in der Automobil-, chemischen, Lebensmittel- und Pharmaindustrie unterliegen „einfach nur“ der Geheimhaltung. So wie auch die Designmethoden bei Inditex und anderen Modehäusern.

Patente stellen die sichtbare „Spitze eines Eisberges“ dar.

Und weil sie sichtbar sind, lassen sie sich gut einsetzen. Du kannst sie verkaufen, lizensieren. Du hast für 20 Jahre ein Monopol auf Deine tolle Idee. Selbst wenn Deine Firma pleite geht, können ihre Patente immer noch viel wert sein. Ein Land, in dem viele Patente angemeldet werden, zieht internationale Unternehmen an, kann das eigene „intellektuelle Eigentum“ einsetzen, um neues zu produzieren, stellt seine Schaffenskraft unter Beweis.

Patente als „Wegweiser“ in die Zukunft

Gespräche und Recherchen der letzten Wochen fördern – auch im Vergleich mit Korea – einige Erfolgsfaktoren zutage, die Deutschland mittel- und langfristig helfen können:

  • Investitionen in Forschung und Entwicklung: Südkorea hat ganz offensichtlich in den letzten Jahrzehnten erhebliche Investitionen in Forschung und Entwicklung getätigt. Dies schließt öffentliche und private Investitionen in Forschungseinrichtungen, Universitäten und Unternehmen ein. Ziel dieser Investitionen war und ist es, das technologische Know-how des Landes zu stärken und Innovationen zu fördern.
  • Bildungssystem: Das koreanische Bildungssystem scheint einen Schwerpunkt auf Wissenschaft und Technik zu legen. So „produziert“ es hochqualifizierte Absolventen in den Bereichen Ingenieurwissenschaften, Informatik und anderen technischen Disziplinen, die in der Lage sind, innovative Technologien zu entwickeln und zu patentieren. In einem zukünftigen Blogbeitrag könnten wir uns einmal PISA-Studien und speziell die MINT-Fächer anschauen.
  • Regierungsprogramme und -initiativen: Die koreanische Regierung hat verschiedene Programme und Initiativen zur Förderung von Forschung und Innovation ins Leben gerufen. Das tut auch Deutschland und jedes OECD-Land: finanzielle Unterstützung, Steuervergünstigungen, Anreize für Unternehmen und Forschungseinrichtungen. Vielleicht können wir uns dennoch das eine oder andere aus Korea abgucken?
  • Kulturelle Faktoren: Hier tue ich mich am schwersten. Aber es heißt, die koreanische Kultur fördere harte Arbeit, Wettbewerb, Ehrgeiz und den Drang nach Exzellenz. Zumindest einige sagen, dass auch dies dazu beitrage, dass viele Menschen in Korea motiviert seien, in technologischen Bereichen erfolgreich zu sein – und so eben auch Patente schreiben und veröffentlichen.

Soviel zu dem, was „die Regierung“ tun könnte. Auch Dein Unternehmen kann eigene Schwerpunkte setzen, zum Beispiel:

  • Systematische Innovationskultur: In den 2015er Jahren habe ich mit amerikanischen Kollegen Entwicklungen auf LinkedIn verfolgt. Wir haben gesehen, wie einige (v.a. russische) TRIZ-Experten (Theorie der erfinderischen Problemlösung) zu Samsung gewechselt sind und in der Folge deren Patentportfolios erweitert haben. TRIZ-Konferenzen waren und sind koreanische Vertreter jedenfalls sehr kompetent vertreten. Dank KI erwarten viele ein Wiederaufblühen von Methoden wie TRIZ, auch in Verbindung mit Design Thinking und „Outcome-Driven Innovation“. Wie geht Ihr hier vor?
  • Innovations-Portfolio-Management: Habt Ihr einen systematischen Innovationsprozess, vom Markt her gesteuert, der ständig Entwicklungen beobachtet, Chancen daraus ableitet, diese in Prototypen verwandelt, Prototypen in Produkte übersetzt und im Markt testet? Ein Prozess, bei dem aktiv geprüft wird, welche Patente abgeleitet werden können und welche gebraucht werden (z.B. für „Patent Fencing“)?
  • Wettbewerberanalyse: Beobachtet Ihr Patentveröffentlichungen von Wettbewerbern? Könntest Du mir für Deinen Bereich die fünf Wettbewerberpatente nennen, die Euch am meisten im Weg stehen? Analysiert Ihr systematisch, wie diese Patente aufgebaut sind, wo sie ihre Schwachstellen haben und gegebenenfalls umgangen werden können? Beobachtet Ihr, wer Eure Patente verletzt? Betreibt Ihr dafür „Reverse Engineering“ von Wettbewerberprodukten – vielleicht auch, um zu erkennen, wo sie, trickreich und völlig legal, Eure Patente umgehen konnten? Wie setzt Ihr im Fall der Fälle Eure Rechte durch? Gibt es Zahlen dazu, welche Produkte, Märkte, Wettbewerber besonders „anfällig“ sind und Eurer besonderen Beobachtung bedürfen?
  • Geheimhaltungsvereinbarungen und Vertraulichkeitsvereinbarungen: Wie nutzt Ihr bei der Zusammenarbeit mit Partnern, Lieferanten, Forschungseinrichtungen und auch Mitarbeitern Geheimhaltungsvereinbarungen, um sicherzustellen, dass vertrauliche Informationen geschützt bleiben? Wie schult Ihr Mitarbeiter zu diesen Themen? Im Bereich der Arbeitssicherheit gibt es meldepflichtige Vorfälle und Beinaheunfälle. Gibt es solche Zahlen und die dahinter liegenden Prozesse und Verantwortlichkeiten auch zu Geheimhaltungsthemen?
  • Datenschutz und IT-Sicherheit: Memorysticks sind schon lange abgeschaltet – auch bei Euch, richtig? Die zunehmende Digitalisierung stellt aber gerade bei den Themen intellektuelles Eigentum und Geschäftsgeheimnisse neue Herausforderungen. Können Eure Mitarbeiter ChatGPT nutzen? Nein? – Schade! – Oh, doch, das tun sie? Wie sorgt Ihr dann dafür, dass hier nicht ein gewaltiges Datenleck entsteht? Und das ist nur ein Beispiel unter vielen…
  • Zusammenarbeit mit Forschungseinrichtungen, Universitäten und anderen Einrichtungen: Welche Themen bearbeitet Ihr selbst? Für welche braucht und habt Ihr Kooperationen? Wie trefft Ihr klare Vereinbarungen über Nutzung und Schutz von Ergebnissen? Gibt es zu diesem Vorgehen ein „Strategiepapier“ und Entscheidungsgrundlagen?
  • Technologietransfer und Lizenzierung: Wie setzt Ihr Euer eigenes Patentportfolio nutzbringend ein? Welche Lizenzen gebt Ihr heraus – welche nehmt Ihr? Wer hat ein Auge darauf, dass so ein möglichst großer Nutzen erzeugt wird (und wie groß war dieser Nutzen im letzten Jahr)?

Diese Liste ist das Ergebnis aus Gesprächen der letzten Wochen. In der Regel gibt es zu jedem Thema „etwas“: „Natürlich haben wir etwas“ oder – „Ja, die F&Eler machen da was mit der Uni Stuttgart“. Es scheint jedoch an einem durchgestochenem Vorgehen zu fehlen, das sich abteilungs- und begreifsübergreifend aus unternehmerischen Zielen ableitet und entsprechend nachgehalten wird. Die gute Botschaft ist jedoch: Dein Unternehmen hat viele Hebel selbst in der Hand. Ihr könnt morgen anfangen.

Was macht die Regierung?

Diesen Ruf kenne ich aus Frankreich: „Que fait le gouvernement!?“ – um die Preissteigerung, die Arbeitslosenzahlen, die Lieferkettenengpässe – und überhaupt jedes größere Problem in den Griff zu kriegen. Franzosen nehmen sich mit dieser Frage gern selbst auf die Schippe.

Auch uns sind diese Fragen und die daraus entstandenen Programme der Industriepolitik durchaus vertraut: z.B. Rürupp/Riester-Sparen, Abwrackprämie, Coronahilfen, Industriestrompreis.

Wir wollen uns also auch anschauen, welchen Anteil ihres Bruttosozialprodukts Länder in Forschung und Entwicklung stecken. Die Weltbank trägt dazu Daten zusammen (GB.XPD.RSDV.GD.ZS), die wir uns mit den oben erstellten Algorithmen bequem anschauen können, und zwar zunächst als „Film“ …

… und dann als statische Graphik für ausgewählte Jahre:

Deutschland (DEU) spielt oben mit und hat im Jahr 1996 etwas über 2% des Bruttosozialprodukts für Forschung und Entwicklung eingesetzt. Bis zum Jahr 2000 ist diese Zahl auf immerhin 3% angestiegen. Das sind gewaltigen Summen: im Jahr 2022 hat Deutschland ein Bruttosozialprodukt von 3,88 Billionen Euro erwirtschaftet. Drei Prozent davon entsprechen 116 Milliarden Euro, immerhin 1400 Euro pro Kopf der Bevölkerung. Solche gewaltigen Summen dürfen nicht „mit der Gießkanne“ verteilt werden. Es müssen vielmehr klare Ziele definiert und abgestimmt, Programme aufgelegt und bewertet, es muss schlicht gute Arbeit geleistet werden.

Wir sehen auch:

Israel steht fast über den gesamten Zeitraum an der Spitze.

Auch Korea spielt ganz vorne mit und auch mit Schweden, Belgien, den USA, Japan und Österreich könnten wir uns vermutlich dazu austauschen, wie staatliche Ausgaben für Forschung und Entwicklung am besten gelenkt und eingesetzt werden können.

Vielleicht gibt es auch Möglichkeiten für Dein Unternehmen, sich mit anderen zusammenzusetzen, und darüber zu sprechen, was gut funktioniert, was besser gemacht werden kann und wie?

Es geht hier nicht um irgendeine Aufgabe. Es geht darum, das Unternehmen „wetterfest“ zu machen in Zeiten großer Umbrüche und dafür zu sorgen, dass es auch in Zukunft wettbewerbsfähig ist. Intellektuelles Eigentum spielt dabei eine entscheidende Rolle.

Wohin geht’s mit der Welt?

Nicht den Bach runter.
Trotz allem. Das glaube ich nicht.

Langfristige Trends sind oft schwer zu erkennen. Sie entwickeln sich so gleichmäßig vor unseren Augen, dass wir sie nicht wahrnehmen. Es ist das klassische „boiling frog“ Problem: Wir merken erst dann, was vor sich geht, wenn es unübersehbar wird. Deshalb führt kein Weg an Daten vorbei. Sie weisen uns auf Veränderungen hin, die uns sonst entgehen. Die Daten müssen visualisiert werden. Und das ist nicht nur eine Aufgabe für Statistiker und Informatikerinnen.

Daten helfen Dir, Deine „Business Story“ zu erzählen.

„Business Story Telling“ ist übrigens ein großes Ding. Es gibt sogar ein Buch darüber (Lori Silverman, Business Story Telling for Dummies).

Vermutlich gibt es eine gute Handvoll Trends, denen zumindest die multinationalen Unternehmen ausgesetzt sind. Sagen wir einmal, Bevölkerung, Bruttoinlandsprodukt, Emissionen und geistiges Eigentum gehörten dazu.

Angenommen Du hättst nötigen Daten: wie würdest Du visualisieren, welche Richtung diese „Indikatoren“ einschlagen?

Für die heutige Grafik verwende ich Daten der Weltbank. Wie Du an diese Daten kommst, habe ich in vorherigen Blogs beschrieben. Für jedes Jahr habe ich dann die „Schwerpunkte“ für diese Indizes berechnet.

Berechne die xyz-Koordinaten jeder Hauptstadt auf dem Erdball und setze dort den Index des jeweiligen Landes hin. Offensichtlich liegt der Schwerpunkt dann irgendwo im Inneren des Planeten. Wenn Europa dominieren würde, dann wäre der Schwerpunkt nahe an der Oberfläche, irgendwo unter Europa. Diesen Schwerpunkt verfolge ich dann Jahr für Jahr bis zur Oberfläche des Planeten. Die Berechnung ist nicht besonders schwierig. Ich habe aber eine Weile gebraucht, um die Winkelfunktionen richtig hinzukriegen.

Das Ergebnis ist für mich überraschend und aufschlussreich zugleich. Der Schwerpunkt für das Bruttoinlandsprodukt, die angemeldeten Patente und die CO2-Emissionen gehen alle in Richtung Asien / China. Die Weltbevölkerung „marschiert“ nach Afrika:

Der Schwerpunkt der Indizes für weltweite CO2-Emissionen, Patentanmeldungen, Bruttosozialprodukt und die Bevölkerungszahlen.

Was bedeutet das für Dein Unternehmen?

Falls Dein Unternehmen eine internationale Ausrichtung hat, dann ergeben sich nahezu zwangsläufig aus diesen Entwicklungen sowohl Chancen als auch Risiken. Aber auch ein Weinbauer aus dem Elsass sollte vermutlich nicht die Augen verschließen. Denn angesichts dieser Trends wird Dein Unternehmen sowohl Stärken als auch Schwächen aufzeigen.

Vielleicht wusstest Du, vielleicht wusste vor allem Euer Vorstand das alles schon. Vielleicht werden diese Ergebnisse in Euer SWOT-Analyse bereits festgehalten. Vielleicht sind für Euch auch ganz andere Kennzahlen (Weltbank-Sprech: „Indizes“) interessant. Nun, dann hast Du hier eine neue Möglichkeit, diese darzustellen und die die Motivation der daraus abgeleiteten Maßnahmen zu kommunizieren.

Oder möchtest Du Eure eigenen Daten so darstellen? Sagen wir einmal: die weltweiten Verkaufszahlen Deines Unternehmens? Das könnte interessante Entwicklungen aufzeigen. Oder?

Mal etwas anderes: Du kannst bei der Arbeit zuschauen

Für Kurzentschlossene

Bitte beachte: Mit dem folgenden Link verlässt Du meinen Blog, um die Plattform Youtube zu nutzen. Youtube hat eigene Datenschutzrichtlinien, die Du teilweise an Deine eigenen Bedürfnisse anpassen kannst. Es kann sein, dass Youtube Dir vor oder während der Nutzung meines Videos Werbung zeigt. Wenn Du Deine Rechte auf Youtube nicht kennst oder mit den Dir zugestandenen Rechten nicht einverstanden bist, dann solltest Du den folgenden Link nicht verwenden.

Hier ist der Link zu dem Video auf Youtube: https://youtu.be/MrCWJ8AI_50.

Screenshot aus dem Youtube Video.

Worum es heute geht:

Wenn Du viel mit Datenanalyse zu tun hast, dann solltest Du coden. Dabei kannst Du Dich von KI unterstützen lassen.

Neulich habe ich ein Seminar beim Europäischen Six Sigma Club dazu gehalten, wie Du ChatGPT & Co bei der Datenanalyse einsetzen kannst. Und zwar:

  • Als klassische Suchmaschine: Du fragst, wie Du gewisse Analysen in Excel, Power-BI, PSPP, Minitab usw. durchführen kannst. Wenn Du dabei z.B. ChatGPT/Bing verwendest, dann erhältst Du auch Links zu relevanten Webseiten.
  • Die KI erledigt die Rechnung. Du kannst Deine Rohdaten übermitteln und sagen: Mache mal bitte einen t-Test mit zwei Stichproben. Das Ergebnis ist beeindruckend: Du erhältst eine vollständige Dokumentation mit Erklärungen, die Du 1:1 in Deine Trainingsunterlagen übernehmen könntest.
  • Lass Dich beim Coden unterstützen: ChatGPT, Bard & Co sind SPRACHmodelle und geben ihre Ergebnisse in Form von Sprache aus. Die Ausgabesprache kann durchaus auch R oder Python sein. KI kann Dir also Code für die Lösung eines Problems erstellen.

Hier als Beispiel ein „Prompt“, den Du auch selbst in ein Sprachmodell eingeben kannst:

Erstelle mir bitte eine Funktion in der Skriptsprache R [oder Python], bei der ich eine natürliche Zahl n vorgebe und die Funktion mir dann die n-te Primzahl ausgibt.

Bei Erstellung dieses Beitrags erhalte ich dafür folgendes Ergebnis, einschließlich Kommentarzeilen:

# Funktion zur Berechnung der n-ten Primzahl

primzahl <- function(n) {
  # Initialisierung
  i <- 2
  primzahlen <- c(2)

  # Primzahlen bis n iterieren
  while (length(primzahlen) < n) {
    # Prüfen, ob i eine Primzahl ist
    if (all(i %% primzahlen != 0)) {
      # i ist eine Primzahl
      primzahlen <- c(primzahlen, i)
    }

    # i erhöhen
    i <- i + 1
  }

  # n-te Primzahl zurückgeben
  return(primzahlen[n])
}

# Beispiel
primzahl(10)

Kopieren, Einfügen. Funktioniert.

Das ist recht beeindruckend. Unter den oben genannten drei Möglichkeiten verwende ich deshalb nahezu ausschließlich den dritten Weg. In dem Seminar habe ich dargelegt, wie erstaunlich einfach das selbst für schwierigere Anwendungsfälle ist. Ich bin deshalb überzeugt:

Wenn Du viel mit Datenanalyse zu tun hast, dann solltest Du Dir die Chance nicht entgehen lassen, Dich von KI beim Coden coachen zu lassen.

Ich bin mir sicher, dass das im Laufe der Zeit noch leichter wird als es heute schon ist.

Warum Du „coden“ solltest, wenn Du Dich viel mit Datenanalyse beschäftigst

Ich sehe hier drei Gründe:

  • Der Algorithmus muss Dir gehören
  • Mit dem Code könnt Ihr, vor allem als Team, schneller lernen
  • Ihr könnt die Qualität Eurer Analysen ständig verbessern.

In meinen vorherigen Beiträgen habe ich das immer wieder erläutert. Ich möchte heute hier darauf verzichten. In dem heutigen Video komme ich allerdings darauf zurück.

Wir erstellen eine Animation zur Entwicklung der weltweiten Patentanmeldungen – und haben Sonderwünsche

In den Tagen nach den Seminar haben einige Teilnehmer und Teilnehmerinnen gefragt:

„Schöne Demo. Aber kannst Du mal ein ‚echtes‘ Beispiel erstellen, wie Datenanalyse per Code konkret aussieht?“

Das will ich im Folgenden tun.

Von der Sache her geht es heute lediglich um ein etwas anspruchsvolleres Balkendiagramm. Die nötigen Daten beschaffen wir uns von der Weltbank. Für ein gegebenes Jahr wollen wir die 10 Länder mit den jeweils meisten Patentanmeldungen identifizieren, diese Länder in absteigender Ordnung auf der einen Achse auftragen und auf der anderen, wie viele Patente das jeweils waren. Das kannst Du natürlich auch in Excel tun.

Danach wollen wir für jedes Jahr die erhaltenen Graphiken abspeichern und daraus eine Animation erstellen. Im Internet findest Du Webseiten, mit der Du mehrere png-Dateien zu einem „animierten Gif“ zusammenfügen kannst. Dafür muss man meiner Ansicht nach schon recht pfiffig sein. Vielleicht kannst Du auch mit Visual Basic in Excel eine Routine schreiben, die für alle 42 Jahre, für derzeit Daten vorliegen, die 10 Länder mit den meisten Anmeldungen je Jahr heraussucht, sortiert, ein Balkendiagramm dafür erstellt und dann abspeichert. Sonst musst Du das für jedes Jahr von Hand tun. Das ist möglich – aber fehleranfällig. Mit Visual Basic bist Du nun aber schon im Bereich „Coden“ unterwegs. Und warum dann nicht gleich richtig?

Denn wir noch folgende „Sonderwünsche“ an unsere Animation:

  • Die Skala für die Anzahl der Patente soll über die Jahre hinweg stabil bleiben, sodass das Auge leicht erkennt, wie sich die absolute Anzahl ändert („es werden jährlich mehr und mehr Patente veröffentlicht“)
  • Die Balken der zehn Länder des letzten vorliegenden Jahres („Situation heute“) sollen farbcodiert sein und über alle Jahre hinweg sollen diese Länder in denselben Farben dargestellt werden.
  • Wir möchten die Analyse gerne schnell anpassen können, wenn uns anstatt der absoluten Anzahl die Anzahl der Patente je Einwohner eines Landes oder aber der Anteil eines Landes in Prozent an den in einem Jahr weltweit veröffentlichten Patenten interessiert.

„Und dafür soll ich coden?“

Wenn Du ein Excel-Profi oder eine Power-BI-Überfliegerin bist, dann kriegst Du die heutige Aufgabe vermutlich in den Griff. Und ich sage mal: wenn Du das kannst, dann kannst Du auch das Coden erlernen, in R oder Python. Ich sehe das so: Dank Coden bist Du viel flexibler, kannst auch neuronale Netze aufbauen und diese mittels H20 online auf großen Rechnern laufen lassen. Das ist schon was… Und Du kannst Warenkorbanalysen durchführen – oder was auch immer.

Wenn Du in R / Python coden kannst, dann brauchst Du in Sachen Datenanalyse nichts anderes mehr.

Und der Code gehört Dir. Du kannst schneller Lernen. Du kannst Dein Lernen besser teilen und das Gelernte festhalten. Du brauchst auch keine online-Tools mehr, auf denen Du Dir Werbung anschauen und Cookies zustimmen musst, nur um eine Gif-Animation aus Deinen png-Files zu basteln…

Du kannst Du Dich auf alle Fälle beim Coden von künstlicher Intelligenz coachen lassen.

„Coden ist doch Aufgabe der IT. Meine Leute sollen das gar nicht können!“

Diese Aussage höre ich so oft, dass ich hier Stellung beziehen möchte. Seeleute sollen ja auch nicht schwimmen können. Die, die ich kenne, können es aber trotzdem.

Hinter dieser Aussage zur IT stehen in der Regel zwei Annahmen:

  1. Die Sichtweise der Linienfunktion: „Coden = IT“.
  2. Die Befürchtung der IT selbst: „Wenn irgendwo irgendein Spaghetti-Code liegt und der dann irgendwann aus irgendwelchen Gründen für irgendwen wichtig wird, dann müssen wir diesen Code am Ende auch noch warten.“

Nun, wenn das das Problem ist, dann gilt:

„Sobald Du in der Lage bist, das Problem zu formulieren, dann bist Du auch in der Lage, das Problem zu lösen“.

Diesen Satz habe ich in einem Buch von Genrich Altschuller gefunden, dem Erfinder von TRIZ. Ich möchte deshalb das Problem als TRIZ-Widerspruch umformulieren:

  1. Ich möchte nicht, dass irgendwer außerhalb der IT auch nur eine Zeile Code schreibt, nicht einmal in Visual Basic. Deshalb haben wir diese Möglichkeit auch unterbunden. Wir tun das, damit kein Wirrwarr von nicht validiertem Code entsteht.
  2. Ich möchte aber gleichzeitig auch, dass die Leute doch eigenen Analyse-Code schreiben. Denn ich kann ja nicht für jedes kleine Problem eine Spezialapplikation kaufen oder bei der IT einen Auftrag erstellen. In der Regel weiß ich ja zu Beginn gar nicht, ob die Analyse nur einmal gefahren wird oder ob sie sich als Standard etablieren wird. Komplizierte Excel-Dateien mit Formel-Wirrwarr und Links zu anderen Excelblättern sind ohnehin ein großes Problem.

Wenn das Dein Problem wäre, dann wäre es mit TRIZ-Ansätzen leicht zu lösen. Genug gepredigt. Nun endlich zum heutigen Thema.

Heute kannst Du mir über die Schulter schauen

Das Video, das ich unten verlinke, ist zum „Mitmachen“ gedacht. Aber auch, wenn Du einfach nur einen Eindruck gewinnen möchtest, was beim Coden auf Dich und Deine Leute zukommt, dann kannst Du es Dir anschauen. Zumindest den Anfang. Danach kannst Du selbst entscheiden, ob Du weitermachen möchtest. Der Vorteil von aufgezeichneten Videos ist ja ohnehin: Du kannst jederzeit vor- oder zurückspulen, anhalten oder auch abbrechen.

Viel Vergnügen!

Ich zeige Dir den folgenden Link an, damit Du klar erkennst, dass Du mit diesem Link meinen Blog verlässt, um die Plattform Youtube zu nutzen. Youtube hat eigene Datenschutzrichtlinien, die Du teilweise auf Deine eigenen Bedürfnisse einstellen kannst. Es kann auch sein, dass Youtube Dir vor oder während der Nutzung meines Videos Werbung zeigt. Wenn Du Deine Rechte auf Youtube nicht kennst oder nicht mit den Dir eingeräumten Rechten einverstanden bist, dann solltest Du den folgenden Link nicht verwenden.

Link zu dem Video auf Youtube: https://youtu.be/MrCWJ8AI_50.

Screenshot aus dem Youtube Video.

Erstaunlich: der Kuchen wird heute unter mehr – und nicht weniger – Marktteilnehmern aufgeteilt als früher

Im letzten Eintrag habe ich mir die Fortune 500 Listen der Jahre 1955 bis 2019 vorgenommen: 65 Listen mit den jeweils 500 größten amerikanischen Unternehmen und Ihren Umsätzen, Gewinnen und Gewinnmargen. Ein wahrer Datenschatz. Wir hatten festgestellt:

Es ist immer schwerer, sich an der Spitze zu halten.
Seit den 1970er Jahren ist die Wahrscheinlichkeit,
von der Liste genommen zu werden,
um 50% gestiegen.

Warum dieser Eintrag für Dich interessant sein könnte

Wenn Du Dich für „Marktgerechtigkeit“ interessierst (oder auch von dem Gegenteil überzeugt bist), dann solltest Du diesen Beitrag lesen. Oder Du möchtest einfach nur etwas Neues lernen und findest (so wie ich) spannend, welche Schlüsse öffentlich verfügbare Daten zulassen? – Dann los!

Vielleicht sitzt Du auch im Einkauf oder Vertrieb und suchst nach einer praktischen Kennzahl, um die „Komplexität“ Deiner Arbeit zu beschreiben? Dann habe ich heute den „Ohler Index“ im Gepäck. Du wirst sehen…

„Winner takes all“ – Wirklich?

Ich stoße manchmal auf die Sicht, dass sich die Welt immer mehr zu einem Ort entwickelt, an dem „der Gewinner alles bekommt“: Siehe den rasanten Aufstieg der FAANG-Unternehmen (Facebook, Amazon, Apple, Netflix, Google), die Dominanz von Silicon Valley oder Hollywood.

Argumente dafür, warum das so sein könnte, gibt es viele: Wer aus Globalisierung und Technologie Kapital schlagen, Netzwerkeffekte und Skalenvorteile nutzen, Plattformen schaffen, Daten und Algorithmen monopolisieren, das regulatorische Umfeld beeinflussen oder sich privilegierten Zugang zu Kapital sichern kann, wird als Sieger aus dem großen Verteilungskampf hervorgehen.

Wir würden hoffen, dass es anders wäre.
Aber so ist die Welt nun einmal.
Oder?

Es ist eine Sicht, der vielleicht auch Du auf die eine oder andere Weise zustimmst. Wenn das allerdings richtig wäre, dann würden die kleine Du, der kleine Ich und auch das Unternehmen am Ende der Straße kaum einen Unterschied machen können. Wir sollten uns nicht selbstständig machen, keine GmbHs gründen und uns lieber den großen Jungs und Mädels anschließen, die die vielen kleinen Unternehmen ohnehin „schlucken“ oder „plattmachen“ werden…

Ist es nicht so?

Dieser Frage wollen wir heute nachgehen.
Dazu werde ich die Daten aus den Fortune 500 Listen verwenden.
Und natürlich, wie sonst auch:

Wir verwenden R für unsere OSAN-Analysen

Wir betreiben „Open Source Analytics“ (OSAN) und verwenden dafür frei verfügbare Datenquellen und die Skript-, Berichts- und Webapplikationssprache R, die speziell für die Handhabung von Daten, Texten und Bildern entwickelt wurde. Du kannst Sie kostenfrei installieren. Sprachen wie R oder Python bieten Dir viele Vorteile, zum Beispiel diese:

  1. Du hast auf einen Schlag Zugang zu den neuesten und besten Analysewerkzeugen inklusive Dokumentation.
  2. Du kannst Dich bequem von „generativer“ künstlicher Intelligenz wie ChatGPT bei der Erstellung Deines Skripts coachen lassen.
  3. Du kannst Deine Analysen ohne viel Aufwand ständig aktuell halten: Einmal „Run“ gedrückt und schon lädt Dein Skript wieder die neuesten Daten herunter und wertet sie für Dich aus.
  4. Als Team ist Eure Lernkurve steiler: Anders als bei „Klicksoftware“ kannst Du Dein Vorgehen inklusive aller „Tricks und Kniffe“ in Deinem Skript festhalten. So könnt Ihr beste Praktiken leicht untereinander teilen.
  5. Eventuelle Fehler in Deiner Analyse können von Dir oder anderen aufgespürt und korrigiert werden: Denn anhand des Skriptes können alle Dein Vorgehen genau nachvollziehen.

Wie können wir Umsätze aus dem Jahr 1955 mit Umsätzen heute vergleichen?

Eine Idee besteht darin, Jahr für Jahr die Umsätze von Fortune-500 Unternehmen mit der allgemeinen wirtschaftlichen Entwicklung zu vergleichen. Allerdings haben wir jeweils „nominelle“ Werte vor uns: Wegen der Inflation war ein Dollar im Jahr 1960 mehr wert als heute. Die Khan-Akademie hat einen Erklär-Artikel veröffentlicht, der diese Dinge verständlich darstellt – und auch, wie Du das rechnen kannst. Dank eines Hinweises von ChatGPT finde ich auch, wie ich die entsprechenden Daten herunterladen kann: Ein Einzeiler (im Folgenden: „CPI-Daten herunterladen“). Auf der Webseite des „Bureau for Labor Statistics“ findet sich zudem der „CPI Inflation Calculator„, mit dem Du diese Rechnung auch manuell durchführen kannst.

# CPI-Daten herunterladen:
getSymbols("CPIAUCSL", src = "FRED")

 
# Mittelwerte je Jahr berechnen:
CPI <- fortify.zoo(CPIAUCSL, index.names = "Date") %>% 
  mutate(Year = year(Index)) %>% 
  group_by(Year) %>% 
  summarise(CPI_mean = mean(CPIAUCSL)) %>%
  mutate(CPI_LAG = lag(CPI_mean),
         Inflation = (CPI_mean - CPI_LAG)/CPI_LAG) %>% 
  slice(-1)

Im folgenden Code wird zunächst ein xts-Objekt erstellt (speziell für die Handhabung von Zeitreihen-Daten). Ich überführe dieses Objekt mittels fortify.zoo in den Dataframe CPI („Consumer Price Index“) und berechne durch den Vergleich von Jahres- und Vorjahreswerten (mit der lag-Funktion) auch die Inflation, die ich als Regelkarte darstelle:

c_chart <- qcc(data = CPI$Inflation,
               labels = CPI$Year,
               type = "xbar.one")

Wir erkennen: in den letzten Jahrzehnten bis hin zum Jahr 2016 hatten die USA eine lange Phase signifikant niedriger Inflationsraten.

Mit diesen Daten passen wir nun die Dollarwerte an die Kaufkraft des Dollars im Jahr 2019 an. Die so angepassten Umsätze (Revenue.adj) des jeweiligen „Jahressiegers“ (Rank == 1 im folgenden Code) lassen wir uns darstellen:

t <- t %>%
  left_join(CPI)

CPI_2019 <- CPI %>% filter(Year == 2019) %>% pull(CPI_mean)

t <- t %>%
  mutate(Revenue.adj = Revenue/CPI_mean*CPI_2019,            
         Total.Revenue.adj = Total.Revenue/CPI_mean*CPI_2019,
         GDP.adj = GDP/CPI_mean*CPI_2019)

ggplot(data = t %>% filter(Rank == 1)) +
  geom_line(aes(x = Year, y = Revenue.adj), colour = "red") +
  geom_line(aes(x = Year, y = Revenue), colour = "blue")

Es ist beeindruckend: auch die inflationsbereinigten Daten bescheinigen ein starkes Wachstum des führenden US-Unternehmens. Mit Blick auf die Eingangsfrage stellen wir fest:

Wer auch immer es ist:
Der Gewinner entwickelt sich prächtig.

Wie sieht diese Entwicklung im Vergleich zur Gesamtwirtschaft aus?

Wie ist jedoch über den gleichen Zeitraum die US-amerikanische Wirtschaft gewachsen? Denn an der Messlatte müssen wir ja auch den „Gewinner“ messen. Dafür beschaffen wir uns Daten von der Weltbank für das Bruttosozialprodukt (gezeigt im folgenden Code) und binden diese mittels left_join (nicht gezeigt) ein:

library(WDI)   # Weltbank Daten

gdp <- WDI(indicator = "NY.GDP.MKTP.CD", 
           extra = TRUE) %>% 
  filter(iso3c == "USA") %>% 
  select(year, NY.GDP.MKTP.CD) %>%
  rename("Year" = "year",
         "GDP" = "NY.GDP.MKTP.CD")

Als Regelkarte dargestellt erkennen wir: „kein Drama“.

Dafür berechne ich das Verhältnis des Umsatzes des jeweils größten Unternehmens zum Bruttosozialprodukt und kalibriere die Regelkarte mit der Entwicklung bis 1979. In den 25 folgenden Jahren war dieses Verhältnis außergewöhnlich niedrig und liegt auch in den Jahren 2018/19 wieder im Bereich des Üblichen:

Die Entwicklung des Gewinners
folgt der des Gesamtmarktes.

Der „Ohler-Index“ – eine praktische Größe mit vielen Anwendungen

Bisher haben wir lediglich die Entwicklung des jeweils größten Unternehmens betrachtet. Jetzt möchten wir untersuchen, in wie vielen Händen sich die Umsätze aller Fortune-500 Unternehmen „konzentrieren“. Ich verwende dafür den Herfindahl-Index – allerdings mit einer Abwandlung, die dieser recht abstrakte Größe eine einfache Bedeutung verleiht.

Nehmen wir an, wir hätten drei Unternehmen, die jeweils 1/3 des Marktes (gemessen an ihren Umsätzen) für sich beanspruchen. Natürlich würden wir in diesem Fall von drei Marktteilnehmern sprechen. Wie wäre es aber, wenn zwei Unternehmen je 49% erwirtschafteten und das dritte die verbleibenden 2%? Würden wir in dem Fall auch sagen, dass sich drei Unternehmen „den Markt aufteilen“?

Den Herfindahl-Hirschman Index (HHI) berücksichtigt solche Situationen wie folgt: Im ersten Fall ergibt sich HHI = (1/3)2 + (1/3)2 + (1/3)2 = 1/3 und im zweiten HHI = (0,49)2 + (0,49)2 + (0,02)2 = 1/2,08. Ich schreibe das in dieser Form, weil der Kehrwert des Herfindahl Indexes die „effektive Anzahl“ der Marktteilnehmer wiedergibt – 3 im ersten und 2,08 im zweiten Fall.

Diese Darstellung hat praktische Anwendungen, die ich in meiner Beratungstätigkeit immer wieder einsetze:

Steigt die Anzahl Eurer Lieferanten oder Kunden?
Sehr einfach: nimm die monatlichen Geldflüsse
hin zu jedem Lieferanten und von jedem Kunden.
Berechne nun die jeweiligen Anteile
und so den Kehrwert des Herfindahl Index.

Es ist erstaunlich, dass bisher sonst niemand auf diese Idee gekommen zu sein scheint. Wenn Du möchtest, dann kannst Du diesen neuen Index – zum Spaß – gerne „Ohler-Index“ nennen. 🙂

In R sieht die Rechnung wie folgt aus (die Spalte Rev.Percent habe ich schon vorher erzeugt):

# Daten aufbereiten:
herfin <- t %>% 
  group_by(Year) %>% 
  summarise(Herfindahl = sum(Rev.Percent^2)) %>% 
  mutate(Num.Companies = 1/Herfindahl)

# Graphik erstellen:
ggplot(data = herfin, 
       aes(x = Year, 
           y = Num.Companies)) +
  geom_line()

Diese Graphik ist nun reichlich erstaunlich: Im Jahr 1994 sind die Umsätze der 500 größten US-Unternehmen in den Händen von 76 „effektiven“ Marktteilnehmern konzentriert. Im Jahr 1995 schnellt diese Zahl auf 146 Unternehmen hoch und hat sich seither bei etwa 135 Unternehmen eingependelt.

Seit dem Jahr 1995 wird der „Kuchen“ unter etwa
doppelt so vielen Marktteilnehmern aufgeteilt wie vorher.
Die „Kleinen“ (unter den 500 Größten)
scheinen ihre Chancen genutzt zu haben.

Gemeinsam mit Thomas und vielleicht auch Christian bin ich derzeit dabei herauszufinden, was sich in der US-amerikanischen Wirtschaft – oder auch nur in der Bewertung der 500 größten Unternehmen – für diesen massiven Effekt geändert haben könnte. Wenn Du den vorherigen Blog gelesen hast: in diesem Zeitraum wurden ganze 291 Unternehmen auf der Fortune 500 Liste ausgetauscht.

Melde Dich gerne, wenn Du dabei mitmachen möchtest!

An der Spitze zu bleiben wird immer schwerer – auch in der Wirtschaft

„Der Wettbewerb wird immer härter“. So heißt es.
So fühlt es sich angesichts Energie-, Lieferketten- und anderer Krisen vielerorts auch an. Wie aber lässt sich dieser Eindruck in Zahlen fassen?

Die „Fortune 500“ Liste

Seit dem Jahr 1955 gibt es die „Fortune 500“ Liste der jeweils 500 größten US-amerikanischen Unternehmen. Jahr für Jahr werden deren Umsatz, Profit und Marge zusammengetragen und in dieser Liste veröffentlicht. Im Laufe der Zeit ist so eine beachtliche Datengrundlage entstanden.

Du kannst die Daten zu dem einen oder anderen Jahr im Internet finden. Manche Anbieter verkaufen sie auch. Dankenswerterweise hat der Nutzer cmusam die Datensätze der Jahre 1955 bis 2019 zusammengetragen und stellt sie auf Github zur Verfügung.

Mit einer kleinen Schleife habe ich diese Jahresscheiben heruntergeladen und in einer einzigen Datei von immerhin 32500 Zeilen (65 Jahre, 500 Zeilen pro Jahr) zusammengefasst. Das Ergebnis sieht wie folgt aus:

Ausschnitt aus den Daten. Wir sehen den Jahresübergang zwischen 2018 und 2019.

Wir verwenden R für unsere OSAN-Analysen

Wir betreiben „Open Source Analytics“ (OSAN) und verwenden dafür frei verfügbare Datenquellen und die Skript-, Berichts- und Webapplikationssprache R, die speziell für die Handhabung von Daten, Texten und Bildern entwickelt wurde. Du kannst Sie kostenfrei installieren. Sprachen wie R oder Python bieten Dir viele Vorteile, zum Beispiel diese:

  1. Du hast auf einen Schlag Zugang zu den neuesten und besten Analysewerkzeugen inklusive Dokumentation.
  2. Du kannst Dich bequem von „generativer“ künstlicher Intelligenz wie ChatGPT bei der Erstellung Deines Skripts coachen lassen.
  3. Du kannst Deine Analysen ohne viel Aufwand ständig aktuell halten: Einmal „Run“ gedrückt und schon lädt Dein Skript wieder die neuesten Daten herunter und wertet sie für Dich aus.
  4. Als Team ist Eure Lernkurve steiler: Anders als bei „Klicksoftware“ kannst Du Dein Vorgehen inklusive aller „Tricks und Kniffe“ in Deinem Skript festhalten. So könnt Ihr beste Praktiken leicht untereinander teilen.
  5. Eventuelle Fehler in Deiner Analyse können von Dir oder anderen aufgespürt und korrigiert werden: Denn anhand des Skriptes können alle Dein Vorgehen genau nachvollziehen.

Wie viele Unternehmen fallen Jahr für Jahr aus der Fortune 500 Liste heraus?

Wenn es tatsächlich immer schwerer wäre, an der Spitze zu bleiben, dann müssten wir das anhand der Fortune 500 Liste erkennen. Wir stellen deshalb zunächst die Frage: wie viele Unternehmen fallen Jahr für Jahr aus der Liste heraus? Ein Anstieg dieses „Ausfallrate“ wäre ein Maß für die Schwierigkeit, sich unter den größten 500 Unternehmen zu halten.

Wir wollen diese Frage zunächst für ein einziges Jahr beantworten. Dafür gehen wir wie folgt vor:

  • Erstelle eine Liste der Unternehmen für das Jahr selbst („yearlist“)
  • Erstelle eine weitere Liste für das Vorgängerjahr („previous.yearlist“).
  • Ermittele aus diesen beiden Listen die „dropouts“.

Mit „Dropouts“ meinen wir diejenigen Unternehmen, die zwar in der „previous.yearlist“, nicht aber in der „yearlist“ selbst aufgeführt werden. In R-Code übersetzt sieht diese Überlegung wie folgt aus:

y <- 2000   # "Dropouts" für das Jahr 2000

yearlist <- t %>%
   filter(Year == y) %>%
   select(Company) %>%
   pull()

previous.yearlist <- t %>%
   filter(Year == y-1) %>%
   select(Company) %>%
   pull()

dropouts <- previous.yearlist[(previous.yearlist %notin% yearlist)]

Hier habe ich die Funktion %notin% als Negation der in dplyr verfügbaren Funktion %in% erstellt. So sehen wir, dass im Jahr 2000 immerhin 50, also 10% aller im Jahr 1999 aufgeführten Unternehmen von der Liste genommen wurden.

Diese „dropout“-Liste möchten wir nun Jahr für Jahr erstellen und ihre jeweilige Länge bestimmen: die Anzahl der in einem gegebenen Jahr „ausgeschiedenen“ Unternehmen. Es mag dafür elegantere Wege geben, der Einfachheit halber verwende ich jedoch die vorherigen Codezeilen und baue sie in eine Schleife ein, mit der ich alle Jahre durchlaufe.

Für das Jahr 1995 finde ich so einen „Ausreißer“: in diesem Jahr werden sage und schreibe 291 Unternehmen auf der Liste ausgetauscht: Ergebnis einer neuen Bewertungsmethode? Eine Krise? Das wäre zu klären. Ich nehme diesen Datenpunkt aus den Daten heraus und erhalte mittels ggplot folgende Darstellung:

Anzahl der Unternehmen, die Jahr für Jahr von der Fortune 500 Liste genommen werden.

Man könnte hier den Eindruck gewinnen, die Situation wäre bis etwa zum Jahr 1980 mehr oder weniger stabil – und als wäre seither die Anzahl der „Dropouts“ angestiegen. Um das zu überprüfen, verwende ich eine Regelkarte.

Regelkarten erlauben, das Signal im Rauschen zu finden

Wenn Du in der Produktion oder im Qualitätsmanagement arbeitest, dann kennst Du dieses Werkzeug. Regelkarten wurden vor ziemlich genau 100 Jahren von Walter A. Shewhart entwickelt. Sie erlauben, statistisch signifikante Prozessschwankungen schnell und sicher zu identifizieren: Wenn Du zum Beispiel mit 10 Würfeln würfelst, dann hast Du mal mehr und mal weniger Sechser. Es handelt sich hier um kein „Signal“ sondern um reines „Rauschen“. Wenn Du dann jedoch bei Deinen Würfeln hinter den Einsern kleine Gewichte einarbeiten würdest, dann würde in der Folge die Wahrscheinlichkeit, eine Sechs zu würfeln, ansteigen. In dem „Rauschen“ dieser neuen „Phase“ wäre dann im Vergleich zu den Vorgängerdaten ein „Signal“ versteckt. Solche Signale kannst Du mit Regelkarten aufdecken.

Je nach Art der vorliegenden Daten gibt es jeweils angepasste Regelkarten. Da wir hier eine konstante Stichprobe von 500 Unternehmen („sizes“) vorliegen haben und wir das Herausfallen eines Unternehmens als „Defekt“ zählen, verwende ich die np-Regelkarte, zunächst einmal für alle Daten.

In R ist das dank des qcc-Pakets ein Einzeiler. „Dropouts“ und „Sizes“ sind jeweils Vektoren. Einige „Verschönerungen“, die die Graphik lesbarer machen, habe ich der Einfachheit halber hier weggelassen:

qcc(data = Dropouts, sizes = Sizes, type = "np")

np-Regelkarte für die jährlich von der Fortune 500 Liste heruntergenommenen Unternehmen.

In dieser Darstellung erkennen wir, dass die Werte der meisten Jahre vor 1980 unterhalb der Mittellinie (CL = Center Line, bei 34,3) liegen. Weil das „erstaunlich viele“ sind, markiert die np-Karte diese gelb. In den späteren Jahren finden wir auch drei Ereignisse, die überhaupt nicht zu der allgemein beobachteten Variation passen und deutlich oberhalb der „oberen Eingreifgrenze“ (UCL, „upper control limit“) von 51,2 ausgetauschten Unternehmen pro Jahr liegen. Diese Ereignisse werden rot markiert.

Mit Beginn der 1980er Jahre scheint die Welt anders auszusehen als vorher. Was hat sich da geändert? Unsere Daten geben keine Antwort – sie werfen aber diese Frage auf: Unternehmen in die Zukunft zu führen scheint seither schwerer geworden zu sein. Warum ist das so?

Um diese Änderung graphisch deutlicher herauszuarbeiten erlaube ich mir, mit dem Jahr 1980 eine neue „Phase“ beginnen zu lassen. Ich eiche die Regelkarte mit den vorherigen Jahren und bewerte mit der so erhaltenen Kalibrierung diese neue Phase:

np-Regelkarte für die jährlich von der Fortune 500 Liste heruntergenommenen Unternehmen. Wir „eichen“ die Regelkarte mit den Jahren bis 1979 und betrachten damit die Jahre seit 1980.

In den Jahren 1955-1979 werden Jahr für Jahr im Durchschnitt 26,2 Unternehmen von der Fortune 500 Liste genommen. Für die Jahre 1980-2019 steigt diese Zahl auf durchschnittlich 39,7 Unternehmen an. Das entspricht einer Steigerung um etwa 50%.

Ziemlich harter Tobak. Oder?

Es ist also tatsächlich schwerer geworden, in der Gruppe der 500 größten Unternehmen zu verbleiben: Seit 1980 um ca. 50% schwerer.

Auf ihrer „Reise nach Jerusalem“, wenn man so will, hat es bis Anfang der 1980er Jahre jedes Jahr etwa 26 Unternehmen auf der Fortune 500 Liste „erwischt“ und sie waren im Folgejahr nicht mehr dabei. Seither ist diese Zahl auf etwa 40 Unternehmen pro Jahr angestiegen.

Als nächstes wollen wir eine „Lebensdauerbetrachtung“ durchführen. Wenn Du Dich mit Produktzuverlässigkeit auskennst, dann weißt Du, wie das geht. Für den vorliegenden Fall brauchst Du dazu nicht einmal besonders ausgefuchste Werkzeuge. Aber das ist eine andere Geschichte. Und die soll beim nächsten Mal erzählt werden.

Die App, die ich mir vor 25 Jahren gewünscht hätte

Tatah: die App ist da!

Mit den im letzten Beitrag geteilten Ansätzen hast Du die Möglichkeit, das sogenannte „Rendite-Dreieck“ selbst zu erstellen. So kannst Du bequem miteinander vergleichen, welche Rendite langfristige Geldanlagen in der Vergangenheit erbracht haben.

WAHNSINN, oder?

Und ehrlich:

Ich hätte manche Entscheidung anders getroffen,
wenn ich das vor 25 Jahren gekonnt hätte.

Ich habe einigen Freunden und Bekannten von dieser Möglichkeit erzählt.
Und bin auf freundliches Interesse gestoßen.
Das war’s.

Kein „WAHNSINN!!!“.
Nur Thomas wollte den Code.

Falls es Dir ähnlich geht, dann habe ich heute etwas für Dich.
So hoffe ich.

In meinem letzten Beitrag hatte ich nämlich geschrieben:

Eine App muss her. Kurssymbol rein.
Klick auf „als Sparplan“ oder „als Investition“.
Rendite-Dreieck raus. Fertig.

Also, tatah, hier ist sie, die App:

Der „Financialyser“

https://ohlermichael.shinyapps.io/Financialyser/

Screenshot aus der App: Das Renditedreieck für einen monatlichen Sparplan in Gold.

Technischer Hintergrund zu der App

In diesem Blog betreiben wir „Open Source Analytics“ (OSAN) und verwenden dafür frei verfügbare Datenquellen und die Skript-, Berichts- und Webapplikationssprache R, die speziell für die Handhabung von Daten, Texten und Bildern entwickelt wurde. Hier nutze ich die Möglichkeit, eine Webapplikation zu erstellen. Du kannst R kostenfrei installieren.

Warum mir diese App so sehr am Herzen liegt

Mit dieser App kannst Du sehr schnell verschiedene Anlageformen vergleichen:
Wie sieht der DAX im Vergleich zum MSCI World aus? Schnell getan.
Und Gold? Einfach „GC=F“ als Symbol eingeben.

Die Liste aller Symbole findest Du mit einer Internetsuche.
Einige gängige Indizes habe ich gleich beigefügt.

Eine Geschichte vorab

Als ich im September 1990 mein Studium in Frankreich begonnen habe, da kam einer unserer Kommilitonen gerade aus Japan zurück. Er hatte Japanisch gelernt und war ein gefeierter Held. Denn die ganze Welt schaute damals auf Japan:

„Wie machen die das?“

Die japanische Wirtschaft hatte einen jahrelangen Höhenflug hinter sich.
Ein Ende war trotz eines aktuellen Einbruchs nicht in Sicht.

Seinen Höchststand vom 29. Dezember 1989 hat der japanische Nikkei 225 Index seither nicht mehr erreicht. Wenn Du damals eingestiegen wärst, dann würdest Du auch mehr als 30 Jahre später noch auf Verlusten sitzen.

Einzelne Aktien können kippen.
Ganze Märkte können stagnieren.
Und das über Jahrzehnte hinweg.

Schau Dir deshalb mit der App auch das Renditedreieck des Nikkei an (Symbol: ^N225).

Wo wir herkommen und was die App kann

In meinem letzten Beitrag habe ich die Codezeilen geteilt, die brauchst, um Daten von Einzelaktien, Indizes oder Gold herunterzuladen und als Renditedreieck darzustellen.

Die jetzt verfügbare App kann deutlich mehr. Für einen Index Deiner Wahl (z.B. ^GDAXI), für Gold (GC=F) oder für Einzelaktien (z.B. SIE.DE) kannst Du:

  • Den Verlauf darstellen
  • Zu einem Ein- und Ausstiegstermin die Rendite berechnen
  • Und das für eine Einmal-Investition und für einen monatlichen Sparplan
  • Für diese beiden Szenarien das Renditedreieck berechnen
  • Das „Erinnerungsvermögen“ (Autokorrelation) des Kurses bestimmen
  • Damit ein Szenario für mögliche zukünftige Entwicklungen simulieren
  • Die erwartete Renditeverteilung vieler Szenarien  berechnen
  • Simulationen für die Entnahmephase Deiner Anlage erstellen.

Renditeverteilung monatlicher Sparpläne:
Du planst, über die nächsten 20 Jahre hinweg jeden Monat 100 Euro in einen Wert (DAX, Euro Stoxx, MSCI World, Gold, …) zu investieren. Wie könnte am Ende das Ergebnis aussehen?

Regelmäßige Entnahmen:
Du hast insgesamt 250.000 Euro in einem Wert (Dax, …) angespart. Wie lange kannst Du jeden Monat 1500 Euro entnehmen, bis das Geld aufgebraucht ist?

Ich bin kein Anlageberater.
Und die App erlaubt Dir einen „Blick hinter den Vorhang“.

Professionelle Anlageberater können Dir bei der Entscheidung für einen privaten Rentensparplan helfen. Die App und der von mir geteilte Code für seine Erstellung helfen Dir, einen Blick hinter den Vorhang zu werfen. Denn Du wirst von Deinem Bankberater oder Deiner Beraterin hören, dass sie „Hunderte von Monte Carlo Simulationen“ durchgeführt haben und so gewisse Aussagen zu Renditeerwartungen treffen.

Meiner Ansicht nach muss bei so wichtigen Entscheidungen das Verständnis um diese Dinge „demokratisiert“ werden. Was Deine Bank Dir erzählt darf für Dich nicht nach „schwarzer Magie“ klingen. Du solltest nicht unterschreiben, ohne zumindest zu verstehen, woher diese Aussagen kommen.

In diesem Sinne erlaubt Dir die App, „hinter den Vorhang“ zu schauen. Wenn Du dadurch auch nur eine Dir wichtige Frage stellen kannst, dann hat sich die App gelohnt.

Auf keinen Fall jedoch solltest Du die App verwenden, um finanzielle Entscheidungen zu treffen. Überlege nur folgendes: Die App ist Software. Software besteht aus Code. Und Code hat – immer – Fehler. Vielleicht fehlt irgendwo ein Faktor. Oder eine Formel stimmt nicht. Oder es stellt sich im Jahr 2027 ein Szenario ein, das aus der Vergangenheit überhaupt nicht vorhersagbar war.

Wirf deshalb einen Blick hinter den Vorhang.
Und sprich mit den richtigen Leuten.

Ein Appell zum Mitmachen

Das ist die App, die ich vor 25 Jahren gebraucht hätte.
Mit dieser App hätte ich manches anders gemacht.
Vor allem hätte ich mehr selbst in die Hand genommen.

„Finanzielle Mündigkeit“ muss „demokratisiert“ werden.
Die Möglichkeit, sich eine schnelle Übersicht zu verschaffen und
Szenarien „durchzuspielen“ liefern einen wesentlichen Beitrag dazu.

Es freut mich deshalb, wenn Du die App nutzt.
Wenn Du mitmachen möchtest, um sie zu verbessern,
dann freut mich das besonders.

Im Grunde sucht diese App aber ein „neues Zuhause“.
Denn sie ist wichtig. Und wertvoll.
Und muss im richtigen Rahmen genutzt werden.
Ich freue mich über Vorschläge.

Geld in Aktien stecken – oder doch besser unter die Matratze?

Warum Du diesen Beitrag lesen solltest

Aktien- und Rententipps gibt es landauf, landab. Neben einem Hauskauf ist das jahrzehntelange Besparen eines Rentenplans eine der größten finanziellen Entscheidungen, die viele Menschen treffen. Allerdings musst Du den Expertinnen und Experten vieles glauben – und findest ein bis zwei Jahrzehnte später heraus, wie es gelaufen ist. Dieser Blog hilft Dir, rechtzeitig eigene quantitative Überlegungen anzustellen. Und zwar für:

  • Aktienfonds
  • Einzelaktien
  • Gold
  • Immobilien.

Wenn Du als Angestellte oder Angestellter mit Deinem aktuellen Rentenbescheid zufrieden bist, dann: herzlichen Glückwunsch! Denn in dem Fall kannst Du „rein aus Neugierde“ weiterlesen.

Haftungsausschluss

Ich möchte hier explizit auf mein Impressum hinweisen: auch dieser Beitrag dient in erster Linie der „Vision“des Blogs. Ich möchte darstellen, welche Einsichten sich über die Analyse öffentlich verfügbarer Daten gewinnen lassen. Meine Schlussfolgerungen wurden nicht im Vier-Augen-Prinzip von Expertinnen oder Experten validiert und können deshalb keine Grundlage für konkrete Maßnahmen sein. Ich bin auch nicht als Finanzberater ausgebildet.

Die Klage über uns Deutsche ist wohlbekannt

Die Deutschen sparen zu wenig.
So heißt es.

„Wie bitte??“
Magst Du einwenden.
Mit zwei großen Fragezeichen.

Denn immerhin gehören die „schwäbische Hausfrau“ und der schwäbische Hausmann auch dazu. Und zumindest DEREN Sparsamkeit ist ja sprichwörtlich!

Gemeint mit der Klage ist: unser Geld läge unter irgendeiner Matratze. Im Sparstrumpf. Auf dem Girokonto. Eben dort, wo es nicht hinsoll. Geld müsse vielmehr „arbeiten“. Zum Beispiel in AKTIEN investiert werden. Denn das sei SOOO RENTABEL, sagen die einen. Aber auch SOO GEFÄHRLICH, erwidern die anderen: „Alles futsch – verstohsch?“ (Das ist Badisch, wo ich herkomme, nicht Schwäbisch).

Dieser Weg kann ein leichter sein

Sich darüber Gedanken zu machen ist wichtig: es geht um die Rente. Deine Rente. Wenn Du gerade ins Berufsleben eintrittst, dann solltest Du genau jetzt loslegen. Wie Du es anstellst mit Deinem Sparplan für die Rente kann am Ende ohne weiteres für doppelt- oder für halb-soviel Geld sorgen. Es lohnt sich also. Und Du wirst sehen:

Dieser Weg ist eben nicht „steinig und schwer“.

Er wird vielmehr ein überraschend leichter sein.
Um es vorwegzunehmen:

Investiere regelmäßig.
Ziehe die Sache durch.
Entnimm gleichmäßig.

Zum Schluss habe ich noch einige persönliche Tipps, falls Du auch mit Deiner Bank darüber sprechen möchtest. Und ich glaube, dass Du das tun solltest.

Drei Wege zur Glückseligkeit

Vereinfacht gesagt hast Du drei Möglichkeiten:

  1. Nichts tun. Das ist bequem. Es kommt vermutlich nur weniger dabei heraus.
  2. Vertraue dem Banker. Auch gut. Denn das ist besser als nichts zu tun.
  3. DIY. Do it yourself. Klingt kompliziert. Ist es aber nicht. Du wirst sehen.

Meine Überzeugung vorab:
Wenn Du selbst die Winterreifen aufziehst,
oder Terrassenplatten eigenhändig verlegst,
zumindest die Zwiebeln selbst schneidest,
dann solltest Du überlegen,
ob DIY nicht Dein Weg ist.
Zumindest für einen Teil.
Deines Geldes.

Coden ist kein Hexenwerk

Um in diesem Blog zu unseren Schlüssen zu kommen, betreiben wir „Open Source Analytics“ (OSAN) und verwenden dafür frei verfügbare Datenquellen und die Skript-, Berichts- und Webapplikationssprache R, die speziell für die Handhabung von Daten, Texten und Bildern entwickelt wurde. Du kannst Sie kostenfrei installieren. Sprachen wie R und auch Python bieten Dir viele Vorteile, zum Beispiel diese:

  1. Du hast auf einen Schlag Zugang zu den neuesten und besten Analysewerkzeugen inklusive Dokumentation. Du kannst Dich auch bequem von „generativer“ künstlicher Intelligenz wie ChatGPT bei der Erstellung Deines Skripts coachen lassen.
  2. Du kannst Deine Analysen ständig aktuell halten: Einmal „Run“ gedrückt und schon lädt Dein Skript wieder die neuesten Daten herunter und wertet sie für Dich aus.
  3. Als Team ist Eure Lernkurve steiler: Anders als bei „Klicksoftware“ kannst Du Dein Vorgehen, inklusive aller „Tricks und Kniffe“, in einem Skript festhalten. So könnt Ihr Euer Vorgehen leicht untereinander teilen. Versuche einmal, das was wir hier tun, in Excel nachzubauen, was möglich ist, und das Excel-Blatt dann anderen zu erklären…
  4. Im Vergleich zu Tabellenkalkulationsprogrammen liegt der Unterschied darin, dass Deine Algorithmen von den Daten getrennt und nicht per Formeln in die Zellen verwoben werden. So ist viel deutlicher ersichtlich und nachvollziehbar, was Du tust.
  5. Deshalb ist es auch viel einfacher, Fehler, die sich immer einschleichen, in Deiner – oder meiner – Analyse aufzuspüren und zu korrigieren.

Wie sonst auch kannst Du diesen Beitrag auch ohne die Code-Zeilen lesen. Die Zwischenüberschriften erlauben Dir zu springen, falls bestimmte Abschnitte Dich mehr als andere interessieren.

Das „Rendite-Dreieck“: eine wichtige Visualisierung

Wie andere Tageszeitungen auch, so hat sich der Finanzteil der FAZ offensichtlich der Mission verschrieben, das Wissen um Geldfragen zu „demokratisieren“.

So lerne ich in einem Beitrag vom 19. Mai 2023 („MSCI World besser als der DAX“) das „Renditedreieck“ (siehe unten) kennen: eine aufschlussreiche Visualisierung, die wichtige, praktische Schlüsse zulässt. In diesem FAZ-Artikel stoße ich auch auf den Satz, der den heutigen Beitrag motiviert:

„… Insofern ist es verdienstvoll, dass das Deutsche Aktieninstitut nach dem Dax, dem Euro Stoxx 50 und Einzelaktien für Mitarbeiter nun auch den MSCI World als Renditedreieck gerechnet hat, und zwar in der Variante als monatlicher Sparplan“.

Echt jetzt?

Ein ganzes Institut rechnet erst „den Dax“, vielleicht nach eine Erholungspause „den Euro Stoxx 50“ und dankenswerterweise „nun auch“ den MSCI World? Das klingt nach einer Menge Arbeit. Das DAI veröffentlicht auch tatsächlich regelmäßig Renditedreiecke. Übrigens graphisch und didaktisch sehr gut aufbereitet und zum Download verfügbar. Vielleicht wurde es dort auch erfunden? Dir ist aber vermutlich klar, was das alles im Rahmen dieses Blogs bedeutet:

Eine App muss her. Kurssymbol rein.
Klick auf „als Sparplan“ oder „als Investition“.
Rendite-Dreieck raus. Fertig.

Der Dax auf Achterbahnfahrt

Dank Yahoo Finance, des quantmod-Pakets und der getSymbols-Funktion sind zumindest die Daten schnell beschafft und für unsere Zwecke aufbereitet, hier für den Dax (^GDAXI):

# Index oder Aktie:
stock <- "^GDAXI" 

# Wir wollen so weit wie möglich zurückblicken:
Horizont.Jahre <- 50 
end <- Sys.Date() - 1 # gestern
start <- end - 365*Horizont.Jahre

# Daten von Yahoo Finance herunterladen und aufbereiten:
Stock <- getSymbols(stock, 
                    from = start, 
                    to = end, 
                    auto.assign = FALSE) %>% 
         as.data.frame() %>% 
         rownames_to_column() %>% 
         drop_na() %>% 
         select(1, 5) %>% 
         rename_with(~ c("Date", "Stock"), 1:2) %>% 
         mutate(Date = as.Date(Date))

# Graphische Darstellung
ggplot() +
    geom_point(data = Stock,
               aes(x = Date, y = Stock)) +
    theme_minimal() +
    ylab(stock)

Verlauf des Dax seit dem Jahr 1987. Mit dem vorigen Code direkt aus tagesaktuellen Daten erstellt.

Was für eine Achterbahnfahrt!

Wenn Du im Jahr 2000 bei einem Kurs von 8000 eingestiegen wärst, dann hättest Du fast acht Jahre warten müssen, um Dein Geld wiederzusehen. Gleich danach wärst Du wieder „abgesoffen“ und erst im Laufe des Jahres 2014 da gelandet, wo Du im Jahr 2000 eingestiegen bist.

Angesichts solch einer Achterbahnfahrt sind Sorgen bezüglich Aktien berechtigt!

Dann allerdings, ab 2014, hätte sich Deine Anlage in den folgenden knapp 10 Jahren mehr als verdoppelt – was einer jährlichen Verzinsung von etwas mehr als 7% entspricht.

Lohnt sich das?
Oder ist das „Zockerglück“?

Darum soll es heute gehen.

Unser Zweck: die langfristige Perspektive

Es geht hier nicht um Chart-Analysen, „Unterstützungslinien“ und selbstgebastelte Aktientipps. Wir interessieren uns vielmehr für eine Perspektive von Jahrzehnten, von Deinem Einstieg ins Berufsleben bis hin zur Rente. Es geht uns auch um die Frage, ob eine Anlage in den Dax, den MSCI World, einen anderen Index-Fonds oder vielleicht auch in Gold oder Einzelaktien für die Altersvorsorge taugt. Denn wenn dem so wäre, dann könntest Du inzwischen über Direktbanken sehr günstig solche Zertifikate erwerben und halten. Die fälligen Kosten und Steuern – sowie die leidige Inflation – lasse ich aus unserer Betrachtung heraus.

Dieser Beitrag darf, kann und will Dir Deine eigene Entscheidung jedoch nicht abnehmen. Aber mit dem Renditedreieck, das Du für jeden Index, jede Aktie und auch für Gold selbst erstellen kannst, hast Du eine wichtige Entscheidungsgrundlage. Du musst nur in dem hier geteilten Code die Variable „stock“ (siehe oben im Code) anpassen.

Das Szenario „kaufen – halten – verkaufen“

Zunächst einmal möchte ich folgendes einfache Szenario betrachten: Du kaufst einen ETF (Exchange Traded Fund) zum Beispiel auf den Dax und lässt ihn einfach liegen. Wir möchten wissen, wie sich Deine Investition im Laufe der Jahre entwickelt. Das möchten wir für verschiedene Einstiegszeitpunkte betrachten und graphisch darstellen.

Auch wenn die Daten auf Tagesbasis vorliegen, betrachten wir bei diesem Anlagehorizont Jahresscheiben und bereiten die Daten entsprechend auf. Wir wählen deshalb den Kursstand zu jedem Jahresstart aus den Daten aus. Indem Du die Variable „period“ änderst, kannst Du selbstverständlich auch einen anderen Rhythmus wählen:

# In diesem Rhythmus betrachten wir die Entwicklung:
period <- "year"  

# Jahresscheiben erstellen:
t <- Stock %>%                                    
  mutate(Period = floor_date(Date, period)) %>% 
  group_by(Period) %>% 
  filter(Date == min(Date)) %>% 
  select(Period, Stock)

# Kauf- und Verkaufstabelle erstellen.
# Dafür kreuzen (crossing) wir die Kaufs- und Verkaufstabellen,
# filtern SellDate > BuyDate
# und berechnen neue Spalten mit mutate:
t2 <- t %>%
  select(Period, Stock) %>%
  rename(BuyDate = Period, 
         BuyValue = Stock) %>%
  crossing(t %>%
             select(Period, Stock) %>%
             rename(SellDate = Period, 
                    SellValue = Stock)) %>% 
  filter(SellDate > BuyDate) %>% 
  mutate(HoldTime.Days = difftime(SellDate, 
                                  BuyDate,  
                                  units = "days") %>% 
                         as.numeric()) %>% 
  mutate(HoldTime.Years = round(HoldTime.Days/365, 1)) %>% 
  mutate(Ratio = SellValue/BuyValue) %>% 
  mutate(Percent.per.Year = Ratio^(365/HoldTime.Days) - 1) %>% 
  mutate(Percentage = paste(round(Percent.per.Year*100, 0), 
                            "%", sep = "")) %>% 
  mutate(Intervals = cut(Percent.per.Year, 
                         breaks = my_breaks, 
                         labels = my_labels)) %>% 
  mutate(Intervals = factor(Intervals, levels = my_labels))

In dieser Tabelle t2 liegen nun alle Daten vor. Das Weitere ist ausschließlich der Visualisierung gewidmet – wie auch schon die letzten drei mutate-Anweisungen.

Erstellung des Renditedreiecks

Ich möchte, dass das Renditedreieck für verschiedene Aktien und Indizes jeweils die gleichen Farbskala aufweist. So lässt sich der MSCI World leichter mit dem Dax, dem Euro Stoxx 50 und auch mit Einzelwerten vergleichen. Diese Anforderung macht meinen Code etwas komplizierter. Deshalb habe ich in den obigen Zeilen die Renditewerte („Percent.per.Year“) mit „my_breaks“ in Intervalle aufgeteilt, diese mit „my_labels“ beschriftet und zudem eine eigene Farbtabelle erstellt. Breaks, Labels und Farbtabelle kannst Du selbstverständlich anpassen:

# So erstellen wir die Farb-Umbrüche:
my_breaks <- c(-Inf, -0.5, -0.4, -0.3, -0.2, -0.1, -0.05, -0.03, -0.01, 
               0.01, 0.03, 0.05, 0.1, 0.2, 0.3, 0.4, 0.5, Inf)

my_labels <- c("<-50%", "-50%..-40%", "-40%..-30%", "-30%..-20%", 
               "-20%..-10%", "-10%..-5%", "-5%..-0.3%", "-3%..-1%", 
               "-1% .. 1%", "1%..3%", "3%..5%", "5%..10%", "10%..20%", 
               "20%..30%", "30%..40%", "40%..50%", ">50%")

# Farbcodes:
color1 <- "#8B0000" # dark red
color2 <- "#FFFFFF" # white
color3 <- "#006400" # dark green

colourtable <- data.frame(
   Intervals = my_labels,
   colours = colorRampPalette(colors = c(color1, color2, color3))(17)
)

Die Schwierigkeit besteht nun darin, dass nicht jedes Renditedreieck alle Intervalle ausgeschöpft. Deshalb untersuche ich zunächst, welche aktuellen Farben („current_colours“ im nächsten Code-Block) vorliegen und verwende diese für die Einfärbung der Kacheln (tiles) in ggplot. Falls Du lieber Quartals- als Jahresscheiben betrachtest, was Du oben über die Variable „period“ einstellen kannst, dann lasse ich Dir die Fallunterscheidung noch im Code, sodass auch die Prozentwert-Beschriftungen in den Kacheln in einer passenden Größe erscheinen. Die vielen Formatanweisungen des ggplot lasse ich ebenfalls stehen – auf die Gefahr hin, dass es abschreckend wird. Aber so kannst Du den Code übernehmen und gleich loslegen:

# Wir berechnen die Farben DES VORLIEGENDEN Graphen, 
# in der richtigen Reihenfolge:
current_colours <- t2 %>% 
     arrange(Percent.per.Year) %>% 
     select(Intervals) %>% 
     unique() %>% 
     left_join(colourtable)

# Textgröße für Beschriftung der Zellen im Dreieck:
text.size <- case_when(
    period == "year" ~ 3,
    period == "quarter" ~1)

p <- ggplot(data = t2,
            aes(x = SellDate,
                y = BuyDate,
                fill = Intervals)) +
     geom_tile() +
     scale_fill_manual(values = current_colours$colours) +
     labs(title = paste("Renditedreieck", stock, sep = " "),
          x = "Verkauf",
          y = "Kauf") +
     # Ab hier folgen Formatanweisungen für die Darstellung:
     theme_minimal() +
     theme(panel.background = element_rect(fill = "white")) +
     scale_y_date(date_labels = "%Y", 
                  date_breaks = "5 years",
                  date_minor_breaks = "1 year") +
     scale_x_date(date_labels = "%Y", 
                  date_breaks = "5 years",
                  date_minor_breaks = "1 year") +
     geom_text(aes(label=paste(round(Percent.per.Year*100),
                               "%", sep = "")), 
               color="black",
               size = text.size) +
      guides(fill = guide_legend(title = NULL)) +
      theme(legend.position = c(0, 1), 
      legend.direction = "horizontal",
      legend.justification = c(0,1))

p

# Falls Du die Graphik abspeichern möchtest:
ggsave(filename = "MeinErstesrenditeDreieck.png",
       width = 20, height = 10, dpi = 300)

So erhalten wir nun endlich das Renditedreieck:

Renditedreieck des Dax für das Szenario: Kaufen – Liegen lassen – Verkaufen. Im Jahresrhythmus gerechnet. Vertikale Achse: Jahr des Kaufs. Horizontale Achse: Jahr des Verkaufs. In den Zellen abgebildet ist die jeweilige jährliche Rendite der Investition, Jahr für Jahr. Ohne Gebühren und Steuern gerechnet. Je nach dem, welchen Bildschirm Du verwendest, musst Du das Bild vergrößern, um alles lesen zu können. Du kannst es auch abspeichern (dafür mit der rechten Maustaste darauf klicken).

Wie Du das Renditedreieck liest

Auf der vertikalen Achse ist das Jahr des Kaufs dargestellt, auf der horizontalen das des Verkaufs. Es ergibt sich ein aufsteigendes Treppchen, weil man natürlich nicht früher verkaufen als kaufen kann. In den Kacheln dargestellt ist die jeweils erzielte Rendite der Anlage. Für jedes Verkaufsjahr entspricht die oberste Kachel, die „Stufe“ also, einer Haltezeit von einem Jahr. Bei einem gegebenen Einkaufsjahr gehst Du für längere Haltezeiten horizontal in das Dreieck hinein. Rote Kacheln entsprechen Verlusten, grüne Kacheln entsprechen Gewinnen und bei weißlich gefärbten wärst Du mehr oder weniger bei Null herausgekommen.

Schauen wir uns ein Beispiel an.

Wenn Du am 1. Januar 2002 in den Dax eingestiegen (vertikale Achse) und am 1. Januar 2003 schon wieder ausgestiegen wärst (horizontale Achse), was einer Haltezeit von einem Jahr entspricht, dann hättest Du satte 40% verloren. Allerdings hätte es sich gelohnt, die Nerven zu bewahren: bei einem Ausstieg schon im Folgejahr (eine Kachel weiter in horizontaler Richtung) hätten sich Deine Verluste auf 12% p.a. und bei einem Verkauf zum 1. Januar 2005 auf 6% p.a. begrenzt. Ab dem Jahr 2014 (bei gleicher vertikaler Position gehen wir auf der horizontalen Achse auf dieses Jahr) hättest Du aus Deiner Investition sogar eine jährliche Rendite von 5% herausgeholt. Bei einer Anlage von 1000 Euro im Jahr 2002 wären bis Anfang 2023 also 2790 Euro zusammengekommen, also mehr als doppelt soviel.

Ist das Zockerglück?

Für diese Frage schauen wir uns das Rendite-Dreieck genauer an: parallel zur Hypotenuse verlaufen die Linien gleichen Investitionshorizonts. Je größer der Abstand einer roten Kachel von der Hypotenuse desto länger hättest Du für diese Investition auf Dein Geld warten müssen. Über den gesamten Zeitraum betrachtet wäre eine Investition am 1. Januar 2000 die schlechteste gewesen, denn Du hättest selbst im Jahr 2010 noch ein Minus von einem Prozent pro Jahr gemacht. Das nächst-schlechte Einstiegsjahr wäre 2007 gewesen: bei einem Verkauf im Jahr 2012 hättest Du 2% Verluste pro Jahr eingefahren. Aber danach geht es nach oben.

Ist das „Zocken“?
Oder zahlt sich letztlich Geduld aus?

Wenn Du auf den Dax setzt, dann schließt Du eine Wette darauf ab, dass es mit der deutschen Wirtschaft, zumindest langfristig, „schon irgendwie bergauf gehen wird“. Im Betrachtungszeitraum heißt „langfristig“, dass Du einen Horizont von mehr als 10 Jahren mitbringen solltest, um auf der sicheren Seite zu liegen. Bei Berufseinstieg bringst Du etwa 40 Jahre mit.

Dax, Dow Jones oder MSCI World?

Eine andere spannende Frage ist natürlich: Soll ich wirklich in den Dax investieren? Oder lieber auf den Dow Jones setzen, einen MSCI-World-ETF kaufen oder doch in Einzelaktien gehen?

Solche Fragen beantwortet Dir Deine Bank sicher gerne – und empfiehlt Dir vielleicht stattdessen auch ein paar gemanagte Fonds – mit Ausgabeaufschlägen und Verwaltungsgebühren. Das kann durchaus eine sinnvolle Ergänzung oder Alternative sein. Dazu unten einige persönliche Gedanken.

Mein Vorschlag ist: baue das oben dargestellte Skript nach und passe die Variable „stock“ für den Index oder die Aktie an, die Dich interessieren. Und rechne auch einmal das Renditedreieck für den Nikkei. Du erinnerst Dich vielleicht: der hatte im Jahr 1990 seinen Höchststand…

Das Renditedreieck für den kontinuierlichen Sparplan

Unser bisheriges Szenario ist natürlich unrealistisch: Rentenpläne werden in der Regel kontinuierlich bespart. So könntest Du zum Beispiel beschließen, Monat für Monat 100 Euro zurückzulegen. Schön wäre es, wenn Du dabei nicht nachdenken müsstest: „Soll ich diesen Monat besser nicht, oder vielleicht ‚jetzt erst recht‘ kaufen?“

Ohne solche Gedanken hättest Du weniger Kopfschmerzen: Wenn alle von „Krise“ sprechen, dann machst Du genauso weiter wie zu Zeiten größter Euphorie. So wirst Du manchmal teuer einkaufen (zu „Bullenmarkt“-Zeiten, wenn alle sagen, dass Du kaufen sollst), manchmal günstig (in einer „Bärenmarkt“-Stimmung, wenn alle Dir davon abraten). Interessant wäre also, wie das Renditedreieck für dieses Szenario aussähe – und das hat ja schließlich auch das Deutsche Aktieninstitut gerechnet.

Wir stellen wir uns deshalb die Frage: welche Rendite, Jahr für Jahr, erhalten wir für solch eine kontinuierliche Investition? Um das zu rechnen, betrachten wir die Zahlungsströme: Monat für Monat gehen von Deinem Konto zum Beispiel 100 Euro in Richtung Sparplan ab und am Ende fließt Dir der Gesamtbetrag wieder zu. In Excel kannst Du mit der IKV-Funktion den „internen Zinsfluss“ oder „Zinsfuß“ solcher Geldströme berechnen. Meine Empfehlung ist: baue Dir damit ein Excelblatt. Das ist schnell gemacht.

Oder vielleicht doch lieber eine Wohnung kaufen? Oder Gold?

Solch ein Excelblatt kannst Du auch für andere Investitionen wie zum Beispiel für den Kauf einer Wohnung oder für die Bewertung eines Bausparvertrages, von der Spar- bis zur Darlehensphase, nutzen. Du erfasst in einer Spalte alle zunächst abfließenden und später eingehenden Zahlungsströme und berechnest dann den Zinsfluss mittels IKV-Funktion.

Diese Themen sind jedoch nicht meine Schwimmbahn. Anders als zum Beispiel in den USA sind in Deutschland die Daten zu Immobilienpreisen leider nicht transparent und öffentlich zugänglich. Für diesen Blog nutze ich öffentlich zugängliche Daten. Wenn Du also Ideen für Finanzmodellierungen einer Investition suchst, dann musst Du anderweitig fündig werden.

Und Gold?

Das wiederum ist sehr einfach: für die Variable „stock“ oben setzt Du „GC=F“ ein. Das ist das Symbol für den Goldpreis. Und schon hast Du Dein Gold-Renditedreieck.

Zur Berechnung des „Zinsfußes“

In R verwende ich das Paket jrvFinance und die irr()-Funktion („internal rate of return“). Ich möchte hier meine Vorgehensweise möglichst genau darstellen (ein großer Vorteil von R, Python & Co), sodass Du meinen Ansatz überprüfen kannst. Wenn ich einen Fehler mache, dann bitte ich um einen Hinweis!

Ich investiere jeden Monat den Wert 1 in ein Wertpapier, das zu diesem Zeitpunkt je Anteil beim Kurswert x steht. Das heißt: ich erwerbe 1/x Anteile. Wenn ich nun Monat für Monat den Wert 1 investiere, dann muss ich die Kehrwerte 1/x über alle Monate aufsummieren, um zu berechnen, wie viele Anteile ich im Laufe der Zeit erworben habe. Diese Anteile verkaufe ich am Ende der Zeit zu dem dann gültigen Kurswert. So erstelle ich folgende Funktion, die mir aus

  • dem „Einkaufskalender“ („schedule“: mit Spalten „Period“ und „Stock“)
  • dem Startdatum („date1“) der Käufe und
  • dem Verkaufsdatum („date2“)

den jeweiligen Zinsfuß berechnet:

Zinsfuss <- function(date1, date2) {

# Vektor aller Einkaufspreise:
buy <- schedule %>% 
       filter(Period >= date1, 
              Period < date2) %>% 
       pull(Stock)

# Anzahl der erworbenen Anteile:
shares <- sum(1/buy)

# Verkaufserlös:
sell <- shares*schedule$Stock[schedule$Period == date2]

# Da wir jeweils 1 investiert haben, 
# ist unsere Investitition rentabel 
# solange sell > length(buy) ist.

# Cashflow-Vektor:
my_cf <- rep(-1, length(buy)) %>% append(sell)

# Zinsfuss berechnen:
Zf <- jrvFinance::irr(my_cf)

# Das ist jedoch nur der monatliche Zinsfuss.
# Den müssen wir jetzt noch auf das Jahr umrechnen:
Zf.pa <- (1 + Zf)^12 - 1

return(Zf.pa) 

}

Diese Funktion greift auf die in der Variablen „schedule“ abgelegten monatlichen Aktienstände zurück, die wir wie folgt aus dem Yahoo-Finance-Download, also der Variable „Stock“, berechnen:

schedule <- Stock %>% 
     mutate(Period = floor_date(Date, "1 month")) %>% 
     group_by(Period) %>% 
     filter(Date == min(Date)) %>% 
     select(Period, Stock)

Mit dieser Funktion Zinsfuss() durchlaufe ich nun eine Schleife über die gesamte Tabelle t2 und erhalte folgendes Rendite-Dreieck:

Rendite-Dreieck des Dax bei monatlich gleichbleibenden Zukäufen.

„Von weitem betrachtet“ sieht dieses Dreieck dem vorherigen recht ähnlich. Bei näherem Augenschein sind durchaus Unterschiede erkennbar: vor allem treten zu Krisenzeiten deutliche vertikale Strukturen hervor: da Du zu Krisenzeiten günstig nachkaufst, überstehst Du die Krisen schneller!

Durch regelmäßigen Nachkauf kannst Du Krisen „aussitzen“. Bei Nachkauf bei Bärenstimmung und dann günstigeren Preisen hat sich Deine Anlage schneller wieder „berappelt“ als bei einer Einmal-Investition.

Wärst Du zum Beispiel zum 1. 1. 2000 eingestiegen, dann hättest Du im ersten Jahr 21% Verlust gemacht. Bei Ausstieg am 1. 1. 2003 wärst Du sogar bei -32% p.a. gelandet. Gerade jetzt wäre aber „Ruhe bewahren“ richtig gewesen, denn bis zum 1. 1. 2006 hättest Du mit Deinen monatlichen Investitionen „im Schnitt“ einen Zinsfluss von 7% p. a. erwirtschaftet.

Dein „wahres“ Investitionsszenario ist noch entspannter

Der kontinuierliche Kauf „entschärft“ also das Problem der Volatilität. Gerade wenn Du Deine Anlage als Altersvorsorge betrachtest, dann wirst Du vermutlich auch nicht alles auf einen Schlag abziehen. Vielmehr wirst mit Rentenbeginn auch kontinuierlich, zum Beispiel monatlich, entnehmen: in Bullenjahren wenige, hochpreisige Anteile und in Bärenjahren mehr niedrigpreisige Anteile, um so einen monatlich gleichbleibenden Bedarf zu decken. Dadurch entspannt sich die Situation noch einmal. Das heißt:

Je länger und je kontinuierlicher Du investierst und gleichmäßiger Du entnimmst, desto mehr bildet Deine Investition die langfristige Entwicklung ab.

Wenn Du also glaubst, dass es mit der deutschen, der amerikanischen, der Weltwirtschaft langfristig bergauf geht, dann solltest Du über einen Rentensparplan in ein Papier, das Deinen bevorzugten Index nachbildet, ernsthaft nachdenken. Das Renditedreieck hilft Dir bei der Entscheidung.

Die Vergangenheit lässt keine Rückschlüsse auf die Zukunft zu

Zu recht magst Du nun sagen: Schön und gut – aber kann ich mich auch in Zukunft darauf verlassen, dass meine Anlage nach spätestens 10 Jahren wieder gut dasteht?

Die Antwort kennst Du selbst.
Nein, verlassen können wir uns auf die Zukunft nicht.

Es stehen große Herausforderungen an: Vielleicht wandert die deutsche Industrie ja dorthin ab, wo die Energie billiger ist. Oder wir kriegen die Digitalisierung nicht hin. Oder in Deutschland oder Europa entstehen „japanische Verhältnisse“. Oder die Klimakrise stürzt die ganze Welt in den Abgrund. Oder die USA versinken im Chaos. Oder, oder, oder.

Vielleicht. Und deshalb müssen wir die Ärmel hochkrempeln. Aussitzen können wir – als Menschheit – diese Themen nicht. „Als Menschheit“ haben wir aber auch andere Dinge hingekriegt: nach zwei Weltkriegen eine neue Wirtschaftsordnung aufgebaut, extreme Armut halbiert, Corona irgendwie überstanden. Vielleicht wird jetzt trotzdem alles anders und schlimmer. Oder aber wir kriegen das Problem mit dem Fachkräftemangel in den Griff. Vielleicht startet Deutschland auch dank künstlicher Intelligenz so richtig durch. Aber all das ist eine andere Geschichte. Und die musst Du mit jemand anderem besprechen, denn als „Schuster“ bleibe ich hier bei meinem „OSAN-Leisten“.

Wie Du Dich zu diesen Themen positionierst hat natürlich auch Konsequenzen für Deine Wahl. Denn falls Du in den DAX investierst, dann wettest Du darauf, dass es mit der deutschen Wirtschaft gut weiter geht. Vielleicht traust, nur als Beispiel, den USA mehr zu? Dann könntest Du den Dow Jones wählen. Oder Du siehst über die nächsten Jahrzehnte Indien oder China vorn? Dann suche Dir entsprechende ETFs aus und schaue ihre Rendite-Dreiecke an. Oder Du wettest einfach darauf, dass es mit der gesamten Welt „schon irgendwie weitergeht“? Dann könntest Du den MSCI World auswählen (der allerdings Nordamerika übergewichtet – schaue deshalb bei jedem ETF oder Fonds rein, was drin ist in der Packung).

Eine nützliche Faustformel

Was Du im Hinterkopf behalten solltest:

Eine Geldanlage, die zum Zinssatz x% verzinst wird,
verdoppelt nach etwa 70/x Jahren ihren Wert.

Bei 2% also nach 35 Jahren. Bei 5% schon nach 14 Jahren und bei 7% nach 10 Jahren. Wenn Du rechtzeitig anfängst und so Zeit mitbringst, dann solltest Du Dir diese Effekte nicht entgehen lassen. Vor allem, wenn Du erst in 40 Jahren in Rente gehst.

Ein paar Tipps möchte ich Dir noch mit auf den Weg geben

So schwer ist es also nicht, mit doppelt soviel Geld in Rente zu gehen. Und so „steinig und schwer“ ist der Weg dahin auch nicht, selbst wenn Du ihn alleine gehst: Du musst regelmäßig Geld beiseite legen, in guten wie in schlechten Zeiten „einfach weitermachen“ und am besten schließlich genauso kontinuierlich Geld entnehmen.

Ich denke jedoch auch, dass dieses Thema wichtig genug ist und dass Du eigene Recherchen anstellen, mit Freunden, Eltern und mit Deiner Bank darüber sprechen solltest.

Meine „Schwimmbahn“ ist die Visualisierung von Daten. Die folgenden Gedanken möchte ich Dir dennoch nicht vorenthalten, da sie Dir helfen können, Dich auf diese Gespräche vorzubereiten. Du solltest sie aber unter dem Vorbehalt lesen, dass ich hier meinen Kompetenzbereich verlasse.

Bevor Du bei der Bank unterschreibst: Frage nach, welche Möglichkeiten deren Anlage Dir für Spar- und Entnahmephase bietet (z. B. die Möglichkeit, auch einmal auszusetzen, ganz auszusteigen oder eine größere Einzahlung zu tätigen) und wie hoch die Kosten dafür sind. Bei 5% Ausgabeaufschlag und 2% Verwaltungsgebühren pro Jahr muss ein Fonds schon richtig gut gemanagt sein, um „den Markt“, also den von Dir für einen ETF gewählten Index, zu schlagen. Bei all den zusätzlichen Features wie „Airbag“, „dynamische Anpassungen ohne zusätzliche Gesundheitsprüfung“ und „eingebaute Berufsunfähigkeitsversicherung“ lässt sich vielleicht gar nicht so genau sagen, wie hoch diese Gebühren tatsächlich sind. Dann ist für Dich der Geldfluss wichtig, den Du in Excel mit der IKV-Funktion in den Griff kriegst. Und stelle die Frage: ich schließe heute ab und verkaufe morgen wieder. Wieviel kriege ich zurück? – Denn DAS ist der Ausgabeaufschlag.

Eine weitere Idee Deiner Bank könnte sein, das Geld „zur Sicherheit“ mehreren Managern anzuvertrauen („lege niemals alle Eier in einen Korb“). Bei diesem Vorschlag solltest Du folgendes überlegen: Alle Manager zusammen bilden den Markt ab: manche performen besser, manche schlechter. Wie viele verschiedene Manager musst Du im Portfolio haben, um den Markt tatsächlich mehr oder weniger abzubilden? „Zur Sicherheit“ zehn? – Vielleicht kannst Du Dir dann die Verwaltungsgebühren für diese Manager auch sparen und gleich einen Index-ETF kaufen.

Aber Achtung: ETF ist nicht gleich ETF, auch wenn die Gebühren vernachlässigbar sind. Das siehst Du auch, wenn Du deren Renditedreiecke rechnest (sehr einfach: Du änderst die Variable „stock“ in dem Code oben).

Hier sind noch meine eigenen „Leitplanken“ für Investitionen – zum Teil habe ich dafür Lehrgeld bezahlt, das Du Dir vielleicht sparen kannst:

  • Ich kaufe ETFs nur zu transparenten und gut regulierten Märkten. Übersetzt für mich heißt das, dass ich mich auf demokratisch regierte Länder beschränke.
  • Ich bin vorsichtig bei „Nischen-ETFs“. Vieles klingt gut („Wasserstoff“, „ökologisch“, „sozial“, …). Und es ist sicher richtig, auf solche Trends zu setzen, wenn man an sie glaubt. Wenn mein „Traum-ETF“ aber eine Nische besetzt (wenige, kleine Unternehmen) und viele andere meinen Traum teilen, dann kann durch eben diese Anlagemöglichkeit die Nische „hochgejazzt“ werden – und es entsteht ein Blase. Ich schaue mir also an, welche und wie viele Unternehmen drin sind in dem ETF, wo sie beheimatet sind und wie groß sie sind.

Die Idee, die wir hier verfolgen, ist ohnehin: lasst uns nicht zu clever sein. Wir sind lieber konsistent (regelmäßig anlegen, liegen lassen, viel später regelmäßig entnehmen). Denn wenn Du auf den „Geheimtipp-ETF“ setzt, dann sagst Du ja insgeheim doch, dass Du schlauer bist als der Markt. Oder?

Ein Nachtrag noch: am 8. Juni hat die FAZ einen meiner Ansicht nach guten Artikel genau zu diesen Fragen veröffentlicht: „Sind ETFs wirklich besser?“. Vielleicht steigst Du damit einmal ein.

Wo ich Unterstützung gebrauchen kann

Es gelingt mir nicht, die exakten Werte des Rendite-Dreiecks für den MSCI World in dem oben zitierten Artikel der FAZ nachzubauen. Vielleicht wird mit einem anderen Stichdatum als dem 1. Januars gerechnet? Meine Zahlen erscheinen zudem allgemein etwas niedriger als die des Deutschen Aktieninstituts zu sein. Ist meine Zinsfußberechnung vielleicht doch falsch? Die Schlussfolgerungen bleiben die gleichen. Aber diese Unstimmigkeit würde ich gerne aufklären.

Welches Land ist „Klima-Weltmeister“?

Warum Du diesen Blog lesen solltest

Wenige Themen werden in der letzten Zeit so heiß diskutiert, wie das Klima. Das ist gut: als Gesellschaft müssen wir über die wichtigen Themen sprechen und brauchen eine Kultur der Debatten. Dabei lohnt es sich, auch einmal andere Länder unter die Lupe zu nehmen und zu schauen, was dort schon erreicht wurde.

In diesem Blog erfährst Du, wie Du selbst solche Vergleiche anstellen und danach gezielt nach Ländern suchen kannst, die Dich interessieren.

„Traue nur den Statistiken, die Du verstehst“

Ich möchte noch einmal auf meinen Beitrag vom Januar zurückkommen. Wir hatten damals gesehen:

  • Ein interessantes Maß für die Klimaeffizienz einer Volkswirtschaft ist das Bruttosozialprodukt, das je Kilogramm eingesetztes CO2 erwirtschaftet wird.
  • Es ist dabei sinnvoll, sowohl das absolute als auch das kaufkraftparitätische Bruttosozialprodukt zu betrachten.
  • Welches Land als „Sieger“ abschneidet hängt davon ab, wie viele der größten CO2-Emittenten in die Untersuchung einbezogen werden.
  • Wenn wir die 10 größten Emittenten betrachten, dann steht Deutschland vorn, unter den 20 größten schneidet Frankreich am besten ab.

Solche Ergebnisse erscheinen zwar interessant, laufen aber auf ein „es kommt halt darauf an“ hinaus und sind somit letztlich unbefriedigend. Vor allem möchte ich die Schlussfolgerung vermeiden, man solle keiner Statistik trauen, „die man nicht selbst gefälscht hat“. Denn worauf wollen wir uns bei wichtigen Themen sonst verlassen, wenn nicht auf wissenschaftliche Erkenntnisse und Statistiken?

Deshalb heute ein neuer Anlauf – mit einigen, so finde ich, interessanten Einsichten.

Um die Ergebnisse vorweg zu nehmen

  • Wenn Ihr mich fragt, dann ist die Schweiz Klimaweltmeister.
  • Dänemark hat über die letzten 30 Jahre seine Klimaeffizienz am meisten, nämlich um 440% gesteigert.
  • Es lohnt sich auch, in Frankreich, England und den nordischen Ländern (Schweden, Norwegen, Island, Irland) zu schauen, was sich dort über Klimaeffizienz lernen lässt
  • Ein Blick nach Singapur kann wichtige Einsichten geben, wenn es darum geht, Großstädte klimaeffizient zu gestalten und
  • der Stimme Brasiliens sollte im Klimakonzert das Gehör gegeben werden, das das Land sich als einer der „Gruppensieger“ verdient hat.

Wenn Du das nachprüfen möchtest, dann findest Du am Ende die wesentlichen Code-Zeilen dafür.

Wir verwenden R für unsere OSAN-Analysen

Wir betreiben „Open Source Analytics“ (OSAN) und verwenden dafür frei verfügbare Datenquellen und die Skript-, Berichts- und Webapplikationssprache R, die speziell für die Handhabung von Daten, Texten und Bildern entwickelt wurde. Du kannst Sie kostenfrei installieren. Sprachen wie R und auch Python bieten Dir viele Vorteile, zum Beispiel diese:

  1. Du hast auf einen Schlag Zugang zu den neuesten und besten Analysewerkzeugen inklusive Dokumentation. Du kannst Dich auch bequem von „generativer“ künstlicher Intelligenz wie ChatGPT bei der Erstellung Deines Skripts coachen lassen.
  2. Du kannst Deine Analysen ständig aktuell halten: Einmal „Run“ gedrückt und schon lädt Dein Skript wieder die neuesten Daten herunter und wertet sie für Dich aus.
  3. Als Team ist Eure Lernkurve steiler: Anders als bei „Klicksoftware“ kannst Du Dein Vorgehen inklusive aller „Tricks und Kniffe“ in Deinem Skript festhalten. So könnt Ihr beste Praktiken leicht untereinander teilen.
  4. Eventuelle Fehler in Deiner Analyse können von Dir oder anderen aufgespürt und korrigiert werden: Denn anhand des Skriptes können alle Dein Vorgehen genau nachvollziehen.

Heute möchte ich eine weitere Möglichkeit von R nutzen und aus mehreren Graphiken einen „Film“ erstellen. So lassen sich Daten Einsichten entlocken, die sonst vielleicht verborgen geblieben wären.

Unsere heutige Fragestellung und unser Vorgehen

Wenn nun davon abhängt, wie viele Länder in unsere Untersuchung einbezogen werden – vom größten bis zum kleinsten Emittenten, dann wollen wir jetzt wissen: Wer ist „Sieger“, wenn wir die größten 3, 5, 10, 30 oder 100 Emittenten einbeziehen? Wir gehen deshalb wie folgt vor:

  1. Wir besorgen uns den neuesten derzeit von der Weltbank zur Verfügung gestellten Datensatz. Das sind die Daten für das Jahr 2019 und zwar für 181 Länder.
  2. Wir sortieren diesen Datensatz absteigend nach den CO2-Emissionen je Land.
  3. Mit einer Variablen i durchlaufen wir dann eine Schleife über alle Länder.
  4. In jeder Schleife wählen wir die größten i CO2-Emittenten aus und sortieren diese absteigend nach ihrem Bruttosozialprodukt je kg CO2-Emission.

So können wir für die jeweilige Auswahl von Ländern

  • den jeweiligen „Klimaeffizienz-Gruppensieger“ innerhalb der i größten Emittenten ermitteln und
  • das dazugehörige „Siegertreppchen“ (erster Platz, zweiter Platz, …) graphisch darstellen.

Welches Land hält sich am längsten auf dem Siegerpodest?

Beim Durchlaufen dieser Schleifen fällt auf, dass manche Länder bei Hinzunahme von weiteren Ländern schnell vom „Siegerpodest gestoßen“ werden, andere sich länger halten. Diese jeweiligen „Gruppensieger“ unter den i = 1, 2, 3, … 181 größten Emittenten von CO2 können wir graphisch wie folgt darstellen. Die Schweiz ist nicht nur Siegerin, sie hält sich auch am längsten:

„Gruppensieger“ in Sachen Klimaeffizienz. Bruttosozialprodukt in Dollar.

Lesen wir diese Graphik einmal genauer: Wenn wir nur den größten Emittenten China einbeziehen, dann ist, trivialerweise, China mit einem Bruttosozialprodukt von $1.33 je kg CO2 der „einsame Sieger“. Unter den ersten zwei bis vier größten Emittenten schneiden zunächst die USA am besten ab, dann übernimmt kurzfristig Japan. Deutschland steht vorn, sobald die größten sechs Emittenten betrachtet werden und wird erst von dem Emittenten Nr. 17, dem Vereinigten Königreich abgelöst, das kurz darauf an Frankreich abgibt bis schließlich der Emittent Nr. 60, die Schweiz, die Nase vorn hat und behält: die Schweiz erwirtschaftet sagenhafte $19.30 je eingesetztes Kilogramm CO2.

Nun ist diese Betrachtung ein wenig „ungerecht“: die Kaufkraft eines Dollars ist von Land zu Land verschieden. Kaufkraftparitätisch betrachtet stellt sich die Lage tatsächlich mit interessanten Nuancen dar.

So übernimmt zwischenzeitlich Brasilien mit $4.76 je kg CO2 die Führung: angesichts der Kaufkraft eines Dollars in Brasilien setzt das Land seine CO2-Emissionen also im Sinne der eigenen Bevölkerung effizient für die Erwirtschaftung des Bruttosozialprodukts ein. Wenn Präsident Lula eine Führungsrolle im Kampf gegen den Klimawandel beansprucht, dann legt das Land dafür also durchaus eigene Leistungen in die Waagschale – was nicht zuletzt auch Deutschland neulich durch eine Einzahlung in Höhe von 35 Millionen Euro in den Amazonas-Fond honoriert hat.

Kurzfristig erscheint auch Singapur als „Gruppensieger“ zwischen Frankreich und der Schweiz: ein Pionier, wenn es darum geht, Großstädte grüner und klimaeffizienter zu gestalten. In dieser Betrachtung wird auch die Schweiz von Uganda und Uganda schließlich von der Demokratischen Republik Kongo abgelöst. Auch hier bleibt die Schweiz am längsten in der Pole-Position:

„Gruppensieger“ in Sachen Klimaeffizienz. Kaufkraftparitätisches Bruttosozialprodukt. Die Schweiz bleibt am längsten in der Pole-Position.

Wir halten fest:

Unter den derzeit 36 OECD-Ländern (Organisation for Economic Co-Operation and Development, laut Economist ein „Club zumeist reicher Länder„) ist die Schweiz der eindeutige Sieger. Sie hat auch am längsten „die Nase vorn“ und erwirtschaftet ca. 19 Dollar Bruttosozialprodukt je eingesetztes Kilogramm CO2.

Deutschland mag vielleicht nur wenige Inspirationsquellen in Uganda oder der demokratischen Republik Kongo finden, die in der kaufkraftparitätischen Betrachtung deutlich besser abschneiden. Ein Blick über die Grenze nach England, Frankreich oder in die Schweiz erscheint aber durchaus lohnenswert: diese Volkswirtschaften sind so unterschiedlich nicht. So kommen zum Beispiel der Schweizer Verwaltung zufolge 61,5% des eidgenössischen Stroms aus Wasserkraft, 28,9% aus Kernkraft und weitere 7,7% aus neuen erneuerbaren Energien. Die Liste der deutschen Wasserkraftwerke ist ebenfalls beachtlich. Wie könnten diese im Verbund mit Wind und Sonne am besten genutzt werden?

Oder – wir setzen uns jetzt den schwarzen Denkhut auf – ist die Schweizer Wasserkraft vielleicht durch sinkende Schneemengen in den Alpen bedroht? Und wo kommen die Brennstäbe  für die Atomkraftwerke in Frankreich und der Schweiz her? Wo landen sie, wenn sie ausgebrannt sind? Wir könnten uns hier auf eine Diskussion um Atom, Wasser, Wind und Sonne nur insofern einlassen, als ein neugieriger Blick auf unsere Nachbarn bestimmt nicht schadet.

Und wie sieht das jeweilige Siegertreppchen aus?

Die vorherigen Graphiken zeigen, welches Land wie lange „die Nase vorn hat“. Aber welche Länder folgen darauf und wie dicht sind sie dem jeweiligen Sieger auf den Fersen? Vielleicht stoßen wir ja auf weitere Länder, von denen sich etwas lernen ließe.

Beim Durchlaufen der oben besprochenen Schleife habe ich deshalb das „Siegertreppchen“ auch graphisch dargestellt (z.B. die 10, 20 oder 30 größten Emittenten nach absteigender Klimaeffizienz angeordnet) und daraus einen „Film“ erstellt. Dank R ist das mit wenigen Zeilen Code getan:

„Siegertreppchen“ in Sachen Klimaeffizienz der Volkswirtschaft – je nachdem wie viele der größten CO2-Emittenten betrachtet werden. Bruttosozialprodukt in Dollar.

Wir sparen uns hier den „Film“ in kaufkraftparitätischer Betrachtung und stellen vielmehr fest, dass die „nordischen Länder“ Schweden, Norwegen, Island, Irland und Dänemark in Sachen Klimaeffizienz ebenfalls weit vorne liegen.

Wie entwickelt sich die Klimaeffizienz der Länder über die Zeit?

Hier möchte ich die deutsche Perspektive einnehmen und deshalb die eher vergleichbaren Volkswirtschaften der „high income countries“ (blau in der Graphik) hervorheben. Die Entwicklung aller anderen Länder sollen jedoch (in grau) sichtbar bleiben. Unter den anderen Ländern wähle ich zudem die vier größten Emittenten aus, sodass wir auch diese verfolgen können. Da die Länder sehr verschieden groß sind, stelle ich die Emissionen auf der vertikalen Achse in logarithmischer Auftragung dar:

Emissionen der high-income Länder im Laufe der Zeit – aufgetragen gegen die Klimaeffizienz. Das Bruttosozialprodukt wird in „current dollars“ (CD) und nicht in kaufkraftparitätischen gemessen.

Ich finde erstaunlich, wie gut in dieser Darstellung das „Durchstarten“ in Sachen Klimaeffizienz der Länder Schweiz, Schweden, Norwegen und auch Dänemark sichtbar wird: bei nahezu konstanten Emissionen vergrößern sie signifikant ihre Volkswirtschaften und die Klimaeffizienz (GDP.CD.per.CO2E.kg) driftet folglich horizontal weg. Wir schauen uns deshalb den zeitlichen Verlauf gesondert an:

Zeitliche Entwicklung der Klimaeffizienz ausgewählter Volkswirtschaften.

Die Schweiz hat also die Klimaeffizienz ihrer Wirtschaft in dem Zeitraum von 1990 bis 2919 mehr als verdreifacht, von 6,13 Dollar Bruttosozialprodukt je eingesetztes Kilogramm CO2 auf 19,30 Dollar. Auch Deutschland hat solch eine Verdreifachung erreicht, und zwar von 1,80 Dollar/kg auf 5,91 Dollar/kg. Wir sind also im Jahr 2019 fast dort, wo die Schweiz im Jahr 1990 stand.

Nun magst Du diese absolute Betrachtung für „ungerecht“ halten: wenn Du am Anfang eines Fitnessprogramms zwei Klimmzüge geschafft hast und nachher sechs, dann ist bist Du vielleicht noch mehr stolz darauf als jemand, der sich von 10 auf 14 gesteigert hat. Wir schauen uns das deshalb genauer an und beziehen dafür die Werte für jedes Jahr und Land auf die jeweiligen Werte des Jahres 1990:

Klimaeffizienz im Vergleich zum Bezugsjahr 1990. Dänemark erreicht eine Steigerung um 440%.

Der Überraschungssieger in dieser Auftragung heißt

Dänemark.

Dänemark holt im Jahr 2019 im Vergleich zum Bezugsjahr 1990 fast viereinhalb mal soviel Bruttosozialprodukt aus jedem Kilogramm eingesetzten CO2 heraus.

Nun magst Du zu recht einwenden, dass wir unsere Betrachtungen auf die Werte eines einzigen Jahres beziehen: was wäre, wenn wir stattdessen die Werte des Jahres 1989 (die nicht vorliegen) oder die des Jahres 1991 zugrunde gelegt hätten? Anstatt das auszuprobieren, ziehen wir alle zur Verfügung stehenden Jahre heran und führen in einer Schleife, Land für Land, eine Regressionsanalyse durch und bestimmen so die durchschnittliche jährliche Änderung.

Lass mich hier – als Übergang zum folgenden DIY-Abschnitt – dafür den Code teilen und erläutern. Zunächst erstellen wir eine Tabelle t für die Jahre, die unsere Werte enthalten (1990 bis 2019). Wir nehmen Zeilen mit NA-Werten und solche Werte heraus, die durch Teilen durch Null erzeugt wurden und wählen die uns interessierenden Spalten aus. Wir ziehen uns daraus eine Liste der Länder und zählen diese:

t <- indicatortable %>% 
        filter(year >= 1990, year <= 2019) %>% 
        drop_na() %>% 
        filter(!is.infinite(GDP.CD.per.CO2E.kg)) %>% 
        select(year, country, 
               EN.ATM.CO2E.KT, 
               NY.GDP.MKTP.CD, 
               GDP.CD.per.CO2E.kg)

laender <- unique(t$country)
anz <- length(laender)

So können wir die gewünschte Ergebnistabelle erstellen, die wir dann in der folgenden Schleife mit Werten befüllen. „Puristen“ mag das hemdsärmelig erscheinen. Wenn Du eine elegantere Methode kennst, dann lass mich das gerne wissen!

res <- data.frame(
   Land = rep(NA, anz),
   Steigerung = rep(NA, anz), # jährl. Steigerung der Klimaeffizienz
   R2 = rep(NA, anz),         # R2 dieser Steigerung
   PWert = rep(NA, anz),      # Signifikanz der Steigung
   Emissionen = rep(NA, anz), # Emissionen in kt im letzten Jahr
   GDP = rep(NA, anz),        # BSP in current dollar im letzten Jahr
   Effizienz = rep(NA, anz)   # Klimaeffizienz im letzten Jahr
)

Nun können wir die Tabelle befüllen. Dafür filtern wir aus t zunächst nur das jeweilige Land, führen eine Regressionsanalyse durch (lm, „linear model“), legen die Ergebnisse in der Variablen s ab und ziehen uns dann den Koeffizienten der Steigung, den Regressionskoeffizienten R2 und den P-Wert. Ein bisschen Debugging für fehlende Werte kommt noch hinzu:

for (i in 1:length(laender)) {

  land <- laender[i]

  dat <- t %>% filter(country == land)
  model <- lm(data = dat, 
                     GDP.CD.per.CO2E.kg ~ year)
  s <- summary(model)

  res[i, 1] <- land
  res[i, 2] <- s$coefficients[2,1]
  res[i, 3] <- s$r.squared
  res[i, 4] <- round(s$coefficients[2,4], 3) # P-Wert linear

  # Wir müssen noch einen Fehler abfangen, 
  # denn für manche Länder gibt es keine Daten.
  if(2019 %in% dat$year) {
    res[i, 5] <- dat$EN.ATM.CO2E.KT[dat$year == 2019]
    res[i, 6] <- dat$NY.GDP.MKTP.CD[dat$year == 2019]
    res[i, 7] <- dat$GDP.CD.per.CO2E.kg[dat$year == 2019]
  }
}

Mit dieser Ergebnis-Liste res kannst Du viel anfangen. So finden wir zum Beispiel über

nochange <- res %>% 
   filter(PWert > 0.05)

alle Länder, in denen sich die Klimaeffizienz in den fast 30 Jahren nicht signifikant geändert hat und mit

degradation <- res %>% 
   filter(Land %notin% nochange$Land) %>% 
   filter(Steigerung < 0)

einige Länder, in denen sich die Lage sogar verschlechtert hat. Anschauen möchten wir uns die Länder, in denen sich die Lage verbessert hat. Dafür sortieren wir absteigend um das Land in dieser Reihenfolge für die folgende Graphik als Faktor zu definieren:

improvement <- res %>% 
   filter(Land %notin% nochange$Land) %>% 
   filter(Land %notin% degradation$Land) %>% 
   arrange(desc(Steigerung))

improvementdata <- t %>% 
  filter(country %in% improvement$Land)

improvementdata$country <- factor(improvementdata$country, 
                                  levels = improvement$Land)

ggplot(data = improvementdata %>%
         filter(country %in% improvement$Land[1:12]),
       aes(x = year,
           y = GDP.CD.per.CO2E.kg)) +
  geom_line() + 
  geom_smooth(method = "lm", 
              formula = y ~ x, 
              se = T) +
  facet_wrap(~ country, ncol = 3)

So erhalten wir folgende Graphik:

Länder mit der größten jährlichen Steigerung der Klimaeffizienz ihrer Volkswirtschaft

Wir stoßen auf alte Bekannte wie die Schweiz, die nordischen Länder und Singapur. Aber auch Ruanda hat seine Klimaeffizienz Jahr für Jahr um 25 Dollarcent je Kilogramm CO2 verbessert. Malta hat gerade in den letzten Jahren stark zugelegt: was ist da geschehen? Und seit Daten für diese Länder vorliegen sind auch Djibouti – sogar noch vor der Schweiz – und Somalia mit dabei. Uganda ist in dieser Betrachtung, in der es nicht um „Leistung“ sondern um Verbesserung geht, weit abgeschlagen.

Du magst Dich fragen: wo sind Länder wie die Niederlande, Belgien, Luxemburg oder auch Finnland? Die sind alle da. Sie haben sich nur nicht in unseren Algorithmen „verheddert“. In der letzten Untersuchung der Verbesserung finden wir für Luxemburg eine jährliche Steigerung von $0.24/kg (sehr konsistent bei einem R^2 = 94%), Finnland legt Jahr für Jahr um $0.17/kg (bei R^2 = 86%) zu, Belgien liefert $0.16/kg ab (R^2 = 88%) und die Niederlande $0.15/kg (R^2 = 87%).

Jede Auswahl ist ungerecht – egal welcher Algorithmus sie trifft. Deshalb also mein Tipp:

Do it yourself!

Ich teile im Folgenden die wichtigsten Codezeilen, sodass Du diese Überlegungen nachvollziehen, prüfen oder erweitern kannst.

Ich habe die folgenden Bibliotheken verwendet:

library(WDI)                   # Zugang zu den Weltbankdaten
library(ggrepel)               # Daten ohne Überlapp beschriften
library(tidyverse)             # Einfache Handhabung von Daten
library(ggthemes)              # Schöne Graphiken

'%notin%' <- Negate('%in%')    # Vereinfacht einige Code-Zeilen

So beschaffst Du Dir die Daten der Weltbank und bereitest sie auf:

# Wir wählen die uns interessierenden Indizes heraus.
# https://data.worldbank.org/, "browse by indicator").

indicators <- data.frame(
    ID = 
       c("EN.ATM.CO2E.PC", 
         "EN.ATM.CO2E.KT", 
         "NY.GDP.MKTP.CD",
         "NY.GDP.PCAP.PP.CD", 
         "NY.GDP.MKTP.PP.CD", 
         "SP.POP.TOTL"),
    details = 
       c("CO2 emissions (metric tons per capita)", 
         "CO2 emissions (kt)", 
         "GDP (current US$)",
         "GDP per capita, PPP (current international $)", 
         "GDP, PPP (current international $)", 
         "Population, total")
)

# Indizes laden:
indicatortable <- WDI(indicator = indicators$ID,
                      extra = TRUE)

# Klimaeffizienz berechnen, in 
# - Kaufkraftparität (PP)
# - und in "Current Dollars" (CD):
indicatortable <- indicatortable %>% 
  mutate(GDP.PP.per.CO2E.kg = NY.GDP.MKTP.PP.CD/EN.ATM.CO2E.KT/1e6,  
         GDP.CD.per.CO2E.kg = NY.GDP.MKTP.CD/EN.ATM.CO2E.KT/1e6) 

# Letztes verfügbares Jahr:
y2019 <- indicatortable %>% 
             filter(year == 2019)

So erstellst Du das „Siegertreppchen“:

# Anzahl der betrachteten größten CO2-Emittenten:
n <- 70

# Aus diesen: Anzahl der CO2-effizientesten Länder:
m <- 30

# Daten erstellen:
plotdat <- y2019 %>% 
    arrange(desc(EN.ATM.CO2E.KT)) %>% 
    slice(1:n) %>% 
    arrange(desc(GDP.CD.per.CO2E.kg))

# Reihenfolge in der Graphik über Faktor festlegen:
plotdat$country <- 
  factor(plotdat$country, 
         levels = rev(plotdat$country))

# Wesentliche Element des Plots.
# "Verschönerungen" habe ich der Einfachheit weggelassen:
ggplot(data = plotdat[1:m, ], 
       aes(x = GDP.CD.per.CO2E.kg, 
           y = country)) +
geom_bar(stat = "identity") +
geom_text(aes(label = paste("$", 
                            round(GDP.CD.per.CO2E.kg,2), 
                            sep = "")), 
          position = position_dodge(width = 1),
                                    hjust = 0, 
                                    vjust = 0.5)

So erstellst Du die Graphik für die „high income“ Länder und speicherst in einer Schleife die Graphiken ab:

# Liste aller high-income Länder in 2019:
hic2019 <- y2019 %>% 
  filter(income == "High income") %>% 
  select(country) %>% pull()

# Große Emittenten, die wir auch namentlich benennen wollen:
special <- y2019 %>% 
  filter(country %notin% hic2019) %>% 
  arrange(desc(EN.ATM.CO2E.KT)) %>% 
  slice(1:4) %>% 
  pull(country)

# Graphik fest skalieren:
xmax_graph <- max(indicatortable$NY.GDP.MKTP.CD, na.rm = T)
ymax_graph <- max(indicatortable$EN.ATM.CO2E.KT, na.rm = T)


# Schleife:

for (my_year in 1990 : 2019) {
  
  
  t <- indicatortable %>% 
    filter(year == my_year)
  
  # Zwei Gruppen:
  hic <- t %>% 
    filter(country %in% hic2019)
  
  rest <- t %>% 
    filter(country %notin% hic2019)
  
  # Grosse Emittenten:
  grE <- t %>% 
    filter(country %in% special)
  
  # Ein recht komplexer Plot mit vielen "Layers":
  plot <- ggplot() +
    geom_point(data = rest,              # Rest soll unten liegen
               aes(x = NY.GDP.MKTP.CD,
                   y = EN.ATM.CO2E.KT,
                   size = SP.POP.TOTL),
               fill = "grey", 
               shape = 21) +
    geom_point(data = hic,               # Darüber hi-Länder
               aes(x = NY.GDP.MKTP.CD,
                   y = EN.ATM.CO2E.KT,
                   size = SP.POP.TOTL),
               fill = "blue",
               shape = 21) +
    geom_text_repel(data = hic,          # Beschriftung hic
                    aes(x = NY.GDP.MKTP.CD,
                        y = EN.ATM.CO2E.KT,
                        label = country)) +
    geom_text(aes(x = xmax_graph,        # Jahreszahl der Graphik
                  y = 0, 
                  label = my_year), 
              hjust = 1, vjust = 0, size = 20) +
    geom_text(data = grE,                # Beschriftung rest-Länder
              aes(x = NY.GDP.MKTP.CD, 
                  y = EN.ATM.CO2E.KT, 
                  label = country),
              color = "black") +
    xlim(c(0,xmax_graph)) + 
    ylim(c(0,ymax_graph)) +
    scale_y_continuous(trans='log10') + 
    scale_x_continuous(trans='log10')

  
  name <- paste("graph", my_year, ".png", sep = "")
  ggsave(name,
         plot, 
         width = width, height = height)
  
  print(my_year)   # Damit uns nicht langweilig wird
}

So erstellst Du den „Film“ für diese Graphiken. Den „Treppchenfilm“ erstellst Du analog:

library(gifski)
imgs <- list.files(pattern="*.png")
imgwidth <- 1000
imgheight <- round(imgwidth/ratio, 0)
gifski(imgs, 
       gif_file = "name_der_animation.gif", 
       width = imgwidth, 
       height = imgheight, 
       delay = 0.5) # delay in Sekunden

Hier erstellen wir die Graphik für die Klimaeffizienz der ausgewählten Länder:

# Liste L, gleich in richtiger Reihenfolge für Faktor:
L <- c("Switzerland", "Sweden", "Denmark", 
       "Norway", "France", "Germany") 

# Datentabelle erzeugen:
t <- indicatortable %>% 
     filter(country %in% L,
            year >= 1990) %>% 
     select(year, country, 
            EN.ATM.CO2E.KT, 
            NY.GDP.MKTP.CD, GDP.CD.per.CO2E.kg) %>% 
mutate(country = factor(country, levels = L))

# Graphik, ohne "Verschönerungen:
ggplot(data = t, 
       aes(x = year,
           y = GDP.CD.per.CO2E.kg,
           colour = country))

# So berechnen wir die Daten für die "relativ-Graphik":
trel <- t %>%
  select(year, country, GDP.CD.per.CO2E.kg) %>% 
  arrange(country, year) %>% 
  group_by(country) %>%
  mutate(Relativ = GDP.CD.per.CO2E.kg / GDP.CD.per.CO2E.kg[1])

Wir tummeln uns am Aktienmarkt

Warum Du diesen Beitrag lesen solltest

Vielleicht interessieren Dich Aktien. Vielleicht findest Du aber einfach auch nur spannend, welche Einsichten möglich sind, wenn Märkte transparent und Daten dazu verfügbar sind? Dann bietet Dir dieser Beitrag einen ersten Einblick. Wie sonst auch ist der Ansatz, die Analysen selbst durchzuführen.

Unsere heutige Fragestellung

Wir haben uns bisher öffentlich verfügbare Daten im Licht „einer großen Sache“ angesehen: Klimawandel oder Demokratie. Heute wollen wir die Füße auf dem Boden behalten und über Aktien sprechen.

Hältst Du Aktien und möchtest wissen, wie sie „performen“? Wenn Du „Adidas Aktie“ in Deine Suchmaschine eingibst, dann siehst Du sofort Stand  und Entwicklung. Das ist sehr praktisch. Aber vielleicht möchtest Du sehen, wie sich Deine Aktie im Vergleich zum DAX oder zu anderen Werten entwickelt hat. So fragt zum Beispiel der Economist vom 25. März 2023, ob Adidas jemals zu Nike wird aufschließen können und nimmt in dem Artikel „No Yeezy answers“ dabei auch die Aktie von Puma mit in den Blick.

Wenn Du „richtig“ mit Aktien handelst, dann kennst Du für solche Vergleiche vermutlich einige einschlägige Seiten, die auch weitergehende Analysen erlauben. Aber warum solltest Du Dich damit auseinandersetzen und all die Tricks und Kniffe lernen, wenn Du Dir mit wenigen Zeilen Code Deine eigenen Analysewerkzeuge bauen kannst?

Der Vorteil von DIY („do it yourself“):

Du bist von niemandem abhängig.

Du weißt genau, was Du tust.

Du bleibst flexibel.

Wie wir vorgehen wollen

Wir verwenden wieder die Skript-, Berichts- und Webapplikationssprache R, die speziell für die Handhabung von Daten, Texten und zunehmend auch Bildern entwickelt wurde. Du kannst Sie kostenfrei installieren und hast so auf einen Schlag Zugang zu den neuesten und besten Analysewerkzeugen.

Der Vorteil unserer Herangehensweise hier liegt vor allem auch darin, dass Du Deine Analysen ständig aktuell halten kannst: einmal „Run“ gedrückt und schon lädt Dein Skript wieder die neuesten Daten von Adidas, Puma, Nike und welchem Unternehmen oder Aktienindex auch immer herunter und wertet sie für Dich aus. Wenn Du möchtest, dann kannst Du Dein Skript auch in eine Webapplikation einbauen und schon sind Deine Werkzeuge und Analysen allgemein zugänglich.

Diese Möglichkeiten hast Du auch mit Python. Ich verwende R.

Ein Beispiel von dem, was möglich ist

Bevor wir loslegen, möchte ich Dir ein Beispiel dafür zeigen, was sich mit frei verfügbaren Aktiendaten machen lässt.  Diese App erlaubt Dir, den Aktienstand und die Entwicklung verschiedener Unternehmen zu vergleichen. Dabei habe ich eine gewisse Auswahl getroffen, die hier jedoch keine Rolle spielt. Schau es Dir einfach an: so etwas ist möglich.

Warum wir heute auf ausgefeilte Werkzeuge verzichten

Mit Aktiendaten lassen sich Einsichten gewinnen und mit Einsichten fällst Du bessere Entscheidungen. Also sind Aktiendaten etwas wert. Interessanterweise stellt Yahoo Finance trotzdem sämtliche Aktiennotierungen umsonst zur Verfügung. Mit dem Paket „quantmod“ kannst Du Dir die Daten einfach beschaffen und zahlreiche ausgebuffte Analysen durchführen (siehe dazu die Doku). Wir wollen darauf verzichten und nutzen quantmod nur, um an die Daten heranzukommen.

Falls Du ein Trader bist, der sich mit mit diesem Paket ausgetüftelte Analysen zurechtlegt, dann mag Dir mein heutiges Vorgehen wie eine Verschwendung vorkommen: all diese tollen Werkzeuge einfach links liegen lassen! Ich ziehe in diesem Blog jedoch, egal mit welchen Daten, „einfach immer den gleichen Stiefel durch“. Es geht mir nicht um das Traden sondern um die Analyse von frei verfügbaren Daten. Beim nächsten Mal werden wir uns wieder andere Daten anschauen und wollen möglichst analog vorgehen können.

Falls Du ein Trader bist oder werden möchtest und Du Dir nach diesem Beitrag R herunterlädst und Dich in quantmod einfuchst, dann lass es mich wissen, denn dann, aber nicht nur dann, hat sich dieser Beitrag gelohnt.

Woher Aktiendaten nehmen wenn nicht stehlen?

Ehrlich gesagt weiß ich gar nicht, ob Du Dir Aktiendaten auch anderweitig bequem herunterladen und dann mit Excel analysieren kannst. Mit R ist es jedenfalls sehr einfach:

# Verwendete Pakete
library(tidyverse)
library(quantmod)

# Diese Kurse wollen wir uns beschaffen:
aktie <- "ADS.DE"        # Adidas an der Frankfurter Börse
index <- "^GDAXI"       # DAX

# Wir wollen ständig 20 Jahre zurückblicken können:
end <- Sys.Date()-1     # gestern
start <- end - 365*20   # vor 20 Jahren


Stock <- getSymbols(aktie, 
                    from = start, 
                    to = end, 
                    auto.assign = FALSE)

Das war’s eigentlich schon. Wenn Du Dir das so erzeugte xts-Objekt anschaust, dann siehst Du, dass Tag für Tag Werte für Open, High, Low, Close, Volume und „Adjusted“ erfasst werden. Das ist für Aficionados. Wir verzichten hier darauf. In der praktischen „Pipe“-Logik tun wir folgendes (ich beschreibe den folgenden Code, und lese dabei die Pipe „%>%“ als „dann“):

  • Nimm die Daten in der Variablen „Stock“
  • Dann mache daraus einen data.frame
  • Dann erstelle aus den Zeilennamen eine Spalte
  • Dann lass alle na-Einträge fallen
  • Dann wähle nur Spalte 1 und 5.

Wir vergeben zudem handliche Spaltennamen und verwandeln die Datumsspalte vom Typ „character“ in den Typ „date“, sodass wir damit rechnen können. Diese beiden Zeilen habe ich nicht in die „Pipe“ mit eingefügt. Ich halte meinen Code so für lesbarer.

Jetzt können wir uns die Entwicklung des Aktienkurses anschauen. Falls Du ggplot kennst, dann möchte ich hinzufügen: es gibt Gründe, die Du später erkennen wirst, warum ich die Definition der Daten und der Ästhetik (aes) in geom_point() hereinnehme und nicht bei ggplot() belasse:

Werte <- Werte %>% 
         as.data.frame() %>% 
         rownames_to_column() %>% 
         drop_na() %>% 
         select(1, 5)



colnames(Stock) <- c("Datum", "Adidas")
Stock$Datum <- as.Date(Stock$Datum)

ggplot() +
  geom_point(data = Stock,
             aes(x = Datum, y = Adidas))

Aktienkurs der letzten 20 Jahre von Adidas. Stand: 31. März 2023

Du magst Dich vielleicht fragen, was Anfang 2015 passiert ist, dass die Aktie in der Folge „so abgeht“. Karsten Rorsted wurde jedenfalls erst am 1. Oktober 2016 zum CEO berufen – und am 22. August wurde bekannt gegeben, dass sich das Unternehmen wieder einvernehmlich von ihm trennt. Diese beiden Ereignisse habe ich über die roten Linien dargestellt.

Solche Überlegungen sind natürlich der Grund, warum man sich überhaupt Aktienkurse anschaut. Heute geht es mir aber nicht um das Thema, also den Einfluss, den Führungskräfte auf die Unternehmensbewertung haben, sondern darum, wie Du diese Fragen sehr einfach selbst stellen und quantitativ bewerten kannst.

Wie entwickelt sich Adidas im Vergleich zum DAX?

Die Daten für den DAX kannst Du Dir analog zu den Code-Zeilen oben beschaffen. Und nun kommt das Problem: Wir möchten beide Kursverläufe gemeinsam darstellen, um zum Beispiel die Frage zu beantworten: schlägt Adidas den Dax? Dafür wird üblicherweise die Entwicklung relativ zu einem gewissen „Einstiegsdatum“ betrachten: Wenn Du am 1. Oktober 2016 Adidas und den DAX für je 100 Euro gekauft hättest, wo würden diese Papiere heute stehen? So wählt der oben zitierte Artikel des Economist dieses Datum, eben das Einstiegsdatum von Karsten Rorsted bei Adidas, für seinen Vergleich zwischen Adidas, Puma und Nike.

Schauen wir uns das einmal an. Ich zeige die Rechnung für Adidas und lasse alle Formatierungsanweisungen wie Farbzuweisungen der Einfachheit halber weg. Da ich die Daten erst in „geom_line“ definiere kann ich die beiden Datensätze in den Plot „hineinaddieren“:

RefDatum <- "2016-10-04"
RefAdidas <- Stock %>% 
             filter(Datum == RefDatum) %>% 
             pull(Adidas)

Stock$Performance <- Stock$Adidas/RefAdidas
ggplot() +
   geom_line(data = Index,
             aes(x = Datum, y = Performance)) +
   geom_line(data = Stock,
             aes(x = Datum, y = Performance))

Vergleich von Adidas (blau) und Dax (grau). Referenzdatum: 4. Oktober 2016.

Adidas hat den Dax also zwischenzeitlich um Längen geschlagen und seinen Wert im Vergleich zum 4. Oktober 2016 im Januar 2020 und im Juli und August 2021 sogar mehr als verdoppelt, ist dann aber deutlich zurückgefallen und steht Ende März 2023 wieder in etwa beim Ausgangspunkt vom Oktober 2016.

Keine Taschenspielertricks!

Wenn Du in der Strategieabteilung eines aktiennotierten Unternehmens sitzt, dann kennst Du vermutlich folgendes Dilemma: „Lasst uns vielleicht nicht den 4. Oktober sondern lieber den 10. November 2016 als Referenzdatum nehmen“. Der 1. Oktober war ein Samstag und der 4. Oktober war der erste Handelstag nach Rorsteds Einstieg. Der Kurs stand an dem Tag bei 157,40 Euro. Am 10. November stand er dagegen bei 131,70 Euro, also ganze 16% tiefer. Die Entwicklung relativ zum 10. November fällt also entsprechend positiver aus…

Ich verwende Aktienanalysen nicht, um meine eigene Rendite bei bestimmten Papieren zu berechnen und wieviel ich gemacht hätte, wenn ich am Tag X stattdessen einen anderen Wert gekauft hätte. Mir geht es eher um „Ursache-Wirkung“. Und dabei kann ich solche „Taschenspielertricks“ nicht gebrauchen und möchte meine Analyse auch nicht der täglichen Schwankung eines Wertes unterwerfen. Deshalb verwendet die oben schon gezeigte App auch nicht nicht ein Referenzdatum sondern einen Referenzzeitraum, über den Du mitteln kannst. Startpunkt und Dauer des Zeitraums kannst Du in der App bequem wählen und auch unter verschiedenen Vergleichsindizes auswählen. So kannst Du überprüfen, wie robust Deine Aussagen gegen die Wahl von diesen Randbedingungen ist.

Ich halte solche Betrachtungen zu Robustheit einer Aussage für unerlässlich, wenn Du Hypothesen zu Ursache-Wirkungsbeziehungen anhand von Aktienkursen betrachten möchtest.

Wie das für Adidas, Puma und Nike aussieht, kannst Du mit der App jedenfalls selbst überprüfen. Den Code, wie Du statt eines Referenzdatums einen Referenzzeitraum verwenden kannst, möchte ich Dir hier noch mitgeben:

# Wir definieren eine "Baseline":
blstart <- as.Date("2016-10-01")
blend <- blstart + 60     # Referenzzeitraum von 60 Tagen

BLAdidas <- Stock %>% 
            filter(Datum >= blstart) %>% 
            filter(Datum <= blend) %>% 
            pull(Adidas) %>% 
            mean()

„Nice to have“?

Jetzt stelle Dir vor, Du sitzt in der Strategieabteilung von Adidas und hast so ein Skript. Jeden Monat kannst Du es laufen lassen und nach wenigen SEKUNDEN hast Du die Übersicht, wo Konkurrenz und „Markt“ stehen. Es ist vielleicht nicht jedes Mal spannend genug, um dafür einen Termin beim Vorstand zu kriegen. Aber vielleicht möchten sie die Graphik irgendwann in den Standardunterlagen des Monatsrückblicks sehen – denn ein Blick auf den Markt und die Konkurrenz schadet ja nicht.

Und dann erstellst Du eine App, die jederzeit auf Knopfdruck genau das tut…

Wäre das vielleicht etwas?
Aber das ist eine andere Geschichte.
Und die musst Du ein andermal selbst erzählen.