Terminmarktmerkmale, Ollama-Erklärungen, schnelleres Lernen
Drei Erweiterungen aus der vorangegangenen Analyse. Lerngeschwindigkeit - background_sample_every_n_bars von 10 auf 5. Gemessen stammen nur rund 3 % der Beobachtungen aus echten Trades; diese Stichproben sind der wirksamste Hebel. Nicht weiter gesenkt, weil benachbarte Kerzen stark korreliert sind und sich die Label-Fenster überlappen - mehr Gradientenschritte heißt dort nicht mehr Information. Funding Rate und Open Interest als Merkmale (strategy.derivatives, standardmäßig aus) - Vier zusätzliche Merkmale vom Perpetual zum jeweiligen Spot-Paar. Gehandelt wird weiterhin Spot, die Kennzahlen kommen über einen zweiten ccxt-Client mit defaultType=future. - Die Zuordnung ist lookahead-frei: Für jede Kerze gilt nur der Wert, der zu diesem Zeitpunkt bereits veröffentlicht war. - Fällt eine Quelle aus oder deckt sie weniger als min_coverage ab, bleiben die Spalten neutral. Die Modelldimension bleibt dabei stabil. - Gemessene API-Grenzen bei Binance: Open Interest reicht 30 Tage zurück, 500 Zeilen je Abruf; Funding Rate über ein Jahr. Beide Merkmale sind deshalb einzeln abschaltbar. ERGEBNIS: kein Nutzen. Zwei Backtests mit identischen Kerzen und Seed - 5m/20 Tage: Rendite -1,79 % auf -1,90 %, Accuracy 51,2 % auf 50,4 %; 15m/28 Tage: Rendite -2,22 % auf -2,67 %, LogLoss praktisch unverändert. Die Anbindung arbeitet einwandfrei (100 % Datenabdeckung), das Modell gewichtet die neuen Merkmale aber nur mit 0,01 bis 0,09 gegenüber 0,39 für ema_spread. Die Funktion bleibt aus und ist dafür da, das auf anderen Zeiträumen selbst zu prüfen - nicht weil sie sich bewährt hätte. Ollama-Erklärungen (llm, standardmäßig aus) - Neuer Dashboard-Bereich und POST /control/explain. Das Modell bekommt den Zustand als Text und gibt Text zurück; es entscheidet nichts, beeinflusst keine Order und wird nie aus dem Handels-Loop heraus aufgerufen. Der System-Prompt untersagt Anlageempfehlungen und Kursprognosen. - Bewusst nicht als Entscheider: nicht reproduzierbar, kaum backtestbar, und es würde die Nachvollziehbarkeit des linearen Modells zerstören. - Beim Test an qwen3.8:27b zeigte sich ein echter Fehler: Reasoning-Modelle legen ihre Denkschritte in ein eigenes Antwortfeld und verbrauchten dafür das gesamte Token-Budget, response blieb leer. llm.think ist jetzt standardmäßig false, die Fehlermeldung nennt Ursache und Ausweg statt nur "leere Antwort", und für ältere Ollama-Versionen ohne das Feld gibt es einen Wiederholungsversuch ohne es. Bewusst nicht enthalten: News- und Google-Trends-Sentiment. Es fehlt eine Quelle mit Point-in-Time-Historie; ohne die lässt sich das Merkmal nicht backtesten. Nach dem Ergebnis oben wäre ein unvalidiertes Merkmal der falsche Schritt. test_stop_loss_bounds_the_worst_trade läuft jetzt mit strategy.name: rules. Er hing über die geänderte Voreinstellung an zufälligem Modellverhalten, geprüft werden soll aber die Stop-Logik. 270 Tests (36 neue), ruff sauber. Gegen echte Binance-Daten und eine laufende Ollama-Instanz geprüft, Dashboard-Bereich im Browser bedient.
This commit is contained in:
@@ -95,6 +95,23 @@ strategy:
|
||||
trend_filter_period: 100 # 0 = Trendfilter aus
|
||||
min_holding_bars: 3 # Signalausstiege erst danach; Stop/Ziel gelten immer
|
||||
|
||||
# Zusatzmerkmale aus dem Terminmarkt. Die Daten stammen vom Perpetual zum jeweiligen
|
||||
# Spot-Paar (BTC/USDT -> BTC/USDT:USDT); gehandelt wird weiterhin Spot.
|
||||
#
|
||||
# In zwei Backtests (5m über 20 Tage, 15m über 28 Tage) brachten sie KEINE Verbesserung –
|
||||
# die Anbindung funktioniert, die Merkmale trugen nichts bei. Deshalb standardmäßig aus.
|
||||
# Zum Selberprüfen einschalten und gegen einen Lauf ohne vergleichen.
|
||||
#
|
||||
# Achtung: Ein- und Ausschalten ändert die Anzahl der Merkmale. Ein gespeichertes Modell
|
||||
# mit anderer Dimension wird verworfen, das Training beginnt von vorn.
|
||||
derivatives:
|
||||
enabled: false
|
||||
funding_rate: true # was Longs den Shorts zahlen, alle 8h
|
||||
open_interest: true # offene Kontrakte – reicht bei Binance nur 30 Tage zurück
|
||||
oi_change_bars: 12 # über wie viele Kerzen die OI-Veränderung gemessen wird
|
||||
max_pages: 40 # Obergrenze für Seitenabrufe je Symbol
|
||||
min_coverage: 0.9 # darunter gilt die Reihe als unbrauchbar und bleibt neutral
|
||||
|
||||
learner:
|
||||
enabled: true
|
||||
model_path: /data/models/adaptive.npz
|
||||
@@ -111,7 +128,12 @@ strategy:
|
||||
trade_sample_weight: 3.0 # echte Trades zählen dreifach gegenüber Shadow-Labels
|
||||
# Einstiegssignale sind selten. Zusätzliche Stichproben des Marktzustands verkürzen die
|
||||
# Aufwärmphase von Wochen auf Tage (0 = aus).
|
||||
background_sample_every_n_bars: 10
|
||||
# Der wirksamste Hebel für die Lerngeschwindigkeit: Nur rund 3 % der Beobachtungen
|
||||
# stammen aus echten Trades, der Rest aus diesen Stichproben. Von 10 auf 5 halbiert
|
||||
# die Zeit bis zur Einsatzbereitschaft.
|
||||
# Nicht zu klein wählen – benachbarte Kerzen sind stark korreliert, unter dem halben
|
||||
# label_horizon_bars überlappt praktisch jede Stichprobe mit ihrem Nachbarn.
|
||||
background_sample_every_n_bars: 5
|
||||
background_sample_weight: 0.5
|
||||
# Beim Start ein noch untrainiertes Modell aus der Kurshistorie vorlernen, damit der Bot
|
||||
# nach Sekunden einsatzbereit ist statt nach Tagen (0 = aus).
|
||||
@@ -147,6 +169,22 @@ notifications:
|
||||
notify_on_trade: true
|
||||
notify_on_risk_halt: true
|
||||
|
||||
# ──────────────── Erklärungen über ein lokales Sprachmodell (Ollama) ────────
|
||||
# Fasst auf Knopfdruck zusammen, was die Zahlen zeigen. Hat KEINEN Einfluss auf den
|
||||
# Handel – es entscheidet nichts, es formuliert nur.
|
||||
llm:
|
||||
enabled: false
|
||||
base_url: http://127.0.0.1:11434
|
||||
model: llama3.2
|
||||
timeout_seconds: 120
|
||||
temperature: 0.2
|
||||
max_tokens: 700
|
||||
max_answer_chars: 2000
|
||||
# Reasoning-Modelle (qwen3, deepseek-r1) verbrauchen sonst das gesamte Token-Budget für
|
||||
# ihre Denkschritte und liefern eine leere Antwort. Für eine Zustandsbeschreibung
|
||||
# wird kein Reasoning gebraucht.
|
||||
think: false
|
||||
|
||||
# ───────────────────────────── Backtest-Voreinstellungen ────────────────────
|
||||
backtest:
|
||||
bars: 5000
|
||||
|
||||
Reference in New Issue
Block a user