RichardandClaude Opus 5 b96a20788c R10: Lesender Bestandsabgleich (IBrokerPortfolioReader) + Datenlage-Konzepte
Eigener Seam neben IBrokerClient: Wer handelt, braucht ihn nicht; wer die
eigene Buchfuehrung gegen den Broker abstimmt, braucht nur ihn. Zuteilung
und Verfall aendern Positionen ohne Order von uns - ohne Abgleich laeuft
das Managementbuch zwangslaeufig auseinander.

- IBrokerPortfolioReader mit GetPositionsAsync/GetExecutionsAsync;
  implementiert von IbkrBrokerClient und NullBrokerClient (DI registriert
  beide Rollen auf derselben Instanz).
- IbkrConnection: reqAccountUpdates statt reqPositions (nur dieser Weg
  liefert Marktwert und unrealisierten G/V), reqExecutions inkl. Zuordnung
  der verspaetet eintreffenden commissionReport-Callbacks ueber die ExecId.
- BrokerPosition/BrokerExecution als Broker-Wahrheit neben Position;
  IbkrMapping: ParseSide, ParseExecutionTime, FormatExecutionFilterTime
  (UTC wegen TWS-Warnung 2174) - mit Unit-Tests.
- Verifiziert gegen Paper-Konto DUR371528: 2 Positionen, 2 Ausfuehrungen
  inkl. Kommissionen.

Doku: Kapital- und Buchmodell (drei Wahrheiten, Kapitalzuteilung),
KONZEPT-Datenlage-und-Strategien (gemessen, was die API auf diesem Konto
liefert). Options-Wheel: Greeks bei verzoegerten Daten funktionieren
(Feld 83); Earnings-Termine sind ueber die TWS API nicht erreichbar
(Fehler 10358) - Behelf ueber IV-Filter statt Fremddatenquelle.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-06 10:51:51 +02:00
@
2026-07-27 09:58:49 +02:00
@
2026-07-28 10:25:14 +02:00
@
2026-07-28 10:25:14 +02:00
@
2026-07-28 20:01:55 +02:00
@
2026-07-27 10:09:46 +02:00
@
2026-07-28 19:53:21 +02:00
2026-07-26 18:19:47 +02:00
@
2026-07-28 00:24:00 +02:00
2026-07-26 18:19:47 +02:00
2026-07-26 18:19:47 +02:00
@
2026-07-28 18:39:14 +02:00

IBKRTrader

Modulares C#-Trading-Framework für Interactive-Brokers-Aktien. Harter Core + unabhängige Strategie-Module + Launcher, der die Fenster der Module öffnet. Konzept nach dem Vorbild von PolytraderSharp (nur IBKR statt Polymarket).

Architektur (Kurzform)

IBKRTrader.App                     WinExe  Generic Host + Launcher/Shell (WinForms)
src/IBKRTrader.Core                Contracts, EF-Persistenz, Trading-Kern, Worker, Security
src/IBKRTrader.Modules.*           je Modul ein eigenes Projekt (referenziert nur Core)
tests/IBKRTrader.Tests             xUnit (Unit + EF-InMemory)
  • Generic Host (Host.CreateDefaultBuilder), Worker/Services als IHostedService.
  • Module über IModule (RegisterServices/RegisterUi/Start/Stop); UI über IModuleUiHost/ModuleView.
  • Persistenz: EF Core (Pomelo/MariaDB), Migrationen extern angewendet (nicht zur Laufzeit).
  • Trading-Kern: IExecutionService (Signal→Risiko→Order→Buchung), IRiskService, IPortfolioService, Broker hinter IBrokerClient: NullBrokerClient (Default, handelt nie) oder IbkrBrokerClient über die TWS API aktivierbar mit IBKR.UseTwsApi.
  • Analyse-Datenfundament: core_decision_journal (jede Entscheidung + ReasonCode), core_order_events, SignalId-Korrelation, JSONL-Log-Sink (Logs/{yyyy-MM-dd}.jsonl) speist den Supervisor.
  • Details: docs/ARCHITECTURE.md.

Build & Test

dotnet build IBKRTrader.slnx
dotnet test  IBKRTrader.slnx
dotnet run --project IBKRTrader.App.csproj -- --smoke-ui   # Headless-UI-Check
dotnet run --project IBKRTrader.App.csproj                 # App starten

Konfiguration

  • appsettings.Local.json (gitignored) hält den DB-Connection-String (Database:MySqlConnectionString).
  • settings.json (gitignored) App-Settings (IBKR-Ports, Logging, Worker, Trading).
  • Optional IBKRTRADER_MASTER_KEY bzw. master.key für at-rest-Verschlüsselung (AES-256-GCM).
  • Supervisor (optional): IBKRTRADER_OPENROUTER_KEY bzw. openrouter.key (KI-Analyse), sowie die Opt-ins IBKRTRADER_SUPERVISOR_DAILY (Tagesbericht, Stunde 023) und IBKRTRADER_MCP_PORT (MCP-Light, nur 127.0.0.1).

Datenbank aufsetzen

Schema wird per EF-Migrationen extern angewendet siehe scripts/README.md:

mysql ... < scripts/drop-app-tables.sql        # nur falls Alt-Tabellen existieren
powershell -File scripts/provision-db.ps1

Module

  • CongressTrading kopiert US-Kongress-Trades (capitoltrades.com) → TradeSignal → ExecutionService.
  • Accounting von der Trading-DB unabhängige Buchführung aus dem IBKR-Kontoauszug (Activity Flex Query) → append-only Ledger acc_*, Periodenabrechnung/BWA, FX (USD/EUR), CSV/PDF-Export. Kein Handel. Live-Abruf hinter Interfaces (Offline-Null-Stubs); Steuerschicht bewusst offen. Konzept: docs/konzepte/KONZEPT-Modul-Accounting.md.
  • Supervisor read-only KI-Analyse/Forensik über alle Module (OpenRouter-Agent + read-only Tool-Registry, Dossier-Browser, optional MCP-Light). Stützt sich auf das Core-Datenfundament (core_decision_journal, core_order_events, SignalId, JSONL-Logs). Konzept: docs/konzepte/KONZEPT-Modul-Supervisor.md.

Status / Nächstes

  • Kurskorrektur auf das PolytraderSharp-Konzept (R1R7) abgeschlossen.
  • Accounting- und Supervisor-Modul (inkl. Core-Datenfundament S-0) ergänzt; Live-Abruf (IBKR Flex / OpenRouter-Key) und Steuerschicht sind bewusst noch offen (Stubs/Platzhalter).
  • IBKR-Broker über die TWS API / IB Gateway ist implementiert (Paper-Konto steht, Verbindung verifiziert) Design und offene Punkte: docs/IBKR-Integration.md, TWS-Einstellungen: docs/TWS-Setup-Checkliste.md.
  • Sicherheit: DB-Passwort rotieren (liegt in der Git-Historie, Commit ebeb035).

Sicherheitshinweis

Automatisierter Handel ist riskant. Standardmäßig handelt die App nicht: der Broker-Adapter ist über IBKR.UseTwsApi abgeschaltet, und selbst mit aktivem Adapter platziert der ExecutionService ohne globales TradingEnabled=true keine Order. Beide Schalter sind bewusst getrennt. Echter Handel erst nach Verifikation gegen den Paper-Account.

S
Description
No description provided
Readme
635 KiB
Languages
C# 76.3%
HTML 23.1%
PowerShell 0.6%