Pyramid Observability Review — DOGE/USDT 2026-05-13 18:06 UTC

Projekt: Steve-TradingBot · Phase: PYRAMID-OBSERVABILITY-REVIEW · Author: claude-opus-4-7[1m]
Generated: 2026-05-13 18:16 UTC · master HEAD: 2fbc7b5
Bot PID: 363 (paper-mode flag im Code, aber TESTNET-LIVE-API via ccxt) · Worker PID: 1 · BINANCE_TESTNET=true
Status: NO CODE / NO RUNTIME-CHANGE Pure Analysis, Backlog, Empfehlungen. STOP nach Output.

0 — Executive Summary

Die erste produktive Aufstockungs-Telegram-Nachricht ist strukturell sauber: classifier + formatter sind als getrennte Pure-Module realisiert, decision_log_id + order_id sind im Output enthalten, TESTNET-Label korrekt, dca>pyramid-Prioritaet stimmt mit main.py-Control-Flow uberein, MAX_PYRAMID_COUNT=1 ist als harter Cap aktiv, Budget-Hard-Cap auf total_size verhindert >100%-Allokation.

Allerdings: der Pyramid-Trigger ist regime-blind — das DOGE-Event wurde im BEAR-Regime ausgeloest (live verifiziert: decision_logs.regime='BEAR' fuer alle 2214 BUY-Entscheidungen der letzten Stunden, einschl. decision_id e8a607af). Ebenso: keine Meme-Coin-Restriktion, keine Volatility-Skalierung, kein Cooldown nach Pyramid, kein Exposure-/Regime-Hinweis in der Telegram-Nachricht. Diese Punkte sind Mainnet-blocking und gehoeren ins Backlog vor MH-7 (Bot-Wiring fuer Mainnet).

Aktuelle Risiko-Klassifikation auf TESTNET: akzeptabel — max. Schaden = Testnet-Verluste, Bot bleibt paper-trade-orchestriert, Mainnet-Block 5-layer aktiv. Auf MAINNET: NO-GO bis Mindestens P0-Items abgeschlossen sind.


1 — Faktenlage (live verifiziert)

Telegram-Nachricht (operator-zitiert)

πŸ“ˆ Aufstockung (Pyramid) ausgefΓΌhrt β€” TESTNET LIVE
Symbol:    DOGE/USDT
Subkind:   tranche_3
Menge:     1260.0000 (Bestand 2049.0000 β†’ 3309.0000)
Preis:     0.1136 USDT
Orderwert: 143.16 USDT
Avg-Preis: 0.1125 USDT
Score:     6.2/10
─────────────
Grund:
Pyramid: Kurs +1.6% ΓΌber Entry
Risk-Checks bestanden (N7.2 + RECON-2.2 + Cash-Reserve + Circuit-Breaker).
─────────────
decision_log_id: e8a607af
order_id:        385578
πŸ€– Steve Trading Bot

DB-Record (decision_logs)

decision_ide8a607af
symbolDOGE/USDT
actionbuy
score6.0000
combined_score6.1950
regimeBEAR
environmenttestnet
modepaper
sourcerun_scan_cycle
decided_at2026-05-13 18:06:23 UTC

DCA-Log (state-of-truth fuer Pyramid-Count)

DOGE total_size (Budget)572.70 USDT
DOGE entry_price (T1)0.11176
DOGE avg_price post-pyramid0.112449 (= 0.1125)
DOGE total_invested372.26 USDT (= 64.9 % von 572.70)
dca_count / pyramid_count0 / 1 (MAX=1)
tranchesT1 13:36:59 UTC: 229.08 USDT @ 0.11176 / T3-Pyramid 18:06:23 UTC: 143.18 USDT @ 0.11357 (=+1.6%)

Logik-Kette (Code-Pfad, read-only)

  1. main.py scan-cycle → signal fuer DOGE
  2. Position existiert bereits → dca_mgr.check_dca liefert None (Preis > Entry, kein DCA-Trigger)
  3. dca_mgr.check_pyramid prueft pyramid_count < 1 & Preis > entry*1.015 → True bei +1.6%
  4. Size = get_tranche_size(572.70, 3) = 25% = 143.18 USDT <= verbleibendes Budget
  5. execute_buy(allow_add=True) → ccxt-Testnet-Order, order_id 385578
  6. dca_mgr.confirm_pyramid erhoeht pyramid_count 0→1, Tranche-Eintrag persistiert
  7. buy_classifier.classify_buykind=rebuy_pyramid, subkind=tranche_3
  8. rebuy_formatter.format_rebuy_message → HTML-Text fuer Telegram
  9. Reporter sendt parse_mode='HTML'

