# TradingAgents–Investboard: Reproduktionspaket

Erstellt am 11. Oktober 2026 für den InvestingStack-Artikel **Von der TradingAgents-Analyse zur prüfbaren Anlageentscheidung**. Autor: David Bartas, Gründer von Investboard. KI unterstützte Quellenprüfung, Textentwurf und lokale Testumgebung.

## Stand der Evidenz

**Abgeschlossen:** Prüfung der festgelegten Quellversionen, die 172 bestehenden Unit-Tests des Konnektors und zusätzliche Offline-Grenzprüfungen in `boundary_checks.py`.

**Nicht durchgeführt:** Modellaufrufe, authentifizierte Lese- oder Schreibzugriffe auf Investboard, echte Mandatsurteile des Servers, Broker-Orders, Kompatibilitätsprüfung mit v0.6.0 oder Bewertung der Anlageleistung. HTTP-Antworten und abgeschlossene Agentenzustände sind in diesem Paket ausdrücklich simuliert. Eine simulierte Speicherbestätigung ist kein verifizierter Entscheidungsnachweis in Investboard.

`profiles.json` enthält vier fiktive Investoren. SAP.DE dient ausschließlich als Instrumentkennung: Alle Bestände, Preise, Mengen, Vorschläge und Mandatsdokumente sind synthetisch. `protocol.json` beschreibt den späteren Modellvergleich. Modellkennungen und Archiv der Marktdatenantworten müssen vor Beginn festgelegt werden. Dies ist weder ein abgeschlossener Modellversuch noch ein sofort ausführbares Skript für eine Live-Analyse.

## Abgeschlossene Prüfungen reproduzieren

Verwende Python 3.12 in einer isolierten Umgebung. Das Herunterladen der Abhängigkeiten benötigt Internet; die Testumgebung blockiert während der Prüfungen Socket-Verbindungen und benötigt keine Zugangsdaten. `requirements.txt` dokumentiert die in unserer Umgebung aufgelösten Versionen; beide Quellprojekte sind auf Git-Commits festgelegt.

```sh
uv venv --python 3.12 .venv
uv pip install --python .venv/bin/python -r requirements.txt
.venv/bin/python boundary_checks.py --output reproduced-observations.json
```

Das Skript verwendet den tatsächlich installierten Konnektor: Renderer, Kontextüberschreibung des Graphen, Payload-Erstellung, HTTP-Client und Outbox-Wiederholung. Es überspringt die Graphinitialisierung und ersetzt die Instrumentauflösung des Upstream-Projekts; der Agentengraph wird nicht ausgeführt. Es schreibt alle zwölf Kontextzellen, eine beispielhafte serialisierte Payload und benannte Beobachtungen in die gewählte Ausgabedatei. Fehlgeschlagene Assertions beenden den Lauf mit einem Fehlerstatus.

Um die eigene Testsuite des Konnektors zu wiederholen, klone dessen festgelegten Quellstand separat:

```sh
git clone https://github.com/Investboard/tradingagents-investboard.git connector
git -C connector checkout 01f7a0c05c1b2f885829abd569e5c0af1da1a0d4
.venv/bin/python -m pytest -q connector/tests
```

Das beobachtete Ergebnis lautet `172 passed in 21.31s` auf macOS arm64 mit Python 3.12.12. Die Suite verwendet simulierte Abhängigkeiten; ihr Erfolg bestätigt weder einen Produktionsdienst noch die Regelbefolgung eines LLM. Die Laufzeit kann auf einem anderen Rechner abweichen. `unit-test-summary.json` enthält Testnamen und Ergebniszahlen ohne lokale Pfade oder Rechnerkennungen.

## Vorgeschlagener Modellvergleich

Lies vor der Ausführung `protocol.json`. Es definiert vier Profile × drei Kontextarme × drei Wiederholungen bei einer festen Aufstockung um 2.000 EUR aus vorhandenem Bargeld. Ein vollständig bewerteter Haushalt mit 100.000 EUR Vermögen behält dadurch nach der Transaktion denselben Nenner. Das Instrumentlimit gilt für den direkten Bestand, nicht für durch Fonds vermittelte Emittentenrisiken. Kosten, Steuern, Wechselkurse und Preise anderer Bestände bleiben konstant. Dies sind Versuchsannahmen, kein produktives Portfoliomodell.

