Systeem Overzicht - 8 Hoofdcomponenten

Architectuur samenvatting

1. Market Data Ingest (Data Layer)

Real-time marktdata verzameling via WebSocket verbindingen met Bitvavo. Verzamelt ticker24h data, candlesticks (1m en 5m), trades, en orderbook depth. Alle data wordt eerst naar PostgreSQL geschreven (database-first approach) voordat services deze gebruiken. Dit garandeert data consistentie en betrouwbaarheid.

2. Signal Generation (Signals Layer)

Berekent technische indicatoren en features uit marktdata (volatility, speed, spread, volume). 12 guards filteren signalen op basis van marktcondities (spread, liquidity, trend direction). Discrete points scoring systeem (0-50 punten) bepaalt signal kwaliteit. Adaptive minscore throttling voorkomt over-trading bij hoge capacity.

3. Trading Decision Core (Trading Layer)

Converteert signals naar intents, intents naar events, en events naar orders via een 3-laags planning systeem. 12 risk management guards controleren elke stap (killswitch, slot budget, exposure limits, cooldowns, circuit breakers). Alleen signalen die alle guards passeren worden omgezet naar daadwerkelijke orders.

4. Order Execution (Order Layer)

Plaatst market buy orders via WebSocket naar Bitvavo exchange. Rate limiting voorkomt API overbelasting. Order tracking en status monitoring. WebSocket verbinding met automatische reconnectie bij verbindingsverlies. OperatorId support voor Bitvavo API compliance.

5. Entry Logic - Gedetailleerd

Entry Flow: Een signal moet eerst door 12 signals layer guards (staleness check, candle freshness, spread guard, liquidity guard, direction guard, etc.). Vervolgens wordt het gescoord (0-50 punten). Als de score boven de adaptive minscore threshold ligt, wordt het een intent. Het intent gaat door 12 trading layer guards:

  • KillSwitch Guard: Blokkeert alle trading als killswitch actief is
  • Slot Budget Guard: Controleert of er voldoende budget beschikbaar is (minimum €10.00)
  • Max Slots Guard: Controleert of maximum aantal open posities niet bereikt is
  • Score Guard: Verifieert dat signal score boven threshold ligt
  • Circuit Breaker Guard: Blokkeert bij te veel verliezen in korte tijd
  • Daily Targets Guard: Controleert dagelijkse winst/verlies limieten
  • Market Blacklist Guard: Blokkeert specifieke markets indien nodig
  • Market Cooldown Guard: Voorkomt te frequente trades inzelfde market (cooldown periode)
  • Max Concurrent Guard: Limiteert gelijktijdige order plaatsingen
  • Per Asset Exposure Guard: Controleert exposure per asset (max 8% van equity in Regime C)
  • Global Exposure Guard: Controleert totale exposure (max 98% van equity)
  • Net Edge Guard: Controleert net edge threshold (minimaal vereiste edge voor entry)

Als alle guards passeren, wordt een market buy order geplaatst. De order size wordt berekend op basis van slot budget en market precision. Entry gebeurt alleen bij voldoende liquiditeit en acceptabele spread (<50 bps).

6. Trailing Stop Loss - Gedetailleerd

Kapitaalbescherming is #1 Prioriteit: Een positie staat NOOIT onbeschermd. Direct na elke buy fill wordt automatisch een stop loss order geplaatst.

SL Placement Flow:

  • Buy fill komt binnen via WebSocket fills stream
  • Trailing SL service ontvangt fill event direct (geen polling, geen wachttijd)
  • SL order wordt onmiddellijk geplaatst via WebSocket naar Bitvavo
  • SL state wordt opgeslagen in database voor tracking

SL Parameters:

  • Start volgafstand: 0.4% onder entry prijs (sl_initial_pct = 0.996)
  • Tight SL volgafstand: 0.2% vanaf 2% winst (sl_tight_pct = 0.998)
  • Profit threshold: 2% winst triggert tight SL (sl_profit_threshold = 0.02)
  • Update threshold: SL wordt alleen bijgewerkt bij 0.1% prijsstijging omhoog (sl_price_update_threshold = 0.001)
  • Reconcile interval: Elke 1 seconde controleert systeem of SL nog actief is