2 — Phase 1: Live-Review der Telegram-Nachricht

#FrageBefund
1Sofort verstaendlich?JA — klare Header, Spaltenausrichtung, sinnvolle Labels
2Kritische Infos fehlen?JA — Regime, Cash-Reserve, Exposure-%, P&L unrealized fehlen
3Zahlen konsistent?JA — 1260 * 0.1136 = 143.14 (msg sagt 143.16, Floating-Roundoff toleriert); Bestand 2049+1260=3309 stimmt; avg-Preis 0.1125 matcht DCA-Log 0.112449
4„Kurs +1.6% ueber Entry“ erklaerend genug?TEILWEISE — Operator versteht +1.6%, aber unklar WO der Trigger sitzt (+1.5% pinned). Ergaenzen: „Trigger ab +1.5%“
5tranche_3 verstaendlich?NEIN — intern; Operator sollte sehen: „Pyramid-Tranche 3/3 (25%)“ oder „Aufstock-Tranche (25% des Budgets)“
6Avg-Preis korrekt?JA — mathematisch korrekt: 229.08 USDT/0.11176 = 2049.7 Qty; +1260 @ 0.1136 = ges. 3309.7 Qty; weighted-avg = 372.26/3309.7 = 0.11248
7Positionsgroessenaenderung intuitiv?JA — absolutes Format (2049 → 3309), +61.5% in Qty
8Gesamt-Exposure fehlt?JA — weder gesamt-positionen noch USDT-Exposure noch %-vom-Capital sichtbar
9Regime-State fehlt?JABEAR ist in DB, aber NICHT in der Nachricht. Kritisch — Operator sieht nicht, dass aktuell BEAR-Regime herrscht
10Risk-Level fehlt?JA — statisches „Risk-Checks bestanden“ ohne konkrete Werte (Cash-Reserve-%, Circuit-Breaker-Status, Open-Pos-Count)
11Verbleibende Cash-Reserve fehlt?JA
12decision_log_id sichtbar genug?JA — eigene Zeile, monospace
13order_id ausreichend auditierbar?JA — eigene Zeile, monospace; verlinkbar mit DB / Exchange
14TESTNET prominent genug?JA — im Header neben dem Action-Label
15Zu lang bei vielen Signalen?TENDENZ JA — aktuell 15 Zeilen; mit Regime/Exposure/Cash dehnt sich auf 18–20 Zeilen. Telegram-Mobile-View wird scrollig

3 — Phase 2: Strategie-Review

#FrageBefund
1+1.5% Trigger sinnvoll?SELTSAMPYRAMID_TRIGGER=0.015 ist sehr niedrig (Noise-Bereich bei volatilen Coins). Industrie-Standard fuer Pyramiding: 3–5%. Backlog
2tranche_3 zu aggressiv?NEIN per se — 25% des Budgets ist konservativ; das Risiko liegt in der niedrigen Trigger-Schwelle
3DOGE fuer Pyramid geeignet?PROBLEMATISCH — DOGE ist Meme-Coin mit hoher Volatilitaet; +1.5%-Trigger ist im Intra-Hour-Noise; Pyramid auf Meme-Coin in BEAR-Regime ist kein gutes Setup
4Score 6.2 ausreichend?GRENZWERTIG — threshold ist 6.0 (combined_score 6.195 nur knapp drueber); fuer Pyramid sollte ein HOEHERER Confirmation-Score gelten als fuer Erstkauf (z. B. 7.0)
5Positionssprung 2049→3309 zu gross?NEIN absolut — in USDT-Termini: 229 → 372 = 64.9% Budget-Auslastung (von 572 max). Tranche-3 ist designwise die kleinste
6Passt zur BEAR-Regime-Cap?NEINkritischster Findings: check_pyramid in dca_manager.py:251 liest weder Regime noch Cap; die regime_cap=5 fuer BEAR (POS-CAP-10-CONSERVATIVE) gilt nur fuer Open-Position-Count, nicht fuer Pyramid-Adds
7Overexposure-Risiko?JA — Hard-Cap pro Position (total_invested + size <= total_size) schuetzt EINZELPOSITION, aber GESAMT-Exposure (Summe aller Positionen) wird im Pyramid-Pfad nicht geprueft
8Pyramid regime-abhaengig?SOLLTE — in BEAR/CRASH-Regimes deaktivieren oder Trigger erhoehen (z. B. +3%)
9Meme-Coin restriktiver?SOLLTE — Meme-Coin-Allowlist + hoeherer Pyramid-Trigger (5%+) ODER komplettes Pyramid-Verbot
10tranche_3 zusaetzliche Confirmation?SINNVOLL — RSI > 50, EMA50>EMA200, Volume-Confirmation als Add-On (analog DCA-Support-Check in check_dca, aber spiegelverkehrt fuer Up-Move)
11Max-Pyramid-Level?EXISTIERTMAX_PYRAMID_COUNT=1; korrekt minimal
12Vol-skaliert?NEIN — DCA-Pfad nutzt ATR-Multiplikator (DCA_ATR_MULT_1/2); Pyramid-Pfad ist starr +1.5%. Ungleichgewicht im Design

