Files
AH-Oil-Trader/requirements-dev.txt
Axel HocksandClaude Opus 5 3391e04f32 Bibliotheken geprueft: zwei Ertraege, keine neue Laufzeit-Abhaengigkeit
Nicht nach Katalog beantwortet, sondern gegen die dokumentierten Schwachstellen
des Projekts - und beide Kandidaten wurden GEMESSEN, nicht empfohlen.

ERTRAG 1 - BLOCK-BOOTSTRAP (core/stichprobe.block_ci95), braucht GAR KEINE
Bibliothek. Die Luecke stand seit dem 07.08. woertlich in backtest_cost_gate:
"fuer ueberlappende Beobachtungen zu optimistisch ... dafuer braeuchte es einen
Block-Bootstrap". Behelf war entkoppeln(). Auf echten Daten (pbreak_predictions):
  naiv, alle Zeilen   n=4702  Breite 0,028   <- 3x zu eng
  entkoppelt (bisher) n= 552  Breite 0,083   <- 88 % Datenverlust
  Block L=30          n=4702  Breite 0,081   <- gleiche Breite, ALLE Daten
Und das Entkoppeln kostet nicht nur Genauigkeit, es VERSCHIEBT die Schaetzung
(0,399 gegen 0,427) - es nimmt systematisch die ERSTE Beruehrung je Level+Stunde.

KALIBRIERUNG GEMESSEN (AR(1), bekanntes Mittel, 200 Laeufe, Soll 95 %):
  rho    naiv   L=10   L=30   L=60
  0,00   94 %   94 %   91 %   92 %
  0,50   76 %   92 %   91 %   91 %
  0,90   40 %   80 %   89 %   90 %
  0,97   18 %   55 %   74 %   83 %
Die naive Zeile ist der Befund: bei rho=0,97 behauptet sie 95 % Sicherheit und
liegt in 18 % der Faelle richtig. Ehrlich zu den Grenzen: bei unabhaengigen
Daten kostet der Block ~3 Punkte (dort bleibt ci95 besser), und bei rho=0,97
deckt auch er nur 83 % - eine Verbesserung, keine Garantie.

ERTRAG 2 - hypothesis (dev-only), aufgenommen NACH einer Gegenprobe. Die Suite
prueft bisher BEISPIELE, und die waehle ich selbst aus. Die teuersten Fehler
sassen auf GRENZEN: room_info musste `frei` auf dem UNGERUNDETEN Abstand
entscheiden, weil 0,5951 gerundet durchs 0,6-Gate rutscht. hypothesis findet
genau diesen Fall (dist=0.59765625) in Sekunden. Erst danach aufgenommen.
Neu tests/test_invarianten.py (4 Eigenschafts-Tests auf REINEN Funktionen), per
importorskip - die Suite laeuft auch ohne.
Beim ersten Lauf fielen zwei Tests, beide waren MEINE Fehler: cluster rundet auf
3 Stellen (Invariante zu streng) und zwei inhaltsgleiche dicts sind ==
(Reihenfolge muss ueber die Identitaet geprueft werden). Genau dafuer sind
Property-Tests da. Mutationsprobe: Rundung verbogen -> 2 Tests fallen.

BEGRUENDET ABGELEHNT: numba (Backtests 11 s/12k Bars = nicht der Engpass, und
ein Rewrite verletzt die Bit-Gleichheits-Regel) · statsmodels/arch (jetzt 15
Zeilen stdlib mit eigener Kalibrierung) · polars/pyarrow (kein DataFrame-
Workload) · loguru/structlog/rich (das Logformat ist forensisch tragend) ·
tenacity (Wiederholungen haben eigene Semantik, _mark_dead) · httpx (requests
laeuft) · pandas_ta (Indikatoren sind validiert, ein Austausch verschoebe jede
dokumentierte Zahl) · mypy (kaum Annotationen, ty deckt die Aritaet ab).

requirements.txt (Laufzeit) bleibt UNVERAENDERT - auf einer frischen Maschine
soll der Bot mit moeglichst kleiner Oberflaeche wieder laufen.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-20 19:57:31 +02:00

32 lines
1.7 KiB
Plaintext

# WERKZEUGE fuer Entwicklung, Messung und Pruefung — NICHT fuer den Live-Betrieb.
#
# ⚠ Bewusst getrennt von `requirements.txt`: der Bot soll sich auf einer frischen
# Maschine mit einer moeglichst kleinen Oberflaeche wiederherstellen lassen. scipy
# und scikit-learn haben nichts im Handelspfad zu suchen, auch wenn Backtests sie
# nutzen.
#
# Installation: python -m pip install -r requirements-dev.txt
-r requirements.txt
# ── Pruefung (laeuft im pre-commit-Hook) ─────────────────────────────────
pytest==9.1.1
ruff==0.16.1 # ersetzt pyflakes: gleiche Befunde, deutlich schneller
pyflakes==3.4.0 # Rueckfall in `tools/check_nfalle.py`, falls ruff fehlt
# Eigenschafts-Tests auf den REINEN Funktionen (tests/test_invarianten.py).
# ⚠ Aufgenommen NACH einer Gegenprobe, nicht auf Verdacht: hypothesis findet den
# real am 10.08. gefundenen Rundungsfehler (`frei` auf gerundetem Abstand ->
# 0,59765625 rutscht durchs 0,6-Gate) in Sekunden. Die Suite prueft sonst nur
# BEISPIELE, und die waehle ich selbst aus - genau dort sitzt der blinde Fleck.
# ⚠ Optional: `tests/test_invarianten.py` ueberspringt sich per `importorskip`,
# die Suite laeuft also auch ohne.
hypothesis==6.165.10
# ── Messung / Backtests ──────────────────────────────────────────────────
numpy==2.2.6
scipy==1.18.0 # `backtest_cost_gate.ci95` (Bootstrap-Konfidenzintervalle)
scikit-learn==1.9.0 # bislang ungenutzt; Kandidat fuer P(break)-Nachbau
pandas==3.0.2 # bislang ungenutzt
# Typpruefung (Aritaet) — Stufe A3 in tools/check_nfalle.py, seit 2026-08-19
ty==0.0.73