Trailing Logic:

  • SL gaat ALLEEN omhoog: Stop loss prijs wordt nooit verlaagd, alleen verhoogd
  • Nieuwe buy fill: Reset SL state maar verlaag SL prijs NIET (beschermt voorgaande fills)
  • Update mechanisme: Bij 0.1% prijsstijging wordt SL order bijgewerkt (UPDATE, niet cancel/replace)
  • Rate limiting: Max 1 update per seconde per market (voorkomt API overbelasting)
  • Fallback reconcile: Elke seconde controleert systeem of alle open posities SL hebben, plaatst ontbrekende SL orders

SL Order Type: Gebruikt Bitvavo stopLoss order type (market order wanneer getriggerd). Geen limitPrice veld (zou stopLossLimit order maken). Trigger type: price, trigger reference: lastTrade. OperatorId support voor API compliance.

7. Risk & Account Management (Risk Layer)

Regime-aware slot budget systeem: Regime A (<€50 equity): Survival mode, max 1 asset, €10 budget. Regime B (€50-€125): Validation mode, €10.00 fixed budget, max 3 assets. Regime C (≥€125): Scaling mode, 8% per asset cap, max 2-12 assets. Balance synchronisatie houdt account balances up-to-date. Position reconciliation verifieert database consistentie.

8. Observability & Dashboard (Observability Layer)

Real-time dashboard toont equity, exposure, open posities, signals throughput, guard blocks, SL coverage, en 24h PnL. Analytics API voor statistieken. Alerting service met Pushover integration voor kritieke notificaties. Service health monitoring via heartbeats. Database-driven monitoring (geen caching, altijd actuele data).

Huidige Systeemstatus

Laatste update: 1h ago
Equity
€50.21
Exposure
€0.00
Slot Budget
€10.00
Open Posities
0
Signals (30min)
986
Signals (1h)
1853
Guard Blocks (1h)
0
SL Coverage
0.0%
24h PnL
€13.75

Tijdlijn Strategische Wijzigingen

Gebaseerd op documentatie, feitelijk, geen aannames
Architectuur

Clean Rewrite Start

2025-10-23

Start van volledige clean rewrite project. Doel: <100MB codebase, syntactisch foutloos, alle functionaliteit behouden, extreme code cleanliness.

Impact: Nieuwe modulaire architectuur met 6-fase plan. Project structuur aangemaakt met fase planning documenten.
Architectuur

Fase 1: Analyse & Planning Voltooid

2025-10-30

Codebase analyse compleet: 194MB codebase, 547 Python bestanden, 102,116 lines of code geanalyseerd. Duplicatie geïdentificeerd: 27 observability.py, 39 config.py, 9 db_writer services, 14 Redis helpers.

Impact: Basis gelegd voor consolidatie en refactoring. Duplicatie geïdentificeerd voor eliminatie.
Infrastructure

Fase 2: Common Layer Geconsolideerd

2025-11-15

Common utilities geconsolideerd: redis_helpers.py, db_connection.py, logging_utils.py, utils.py, config.py, ws_client.py. 14 Redis helper files → 1 common module, 39 config files → unified system.

Impact: Code duplicatie drastisch verminderd. Connection pooling standaard. Consistent patroon door hele codebase.
Architectuur

Database-First Principe Geïmplementeerd

2025-12-01

Database is altijd de bron van waarheid. Alle trading beslissingen lezen uit database. Redis gebruikt alleen voor transport en operationele state.

Impact: Betrouwbaarheid en consistentie verhoogd. Geen trading beslissingen op basis van tijdelijke/cached data.
Trading Strategie

Signals Baseline Volledig Herschreven

2025-12-10

Discrete points scoring systeem geïmplementeerd. 12 guards geïmplementeerd. Baseline caching met Redis (TTL 15 min). Adaptive minscore throttling.

Impact: Signal kwaliteit verbeterd. Guard system voorkomt slechte trades. Throttling voorkomt over-trading.
Risk Management

Trailing Stop Loss Geïmplementeerd

2025-12-15

ATR-based trailing stop loss systeem. Direct SL placement na buy fill. SL gaat alleen omhoog (nooit omlaag). Update threshold: 0.1% omhoog. Profit threshold: 2% voor tight SL (0.2% volgafstand).

