Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -403,6 +403,52 @@ DebugTrading-Modul (#468) platzieren echte Orders. Ihre Positionen dürfen nicht
|
||||
eines Strategiemoduls landen – sie verfälschten dessen Auslastung, dessen GuV und dessen
|
||||
Konzentration, und zwar dauerhaft, weil die Position echt ist.
|
||||
|
||||
### [O/K] Währung gehört zur Identität eines Instruments
|
||||
|
||||
Am 2026-09-04 stellte sich beim Order-Nachweis heraus, dass das Paper-Konto sein Bargeld in **EUR**
|
||||
hält und in USD mit −3.751 im Minus steht. Ein USD-Kauf wäre damit ein USD-Kredit gewesen, und
|
||||
Schicht C hat ihn zu Recht abgelehnt. Die Entscheidung fiel gegen ein Aussetzen der Sicherung und
|
||||
für das, was das Problem an der Wurzel löst: **Instrumente sind währungsfähig.**
|
||||
|
||||
Die Währung steht dabei im Instrumentenschlüssel und nicht bloß als Attribut daneben. Derselbe
|
||||
Ticker notiert an mehreren Plätzen — SAP gibt es in Frankfurt in EUR und als ADR in New York in
|
||||
USD, zu deutlich verschiedenen Kursen. Zwei Notierungen als eine Position zu führen, würde Bestand
|
||||
und Deckung vermischen.
|
||||
|
||||
**USD bleibt implizit** (`AAPL`, nicht `AAPL:USD`). Andernfalls wäre jede Bestandszeile ab sofort
|
||||
ein anderes Instrument als vorher und aus einer Position würden zwei. Trennzeichen ist der
|
||||
Doppelpunkt, nicht der Punkt — Ticker enthalten Punkte (BRK.B).
|
||||
|
||||
### [X] #479 — Die Order lief auf die falsche Notierung
|
||||
|
||||
Der teuerste Fund des Tages, und einer, den kein Unit-Test hätte finden können. Geprüft, bepreist
|
||||
und reserviert wurde `SAP:EUR` zu 188,74 EUR. Ausgeführt wurde die SAP-ADR in New York zu 216,68
|
||||
USD; das USD-Guthaben rutschte um 434 ins Minus.
|
||||
|
||||
Damit wurde **genau der Margin-Kredit aufgenommen, den Schicht C verhindern soll** — an der
|
||||
Sicherung vorbei, weil die Sicherung ein anderes Instrument geprüft hatte als das, was gehandelt
|
||||
wurde. Ohne Fehlermeldung. Die Bücher wiesen anschließend eine EUR-Position zum USD-Preis aus, die
|
||||
es beim Broker nie gab.
|
||||
|
||||
Die Ursache war eine nicht gesetzte Eigenschaft: `ExecutionService` baute die `OrderRequest` aus
|
||||
Einzelfeldern, und `Currency` fiel still auf USD zurück. Die Lehre ist allgemeiner als der Fehler:
|
||||
**eine neue Dimension an der Identität eines Objekts macht jede Stelle, die dieses Objekt aus
|
||||
Teilen zusammensetzt, zu einer Fehlerquelle.** Deshalb wurde nicht die Zuweisung nachgetragen,
|
||||
sondern `OrderRequest.For(instrument, …)` eingeführt — im Orderpfad lässt sich ein Auftrag nicht
|
||||
mehr aus losen Feldern bauen.
|
||||
|
||||
### [K] #480 — Das Kapitalmodell rechnet Währungen zusammen
|
||||
|
||||
Solange jedes Instrument USD war, war die Frage gegenstandslos. Mit der ersten EUR-Position ist sie
|
||||
es nicht mehr: Pool, Konzentrationslimit und die Summe der offenen Reservierungen addieren Beträge
|
||||
verschiedener Währungen unverändert.
|
||||
|
||||
Bei ähnlichen Kursen fällt das nicht auf — **genau deshalb ist es gefährlich.** Und die Richtung
|
||||
des Fehlers ist nicht einheitlich: bei einer starken Fremdwährung wird die Auslastung
|
||||
*unterschätzt*, und ein Buch darf mehr aufmachen als es soll. Das Kapitalmodell sieht die Lösung in
|
||||
§7 bereits vor (Buch-Cash und Reservierungen je Währung); umgesetzt ist sie bisher nur für die
|
||||
Reservierungen und für Schicht C. Für die Pool-Rechnung fehlen Umrechnungskurse — die liefert #321.
|
||||
|
||||
### [H] #293 — Wie der Nachweis geführt wird
|
||||
|
||||
`--ibkr-check` liest nur. Für #293 gibt es deshalb `--verify-order SYMBOL` am Daemon: es geht durch
|
||||
@@ -415,6 +461,13 @@ Paper-Modus **und** außerhalb eines Paper-Ports (eines allein sagt nichts – e
|
||||
einem Live-Port bewegt echtes Geld); und den globalen Handelsschalter übergeht er nicht, sonst
|
||||
wäre der keiner.
|
||||
|
||||
**Geführt am 2026-09-04** gegen das Paper-Konto DUR371528: Kauf von 2 × `SAP:EUR` zu 185,86 EUR,
|
||||
alle fünf Tabellen stimmen. Der Nachweis hat dabei **vier Fehler gefunden**, drei davon für
|
||||
Unit-Tests unerreichbar — die falsche Notierung (#479), eine Bargeldaufschlüsselung, die gar nicht
|
||||
ankam, eine Kursabfrage ohne Währung, und zwei Spalten der Buchführung, die zu eng waren bzw. leer
|
||||
blieben. Das ist der eigentliche Ertrag: der Lauf gegen echte Gegenstellen prüft die Fugen zwischen
|
||||
den Bausteinen, und dort saßen alle vier.
|
||||
|
||||
### [W] #309/#310 — Was steht, und was der Handelsbetrieb noch braucht
|
||||
|
||||
Gerüst und reine Strategie-Logik stehen: `ow_`-Schema mit fünf Tabellen, Zustandsautomat,
|
||||
|
||||
Reference in New Issue
Block a user