4 — Phase 3: Risk & Failure-Mode Review

#FrageBefund
1Rapid-Rebuy-Loops?GESCHUETZT — MAX_PYRAMID_COUNT=1 verhindert Loops; pyramid_count persistiert in dca_log.json
2Starke Pumps?TEILWEISE — +1.5% Trigger feuert frueh; bei +5% Pump wuerde Pyramid bereits am +1.5% gefeuert haben und kann nicht erneut. Slow-Pump-Friendly aber Fast-Pump-FOMO-Risiko bleibt
3Slippage?UNGEPRUEFTexecute_buy-Pfad geht via ccxt market-order auf Testnet; Slippage-Simulation nicht in Code; bei Mainnet kritisch
4Illiquide Assets?UNGEPRUEFT — kein Liquidity-Check im Pyramid-Pfad; min_volume-Filter sitzt auf Signal-Generation-Seite, nicht Pyramid
5Gleichzeitige Pyramid-Events?SINGLE-THREADEDrun_scan_cycle verarbeitet Symbol fuer Symbol sequenziell; keine Race
6Telegram-Delay?NICHT KRITISCH — Notify ist async/best-effort; bot-execution wartet nicht; im Worst-Case verliert man eine Notification, kein Trade
7order_id fehlt?GRACEFUL — formatter rendert n/a (siehe rebuy_formatter.py:164)
8decision_log_id fehlt?GRACEFUL — ebenfalls n/a
9Avg-Preis stale?MOEGLICH_resolve_avg_price liest portfolio['positions'][symbol]['entry_price']; falls PaperTrader und LiveTrader divergieren (position_snapshots zeigt 3184 @ 0.10907 vs. DCA-Log 3309 @ 0.112449), kann msg/state-Drift entstehen. Backlog: dual-source-of-truth reconcile
10Double-Notification?UNWAHRSCHEINLICH — formatter wird nach confirm_pyramid aufgerufen; pyramid_count==1 nach erstem Mal → check_pyramid liefert None bei Wiederholung
11Race DCA vs Pyramid?GELOEST — main.py:642+ ist if dca: ... else: pyr = check_pyramid(); sequential, dca hat Vorrang (operator-pinned in classifier-Docstring)
12Cooldowns?NICHT VORHANDEN — Pyramid kann theoretisch direkt nach DCA passieren (oder umgekehrt), wenn Preis-Bewegungen entsprechend sind. Cooldown-Pin (z. B. 30 min minimum zwischen Tranchen) fehlt

5 — Phase 4: Audit & Telemetrie