Die Baseline erhält den gemeinsamen Vorschlag und die Instrumentidentität, aber weder Mandat noch Position des Investors. Prompt- und Konnektorarm erhalten denselben gerenderten Mandats- und Positionstext an derselben Stelle in `instrument_context`. Unsere Offline-Prüfungen bestätigen diese Gleichheit. Ein nur in die letzte Chatnachricht eingefügtes Mandat wäre eine andere Versuchsbedingung und benötigt einen eigenen Vergleich.

Der Modellversuch muss jede Marktdatenantwort archivieren und hashen, einschließlich der Pfade außerhalb der zentralen Anbieterregistrierung. Nicht protokollierte Marktzugriffe müssen verhindert werden. Verwende separate leere Speicher- und Checkpoint-Verzeichnisse, dokumentiere exakte Modellkennungen und Einstellungen und protokolliere alle Prompts und Werkzeugaufrufe. Wähle vor Festlegung des Protokolls einen unterstützten Anbieter und ein Modell; in den abgeschlossenen Prüfungen wurde kein Modell stillschweigend ersetzt. Die enthaltenen synthetischen Analystenberichte sind Parser-Testdaten, **kein** vollständiges Archiv der erforderlichen Marktdatenantworten.

Bewerte nur, was der jeweilige Arm wissen konnte. Die Baseline kann einen nicht mitgeteilten Ausschluss oder Grenzwert nicht erkennen müssen. Bewertbar ist, ob sie Anlegerfakten erfindet oder fehlenden Kontext kenntlich macht. Bewerte Regelerkennung in den Kontextarmen, Umgang mit fehlenden Informationen und Vollständigkeit des Nachweises separat; fasse diese Kriterien nicht zu einer Kennzahl der Handelsleistung zusammen.

Trenne Kontextversuch und Dienstintegration. Verwende für alle Arme denselben lokalen Serializer. Automatisches Übertragen im Konnektorarm ist eine Integrationsfunktion, kein Beleg für bessere Schlussfolgerungen. Prüfe in einem eigenen fiktiven Konto die zurückgegebene Nachweiskennung, gespeicherte Inhalte, Serverprüfung oder ausdrücklichen Grund für das Überspringen sowie Mandats- und Positionsversion. Archiviere die Antwort unverändert und unterscheide sie von der unabhängig formulierten Szenarioerwartung. Dieses Paket verwendet kein echtes Konto.

## Dateien

- `profiles.json`: fiktive API-Strukturen für Mandat und Position, gemeinsamer Vorschlag und unabhängig festgelegte erwartete Ergebnisse.
- `protocol.json`: Versuchsbedingungen, Kontrollen, Bewertungsraster, Wiederholungen und Abbruchregeln für den noch nicht ausgeführten Modellversuch.
- `boundary_checks.py`: ausführbare Konnektorprüfungen ohne Zugangsdaten.
- `observations.json`: beobachtete Skriptausgabe mit allen Kontextzellen und Payload aus einem vorgegebenen Zustand.
- `unit-test-summary.json`: beobachtetes Ergebnis der vorhandenen Testsuite.
- `requirements.txt`: eingefrorene Python-Abhängigkeiten und auf Commits festgelegte Quellinstallationen.
- `README.md` / `README.de.md`: englische und deutsche Anleitung. Die Originalprotokolle, Testdaten, Kennungen und Messergebnisse bleiben unverändert auf Englisch, damit die Reproduktion exakt dieselben Eingaben verwendet.
- `manifest.json`: SHA-256-Prüfsummen. Manifest und ZIP sind von ihrer eigenen Prüfsummenliste ausgenommen.

Die eigenen Testdaten, das Protokoll und die Testumgebung dieses Pakets stehen unter CC0-1.0. Externe Projekte behalten ihre eigenen Lizenzen. Es ist kein Quellcode Dritter enthalten.