Impact: Kapitaalbescherming is #1 prioriteit. Posities staan nooit onbeschermd. SL volgt winst automatisch.
Risk Management

Slot Budget Regime Systeem

2025-12-20

Regime-aware slot budget: Regime A (<€50): Survival mode, max 1 asset. Regime B (€50-€125): Validation mode, €10.00 fixed budget. Regime C (≥€125): Scaling mode, 8% per asset cap.

Impact: Risico management aangepast aan account size. Conservatief bij lage equity, scaling bij hogere equity.
Infrastructure

Alle Services Geïmplementeerd en Gefixed

2026-01-13

18 services actief op productie. Codebase: 115 Python files, 18,439 lines. Test coverage: 34/34 tests PASSED. Alle kritieke bugs gefixed: missing imports, orphaned except statements, dataclass defaults.

Impact: Systeem volledig operationeel. Alle services draaien stabiel. Database-first approach volledig geïmplementeerd.
Risk Management

Slot Budget Regime Fixes

2026-01-13

Regime B slot budget gecorrigeerd: €20.00 → €10.00. Regime C asset cap: 15% → 8%. Regime C max assets: 5-20 → 2-12. Dynamische slot size uit slot_manager.

Impact: Risico management parameters gecorrigeerd naar oorspronkelijke specificaties. Conservatievere instellingen.
Risk Management

Trailing SL Update Logic Verbeterd

2026-01-13

Per-market rate limiting: max 1 update per seconde. UPDATE in plaats van cancel/replace bij normale updates. Alleen cancel/replace bij update failure (onjuiste order).

Impact: Minder exchange API calls. Betere order management. Minder kans op order conflicts.
Infrastructure

Redis Isolation Geïmplementeerd

2026-01-13

Redis prefix isolation: rewrite: prefix voor alle keys en streams. Database isolation: trading_rewrite database. Voorkomt conflicten met oude systeem.

Impact: Volledige isolatie van oude systeem. Geen data conflicten. Veilige parallelle operatie.
Infrastructure

Alerting en Monitoring Toegevoegd

2026-01-14

Alerting service met Pushover integration. Analytics API endpoint. Hourly monitoring script. Common parsers module voor code deduplicatie.

Impact: Betere monitoring en alerting. Proactieve probleem detectie. Code kwaliteit verbeterd.
Architectuur

Architectuur Principes Gedocumenteerd

2026-01-15

6 kernprincipes gedocumenteerd: Fills zijn externe gebeurtenissen, Ontvangst en verwerking gescheiden, Database is bron van waarheid, Redis is transport, Beslissingen na DB-verwerking, Veiligheid vóór snelheid.

Impact: Duidelijke architectuur richtlijnen. Consistentie door hele codebase. Betrouwbaarheid verhoogd.
Trading Strategie

Signal Throughput Optimalisaties

2026-01-16

Candle freshness buffer fix. Marketstate candles fix. Database candles fix. Net edge check status. Guard flow verbeteringen. Rate limit monitoring geïmplementeerd.

Impact: Signal kwaliteit verbeterd. Betere data freshness. Minder false signals. Betere guard blocking.
Trading Strategie

Scoring Redesign Plan v3

2026-01-16

Complete scoring redesign plan met 5 axioms. Twee scoring modes: MicroWinMode (default) en PumpRideMode. Mode auto-detection logic. Phase-by-phase implementation approach.

Impact: Nieuwe architectuur voor scoring systeem. Monotonicity verbeteringen. Context-aware penalties.
Trading Strategie

Spread Normalization Fix (Source-Aware)

2026-01-16

SpreadNormalizer nu source-aware: als spread_bps kolom (al in bps) → direct gebruiken, geen normalisatie. Alleen normaliseren bij onbekende bronnen. Hard FAIL bij >10% samples buiten verwachte range.

Impact: Correcte spread normalisatie in analyse scripts. Voorkomt foutieve metingen.
Trading Strategie

Phase 1: Category Caps + Non-Circular Consistency

2026-01-16

Category totals en caps geïntroduceerd. apply_category_cap() helper functie. compute_consistency_bonus_from_features() (non-circular, uit features). Cap dominance rule: max(spread_bonus, liquidity_bonus) <= speed_bonus / 2. Raw/clamped logging in reasons.