#FrageBefund
1Eindeutige Rekonstruktion?JA — decision_logs + trade_logs + dca_log.json zusammen geben den vollen Trail
2decision_log_id + order_id ausreichend?JA — in Telegram + DB; verlinkbar
3proposal_id ergaenzen?N/A — RECON-MH/managed_proposals nicht aktiv (0 rows); irrelevant solange MH-Capability nicht greift
4current_regime ergaenzen?SOLLTE — in DB vorhanden, fehlt in Telegram-Nachricht
5current_cap ergaenzen?SOLLTEeffective_cap=5 in BEAR-Regime; Operator weiss nicht, ob Position-Cap erreicht ist
6exposure_pct ergaenzen?SOLLTEtotal_invested/total_size pro Position UND sum / available_capital global
7realized/unrealized P&L ergaenzen?KOMFORT — unrealized-P&L pro Position waere fuer Operator-Sicht nuetzlich (z. B. „DOGE +1.6% / +5.97 USDT“)
8Structured Telemetry?TEILWEISEtranches[]-Array in dca_log.json ist semi-strukturiert; kein expliziter Event-Stream
9Eigenes pyramid_event_log?SINNVOLL — aktuell mit DCA-Tranchen vermischt; eigener Stream fuer Pyramid-spezifische Auswertung (z. B. Win-Rate-Vergleich first_buy vs. pyramid_add)
10Hash/sha8 in Telegram-Meldung?KOSMETISCH — nicht zwingend, aber als kompakter Idempotency-Marker (z. B. sha8 von (decision_id+order_id)) nuetzlich fuer Duplicate-Detection durch Operator-Auge

6 — Phase 5: Priorisiertes Backlog

