Hyperliquid geprueft: Orderbuch-Stimme raus, Funding gemessen (traegt nicht),

Kontext in die Meldungen (v=145)

Direkt gegen die HL-API geprueft statt aus dem Code geschlossen.

ANGEBOT: 4 Oel-Maerkte (2 liquide: xyz:CL OI 3,07 Mio, xyz:BRENTOIL 2,25 Mio),
je Markt mark/oracle/funding/open_interest/day_volume + l2Book (20 Level je
Seite). Historie: fundingHistory 5.095 Stundenwerte ueber 7 Monate inkl.
premium. Open Interest hat KEINE Historie -> waere sammelpflichtig.

Netz-Frage geklaert: config sagt testnet (leeres Buch, 0 Bids/0 Asks), aber es
sind zwei Schalter — [hyperliquid] network steuert das Handeln (aus),
[sim] price_network die Daten (mainnet, live bestaetigt).

(1) Mehr Orderbuch-Daten: NEIN. Zweimal unabhaengig gemessen — bookflow_report
    0,2-1,0 bp gegen eine ~3-bp-Schwelle und KIPPT; Lead-Lag: Pepperstone
    fuehrt, HL trifft nach 6 s zu 51 %.
(2) Modul "Orderbuch" Gewicht 0,5 -> 0. Ueber 2.688 Episoden beidhaelftig
    negativ (-0,054/-0,066, 49 % Treffer). Chip bleibt.
(3) analyze_hl_funding.py: Funding/Premium gegen den CFD, 2 Haelften.
    ⚠ Der erste Lauf meldete mehrere "robuste" Buckets und war FALSCH —
    ueberlappende Forward-Fenster (aus n=506 werden ~21 unabhaengige Faelle)
    und global gebildete Quintile (Bucket mit der Zeit konfundiert). Dass
    Funding- und Premium-Tabelle fast identisch waren, war der dritte Hinweis:
    HL rechnet das Funding aus dem Premium. Entueberlappt haelt kein Bucket.
(4) hl_ctx in den Meldungen (#hl-note) als reine Anzeige.
    ⚠ Zwei Bau-Fallen behoben: der Aufruf erbte den 2-s-Timeout der Waende und
    lief still ins Leere (braucht real 7,2 s), und er haette den Trend-Loop
    blockiert -> Daemon-Thread wie beim Wirtschaftskalender.

Live verifiziert: hl_ctx befuellt, Orderbuch weight=0 bei erhaltenem Chip,
v=145 ausgeliefert, eine Instanz auf Port 8000.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Axel Hocks
2026-08-06 23:38:01 +02:00
co-authored by Claude Opus 5
parent 874ee16e00
commit 2cdd1ba0e8
7 changed files with 375 additions and 4 deletions
+40 -1
View File
@@ -694,6 +694,20 @@ class TradingEngine:
except Exception as re_: log.warning(f"rec_outcomes: {re_}")
# Wirtschaftskalender (self-throttled ~1 h, außerhalb des mt5_lock
# unkritisch — reiner HTTP-Fetch mit Timeout)
# HL-Kontext (Funding/OI/Premium) — reine Anzeige.
# ⚠⚠ IM DAEMON-THREAD, nicht inline: der Aufruf fragt die
# HL-API live nach allen Öl-Märkten und braucht real ~7 s.
# Inline würde er den Trend-Loop bei jedem Fälligwerden
# (~5 min) so lange anhalten — dieselbe Begründung, aus der
# der Wirtschaftskalender im Thread läuft. `market()` ist
# selbst gedrosselt und thread-sicher, ein zweiter Aufruf
# während der erste läuft liefert einfach den Cache.
try:
if not getattr(self, "_hl_ctx_busy", False):
self._hl_ctx_busy = True
threading.Thread(target=self._hl_ctx_refresh,
daemon=True).start()
except Exception as he: log.debug(f"hl market: {he}")
try: self.calendar.maybe_refresh()
except Exception as ke: log.warning(f"calendar.refresh: {ke}")
self._run_analysis()
@@ -2974,7 +2988,20 @@ class TradingEngine:
imb = w.get("imb5")
if isinstance(imb, (int, float)) and abs(imb) >= _OB_IMB_MIN:
ov = 1 if imb > 0 else -1
ow = 0.5
# ⚠⚠ GEWICHT AUF 0 (2026-08-06). Das Orderbuch-Modul ist aus
# ZWEI unabhängigen Richtungen als nicht tragfähig gemessen:
# · `analyze_verdict_modules.py` (15.544 Zeilen): über **2.688
# Episoden beidhälftig NEGATIV** (0,054/0,066 ×ATR, 49 %
# Treffer) — der einzige konsistent falsche Beitrag im Feld.
# · Das HL-Projekt selbst (`bookflow_report.txt`): Bid/Ask-Druck
# auf den CFD übertragen 0,61/0,52 bp und KIPPT; die eigene
# Schwelle dort lautet „< ~3 bp ist von den Kosten gefressen".
# Dazu der Lead-Lag-Befund: **Pepperstone führt** (Peak k=1 ≈ 6 s),
# HL-Richtung trifft nach 6 s zu 51 % (n=545) — alles
# Preis-Abgeleitete von HL läuft hinterher.
# Der CHIP bleibt (Imbalance ist als Kontext lesbar), nur die
# Stimme entfällt. Zurück: `ow = 0.5`.
ow = 0.0
odet = f"Imbalance {imb:+.2f}"
elif isinstance(imb, (int, float)):
odet = f"Imbalance {imb:+.2f} (zu schwach)"
@@ -3090,6 +3117,17 @@ class TradingEngine:
self._align_ts = now
return getattr(self, "_align_cache", None)
def _hl_ctx_refresh(self):
"""Holt den HL-Kontext im Hintergrund (s. Aufrufstelle im Trend-Loop)."""
try:
d = self.hl_walls.market()
if d:
self._hl_ctx = d
except Exception as e:
log.debug(f"hl market: {e}")
finally:
self._hl_ctx_busy = False
def _block_mix_cached(self) -> dict | None:
"""WELCHE Gates blocken heute, und wie oft? (2026-08-06)
@@ -3726,6 +3764,7 @@ class TradingEngine:
(self.news.sentiment or {}).get("score")),
"alignment": self._alignment_cached(),
"block_mix": self._block_mix_cached(),
"hl_ctx": getattr(self, "_hl_ctx", None),
"rec_track": self._rec_track_cached(),
# Kennzahlen der MANUELLEN Trades für die gleichnamige Karte
# (2026-08-04). Rein deskriptiv; ~120 s gecacht, damit der heiße