Impact: Monotonicity verbeteringen. Consistentie bonus niet meer circulair. Caps voorkomen score dominantie door één factor.
Trading Strategie

Phase 3: Mode Auto-Detection met Per-Market Hysteresis

2026-01-17

detect_scoring_mode() functie geïmplementeerd. Per-market hysteresis in Redis (rewrite:mode:{market}, TTL 300s). Mode-dependent caps: speed_cap_max = 5.0 (PumpRideMode) vs 6.0 (MicroWinMode). Mode logging in reasons.

Impact: Dynamische mode detection. Voorkomt flip-flopping tussen modes. Per-market state management.
Trading Strategie

Phase 2: Context-Aware Peak Penalties

2026-01-17

should_penalize_peak_risk() functie geïmplementeerd. Extended naar 30-50 bps range (Phase 2.5). Penalty alleen bij: extreme speed AND zwakke continuation AND geen strong_up. Vervangt oude is_rocket_coin en is_ultra branches.

Impact: Betere context-aware penalties. Monotonicity violations gereduceerd. 30-50 bps range nu afgedekt.
Trading Strategie

Phase 2.5: Extended Context-Aware Penalties (30-50 bps)

2026-01-17

should_penalize_peak_risk uitgebreid naar 30-50 bps range. Thresholds aangepast: >30.0 bps in plaats van >50 bps of >100 bps. Doel: monotonicity violations in 30-50 bps range aanpakken.

Impact: Significante reductie monotonicity violations (61.37% → 15.62%). Betere score consistentie in middensegment.
Trading Strategie

Scoring Monotonicity Tests v2

2026-01-17

Test document bijgewerkt naar v2: Spread normalization source-aware. Liquidity definitie expliciet (estimated_liquidity, 1% depth, asks side). Pairwise metrics → Bucket/percentile/local neighborhood (niet O(N²)). Reverse monotonicity check toegevoegd. Acceptance criteria: bucket monotonicity + top-K examples + reduction trend.

Impact: Betere test metrics. Realistische acceptance criteria. Focus op bucket/percentile in plaats van pairwise.
Trading Strategie

Scoring Structure Overview Gedocumenteerd

2026-01-17

Volledig overzicht scoring systeem (Phase 3 + Phase 4). Modes (MicroWinMode, PumpRideMode). Caps, thresholds, adjustable factors. Mode auto-detection met hysteresis. Minscore recalibration.

Impact: Complete documentatie van huidige scoring systeem. Helpt bij factor aanpassingen en debugging.
Trading Strategie

Monotonicity Tests v2 Script Geïmplementeerd

2026-01-17

test_monotonicity_v2.py script geïmplementeerd met v2 tests. Source-aware spread normalization. BUY signals alleen voor liquidity checks (asks side bij 1% depth). Bucket monotonicity + percentile consistency + local neighborhood + reverse monotonicity. Edge case handling (P75 violation met P50 OK → WARNING).

Impact: Automatische monotonicity tests. Betere diagnose van score inconsistenties. Realistische metrics.
Trading Strategie

Orderflow Dominance Plan v2

2026-01-17

Plan bijgewerkt met kritieke correcties: EUR-weighted dominance (amount * price). Executed vs taker naming verduidelijking. Minimum volume gate (1.0 × slot_budget_eur). Cap order: raw → cap → mode-factor. Continuation logging. Redis key naming: rewrite:orderflow:{market}.

Impact: Verbeterd plan voor orderflow integratie. EUR-weighted voorkomt prijs-misleidende dominance. Min volume gate voorkomt noise.
Trading Strategie

Orderflow Dominance Geïmplementeerd

2026-01-17

EUR-weighted orderflow dominance berekening geïmplementeerd. calculate_orderflow_dominance() in features.py. Geïntegreerd in direction_score en consistency_bonus in scoring.py. Orderflow config parameters toegevoegd. Redis cache: rewrite:orderflow:{market} (TTL 70s). Cap order: raw → cap → mode-factor (PumpRideMode max = 0.5).

Impact: Direction/continuation confirmatie via orderflow. Verbetert entry timing. Monotonicity violations verder gereduceerd door direction-confirmatie.

Trading Bot Systeemaudit - 2026