IDPrioKategorieItemMainnet-Blocking?
BL-P01P0Regime-awarenesscheck_pyramid muss aktuelles Regime einlesen; in BEAR/CRASH per default deaktivieren ODER PYRAMID_TRIGGER auf +3% erhoehenJA
BL-P02P0Position-sizingPyramid-Confirmation-Score > Erstkauf-Threshold (z. B. combined_score >= 7.0)JA
BL-P03P0Exposure-limitsGlobale Exposure-Cap im Pyramid-Pfad pruefen (sum of total_invested <= max_capital_exposure_pct)JA
BL-P04P0StrategyMeme-Coin-Allowlist/Denylist fuer Pyramid; DOGE/SHIB/PEPE/BOME/PUMP/FUN/NOT/etc. blocken ODER Trigger 5%+JA
BL-P05P0CooldownsMindest-Abstand zwischen Tranchen (z. B. 30 min); verhindert Same-Cycle-Pyramid-nach-DCAJA
BL-P06P0RiskSlippage-Schutz: max_slippage_pct vor execute_buy validieren (orderbook-spread-check)JA
BL-P07P1NotificationsTelegram-Msg um Regime: BEAR, Cap: 5/5, Exposure: 64% (372/572 USDT), Cash-Reserve: ___ USDT erweiternNEIN (Komfort, aber wichtig)
BL-P08P1UXSubkind-Label: tranche_3Pyramid-Tranche 3/3 (25% Budget) oder Aufstockung 25%NEIN
BL-P09P1UXReason-Zeile erweitern: Pyramid: Kurs +1.6% über Entry (Trigger: +1.5%)NEIN
BL-P10P1StrategyATR-/Vol-Skalierung fuer Pyramid-Trigger analog DCA-ATR-MultiplikatorNEIN (Komfort, aber Konsistenz mit DCA-Pfad)
BL-P11P1DCA/Pyramid interactionPyramid-Confirmation-Check analog zu DCA-Support-Check (RSI > 50, EMA50 > EMA200, MACD-positive)NEIN
BL-P12P1TelemetryEigener structured-event-stream fuer Pyramid (separat von tranches[] in dca_log.json) — ermoeglicht Win-Rate-AuswertungNEIN
BL-P13P1Audit-trailposition_snapshots vs. dca_log.json reconcile-Tool (Drift-Detection)JA (Mainnet)
BL-P14P2UXRealtime unrealized-P&L pro Position in Telegram-Msg (P&L: +1.6% / +5.97 USDT)NEIN
BL-P15P2LoggingPyramid-Decision-Log mit Reject-Reasons (warum NICHT pyramid'd) — ermoeglicht missed-opportunity-AnalyseNEIN
BL-P16P2UXMobile-friendly Compact-Mode: Multi-Signal-Burst zusammenfassen statt 15 Einzel-MessagesNEIN
BL-P17P2Operator-ControlsPer-Symbol Pyramid-Disable via runtime_config (Operator kann DOGE/Meme einzeln deaktivieren ohne Code-Touch)NEIN
BL-P18P3StrategyPyramid-Trigger trailing (z. B. ueberhoehe entry+1.5% UND keine RSI>70-Falle)NEIN
BL-P19P3Mainnet-hardeningPre-Mainnet-Drill: Pyramid auf TESTNET unter mind. 3 Regime-Wechseln testen (BEAR/RECOVERY/BULL); Backtest-VergleichJA
BL-P20P3TelemetryPyramid-Idempotency-Hash (sha8 von decision_id+order_id) im Telegram-Footer fuer manuelles Operator-Duplicate-CheckNEIN

7 — Phase 6: Empfehlungen & GO/NO-GO

7.1 Was ist bereits sehr gut

7.2 Was ist kritisch

7.3 Was sollte NICHT geaendert werden

7.4 Mainnet-Blocking Items (vor MH-7 Bot-Wiring)

  1. BL-P01 Regime-aware Pyramid-Gate
  2. BL-P02 hoehere Pyramid-Confirmation-Score
  3. BL-P03 globaler Exposure-Cap
  4. BL-P04 Meme-Coin-Restriktion
  5. BL-P05 Tranchen-Cooldown
  6. BL-P06 Slippage-Schutz
  7. BL-P13 position_snapshots vs dca_log Reconcile
  8. BL-P19 Pre-Mainnet-Drill mit Regime-Wechseln

7.5 Nur kosmetisch

7.6 Welche Punkte vor MH-6 (Worker-Handler)?

Keine direkt — MH-6 ist GUI-side Worker fuer managed_proposals (RECON-MH). Pyramid-Logik ist Bot-side und beruehrt MH-6 nicht. Pyramid-Punkte koennen parallel zu MH-6 angegangen werden, sofern Bot-Code-Touch und Worker-Code-Touch atomar getrennt bleiben.

7.7 Welche Punkte gehoeren in SEC-2?

7.8 Welche Punkte gehoeren in POS-CAP-2/3?

7.9 Empfohlene Reihenfolge

  1. P0-Block-A (Risk-Hardening): BL-P01 + BL-P04 + BL-P05 + BL-P06 (Regime-Gate / Meme-Restriction / Cooldown / Slippage)
  2. P0-Block-B (Exposure-Hardening): BL-P02 + BL-P03 + BL-P13 (Confirmation-Score / Globale-Exposure-Cap / Reconcile)
  3. P1-Block-C (UX + Observability): BL-P07 + BL-P08 + BL-P09 + BL-P10 + BL-P11 + BL-P12 (Telegram-Felder / Subkind-Label / ATR-Skalierung / Confirmation-Signals / Event-Stream)
  4. P2-Block-D (Komfort): BL-P14 + BL-P15 + BL-P16 + BL-P17
  5. P3-Block-E (langfristig): BL-P18 + BL-P19 + BL-P20

7.10 GO/NO-GO Einschaetzung fuer unveraenderten Weiterbetrieb

UmgebungEmpfehlung
TESTNET (aktuell)GO — weiter beobachten
Maximaler Schaden = Testnet-Verluste; Bot bleibt paper-orchestriert; Mainnet-5-Layer-Block aktiv; Data-Collection fuer Backlog-Analyse weiterhin wertvoll.
MAINNET (zukuenftig)NO-GO bis Mindestens P0-Block-A + P0-Block-B abgeschlossen sind. BL-P19 (Pre-Mainnet-Drill mit Regime-Wechseln) ist Pflicht-Gate vor MH-7 Bot-Wiring.

8 — Boundaries (Review-End-State)

master HEAD2fbc7b5 unveraendert
git statusunveraendert
Bot in-container PID363 unveraendert
Worker in-container PID1 unveraendert
BINANCE_TESTNETtrue
managed_proposals / history0 / 0
docker cp / restart / stop0
Bot-Code-Touch0 — pure read
Threshold-Tuning / Runtime-Change0
Mainnet0
Push0
Output-StatusSTOP nach Bericht (Operator-Pin)

Status: REVIEW FERTIG Backlog gepflegt. STOP per Operator-Pin.
20 Backlog-Items in 5 Prio-Bloecken; 8 davon Mainnet-Blocking. Empfohlene Reihenfolge: P0-Block-A → P0-Block-B → P1-Block-C → P2-Block-D → P3-Block-E.