Die Wirtschaftswissenschaften leben von Vertrauen. Ob Inflationsraten, Wechselkurse oder BIP-Schätzungen – wir verlassen uns auf die Zahlen, die uns Institutionen liefern, weil wir sie nicht selbst neu berechnen können. Doch was wäre, wenn sich Indizes nicht nur transparent darstellen, sondern auch technisch reproduzieren ließen? Genau hier setzt openunit an: ein offener Referenzstandard für eine Recheneinheit, die sich auf jedem System exakt nachvollziehen lässt – bis zur letzten Nachkommastelle.
Eine Recheneinheit ohne Vertrauenskredit
Die meisten wirtschaftlichen Kennzahlen basieren auf Annahmen, die im Verborgenen bleiben. Ein Preisindex etwa kombiniert Gewichtung und Berechnungsmethode, ohne dass Außenstehende die Logik reproduzieren könnten. Openunit dreht dieses Prinzip um: Die gesamte Methodik ist als offener Code verfügbar, und die Ausgabe lässt sich mit nur zwei Befehlen auf Bit-Ebene verifizieren. Selbst minimale Änderungen an den Eingabedaten führen zu einem anderen SHA-256-Hash – ein klares Signal für Manipulation.
"Vertraue mir nicht. Überprüfe mich selbst."
Dieser Satz fasst die Philosophie des Projekts zusammen. Doch wie gelingt die technisch exakte Reproduzierbarkeit? Der Schlüssel liegt in der Kombination aus deterministischem Code und einer strengen Kontrolle über alle Berechnungsschritte.
Ein Index nach Kopfzahl – nicht nach politischer Macht
Openunit ist ein fester Warenkorbindex, ähnlich dem Sonderziehungsrecht des IWF, aber mit einem entscheidenden Unterschied: Die Gewichtung der Währungen orientiert sich an der Bevölkerungszahl statt an politischen oder wirtschaftlichen Machtverhältnissen. Das bedeutet konkret:
- Jede Person weltweit wird gleich gewichtet – unabhängig von der Wirtschaftsleistung ihres Landes.
- Die Gewichtung bleibt über einen längeren Zeitraum stabil („vintage“), um Manipulationen zu erschweren.
- Die Berechnung basiert auf offiziellen Datenquellen wie der UN-Weltdatenbank und den Wechselkursen der EZB.
Diese Methode ist kein neutraler Fakt, sondern eine explizite Wertentscheidung. Während ein reines BIP-basiertes Modell große Volkswirtschaften begünstigt, priorisiert openunit Länder mit vielen Einwohnern – selbst wenn deren Pro-Kopf-Einkommen niedrig ist. Das Projekt macht diese politische Dimension sichtbar und ermöglicht eine offene Debatte über die „Fairness“ von Wirtschaftsindizes.
Wie die Reproduzierbarkeit technisch funktioniert
Die Ingenieurskunst hinter openunit ist ebenso einfach wie stringent. Der gesamte Code besteht aus einem einzigen Python-Modul der Standardbibliothek – ohne externe Abhängigkeiten. Fünf Grundregeln stellen sicher, dass die Ausgabe auf jedem System identisch ausfällt:
- Exakte Arithmetik: Alle Zahlen werden als Zeichenketten eingelesen und mit der
decimal.Decimal-Klasse mit einer Genauigkeit von 50 Stellen verarbeitet. Fließkommazahlen werden strikt vermieden, da ihr Rundungsverhalten je nach Plattform variiert.
- Keine Zeitabhängigkeit: Der Code importiert weder
datetimenochtime. Das Ergebnis hängt ausschließlich von den Eingabedaten ab – nicht vom Zeitpunkt der Berechnung.
- Kanonisches JSON: Die Ausgabe wird als JSON-Datei gespeichert, wobei Schlüssel sortiert und Leerzeichen minimiert werden. Dies stellt sicher, dass die Byte-Repräsentation auf allen Systemen identisch ist.
- Doppelte Hash-Prüfung: Zunächst wird die Spezifikation selbst gehasht (
input_digest). Anschließend wird das Ergebnisartefakt (ohne den Hash-Wert selbst) ein zweites Mal gehasht (artifact_hash). Eine einzige Änderung in den Eingaben führt zu einem komplett anderen Hash.
- Eingabe- und Ausgabekonsistenz: Alle Zahlen in den Artefakten werden als exakte Dezimalstrings gespeichert, sodass keine Rundungsfehler bei der Weiterverarbeitung entstehen können.
Um diese Determiniertheit zu erzwingen, enthält das Projekt einen Determinismus-Guard, der in der Continuous Integration (CI) auf Python 3.8 bis 3.12 getestet wird. Dieser Guard prüft vier kritische Bedingungen:
- Gleiche Eingaben führen immer zum gleichen Ergebnis – inklusive eines vollständigen JSON-Roundtrips.
- Keine versteckten Zeitabhängigkeiten: Der Guard scannt den Quellcode nach Zeitfunktionen und injiziert zur Laufzeit einen Fehler, falls solche Aufrufe entdeckt werden.
- Manipulationserkennung: Selbst das Ändern eines einzigen Bits in der Eingabe führt zum Scheitern der Verifikation.
- Gewichtskonsistenz: Die berechneten Gewichte entsprechen exakt den vorgegebenen Bevölkerungsanteilen (auf 60 Nachkommastellen genau).
Der vielleicht aufschlussreichste Test ist derjenige, bei dem die Funktion time.time() gezielt „vergiftet“ wird. Führt der Code versehentlich einen Zeitstempel ein, bricht die Ausführung mit einem Fehler ab. Bisher übersteht openunit diese Prüfung ohne Probleme.
Konkrete Anwendungsbeispiele: Zwei Versionen eines Index
Das Repository enthält zwei vordefinierte Versionen („vintages“), die auf realen Marktdaten basieren. Jede Version besteht aus drei Dateien:
spec.json– Die Eingabespezifikation mit den Rohdaten und der Berechnungsmethode.artifact.json– Das berechnete Ergebnis inklusive Hash-Wert zur Verifikation.SOURCES.md– Eine vollständige Dokumentation der Datenquellen und Berechnungswege.
v0.1 – Marktbasierte Bewertung (US-Dollar als Numéraire)
- Basis: UN-Weltbevölkerungsdaten 2024 und EZB-Referenzkurse (Stichtag 2026-01-09, Bewertung 2026-05-15).
- Ergebnis: 1 openunit = 0,985631 US-Dollar
- Hash:
sha256:1e615cf7…9a3a - Bevölkerungsgewichtung: Indien (39,08 %), China (37,39 %), USA (9,24 %), Euroraum (9,20 %), Japan (3,24 %), Großbritannien (1,85 %).
v0.2 – Kaufkraftparität (PPP) als Grundlage
- Basis: Wie v0.1, aber mit PPP-Kursen der Weltbank (ICP 2024), gemessen in internationalen Dollar.
- Ergebnis: 1 openunit = 2,848010 internationale Dollar
- Hash:
sha256:566c95c1…b97a - Veränderte Gewichtung: Durch die PPP-Berechnung verschieben sich die Anteile zugunsten von Ländern mit niedrigeren Preisen. Indien steigt auf 64,48 %, während die USA auf 3,24 % fallen.
Ein wichtiger Hinweis zur Erstellung von v0.2: Die Weltbank veröffentlicht keinen einheitlichen PPP-Wert für den Euroraum. Daher wurde ein gewichteter Durchschnitt der 20 Mitgliedsländer basierend auf den UN-Bevölkerungsdaten berechnet. Dieser Ansatz ist dokumentiert und ermöglicht eine Überprüfung durch Dritte.
So überprüfen Sie openunit selbst
Der wahre Wert des Projekts liegt in der Nachprüfbarkeit. Jeder Nutzer kann die Berechnungen auf seinem eigenen System wiederholen und die Ergebnisse mit den veröffentlichten Artefakten vergleichen. Die Schritte sind denkbar einfach:
git clone
cd openunit
python3 test_determinism_guard.py # Führt 4 Determinismus-Tests aus
python3 make_vintages.py --verify # Überprüft die Vintages bytegenauErwarteter Output:
4/4 PASS
PASS v0.1-2026-05-15 reproduziert
PASS v0.2-2026-05-15 reproduziertWer die Ausgabe ändert, erhält einen anderen Hash – ein klares Indiz für Manipulation. Diese Transparenz macht openunit zu mehr als nur einem technischen Experiment: Es ist ein Plädoyer dafür, wirtschaftliche Kennzahlen nicht als gegeben hinzunehmen, sondern als kontrollierbare Systeme zu begreifen.
Openunit zeigt, dass Reproduzierbarkeit kein Luxus, sondern eine Notwendigkeit ist – besonders in einer Welt, in der Daten zunehmend als Machtinstrument dienen. Die nächste Herausforderung wird sein, ob andere Projekte diesen Ansatz übernehmen und damit die Messbarkeit wirtschaftlicher Realität demokratisieren. Die Werkzeuge dafür sind vorhanden; es fehlt nur noch der Wille zur Umsetzung.
KI-Zusammenfassung
Discover openunit, the open-source unit of account that lets anyone recompute financial indexes byte-for-byte. Learn how it ensures transparency through strict reproducibility rules.