Nur zu Bildungszwecken — keine Finanzberatung. Trading ist mit einem erheblichen Verlustrisiko verbunden.
Fortgeschrittene Referenz · ML/KI-Bibliotheken & Modelle · Algorithmisches Trading

Fortgeschrittener KI-Trading-Leitfaden: Die vollständige Referenz zu ML-Bibliotheken, Modellen & Frameworks für Quants

Eine Übersicht auf Praktiker-Niveau über das Open-Source- und Hugging-Face-Ökosystem für systematisches Trading — Gradient Boosting, tiefe Zeitreihen-Architekturen, Zero-Shot-Foundation-Models, Financial NLP, Reinforcement Learning, López de Prados Validierungs-Toolkit, Backtesting-Engines und MLOps — jeweils mit Architektur-Anmerkungen, Lizenzen, Benchmarks und Code.

5-Tage-Gratis-Testphase
Keine Karte erforderlich
Unbegrenzte Trades
Sofortige Ausführung

Klassisches / tabellarisches ML — die Arbeitspferde

Gradient-Boosted Decision Trees (GBDTs) — nicht tiefe neuronale Netze — sind die Standard-Modellfamilie für jede tabellarische Klassifikations-/Regressionsaufgabe in dieser Pipeline: Meta-Labeling, Regime-Features, Faktor-Scoring. Ein vielzitierter Vergleich von 2024 über 100–300+ tabellarische Benchmarks stellte fest, dass GBDTs Deep Learning auf tabellarischen Daten mit deutlich weniger Tuning erreichen oder übertreffen (arXiv:2402.03970). Tabellarische Finanzdaten sind genau das Regime, in dem dies am stärksten gilt: niedriges Signal-Rausch-Verhältnis, gemischte stetige/kategoriale/spärliche Features, ausgeprägte Nichtstationarität und kleine effektive Stichprobengrößen — Bedingungen, unter denen die Flexibilität tiefer Netze meist Varianz statt Signal einbringt.

Warum GBDTs bei tabellarischen Finanzdaten dominieren

  • Bias-Varianz-Trade-off. Bei einigen Tausend effektiven (nach Eindeutigkeit gewichteten) Zeilen und einem schwachen, verrauschten Signal geht der niedrige Bias eines Netzes mit hoher Kapazität mit einem Varianzkosten einher, die Sie sich nicht leisten können. Flache Bäume mit starker Regularisierung (Blattanzahl, min-data-in-leaf, Bagging) liegen an einem deutlich besseren Punkt dieses Trade-offs.
  • Gemischte und spärliche Features nativ. Bäume splitten anhand roher Feature-Werte — kein Skalieren, keine Imputationsstrategie, keine Embedding-Tabelle für selten befüllte Kategoriale (Sektor, Börse, Verfallsnähe-Flag). Der Aufwand im Feature Engineering fließt ins Signal, nicht in Preprocessing-Klempnerei.
  • Monotonie-Constraints kodieren finanzielle Priors direkt. LightGBM/XGBoost/CatBoost unterstützen alle monotone_constraints: z. B. erzwingen, dass P(win) mit der Trendstärke nicht fällt und mit der realisierten Volatilität nicht steigt. Das regularisiert hin zu domänensinnvollen Modellen und ist in einem Standard-MLP nicht verfügbar oder weit umständlicher.
  • Fehlende Werte und Nichtstationarität. Bäume leiten fehlende Werte nativ weiter (keine leakage-anfällige Imputation, die auf dem gesamten Datensatz gefittet wird), und flache, häufig neu trainierte Bäume passen sich an Regimewechsel schneller an als ein großes Netz, das viele Epochen braucht, um veraltete Muster zu verlernen.
LibraryLicenseMaturity / stars*Categorical handlingSpeedBest fit here
LightGBMMITMature · moved microsoft/LightGBMlightgbm-org/LightGBM Mar 2026, still MITNative (histogram-based, leaf-wise growth)Fastest of the three on CPU, large-NDefault meta-label / primary classifier
XGBoostApache-2.0Mature, dmlc-maintained, huge ecosystemNeeds one-hot or target-encoding (or enable_categorical)Slightly slower than LightGBM on CPU histogram modeSecond opinion / ensembling partner for LightGBM
CatBoostApache-2.0Mature, Yandex-maintainedBest-in-class native categorical handling (ordered target stats)Slower to train, fast to scoreWhen you have many high-cardinality categoricals (symbol, sector, exchange)
scikit-learnBSD-3-ClauseFoundational, ~19+ yearsVia ColumnTransformer/OneHotEncoderN/A — utility layerCV splitters, metrics, pipelines, calibration, GMM — the glue, not the model

*Star-Zahlen sind Richtwerte, geprüft Mitte 2026 — als „Größenordnung" zu verstehen, nicht als exakte Werte.

LightGBM

MIT

Mechanismus: Histogramm-basiertes Gradient Boosting mit blattweisem (best-first) Baumwachstum statt ebenenweise — konvergiert schneller und meist zu geringerem Loss als ebenenweises Wachstum bei gegebenem Blatt-Budget, um den Preis einer höheren Neigung zum Overfitting bei kleinen Daten (steuerbar über num_leaves/min_data_in_leaf).

Wann einsetzen: Standardwahl für den Meta-Label-Filter und jede tabellarische Klassifikation/Regression in diesem Stack — schnellstes CPU-Training, natives Routing fehlender Werte, native Monotonie-Constraints. Wann nicht: bei sehr kleinen Stichproben (< ~500 Zeilen), wo blattweises Wachstum schnell overfittet; dort ist ebenenweises XGBoost oder eine einfache logistische Regression vorzuziehen.

Python · LightGBM-Meta-Label-Training auf Triple-Barrier-Labels
import lightgbm as lgb
from sklearn.model_selection import train_test_split

# X: one row per primary-strategy signal date. Columns e.g.
#   log_ret_5d, log_ret_20d, realized_vol_20d, atr_14, frac_diff_price,
#   ema_slope, rsi_14, bb_pctb, obv_z, dist_200ma
# y: triple-barrier label from mlfinpy -> 1 = profit barrier hit first, 0 = stop/time first
# w: sample weight from mlfinpy uniqueness/time-decay (NEVER plain 1s -- labels overlap)
X, y, w = features_df[feature_cols], labels_df["tb_label"], labels_df["sample_weight"]

X_train, X_val, y_train, y_val, w_train, w_val = train_test_split(
    X, y, w, test_size=0.2, shuffle=False              # never shuffle time series
)

params = {
    "objective": "binary", "metric": "auc",
    "num_leaves": 31, "learning_rate": 0.03,
    "feature_fraction": 0.7, "bagging_fraction": 0.7, "bagging_freq": 5,
    "min_data_in_leaf": 50,
    # financial priors: e.g. [trend, vol, ...] -> win-prob non-decreasing in trend,
    # non-increasing in realized vol, unconstrained (0) elsewhere
    "monotone_constraints": [1, 0, -1, 0, 0, 1, 0, 0, 0, -1],
    "verbosity": -1,
}
train_set = lgb.Dataset(X_train, label=y_train, weight=w_train)
val_set   = lgb.Dataset(X_val, label=y_val, weight=w_val, reference=train_set)

model = lgb.train(params, train_set, num_boost_round=2000,
                   valid_sets=[val_set], callbacks=[lgb.early_stopping(100)])

meta_label_proba = model.predict(X_new)  # P(this signal hits the profit barrier first)

XGBoost

Apache-2.0

Mechanismus: ebenenweise (tiefenweise) geboostete Bäume mit einer regularisierten Zielfunktion (L1/L2 auf Blattgewichten), die direkt in das Split-Finding-Kriterium eingebacken ist, plus ein gut optimierter Histogramm-/Quantil-Sketch-Split-Algorithmus für große Daten.

Wann einsetzen: als zweites, anders verzerrtes Modell für das Ensembling mit LightGBM (ebenen- vs. blattweises Wachstum dekorreliert Fehler nützlich); GPU-Training, wenn Sie der CPU entwachsen. Wann nicht: wenn Sie erstklassige native Behandlung kategorialer Features ohne Preprocessing brauchen — dort ist CatBoost besser.

Bash · Installation
pip install xgboost
# minimal use: xgboost.XGBClassifier(n_estimators=800, max_depth=4, learning_rate=0.03,
#   subsample=0.7, colsample_bytree=0.7, monotone_constraints="(1,0,-1,0,0,1,0,0,0,-1)")

CatBoost

Apache-2.0

Mechanismus: Ordered Boosting (ein permutationsgetriebenes Verfahren, das das Target-Leakage vermeidet, unter dem klassisches greedy Target-Encoding leidet) plus native geordnete Target-Statistiken für kategoriale Features — kein manueller Encoding-Schritt und weniger anfällig für Prediction Shift als naives Target-Encoding.

Wann einsetzen: Querschnitts-Modelle über Aktienkörbe mit vielen kategorialen Features (Sektor, Branche, Börse, Index-Zugehörigkeits-Flags), bei denen Sie sonst Target-Encoding von Hand bauen müssten. Wann nicht: bei engen CPU-Trainingszeit-Budgets — CatBoost ist im Fitting typischerweise das langsamste der drei, wenngleich schnell beim Scoren.

Bash · Installation
pip install catboost
# CatBoostClassifier(cat_features=["sector","exchange"], iterations=1500,
#   depth=6, learning_rate=0.03, monotone_constraints="1:1,2:-1")

scikit-learn

BSD-3-Clause

Rolle hier: keine konkurrierende Modellfamilie, sondern das Bindegewebe — Pipeline für leakage-sicheres In-Fold-Preprocessing, GroupKFold/eigene purged Splitter, GaussianMixture als leichtgewichtige Regime-Baseline, CalibratedClassifierCV, um GBDT-Scores in ehrliche Wahrscheinlichkeiten zu verwandeln, bevor Sie Positionen darauf dimensionieren (rohe GBDT-Ausgaben sind gut geranked, aber schlecht kalibriert).

Kalibrieren, bevor Sie dimensionieren

Die predict_proba-Ausgabe eines GBDT ist ein gutes Ranking-Signal, aber meist keine gut kalibrierte Wahrscheinlichkeit ab Werk — GBDTs neigen dazu, Vorhersagen Richtung 0/1 zu drücken. Wenn Ihr Positions-Sizer „Confidence" direkt verarbeitet (fractional-Kelly, meta-label-skalierte Größe), umhüllen Sie das Modell mit sklearn.calibration.CalibratedClassifierCV (isotonisch oder Platt), gefittet innerhalb des CV-Folds, sonst wird Ihre Dimensionierung systematisch überkonfident sein.

Deep-Learning-Zeitreihen-Architekturen

Dies sind die von Grund auf trainierten neuronalen Architekturen, die Sie selbst trainieren würden (typischerweise über neuralforecast, Apache-2.0, das sie alle implementiert), im Gegensatz zu den vortrainierten Foundation-Models in §3. Jede von ihnen wurde auf M4/M3/electricity/traffic/ETT in die Welt gebenchmarkt — keine wurde gegen Finanz-Renditereihen entworfen, und das ehrliche Urteil je Architektur spiegelt das wider.

ArchitectureYear / venueCore ideaProblem vs. plain LSTMFinancial-data verdict
LSTM / GRU1997 / 2014Gated recurrent units carry a cell state across time steps to fight vanishing gradients.— (baseline)Still a reasonable baseline for sequence classification (e.g. regime state); rarely beats GBDT on tabular-framed return prediction and is slower to train/tune.
TCNBai et al. 2018Stacked causal, dilated 1-D convolutions (WaveNet-style) give an exponentially growing receptive field with fully parallel training.Parallelizable (no sequential recurrence) and avoids vanishing/exploding gradients over long lookbacks.Solid, fast baseline in neuralforecast; no documented financial edge over GBDT, but useful when you specifically need a long causal receptive field cheaply.
N-BEATSOreshkin et al. 2020 (ICLR)Pure fully-connected stacks with backward/forward residual "basis expansion" blocks; interpretable trend/seasonality decomposition, no recurrence or attention.Much simpler and more parallel than RNN/attention stacks; beat the M4-competition winner by ~3% and a statistical benchmark by ~11%.Benchmarks are M3/M4/tourism — non-financial. Useful as a fast, interpretable univariate baseline; not evidence of edge on returns.
N-HiTSChallu et al. 2023 (AAAI)Extends N-BEATS with hierarchical interpolation and multi-rate input sampling so different blocks specialize in different frequency bands.Cuts long-horizon compute and reportedly beats Transformer baselines by >25% on long-horizon benchmarks.Same caveat as N-BEATS — a strong long-horizon forecaster on benchmark data, unproven on financial returns specifically.
Temporal Fusion Transformer (TFT)Lim et al. 2021 (Int. J. Forecasting)LSTM encoder for local processing + interpretable multi-head self-attention for long-range dependencies + a variable-selection gating network that also yields feature-importance-like interpretability.Natively handles static covariates, known-future inputs (e.g. expiry date), and produces quantile forecasts with built-in interpretability — none of which vanilla LSTM offers.The most finance-plausible of the deep architectures because of native covariate support; still no peer-reviewed evidence of consistent OOS financial-return edge over GBDT meta-labeling.
InformerZhou et al. 2021 (AAAI, best paper)ProbSparse self-attention selects only the top-scoring queries, cutting attention cost from O(L²) to O(L log L) for very long sequences.Makes long-sequence (thousands of steps) transformer forecasting computationally tractable.Designed for long-horizon benchmark forecasting, not noisy short-memory financial returns; see the DLinear caveat below.
AutoformerWu et al. 2021 (NeurIPS)Replaces standard attention with an auto-correlation mechanism plus built-in series decomposition (trend/seasonal) between blocks.Captures periodicity more directly than dot-product attention; more robust on strongly seasonal series.Financial returns have weak/no reliable seasonality at daily/swing frequency — decomposition assumption is a weaker fit than on electricity/traffic data.
FEDformerZhou et al. 2022 (ICML)Performs attention in the frequency domain (via Fourier/wavelet transforms) with a mixture-of-experts decomposition for trend.Frequency-domain attention scales sub-quadratically and captures global periodic structure.Same seasonality-dependence caveat as Autoformer; frequency-domain priors are a mismatch for near-random-walk return series.
PatchTSTNie et al. 2023 (ICLR)Splits each series into subseries "patches" as transformer tokens (like ViT for time series) and treats each channel independently, sharing one transformer backbone across all channels.Patch tokenization retains local semantics and cuts attention cost quadratically vs. point-wise tokens; channel-independence avoids spurious cross-channel overfitting. Reported ~21% MSE reduction over prior transformer SOTA on long-horizon benchmarks.The architectural basis for several foundation models below (see §3); channel-independence is a genuinely useful inductive bias, but the MSE gains are on ETT/weather/traffic, not equities.
iTransformerLiu et al. 2024 (ICLR spotlight)"Inverts" the standard transformer: each variate's whole time series becomes one token, and attention runs across variates instead of across time steps, with a per-series FFN handling temporal encoding.Captures multivariate correlations directly via attention without modifying core transformer components; generalizes to unseen variate counts.Notably, in a 2026 financial-return benchmark (arXiv:2606.27100, see §3), iTransformer beat the pretrained foundation models on META — a rare case of a from-scratch architecture outperforming zero-shot foundation models on a specific liquid single-name equity.
Der DLinear-Vorbehalt — lesen, bevor Sie zu irgendeinem Transformer greifen

Zeng et al., „Are Transformers Effective for Time Series Forecasting?" (AAAI-23 Oral; Code: cure-lab/LTSF-Linear) zeigten, dass eine einzige lineare Schicht mit Trend-/Saison-Zerlegung (DLinear) Informer, Autoformer und FEDformer auf nahezu jedem gängigen Langhorizont-Benchmark schlug, mit dem Argument, dass deren berichtete Zugewinne größtenteils aus der nicht-autoregressiven Direct-Multistep-Trainingsstrategie stammten, nicht aus Attention selbst. Die Folgeanalyse von Hugging Face relativierte dies etwas (parameter-gematchte Transformer schneiden besser ab), aber die praktische Lektion bleibt: Benchmarken Sie jede tiefe Architektur stets gegen eine lineare/ARIMA-Baseline (Nixtla statsforecast, §11), bevor Sie einem komplexitätsgetriebenen Genauigkeitsgewinn trauen. Das gilt doppelt bei Finanzdaten, wo Rauschen das Signal weit stärker dominiert als bei Strom- oder Verkehrsdaten.

Zeitreihen-Foundation-Models auf Hugging Face

Vortrainierte, Zero-Shot-Zeitreihen-Forecaster sind real und nützlich — für Volatilität, nicht für die Kursrichtung. Eine Studie vom Juni 2026, eigens gebaut, um genau dies zu testen, „Pretrained Time-Series Foundation Models for Financial Return Forecasting" (Noguer i Alonso & Pereira Franklin, AI Finance Institute), benchmarkte TimeGPT, TimesFM-2.5, Moirai-2.0, Chronos und Chronos-2 gegen von Grund auf trainierte NBEATS/NHITS/PatchTST/iTransformer/KAN auf fünf liquiden US-Aktien (AAPL, AMZN, GOOG, JPM, META) mit einem Rolling-Origin-Protokoll gegen eine Random-Walk-Benchmark. Das Ergebnis: über zehn Asset-/Task-Kombinationen zeigten nur zwei eine statistisch signifikante Outperformance gegenüber dem Random Walk — Chronos bei AMZN und Moirai-2.0 bei GOOG — und die Autoren stellen unmissverständlich fest, dass „die Zugewinne gegenüber der Random-Walk-Benchmark klein und spärlich sind", und schließen, dass TSFMs „nützliche praktische Priors sind, die die Kosten der Modellentwicklung senken", aber ausdrücklich „keine universellen Maschinen zur statistisch verlässlichen Alpha-Generierung". Behandeln Sie jedes Modell weiter unten entsprechend: exzellente, auf CPU lauffähige Maschinen für Volatilitäts-/Vol-Forecast-Inputs in eine Sizing-Schicht; schwach bis Random-Walk für die Kursrichtung.

ModelOrgArchitecture familyParamsContextLicense
Chronos / Chronos-BoltAmazon ScienceT5-style encoder-decoder over quantized/tokenized values (Chronos) or direct patch-based multi-step regression heads (Bolt)Bolt-base 205M (mini→large family)Model-dependent, typically up to ~2048 ptsApache-2.0
TimesFMGoogle ResearchDecoder-only transformer over fixed-length input/output patches (32-in / 128-out patch config)200M (v1.0) / 500M (v2.0)Up to 2048 pts trained contextApache-2.0
Moirai / Moirai-MoESalesforceMasked-encoder transformer with "any-variate" attention (flattens multiple series into one token sequence so it natively handles arbitrary channel counts and covariates)Small/Base/Large (14M–311M)Flexible, any positive lengthCC BY-NC-4.0
Lag-LlamaServiceNow / Morgan Stanley / Mila et al.LLaMA-style decoder-only transformer fed engineered lag features (not raw tokenized values) as its "vocabulary"~2.45M (deliberately tiny)Recommended 32–1024 pts, tunableApache-2.0
MOMENTAuton Lab, CMUTransformer trained multi-task (forecast + classify + detect anomalies + impute) on the "Time-series Pile" corpusSmall/Base/Large (~40M–341M)Task-dependentMIT
IBM Granite-TimeSeries (PatchTSMixer / PatchTST / TTM)IBM ResearchPatchTSMixer = all-MLP mixer over patches (no attention); PatchTST variant = patch-transformer; TTM = "Tiny Time Mixer," a very small pretrained mixerPatchTSMixer ~1M (task head), TTM sub-5M512-in / 96-out typical configsApache-2.0

Amazon Chronos / Chronos-Bolt

Apache-2.0 · 205M

Model Card: huggingface.co/amazon/chronos-bolt-base (die Familie umfasst auch chronos-t5-{tiny,mini,small,base,large} und das neuere amazon/chronos-2).

Architektur: Das ursprüngliche Chronos tokenisiert skalierte, quantisierte Zeitreihenwerte in ein festes Vokabular und führt sie durch einen Standard-T5-Encoder-Decoder — d. h. es behandelt Forecasting als Sprachmodellierung über ein diskretisiertes numerisches Alphabet. Chronos-Bolt ersetzt das autoregressive Token-für-Token-Decoding durch direkte Multi-Step-Patch-Regression, berichtet als bis zu ~250× schneller und ~20× speichereffizienter bei vergleichbarer oder besserer Genauigkeit (gemessen über WQL/MASE auf 27 Benchmark-Datensätzen), trainiert auf in der Größenordnung ~100 Mrd. Zeitreihen-Beobachtungen.

Fazit: beste Allround-Wahl für einen reinen CPU-Volatilitäts-Forecast-Input — Apache-2.0, schnell, Zero-Shot und das einzige Modell im 2606.27100-Benchmark, das Signifikanz erreichte (bei AMZN). Dennoch: ein signifikantes Ergebnis von zehn Versuchen ist kein Beleg für einen wiederholbaren direktionalen Edge.

Python · Zero-Shot-Volatilitätsprognose mit Chronos-Bolt
pip install chronos-forecasting torch

import torch
from chronos import BaseChronosPipeline

pipeline = BaseChronosPipeline.from_pretrained(
    "amazon/chronos-bolt-base",     # T5-style encoder-decoder, 205M params, Apache-2.0
    device_map="cpu",               # CPU is fine for daily-bar, small-batch inference
    torch_dtype=torch.bfloat16,
)

# Feed REALIZED VOLATILITY, not raw price -- this is a vol forecaster, not an oracle
context = torch.tensor(realized_vol_20d.values[-512:])

quantiles, mean = pipeline.predict_quantiles(
    context=context,
    prediction_length=10,                   # 10-day-ahead vol forecast
    quantile_levels=[0.1, 0.5, 0.9],
)
vol_forecast_median = quantiles[0, :, 1]    # feed straight into GARCH/vol-target sizing (see §10)

Google TimesFM

Apache-2.0 · 200M/500M

Model Card: huggingface.co/google/timesfm-2.0-500m-pytorch (ICML 2024). Architektur: reiner Decoder-Transformer, trainiert, um Eingabe-Patches fester Länge (32 Punkte) zu konsumieren und längere Ausgabe-Patches (128 Punkte) direkt zu emittieren — näher am Next-Token-Ziel eines Sprachmodells als Chronos' Ansatz tokenisierter Werte, jedoch auf stetigen Patch-Embeddings statt einem diskretisierten Vokabular operierend.

Fazit: erreichte zusammen mit Moirai-2.0 den stärksten Durchschnittsrang über den Fünf-Aktien-Benchmark (führend bei AAPL/JPM/GOOG/AMZN) — aber gemäß der eigenen Einordnung des Papers gilt: ein starker Rang ≠ ein signifikanter Vorteil; keiner der Erfolge von TimesFM übersprang die Signifikanzschwelle des Random Walk. Gut, gut gepflegt, Apache-2.0, geeignet für Volatilität; kein grünes Licht für die Preisrichtung.

Bash · Installation
pip install timesfm
# tfm = timesfm.TimesFm(context_len=512, horizon_len=10, backend="cpu")
# tfm.load_from_checkpoint(huggingface_repo_id="google/timesfm-2.0-500m-pytorch")
# point_fc, quantile_fc = tfm.forecast([realized_vol_20d.values], freq=[0])

Salesforce Moirai / Moirai-MoE

CC BY-NC-4.0

Model Card: huggingface.co/Salesforce/moirai-1.0-R-large. Architektur: Masked-Encoder-Transformer mit "Any-Variate Attention" — statt eines festen Embeddings pro Kanal flacht er eine beliebige Anzahl von Variablen (Zielgrößen + dynamische/statische Kovariaten) zu einer einzigen Token-Sequenz ab, sodass ein einzelnes vortrainiertes Modell nativ jede multivariate Prognoseaufgabe ohne datensatzspezifisches Nachtrainieren bewältigt. Moirai-MoE ersetzt das dichte FFN durch eine Mixture-of-Experts-Schicht für bessere Spezialisierung bei vergleichbaren Inferenzkosten.

Lizenz-Blocker — lesen, bevor Sie dies in einem Live-System einsetzen

Die Gewichte von Moirai und Moirai-MoE werden unter CC BY-NC 4.0 — ausschließlich nicht-kommerziell veröffentlicht. Ihre Nutzung (selbst nur zur Inferenz) innerhalb eines Systems, das Ihr eigenes Handelskapital verwaltet, ist wohl als kommerzielle Nutzung zu werten und wird von dieser Lizenz nicht abgedeckt, ohne eine separate Vereinbarung mit Salesforce. Chronos, TimesFM, Lag-Llama und MOMENT stehen unter Apache-2.0/MIT und unterliegen keiner derartigen Beschränkung — bevorzugen Sie diese für alles, was Live-Kapital berührt. Moirai eignet sich ausschließlich für persönliche Forschung/Backtesting.

Fazit: Moirai-2.0 lieferte das andere signifikante Ergebnis des Benchmarks (GOOG) und teilte sich mit TimesFM den stärksten Durchschnittsrang — technisch interessant, aber die Lizenzierung schließt es unabhängig davon aus einer Live-Pipeline aus.

Lag-Llama

Apache-2.0 · ~2.45M

Model Card: huggingface.co/time-series-foundation-models/Lag-Llama. Architektur: ein Decoder-only-Transformer im LLaMA-Stil, doch statt Rohwerte oder Patches zu verarbeiten, ist jedes Eingabe-Token ein Vektor aus klassischen Lag-Features (Werte bei t-1, t-2, t-7, t-30, ...) plus Datums-/Zeit-Kovariaten — d. h. es setzt einen Transformer auf eine feature-engineered Repräsentation, die an klassische autoregressive Modellierung erinnert, bewusst winzig gehalten (~2,45 Mio. Parameter) gegenüber den übrigen Einträgen hier.

Fazit: nicht unmittelbar Teil des 2606.27100-Benchmarks, aber architektonisch die "transparenteste" autoregressive Baseline der Gruppe — eine sinnvolle Zweitmeinung für die Volatilitätsprognose, wenn Sie etwas Kleineres/Schnelleres als Chronos-Bolt/TimesFM wünschen und weiterhin sauber unter Apache-2.0 bleiben wollen.

MOMENT

MIT · ~341M

Model Card: huggingface.co/AutonLab/MOMENT-1-large (ICML 2024; Auton Lab, Carnegie Mellon). Architektur: ein einzelnes Transformer-Backbone, multi-task vortrainiert über Prognose, Klassifikation, Anomalieerkennung und Imputation auf dem kuratierten "Time-series Pile", was es zum universellsten Modell dieser Gruppe macht statt zu einem Prognose-Spezialisten.

Wann einzusetzen: seine Köpfe für Anomalieerkennung und Imputation sind für eine Trading-Pipeline wohl differenzierter als sein Prognose-Kopf — z. B. das Markieren anomaler Intraday-Bars in einem Datenqualitäts-Gate oder das Imputieren von Lücken in einem Alt-Data-Feed — statt als eigentlicher Volatilitätsprognostiker. Lizenz: MIT, keine Beschränkung.

IBM Granite-TimeSeries

Apache-2.0

Model Card: huggingface.co/ibm-granite/granite-timeseries-patchtsmixer (siehe auch ibm-granite/granite-timeseries-patchtst und die "Tiny Time Mixer"-TTM-Reihe). Architektur: PatchTSMixer ersetzt Attention vollständig durch einen MLP-Mixer über Patches — überhaupt keine quadratischen Attention-Kosten — und berichtet 2–3× geringeren Speicher-/Laufzeitbedarf als Patch-Transformer bei vergleichbarer oder besserer Genauigkeit auf öffentlichen Long-Horizon-Benchmarks (z. B. 0,37 MSE bei der 96-Schritt-Prognose auf ETTh1).

Wann einzusetzen: die mit Abstand günstigste Option im Betrieb hier (es existieren TTM-Varianten mit unter 5 Mio. Parametern) — gut geeignet, wenn Sie eine leichtgewichtige, CPU-triviale Vol-Prognose-Komponente wünschen und die Zero-Shot-Generalität von Chronos/TimesFM nicht benötigen. Lizenz: Apache-2.0.

Die Ein-Satz-Policy für diesen gesamten Abschnitt

Nutzen Sie hier jedes Apache-2.0/MIT-Modell als Volatilitäts-/Kovariaten-Input für die deterministische Sizing-Schicht in §10; verwenden Sie keines davon — einschließlich der signifikanten Chronos-/Moirai-Ergebnisse — als eigenständiges Einstiegssignal. Die Autoren des 2606.27100-Benchmarks selbst bezeichnen den Effekt als "klein und spärlich", und iTransformer (eine von Grund auf trainierte Architektur, §2) schlug bei META jedes Foundation-Model, was unterstreicht, dass Vortraining bei Finanzreihen kein universeller Vorteil ist.

Financial NLP & LLMs

Finanz-Sentiment/NLP gehört in die Risikoschicht (ein Veto-/Regime-Feature), nicht in die Alpha-Schicht — laut der Quellenforschung aus §0 ist der eigenständige Vorteil aus Nachrichten-Sentiment weitgehend ein Look-Ahead-Artefakt, das Out-of-Sample verschwindet. Hier sind die drei Modelle, die man tatsächlich kennen sollte.

FinGPT

MIT (code)

Repo: github.com/AI4Finance-Foundation/FinGPT. Architektur: kein von Grund auf trainiertes Modell — ein LoRA-(Low-Rank Adaptation-)Fine-Tuning-Rezept, angewandt auf offene Basis-LLMs (LLaMA2-7B/13B für FinGPT v3.2/v3.3, ChatGLM2-6B für v3.1). LoRA friert die Basisgewichte ein und trainiert stattdessen kleine Low-Rank-Adapter-Matrizen, wodurch die trainierbaren Parameter von ~6,17 Mrd. auf ~3,67 Mio. sinken — praktikabel für das Fine-Tuning auf einer einzigen Consumer-GPU.

Anwendungsfälle: Finanz-Sentiment-Analyse, Q&A im Stil eines Robo-Advisors und Prognoseexperimente mit LLM-erzeugten Signalen (auch die Grundlage des "LLM-engineered signals"-Tracks des FinRL Contest). Lizenz-Nuance: der FinGPT-Trainings-/Inferenzcode steht unter MIT, doch die zugrunde liegenden LLaMA-Basisgewichte unterliegen Metas eigenen separaten Community-Lizenzbedingungen — prüfen Sie diese unabhängig, bevor Sie einen feingetunten Checkpoint kommerziell einsetzen.

FinBERT-tone

Apache-2.0 · ~110M

Model Card: huggingface.co/yiyanghkust/finbert-tone (Huang, Wang & Yang, Contemporary Accounting Research 2022). Architektur: ebenfalls BERT-base (12 Schichten / 768 Hidden / 12 Heads), aber auf einer anderen Korpus-Linie trainiert — vortrainiert auf 10-K-/10-Q-/Earnings-Call-Texten und anschließend auf 10.000 manuell annotierten Sätzen aus Analystenberichten feingetunt, was ihm trotz des ähnlichen Namens ein etwas anderes Ton-Klassifikationsverhalten verleiht als ProsusAIs FinBERT.

Wann einzusetzen: eine zweite, anders trainierte Sentiment-Meinung für das Ensembling mit FinBERT speziell bei Texten aus Analystenberichten oder Earnings Calls (statt bei allgemeinen Nachrichtenschlagzeilen).

Reinforcement Learning für den Handel

RL ist der am meisten gehypte und am wenigsten verlässliche Posten auf dieser gesamten Seite für eine zentrale Trading-Engine. Das Tooling ist wirklich gut; das ehrliche Fazit, gestützt durch den eigenen Benchmark-Wettbewerb der RL-Community, lautet, es auf enge, streng validierte Teilprobleme (z. B. Ausführungs-Timing) zu beschränken, statt es als primäre oder portfolioweite Engine einzusetzen.

LibraryLicenseRoleStatus
FinRLMITFinancial RL framework: environments, agents, DRL algorithm wrappers for stock/crypto/order-execution tasksActive; ~15k★, runs the annual FinRL Contest
FinRL-MetaMITDynamic market-environment and dataset layer for FinRL (hundreds of market simulators)Active, smaller community (~1–2k★)
Stable-Baselines3MITReliable, well-tested implementations of the underlying RL algorithms (PPO, SAC, DQN, A2C, TD3, DDPG, HER) that FinRL wrapsActively maintained, the de facto standard PyTorch RL library
TensorTradeApache-2.0RL trading-environment framework (Gym-style)Maintenance stalled — a community fork, TensorTrade-NG, was created explicitly because the original "needed a lot of refactoring, was outdated, and looked not really maintained." Treat as unmaintained for planning purposes.

Die vier Algorithmus-Familien (je eine Zeile)

  • PPO (Proximal Policy Optimization) — on-policy, diskrete oder kontinuierliche Aktionen; beschneidet den Policy-Update-Schritt, um nahe an der alten Policy zu bleiben, und tauscht etwas Stichprobeneffizienz gegen Trainingsstabilität. Die standardmäßige erste Wahl in den meisten FinRL-Beispielen.
  • SAC (Soft Actor-Critic) — off-policy, ausschließlich kontinuierliche Aktionen; Maximum-Entropy-Ziel (belohnt Exploration explizit) mit einem Replay-Buffer, im Allgemeinen stichprobeneffizienter als PPO, aber empfindlicher gegenüber Hyperparametern.
  • DQN (Deep Q-Network) — off-policy, ausschließlich diskrete Aktionen; lernt eine Aktionswertfunktion über einen Replay-Buffer und ein Target-Netzwerk. Benötigt einen diskretisierten Aktionsraum (z. B. buy/hold/sell), was schlecht zu kontinuierlichem Position-Sizing passt.
  • A2C (Advantage Actor-Critic) — on-policy, diskret oder kontinuierlich; ein einfacherer, synchroner Verwandter von A3C, in FinRLs eigenen Benchmarks im Allgemeinen der schwächste der vier bei Finanzaufgaben.
Warum RL für den Handel konkret fragil ist — nicht bloß "schwierig"

Nicht-stationäre Reward-Landschaft: die Wertfunktion eines RL-Agenten wird gegen ein bestimmtes historisches Regime gelernt; wenn sich das Regime verschiebt (wie es Finanzmärkte ständig tun), optimiert die gelernte Policy auf eine Reward-Oberfläche, die nicht mehr existiert — anders als bei einem neu trainierten GBDT-Meta-Labeler gibt es für ein Policy-Netzwerk keine einfache "Refit auf dem jüngsten Fenster"-Lösung, ohne katastrophales Vergessen zu riskieren. Stichprobenineffizienz: Deep RL benötigt typischerweise Millionen von Umgebungsinteraktionen zur Konvergenz; Sie haben genau eine nicht wiederholbare Historie des Marktes, sodass "mehr Daten" entweder Simulation bedeutet (die Ihre eigenen Annahmen als Ground Truth kodiert) oder Jahre zusätzlicher Echtzeit-Wartezeit. Reward-Hacking bei Backtests: ein Agent, der den kumulierten simulierten PnL optimiert, wird bereitwillig lernen, Eigenheiten des Simulators auszunutzen (unrealistische Fill-Annahmen, null Markteinfluss, exakte Rundung der Backtest-Engine) statt eines echten Marktvorteils — genau der Fehlermodus, den das FinRL-Contests-Paper (arXiv:2504.02281) dokumentiert: eingereichte Agenten mit hoher Wahrscheinlichkeit für Backtest-Overfitting werden von den Organisatoren des Wettbewerbs selbst explizit auf einem Signifikanzniveau von 10 % abgelehnt — die Menschen, die das RL-Trading-Ökosystem aufbauen, halten die meisten eingereichten RL-Trading-Agenten standardmäßig für statistisch nicht von overfittetem Rauschen unterscheidbar.

Praktischer Anwendungsrahmen, falls Sie RL überhaupt einsetzen: ein enges Teilproblem mit einem naturgemäß MDP-förmigen Reward (z. B. Order-Ausführungs-Timing innerhalb einer festen Parent-Order, VWAP-Tracking), evaluiert mit derselben PBO-/DSR-Disziplin wie alles andere in §14 — niemals als primäre Entry-/Exit-/Sizing-Engine.

Vollständige Quant-ML-Pipelines — Microsoft Qlib

Qlib kommt einer schlüsselfertigen KI-Quant-Forschungsplattform im Open Source am nächsten — eine Datenschicht, eine Feature-Engineering-DSL, ein Model Zoo und ein Walk-Forward-Backtest-/Portfolioanalyse-Harness, über YAML-Workflow-Configs miteinander verdrahtet. MIT-lizenziert (microsoft/qlib), Zehntausende GitHub-Stars, MIT seit dem Open-Sourcing im September 2020, aktiv veröffentlicht (v0.9.7, August 2025) und nun mit Microsofts RD-Agent für automatisierte Forschungsschleifen-Experimente gekoppelt.

Alpha158 vs. Alpha360 — die zwei integrierten Feature-Sets

Alpha158Alpha360
What it is~158 hand-engineered technical/formulaic alpha features (returns, moving averages, volatility ratios, volume ratios, etc.)Raw normalized OHLCV history flattened over a 60-day lookback (6 fields × 60 days = 360 columns), essentially no feature engineering
Feature relationshipsLow spatial/temporal structure between columns — a classic tabular feature matrixStrong spatial-temporal structure — designed for models that learn their own representation from raw sequences
Best-paired modelsLightGBM, XGBoost, CatBoost, linear/MLP modelsGRU, LSTM, Transformer-family, ALSTM, GATs — sequence models that benefit from raw structure

Workflow-/Config-System und integrierter Model Zoo

Qlib-Experimente werden typischerweise durch eine einzige YAML-Datei gesteuert, die von der qrun-CLI konsumiert wird und den Data Handler (Alpha158/360 oder benutzerdefiniert), das Modell, den Datensatz-Split, die Portfoliostrategie und die Backtest-Parameter deklariert — dies macht das Austauschen von LightGBM gegen einen GRU oder einen TFT-Wrapper zu einer einzeiligen Config-Änderung statt zu einer Neuimplementierung. Der integrierte Model Zoo umfasst klassische und Deep-Ansätze: LGBModel (LightGBM), XGBModel, CatBoostModel, MLP, GRU/LSTM/ALSTM (rekurrent), Transformer, TFT-Wrapper, TabNet, HIST, IGMTF sowie mehrere Graph-/Attention-Forschungsmodelle (GATs, KRNN, Localformer) — alle über dasselbe Workflow-Harness trainiert und evaluiert, mit einem gemeinsamen Walk-Forward-Backtest-/IC-Analyse-Report.

YAML · minimale Qlib-Workflow-Config (LightGBM auf Alpha158)
qlib_init:
  provider_uri: "~/.qlib/qlib_data/custom_nse"   # see note below on pointing Qlib at NSE data
  region: in                                       # generic region tag; India isn't a stock Qlib region out of the box

market: &market custom_nse_500
benchmark: &benchmark NIFTY500

data_handler_config: &data_handler_config
  start_time: 2010-01-01
  end_time: 2025-12-31
  fit_start_time: 2010-01-01
  fit_end_time: 2019-12-31
  instruments: *market

task:
  model:
    class: LGBModel
    module_path: qlib.contrib.model.gbdt
    kwargs:
      loss: binary
      num_leaves: 31
      learning_rate: 0.03
      monotone_constraints: [1, 0, -1, 0]
  dataset:
    class: DatasetH
    module_path: qlib.data.dataset
    kwargs:
      handler:
        class: Alpha158
        module_path: qlib.contrib.data.handler
        kwargs: *data_handler_config
      segments:
        train: [2010-01-01, 2019-12-31]
        valid: [2020-01-01, 2021-12-31]
        test:  [2022-01-01, 2025-12-31]

# run with:  qrun this_config.yaml
Qlib auf benutzerdefinierte (z. B. NSE-)Daten ausrichten

Qlib liefert US- und China-Datenprovider von Haus aus mit; NSE/BSE erfordert, dass Sie Ihren eigenen binären Datenspeicher mit scripts/dump_bin.py aufbauen und ihn mit Point-in-Time-OHLCV-Parquet-/CSV-Dateien speisen, die Sie bereits zusammengestellt haben (gemäß der Disziplin eines survivorship-bias-freien Datenplans). Sie benötigen außerdem einen benutzerdefinierten Handelskalender (NSE-Feiertage unterscheiden sich von NYSE/China) und müssen Ihre Instrument-Universe-Datei registrieren — Qlibs Datenschicht ist nach der Konvertierung formatunabhängig, sodass Alpha158/360 und der gesamte Model Zoo nach Abschluss des Dump-Schritts unverändert auf NSE-Daten funktionieren.

Financial-ML-Methoden von López de Prado — mlfinpy & skfolio

López de Prados Toolkit aus Advances in Financial Machine Learning bedeutete früher eine kostenpflichtige mlfinlab-Lizenz — das ist nicht mehr der Fall. Zwei kostenlose, permissiv lizenzierte Pakete decken nun Triple-Barrier-Labeling, Meta-Labeling, fraktionale Differenzierung, Sample-Uniqueness-Gewichtung, CPCV und HRP ab.

PackageLicenseCovers
mlfinpyMITTriple-barrier labeling, meta-labeling, fractional differentiation, sample-weight/uniqueness utilities — a modern Pythonic re-implementation of the AFML code snippets
skfolioBSD-3-Clausescikit-learn-compatible portfolio optimization and model selection: CombinatorialPurgedCV out of the box, plus HRP, HERC, risk-budgeting, CVaR/CDaR optimization
mlfinlab (paid)CommercialThe original, packaged, paid version — only worth it if you specifically want Hudson & Thames' maintained extras beyond what the two free packages cover
Python · mlfinpy Triple-Barrier-Labeling
pip install mlfinpy

from mlfinpy.labeling import get_events, add_vertical_barrier, get_bins
from mlfinpy.util import get_daily_vol

# causal, EWMA-based daily volatility -- uses data strictly up to t, no leakage
daily_vol = get_daily_vol(close=prices, lookback=50)

vertical_barriers = add_vertical_barrier(
    t_events=signal_dates, close=prices, num_days=10       # time-limit barrier
)

triple_barrier_events = get_events(
    close=prices,
    t_events=signal_dates,             # your primary (Pine) strategy's signal dates
    pt_sl=[2.0, 1.5],                  # profit-take / stop-loss as multiples of daily_vol
    target=daily_vol,
    min_ret=0.0005,
    num_threads=4,
    vertical_barrier_times=vertical_barriers,
)

labels = get_bins(triple_barrier_events, prices)
# labels['bin']    -> 1 = profit barrier hit first, 0 = stop/time barrier hit first
# labels['ret']    -> realized return at the barrier that was hit
# labels['t1']     -> the barrier-touch timestamp (needed for purging downstream)
Python · skfolio CombinatorialPurgedCV für das Meta-Label-Modell
pip install skfolio

from skfolio.model_selection import CombinatorialPurgedCV, cross_val_predict
from sklearn.pipeline import Pipeline
import lightgbm as lgb

meta_label_pipeline = Pipeline([
    ("model", lgb.LGBMClassifier(num_leaves=31, learning_rate=0.03,
                                  min_child_samples=50)),
])

# n_folds=10, n_test_folds=2  ->  C(10,2) = 45 combinatorial train/test paths
# purged_size / embargo_size sized to the max holding horizon (t1 - t0), NOT a flat 1%
cv = CombinatorialPurgedCV(n_folds=10, n_test_folds=2,
                            purged_size=10, embargo_size=10)

# returns an empirical DISTRIBUTION of out-of-sample paths, not one score --
# use it to compute PBO and the Deflated Sharpe Ratio, not a single train/test split
oos_paths = cross_val_predict(estimator=meta_label_pipeline, X=X, y=y,
                               cv=cv, sample_weight=w)

Was jede Technik Ihnen bringt

  • Fraktionale Differenzierung (mlfinpy.features.frac_diff / Fixed-Width-FFD-Variante) — findet die minimale Differenzierungsordnung d (oft 0,2–0,5), die einen ADF-Stationaritätstest besteht und dabei eine Korrelation >0,9 zur Level-Reihe beibehält, was einen stationären Input liefert, der Gedächtnis bewahrt — strikt besser für Baum-/lineare Modelle als Rohrenditen (kein Gedächtnis) oder Rohpreise (nicht-stationär).
  • Sample-Uniqueness-Gewichtung — Triple-Barrier-Labels überlappen sich zeitlich (eine 10-tägige Halteperiode bedeutet, dass benachbarte Signale Label-Fenster teilen), was die IID-Annahme verletzt, auf die sich die meiste ML-Theorie stützt. Gewichten Sie jede Stichprobe nach ihrer durchschnittlichen Uniqueness (Kehrwert der Anzahl gleichzeitiger Labels) zuzüglich Time-Decay, sonst ist Ihre effektive Stichprobengröße nur ein Bruchteil Ihrer Zeilenanzahl und jeder nachgelagerte Signifikanztest ist überzeichnet.
  • Combinatorial Purged CV (CPCV) — erzeugt viele Train-/Test-Pfad-Kombinationen (nicht einen einzigen Walk-Forward-Pfad), purged Trainingszeilen, deren Label-Fenster den Test-Fold überlappt, und verhängt ein Embargo als Puffer nach jedem Test-Fold. Erzeugt eine vollständige Verteilung der Out-of-Sample-Sharpe-Ratios (als Input für PBO und DSR) statt einer einzelnen Punktschätzung — deshalb ist es strukturell verlässlicher als einfaches Walk-Forward.
  • HRP (Hierarchical Risk Parity) (skfolio.optimization.HierarchicalRiskParity) — allokiert über hierarchisches Clustering der Korrelationsmatrix, statt eine verrauschte Kovarianzmatrix zu invertieren (wie es die Mean-Variance-Optimierung tut), was es weit robuster gegenüber Schätzfehlern bei einem Korb korrelierter Aktien macht.

Regime-Erkennung — hmmlearn & ruptures

Dies ist der Abschnitt, in dem der mit Abstand häufigste stille Leakage-Bug beim Retail-Regime-Gating steckt — und in dem es nützlicher ist, das falsche Muster neben dem richtigen zu zeigen, als es in Prosa zu beschreiben.

LibraryLicenseMaturityRole
hmmlearnBSDMature, scikit-learn-style API, ~3k★Gaussian/GMM/Categorical HMMs for a discrete calm/stormy regime state
rupturesBSD-2-ClauseMature, academic (ENS Paris-Saclay/CNRS)Offline changepoint detection — PELT (exact, linear-cost, unknown number of changes), binary segmentation (BinSeg, greedy/approximate), and sliding-window methods
Der stille Look-Ahead-Bug Nr. 1: Full-Sample-geglättetes HMM-Decoding

Die standardmäßige, einfachste Art, hmmlearn aufzurufen — GaussianHMM auf Ihrer gesamten Historie zu fitten und dann .predict() für Regime-Labels aufzurufen — verwendet im Hintergrund Viterbi-/geglättetes Decoding. Das Regime-Label zum Zeitpunkt t wird unter Verwendung der gesamten Sequenz gewählt, einschließlich allem, was nach t kommt. Das Gate "weiß" faktisch, dass eine Krise bevorsteht, bevor sie eintritt. Jede beeindruckende veröffentlichte HMM-Drawdown-Reduktionszahl (56 %→24 % max DD usw.), die dies nicht explizit kontrolliert, ist sehr wahrscheinlich auf diese Weise zustande gekommen. Unten: das undichte Muster und das kausale, Walk-Forward-, gefilterte-Posterior-Muster, das tatsächlich einsatzfähig ist.

Python · FALSCH — leaky, über die gesamte Stichprobe geglättetes Decoding (nicht in Produktion einsetzen)
from hmmlearn.hmm import GaussianHMM

model = GaussianHMM(n_components=2, covariance_type="diag", n_iter=1000)
model.fit(X_full)                    # fit on the ENTIRE history -- future leaks into the fit
regimes = model.predict(X_full)      # Viterbi = globally-smoothed decode over the whole path
# regimes[t] used information from t+1 ... T. This is look-ahead bias.
# Any backtest of a regime gate built this way is invalid and will not reproduce live.
Python · KORREKT — kausales, Walk-forward-Regime-Gate auf Basis der gefilterten Posterior
from hmmlearn.hmm import GaussianHMM
import numpy as np

regime_at_t = np.full(len(X), np.nan)
model, refit_every, min_train = None, 63, 500     # e.g. refit quarterly

for t in range(min_train, len(X)):
    if model is None or t % refit_every == 0:
        model = GaussianHMM(n_components=2, covariance_type="diag", n_iter=200)
        model.fit(X[:t])                          # ONLY data strictly before t

    # forward-algorithm FILTERED posterior using data up to and including t --
    # no smoothing, no future information, no re-fit on data that includes t's label use
    posteriors = model.predict_proba(X[:t + 1])
    regime_at_t[t] = posteriors[-1].argmax()       # today's regime, knowable today

# regime_at_t is safe to merge into the feature frame for both backtest and live use.
# Expect a MUCH smaller, laggier drawdown benefit than the full-sample-smoothed version --
# that gap IS the size of the leakage bug you just closed.

ruptures ist das ergänzende Werkzeug, wenn du Changepoints statt eines persistenten Regime-Zustands suchst — etwa um einen Volatilitätsregime-Bruch in einer EWMA-Reihe zu markieren und damit einen HMM-Refit auszulösen, oder als alternativen Regime-Grenzdetektor zur Gegenprüfung der HMM-Übergänge. Pelt (exakte Suche mit linearer Laufzeit, unbekannte Anzahl an Bruchpunkten, benötigt einen Penalty-Parameter) ist der Standard; Binseg tauscht Exaktheit gegen Geschwindigkeit bei längeren Reihen; fensterbasierte Verfahren sind am günstigsten, aber bei subtilen Brüchen am wenigsten präzise. Wie das HMM solltest du es für den Live-Einsatz in einem expandierenden/rollierenden Fenster ausführen — die Standard-API von ruptures ist ebenfalls standardmäßig ein Offline-Verfahren über die gesamte Reihe.

Backtesting- & Ausführungs-Engines

Keine einzelne Engine ist für jede Phase die richtige. Nutze eine vektorisierte Engine, um Tausende von Parameterkombinationen vorzusortieren, und validiere anschließend jeden Überlebenden erneut auf einer ereignisgesteuerten Engine mit realistischen Fills, bevor du Kapital riskierst — die beiden Phasen zu vermischen (einem Backtest der vektorisierten Engine als endgültige Antwort zu vertrauen) ist ein häufiger, teurer Fehler.

EngineSpeedFill realismLicenseMaintenanceBest-fit use case
vectorbt (community)Extremely fast (Numba-vectorized, thousands of configs at once)Weak — vectorized fills, easy to fool yourselfApache-2.0 + Commons ClauseCommunity edition maintenance-frozen; active dev moved to paid vectorbtPROFast first-pass parameter sweep / triage only
backtraderModerate (pure Python, event-driven)Moderate (configurable slippage/commission, but manual)GPL-3.0Stalled ~2021 — open PRs/issues unmerged for yearsLegacy strategies only; don't start new work here
Zipline-reloadedModerateGood (Quantopian-derived fill/slippage models)Apache-2.0Community-maintained fork (stefan-jansen), modest but real activityResearch backtests wanting the original Zipline/Quantopian API and pipeline model
NautilusTraderFast (Rust core)High — same strategy code path for backtest and liveLGPL-3.0-or-laterVery active, ~24k★, production-gradeFinal realistic-fill re-validation and the bridge to live — the one tool built for research-to-live parity
QuantConnect LEANFast (C#/.NET core, Python API)High — institutional-grade fill/slippage/margin modelsApache-2.0Very active, ~19k★, backs a commercial cloud platformFull-featured alternative to NautilusTrader, especially with QuantConnect's hosted data/cloud/live options
btModerateModerate (higher-level "Algo" abstraction over vectorized fills)MITActively maintained (releases into 2026)Fast, readable portfolio-level (multi-asset allocation) backtests, less suited to per-trade microstructure realism
backtesting.pyFast (single-asset, vectorized-ish)Basic (simple slippage/commission model)AGPL-3.0Active, small footprint, ~2.4k★Quick single-asset prototyping only — AGPL is a real constraint if you build a hosted/SaaS product on it

Warum die Architektur von NautilusTrader tatsächlich zählt

Die meisten Fälle von „großartiger Backtest, enttäuschender Live-Betrieb“ sind keine Modellfehler — es sind Bugs durch Research/Production-Skew: Deine Backtest-Engine und dein Live-Ausführungscode sind zwei getrennte Codebasen, die still auseinanderdriften (hier eine Fill-Preis-Annahme, dort ein Off-by-one-Bug beim Bar-Timing), und nichts erzwingt ihre Konsistenz. Das Rust-Core-, ereignisgesteuerte Design von NautilusTrader führt denselben Strategiecode — dieselben Klassen, dieselben Event-Handler — im Backtest-, Paper- und Live-Modus aus; nur die Daten-/Ausführungsadapter ändern sich. Diese architektonische Entscheidung eliminiert eine ganze Klasse von Bugs konstruktiv statt durch Disziplin, und genau deshalb ist es das richtige Werkzeug für die Rolle der „finalen Re-Validierung mit realistischen Fills und Brücke zur Produktion“ und nicht bloß ein Nice-to-have.

Lizenzhinweis — LGPL-3.0, nicht GPL

NautilusTrader steht unter LGPL-3.0-or-later, nicht unter der strengeren GPL-3.0, die backtrader und freqtrade regelt. LGPL erlaubt das Linken/Nutzen der Bibliothek aus proprietärem Code, ohne deinen Strategiecode offenlegen zu müssen, solange Änderungen an NautilusTrader selbst (falls vorhanden) zurückgegeben werden — für ein Closed-Source-Handelssystem materiell weniger restriktiv als eine reine GPL-Abhängigkeit. Bestätige dennoch die aktuellen Lizenzbedingungen anhand des Repositorys, bevor du kommerziell deployst.

Portfoliokonstruktion & Risiko

Hier wird „Drawdown-Kontrolle“ tatsächlich umgesetzt — als deterministische Mathematik, die Volatilitätsprognosen und Meta-Label-Konfidenz verarbeitet, nicht als weitere Vorhersageaufgabe.

LibraryLicenseRole
PyPortfolioOptMITClassical mean-variance / efficient frontier, Black-Litterman, shrinkage covariance estimators, and HRP — the most approachable API of the three
Riskfolio-LibBSD-3-ClauseDeeper risk-based allocation: HRP/HERC, ~24 risk measures including CVaR/CDaR/EVaR, risk-parity/risk-budgeting, built on CVXPY convex optimization
archNCSAGARCH/EGARCH/GJR-GARCH/TARCH volatility-family models — the standard econometric volatility forecaster feeding vol-targeted sizing
Python · GJR-GARCH-Volatilitätsprognose → vol-getargetete Positionsgröße (arch)
pip install arch

from arch import arch_model
import numpy as np

returns_pct = 100 * log_returns.dropna()      # arch expects % returns for numerical stability
# GJR-GARCH(1,1,1) with Student-t errors -- captures the leverage effect (vol reacts more to
# negative returns than positive ones), which plain GARCH(1,1) misses
am = arch_model(returns_pct, vol="GARCH", p=1, o=1, q=1, dist="t")
res = am.fit(disp="off", last_obs=train_end_date)   # fit only on data up to the current date

fcast = res.forecast(horizon=10, reindex=False)
vol_forecast_daily = np.sqrt(fcast.variance.values[-1]) / 100   # back to decimal daily vol

target_vol_daily = 0.10 / (252 ** 0.5)        # ~10% annualized portfolio vol target
position_scale = target_vol_daily / vol_forecast_daily[0]
position_size = base_size * min(position_scale, max_leverage_cap)   # always cap leverage

PyPortfolioOpt

MIT

Wann einsetzen: schnelle HRP- oder Shrinkage-Kovarianz-Allokation über einen Korb hinweg, ohne einen vollständigen Stack für konvexe Optimierung hereinzuholen. Wann nicht: wenn du CVaR/CDaR-Zielfunktionen oder exotischere Risikomaße benötigst — das ist die Aufgabe von Riskfolio-Lib.

Python · HRP-Allokation
from pypfopt import HRPOpt
hrp = HRPOpt(returns=daily_returns_df)   # NOT prices -- pass returns
weights = hrp.optimize()                 # hierarchical-clustering-based, no covariance inversion

Riskfolio-Lib

BSD-3

Wann einsetzen: immer dann, wenn die Zielfunktion explizit tail-risk-bewusst ist (CVaR/CDaR) statt varianzbasiert — besser passend zu einem Mandat auf „geringsten Drawdown“ als Mean-Variance.

Python · CVaR-optimales Portfolio
import riskfolio as rp
port = rp.Portfolio(returns=daily_returns_df)
port.assets_stats(method_mu="hist", method_cov="hist")
weights = port.optimization(model="Classic", rm="CVaR", obj="MinRisk", rf=0, l=0)

Feature-Engineering & Prognose-Utilities

Bevor du irgendeinem GBDT- oder Foundation-Model-Ergebnis vertraust, benchmarke es gegen die langweilige Baseline. Diese beiden Bibliotheken decken die automatisierte Feature-Extraktion und die klassischen Prognose-Baselines ab, die du niemals überspringen solltest.

LibraryLicenseRole
tsfreshMITAutomated extraction of hundreds of statistical/signal-processing time-series features, with a built-in hypothesis-testing-based relevance filter (the "FRESH" algorithm) to control false-discovery rate on the feature explosion
Nixtla statsforecastApache-2.0Fast classical/econometric baselines — AutoARIMA, AutoETS, AutoCES, Theta — the mandatory benchmark before believing any ML "edge"
Nixtla mlforecastApache-2.0Machine-learning forecasting at scale (pandas/polars/Spark/Dask/Ray backends) with the same lag-feature-engineering plumbing regardless of backend
Nixtla neuralforecastApache-2.030+ neural architectures under one API — every model in §2 (NBEATS, NHITS, TFT, Informer, Autoformer, FEDformer, PatchTST, iTransformer, TimeLLM, ...) available without hand-rolling each paper's code
Python · tsfresh automatisierte + gefilterte Feature-Extraktion
pip install tsfresh
from tsfresh import extract_relevant_features

# long-format df: columns [id, time, value]; y indexed by id (e.g. triple-barrier label)
features = extract_relevant_features(
    long_format_df, y=labels_by_id, column_id="id", column_sort="time",
    fdr_level=0.01,           # false-discovery-rate control -- do NOT skip this on financial data
)
# re-run the relevance filter INSIDE each CV fold in production, never on the full dataset
Python · obligatorische Baseline, bevor du dem „Edge“ eines Modells vertraust
pip install statsforecast
from statsforecast import StatsForecast
from statsforecast.models import AutoARIMA, AutoETS

sf = StatsForecast(models=[AutoARIMA(), AutoETS()], freq="D", n_jobs=-1)
sf.fit(train_df)
baseline_forecast = sf.predict(h=10)
# your GBDT / foundation-model forecast must beat THIS, net of cost, or there is no edge

MLOps für ein Live-Handelssystem

MLOps-Tooling geht hier nicht um Skalierung — es geht um Ehrlichkeit. Die mit Abstand tragendste MLOps-Funktion in diesem gesamten Stack ist die Disziplin bei der Trial-Anzahl für die Deflated Sharpe Ratio: jede Backtest-Konfiguration, die du jemals ausprobierst, für immer protokolliert, damit die Korrektur für multiples Testen gegen deine echte Trial-Anzahl berechnet wird und nicht gegen die schmeichelhafte Teilmenge, an die du dich erinnerst.

ToolLicenseRoleWhen to adopt
MLflowApache-2.0Experiment tracking (params/metrics/artifacts) + model registry with stage transitionsEarly — every single backtest run, from day one, feeds the DSR trial count
Evidently AIApache-2.0Input-feature and prediction-distribution drift detection (KS-test, PSI, Wasserstein, 100+ built-in metrics)Once a strategy is running on a schedule against live data
NannyMLApache-2.0Label-free live performance estimation — CBPE for classifiers, DLE for regressors — estimates real-world accuracy before ground-truth labels are even availableOnce paper/live trading is running and labels arrive with a lag (exactly the triple-barrier situation)
PrefectApache-2.0Pythonic pipeline orchestration: scheduling, retries, caching, event-driven triggers for the nightly ingest→feature→predict→size→alert DAGOnce a plain cron script becomes unwieldy — not needed for an MVP
DagsterApache-2.0Alternative orchestrator with stronger data-asset lineage/typing — heavier but better observability at scaleIf you outgrow Prefect's simplicity and want asset-level lineage across many pipelines
Python · MLflow-Logging, das die DSR-Trial-Count-Disziplin tatsächlich erzwingt
pip install mlflow
import mlflow

with mlflow.start_run(run_name="lgbm_meta_label_v37"):
    mlflow.log_params(params)                                   # every hyperparameter tried
    mlflow.log_param("cv_scheme", "CombinatorialPurgedCV(10,2)")
    mlflow.log_param("feature_set_hash", feature_set_hash)       # so re-used feature sets don't double count
    mlflow.log_metric("oos_sharpe_median", oos_sharpe_median)    # across the CPCV path distribution
    mlflow.log_metric("pbo", pbo_value)
    mlflow.log_metric("trial_number_in_family", trial_counter)   # THIS feeds the Deflated Sharpe N
    mlflow.lightgbm.log_model(model, "model")

# Query the full run history to compute N for the Deflated Sharpe Ratio -- include prior
# Pine-Script optimization trials too (see §14), not just the ML runs.
Warum das nicht verhandelbar ist, kein Nice-to-have

Die Deflated Sharpe Ratio benötigt eine ehrliche Zählung jeder Konfiguration, die du jemals gegen diese Daten ausprobiert hast — nicht nur des finalen Modells. Ohne ein System of Record wird die Trial-Anzahl aus dem Gedächtnis rekonstruiert, und zwar genau in dem Moment, in dem du am stärksten motiviert bist, sie zu niedrig anzusetzen. MLflow (oder ein Äquivalent) macht aus „wie viele Dinge habe ich tatsächlich ausprobiert“ statt einer selbst berichteten Schätzung eine abfragbare Tatsache.

Daten & alternative Datensätze auf Hugging Face

Über die Modell-Hubs hinaus führt der Datasets Hub von Hugging Face eine wachsende Sammlung finanzrelevanter Datensätze, die sich für Prototyping und Sentiment-Arbeit lohnen — behandle sie allesamt als Prototyping-/Backup-Quellen, nicht als survivorship-bias-freie Produktionsdaten (siehe die Data-Plan-Disziplin im zugrunde liegenden Research-Report).

DatasetTypeNotes
mito0o852/OHLCV-1mUS equities, minute OHLCVThousands of US stocks, 1992–2026, sourced from Finnhub.io
123olp/binance-futures-ohlcv-2018-2026Crypto futures OHLCVBinance futures history 2018–2026 — good CCXT-pipeline-test alternative/backup
TimKoornstra/financial-tweets-sentimentSocial sentimentLabeled Twitter/X financial and crypto sentiment — useful for fine-tuning or validating a FinBERT-style veto filter
huggingface.co/datasets?search=financeHub searchThe Hub's finance-tagged dataset list changes frequently — always re-search rather than trusting a static list; verify licensing per-dataset before any commercial use

Numerai — ein anderes Spiel, keine Datenquelle für dein eigenes System

Numerai versteht man am besten als Marktplatz für Modellierungs-Skill, nicht als Datensatz, den du in deine eigene Pipeline einbindest. Das Kern-Turnier liefert kostenlose, vorab aufbereitete, obfuskierte Features — PCA-transformiert, z-standardisiert und zeitlich segmentiert, sodass du erstklassige Finanzdaten modellieren kannst, ohne jemals zu wissen, welche Aktien oder Daten du betrachtest (jede wöchentliche „Era“ hat IDs, die sich per Design nicht über Eras hinweg zuordnen lassen). Numerai Signals ist das komplementäre Produkt: Du reichst Vorhersagen auf deinem eigenen Universum/deinen eigenen Features ein und zielst auf Signale ab, die orthogonal zu dem sind, was Numerais bestehender Modell-Stack bereits erfasst. Alle eingereichten Modelle speisen ein stake-gewichtetes Meta-Modell, das wiederum Numerais eigenen Hedgefonds steuert. Rahme es als Optionalität zur Monetarisierung von Modellierungs-Skill ein — bewertet anhand mehrjähriger, drawdown-inklusiver Performance, nicht als schneller Weg zu Einkommen — und als interessantes benachbartes Ökosystem statt als Komponente der Pipeline in §14.

Referenzarchitektur — vollständige Pipeline

Wie ein fortgeschrittener Nutzer jede der obigen Bibliotheken durchgängig zu einer Pipeline verdrahtet. Datenaufnahme → Qlib/tsfresh-Features → fraktionale Differenzierung (mlfinpy) → LightGBM-Meta-Label-Modell, validiert mit verschachtelter Combinatorial Purged CV (skfolio) → kausales hmmlearn-Regime-Gate → GARCH-basierte (arch) vol-getargetete Positionsgrößenbestimmung → NautilusTrader-Backtest → MLflow-Logging → PickMyTrade-Webhook zur Ausführung.

Reference pipeline: data → features → labels → meta-label CV → regime/sizing → NautilusTrader → MLflow → PickMyTrade 1 · Data ingestion Point-in-time OHLCV + constituent/delisting table; Parquet/DuckDB no survivorship bias 2 · Features Qlib Alpha158 + tsfresh + mlfinpy fractional differentiation (FFD) fit inside-fold only 3 · Triple-barrier mlfinpy: causal EWMA vol → PT/SL/vertical barriers + sample weight uniqueness-weighted 4 · Meta-label model LightGBM inside skfolio CombinatorialPurgedCV → PBO + Deflated Sharpe reject if PBO > 50% 5 · Regime + sizing Causal filtered hmmlearn gate + GARCH (arch) vol- targeted fractional Kelly deterministic math 6 · NautilusTrader One strategy class, backtest → paper → live (only adapters swap) research/live parity 7 · MLflow → PickMyTrade Every run logged; webhook JSON → broker bracket order execute, don't build
Jeder Pfeil ist eine Datenübergabe zwischen einer unabhängig austauschbaren Bibliothek — keine Phase hängt von einer bestimmten Wahl in einer anderen ab.
Python · Skelett der End-to-End-Referenzpipeline
"""
Reference pipeline skeleton: data ingestion -> PickMyTrade execution.
Every preprocessing step is fit INSIDE the CPCV training fold only -- never on
the full dataset. Illustrative structure; wire in your own data store / config.
"""
import numpy as np
import pandas as pd
import lightgbm as lgb
import mlflow
import requests
from hmmlearn.hmm import GaussianHMM
from arch import arch_model
from mlfinpy.labeling import get_events, add_vertical_barrier, get_bins
from mlfinpy.util import get_daily_vol
from mlfinpy.features import frac_diff_ffd
from skfolio.model_selection import CombinatorialPurgedCV, cross_val_predict
from sklearn.pipeline import Pipeline
from qlib.contrib.data.handler import Alpha158
from tsfresh import extract_relevant_features
from nautilus_trader.backtest.engine import BacktestEngine
from nautilus_trader.trading.strategy import Strategy


# 1. DATA INGESTION -- point-in-time, survivorship-bias-free universe only
def load_point_in_time_universe(as_of_date, min_adv_usd=2_500_000):
    """Never filter by TODAY's liquidity -- that imports survivorship bias."""
    raw = data_store.query_asof(as_of_date=as_of_date)          # Parquet/DuckDB store
    return raw[raw["adv_20d_asof"] > min_adv_usd]


# 2. FEATURES -- Qlib Alpha158 for technicals, tsfresh + mlfinpy for the rest
def build_features(prices: pd.DataFrame) -> pd.DataFrame:
    alpha158 = Alpha158(instruments=prices["symbol"].unique().tolist(),
                         start_time=prices.index.min(), end_time=prices.index.max())
    tech_features = alpha158.fetch()

    tsfresh_features = extract_relevant_features(
        prices.reset_index(), y=None, column_id="symbol", column_sort="date", fdr_level=0.01,
    )

    d = find_min_ffd_order(prices["close"], adf_pvalue=0.05, min_corr=0.9)   # search d in [0.1, 1.0]
    frac_diff_price = frac_diff_ffd(prices["close"], d=d, threshold=1e-4)    # stationary, RETAINS memory

    return tech_features.join(tsfresh_features, how="inner").assign(frac_diff_price=frac_diff_price)


# 3. LABELS -- causal EWMA vol -> ATR-scaled triple barrier (mlfinpy)
def label_events(prices: pd.Series, signal_dates: pd.DatetimeIndex) -> pd.DataFrame:
    daily_vol = get_daily_vol(close=prices, lookback=50)
    vertical_barriers = add_vertical_barrier(t_events=signal_dates, close=prices, num_days=10)
    events = get_events(close=prices, t_events=signal_dates, pt_sl=[2.0, 1.5], target=daily_vol,
                         min_ret=0.0005, num_threads=4, vertical_barrier_times=vertical_barriers)
    return get_bins(events, prices)          # -> bin (0/1), ret, t1 (needed for purging)


# 4. META-LABEL MODEL -- LightGBM inside nested Combinatorial Purged CV
def train_meta_label_model(X: pd.DataFrame, y: pd.Series, w: pd.Series, trial_counter: int):
    pipeline = Pipeline([("model", lgb.LGBMClassifier(
        num_leaves=31, learning_rate=0.03, min_child_samples=50,
        monotone_constraints=MONO_CONSTRAINTS))])

    cv = CombinatorialPurgedCV(n_folds=10, n_test_folds=2, purged_size=10, embargo_size=10)
    oos_paths = cross_val_predict(estimator=pipeline, X=X, y=y, cv=cv, sample_weight=w)

    pbo = compute_pbo(oos_paths)
    dsr = compute_deflated_sharpe(oos_paths, n_trials=get_trial_count_from_mlflow() + trial_counter)
    if pbo > 0.50 or dsr.p_value > 0.05:
        raise ValueError(f"Model rejected: PBO={pbo:.2f}, DSR p={dsr.p_value:.3f}")

    final_model = pipeline.fit(X, y, model__sample_weight=w)
    return final_model, pbo, dsr


# 5. REGIME GATE -- causal, walk-forward, FILTERED (never smoothed) HMM posterior
def causal_regime_state(vol_return_features: np.ndarray, t: int, model_cache: dict,
                         refit_every: int = 63, min_train: int = 500) -> int:
    if t < min_train:
        return 1  # default "calm" until enough history exists
    if t % refit_every == 0 or "model" not in model_cache:
        hmm = GaussianHMM(n_components=2, covariance_type="diag", n_iter=200)
        hmm.fit(vol_return_features[:t])                       # only data strictly before t
        model_cache["model"] = hmm
    posteriors = model_cache["model"].predict_proba(vol_return_features[: t + 1])
    return int(posteriors[-1].argmax())                        # filtered state at t, no look-ahead


# 6. VOL-TARGETED SIZING -- GJR-GARCH forecast -> fractional-Kelly-scaled size
def size_position(returns_pct: pd.Series, meta_label_confidence: float, regime_state: int,
                   target_vol_annual: float = 0.10, kelly_fraction: float = 0.5,
                   max_leverage: float = 1.5) -> float:
    if regime_state == 0:                                       # 0 = "stormy" -- stand aside
        return 0.0
    res = arch_model(returns_pct, vol="GARCH", p=1, o=1, q=1, dist="t").fit(disp="off")
    vol_fc = np.sqrt(res.forecast(horizon=1, reindex=False).variance.values[-1, 0]) / 100
    vol_scale = (target_vol_annual / (252 ** 0.5)) / vol_fc
    kelly_scale = kelly_fraction * max(2 * meta_label_confidence - 1, 0)   # confidence -> edge proxy
    return float(np.clip(vol_scale * kelly_scale, 0, max_leverage))


# 7. BACKTEST -- NautilusTrader (same strategy class runs backtest AND live)
class MetaLabelStrategy(Strategy):
    def __init__(self, model, hmm_cache, config):
        super().__init__(config)
        self.model, self.hmm_cache = model, hmm_cache

    def on_bar(self, bar):
        feats = self.build_live_features(bar)                   # same code path as build_features()
        confidence = self.model.predict_proba(feats)[:, 1][0]
        regime = causal_regime_state(self.vol_history, self.clock.timestamp_ns, self.hmm_cache)
        size = size_position(self.returns_pct_history, confidence, regime)
        if confidence > 0.55 and size > 0:
            self.submit_bracket_order(side="BUY", size=size, sl_atr_mult=1.5, tp_atr_mult=2.0)


def run_backtest(historical_bars, final_model, strat_config):
    engine = BacktestEngine()
    engine.add_data(historical_bars)
    engine.add_strategy(MetaLabelStrategy(model=final_model, hmm_cache={}, config=strat_config))
    return engine.run()      # the SAME strategy object later promotes to paper/live -- adapters swap only


# 8. MLFLOW LOGGING -- every trial, forever (feeds the Deflated Sharpe trial count)
def log_run(params, pbo, dsr, backtest_results, final_model, trial_counter):
    with mlflow.start_run(run_name=f"pipeline_v{trial_counter}"):
        mlflow.log_params(params)
        mlflow.log_metric("pbo", pbo)
        mlflow.log_metric("dsr_p_value", dsr.p_value)
        mlflow.log_metric("backtest_sharpe", backtest_results.sharpe_ratio)
        mlflow.log_metric("backtest_max_dd", backtest_results.max_drawdown)
        mlflow.log_metric("trial_number_in_family", trial_counter)
        mlflow.lightgbm.log_model(final_model, "meta_label_model")


# 9. EXECUTION -- PickMyTrade webhook JSON (paper first, then tiny live)
def send_to_pickmytrade(symbol, side, qty, sl_price, tp_price, webhook_url, secret):
    payload = {
        "secret": secret, "symbol": symbol, "action": side,     # "buy" / "sell"
        "quantity": qty, "stopLoss": sl_price, "takeProfit": tp_price, "orderType": "market",
    }
    resp = requests.post(webhook_url, json=payload, timeout=5)
    resp.raise_for_status()
    return resp.json()
Jeder Pfeil ist per Design ein Austauschpunkt

Beachte, dass keine Phase fest an eine bestimmte Wahl aus früheren Abschnitten gekoppelt ist: Tausche LightGBM gegen CatBoost, Qlibs Alpha158 gegen ein handgebautes Feature-Set, NautilusTrader gegen QuantConnect LEAN oder PickMyTrade gegen eine andere Ausführungsbrücke — und nichts anderes in der Pipeline muss sich ändern. Diese Entkopplung ist es, die die Entscheidungsmatrix in §15 weiter unten handlungsleitend statt vorschreibend macht.

Claude Fable als Pair-Engineer für diesen Stack

Claude Fable ist Anthropics Frontier-Modell (Modell-ID claude-fable-5), verfügbar über die Claude-App und Claude Code. Bei einem derart tiefen Stack liegt sein Wert nicht in „schreib mir einen Trading-Bot“ — sondern in der unglamourösen, fehleranfälligen Mitte: die CPCV-Fold-Arithmetik korrekt hinzubekommen, eine kausale (nicht leaky) HMM-Decoding-Schleife im ersten Anlauf zu schreiben, einen Qlib-Data-Handler für einen Markt zu verdrahten, den es nicht von Haus aus mitbringt, und eine mehrstufige Pipeline durchgängig auf das eine Leak zu lesen, das sonst erst Monate später als Live-/Backtest-Diskrepanz zutage träte.

Wo es sich am spezifischen Stack dieser Seite bezahlt macht:

  • CPCV-Fold-Logik — Purge-/Embargo-Größen aus deinem Label-Horizont und dem langsamsten Feature-Lookback (§7) ableiten, statt sie zu raten und aus einem aufgeblähten Backtest-Sharpe zu erfahren.
  • Kausale Regime-Inferenz — die Walk-forward-Schleife auf Basis der gefilterten Posterior schreiben statt des leaky decode()/Viterbi-Aufrufs über die gesamte Stichprobe, wie er als „falsches“ Beispiel in §8 gezeigt wird.
  • Qlib-Konfiguration — Alpha158/Alpha360-Workflow-YAML für einen Data-Handler generieren und anpassen, für eine Region, die Qlib nicht mitbringt, wie das NSE-Beispiel in §6.
  • Pipeline-weites Leakage-Review — das §14-Skelett Phase für Phase auf einen Fit-außerhalb-des-Folds-Bug lesen, bevor es jemals Kapital berührt.
  • Pine Script → Python-Konvertierung — die Entry-Logik einer TradingView-Strategie in die Primärsignal-Funktion portieren, die das Meta-Labeling-Modell speist.
  • Ausführungs-Glue — den in §14.6 behandelten Webhook-Payload-/Idempotency-Key-Code entwerfen sowie das MLflow-Logging, das deine Deflated-Sharpe-Trial-Anzahl ehrlich hält (§12).

Sofort anpassbare Prompts für jeden dieser Punkte — spezifisch für den Stack dieser Seite, keine generischen „bau mir einen Bot“-Anfragen:

Prompt 1 · CPCV-Purge-/Embargo-Review
Review this skfolio CombinatorialPurgedCV setup [paste code]: 10 folds, 2 test folds, on triple-barrier-labeled
signals where barriers can resolve up to 10 trading days after the signal (get_events num_days=10). Check whether
purged_size and embargo_size are large enough to cover that full label-resolution window plus my slowest feature's
lookback. Flag any fold where a training sample's resolution window overlaps a test sample's, explain the leak, and
give me corrected purge/embargo values with the reasoning shown.
Prompt 2 · Kausales HMM-Regime-Gate, nicht leaky
Here is my hmmlearn regime-detection code [paste code]. Confirm it only calls predict_proba on data up to and
including index t when producing the label used AT time t, and that it never calls hmm.decode() or reads a Viterbi
path computed over the full series. If it's using the full-sample smoothed posterior, rewrite it as a walk-forward
loop that refits every N bars on strictly past data and returns the filtered (not smoothed) posterior at each step,
matching the causal pattern, not the leaky one.
Prompt 3 · Qlib Alpha158 auf einem nicht standardmäßigen Markt
I want Microsoft Qlib's Alpha158 handler running on NSE (India) equities, not one of Qlib's built-in regions.
Here's my current workflow YAML [paste config]. Write a custom data handler/provider that points Alpha158's feature
computation at my own point-in-time OHLCV store instead of Qlib's default region data, keeping the Alpha158 feature
set intact. Explain specifically what breaks -- calendar, instrument universe, trading-day alignment -- if I just
change the region tag without supplying compatible replacements.
Prompt 4 · Leakage-Audit der gesamten Pipeline
Here is my end-to-end pipeline: data ingestion, feature engineering, triple-barrier labeling, LightGBM meta-label
training inside CombinatorialPurgedCV, HMM regime gate, GARCH-based sizing, and NautilusTrader backtest [paste code].
Walk it stage by stage and flag every point where a transform -- scaler, feature selector, frac-diff order search, HMM
fit -- is fit on data outside the current CV training fold, or a feature could see information unavailable at signal
time. Rank findings by how much each would inflate the backtest Sharpe if left uncorrected.
Prompt 5 · Pine Script → Primärsignal-Funktion
Here is my TradingView Pine Script strategy [paste script]. Convert its entry logic into a Python function that
takes a pandas DataFrame of OHLCV bars and returns a boolean signal series, matching the Pine version bar-for-bar on
identical historical data. This becomes the primary-model signal feeding my meta-labeling filter, so flag anything --
security() calls with lookahead, use of the current bar's close before it closes -- that would make the two versions
diverge.
Prompt 6 · Webhook-Payload + Idempotency-Key
Write a Python function that takes a meta-label confidence score, ATR-based stop/target multiples, and a
position size from my vol-targeted sizing calc, and builds the JSON payload for a PickMyTrade webhook POST -- symbol,
side, quantity, stopLoss, takeProfit. Add a deterministic idempotency key (hash of symbol + signal timestamp + bar
index) as a payload field, and wrap the POST in retry-with-backoff logic that treats a timeout as "unknown, reconcile
before retrying" rather than blindly resubmitting.
Fable entwirft, du mergst

Keiner der obigen Prompts ersetzt es, das Diff selbst zu lesen. Claude Fable ist schnell bei den mechanischen Teilen — CV-Fold-Arithmetik, Boilerplate-Retry-Logik, das Konvertieren von Pine zu pandas — aber die Purge-/Embargo-Größen, die PBO/DSR-Ablehnungsschwellen und die Entscheidung, Kapital über einen bestimmten Webhook zu leiten, bleiben jedes Mal Ihre Verantwortung zur Freigabe, bevor irgendetwas ein Paper- oder Live-Konto berührt.

Execution-Bridge — build vs. buy für den letzten Sprung

Dieselbe Build-vs-Buy-Entscheidung, die jedes Systems-Team trifft, angewendet auf den letzten Sprung der §14-Pipeline: Fließen Ihre knappen Engineering-Stunden in die Order-Routing-Verrohrung oder in die Modellschichten, die tatsächlich Ihre eigenen sind? Dieser Abschnitt macht den Fall dafür, die Live-Ausführung als eingekaufte Abhängigkeit mit schmaler Schnittstelle zu behandeln — und zeigt, wie diese Schnittstelle von der Seite der Pipeline aus aussieht.

1 · Order-Routing-Verrohrung hat einen großen Schadensradius für stille Bugs

Retry-Logik, Broker-Session-Reauthentifizierung, Teilausführungs-Abgleich, OCO-Bracket-Zustandsmaschinen, Webhook-Deduplizierung — jedes ist für sich genommen ein gut verstandenes Problem, und jedes ist genau die Art von Code, bei der ein Bug keine Exception wirft. Er dupliziert stillschweigend eine Order, lässt einen Stop fallen oder hinterlässt eine Zustandsmaschine im falschen Knoten. Ein abgestürzter Listener, der über Nacht eine offene Futures-Position hält, ist kein Stacktrace; es ist ein Anruf beim Desk Ihres Brokers.

2 · Ein stiller Ausführungs-Bug ist ein G&V-Ereignis, keine abgefangene Exception

Die Fehler Ihres Modells zeigen sich als niedrigere Sharpe über Tausende von Trades — verrauscht, aber begrenzt und diagnostizierbar. Ein Fehler in der Ausführungsschicht zeigt sich als ein spezifischer fehlender Stop oder eine doppelte Ausführung, realisiert in Dollar, meist genau in dem einen Moment, in dem die Volatilität hochschnellt und Sie das Terminal nicht beobachten. Unit-Tests fangen die Bugs, für die Sie einen Test zu schreiben gedacht haben; sie fangen selten ein Session-Token, das mitten am Tag abläuft, oder einen Webhook, der während eines Netzwerk-Aussetzers zweimal zugestellt wird.

3 · Die Stunden, die es wert sind, aufgewendet zu werden, sind die, die nur Sie aufwenden können

Retry/Backoff, OCO-Zustandsmaschinen und broker-spezifische Order-Übersetzung sind für jeden Trader, der zu Rithmic oder IB routet, dasselbe Problem — genau deshalb sind sie kommoditisiert. Ihr Meta-Labeling-Modell, Ihr Regime-Gate und Ihre CPCV-Validierung sind nirgendwo sonst gelöst; sie sind die einzige Schicht, in der eine zusätzliche Stunde Ihre Sharpe tatsächlich bewegen kann. Eine Stunde, die Sie einen selbstgebauten Order-Router gegen Randfälle härten, gegen die jemand anderes bereits gehärtet hat, ist eine Stunde, die dort nicht aufgewendet wurde.

4 · Trennung der Zuständigkeiten ist ein Zuverlässigkeitsmuster, keine Annehmlichkeit

Eine schmale, dumme HTTP-Schnittstelle — ein POST, eine Payload-Form — zwischen Strategie und Broker bedeutet, dass Ihr Forschungscode so experimentell sein kann, wie Sie wollen, ohne jemals ein Live-Session-Token zu halten. Wenn die Infrastruktur des Ausführungs-Anbieters einen Vorfall hat, ist das dessen On-Call-Rotation, kein 2-Uhr-nachts-Pager-Alarm für Sie und kein Bug in Ihrem Modell. Es ist derselbe Grund, warum Plattform-Teams Anwendungscode keine rohen Sockets zu einer Datenbank öffnen lassen.

Wo dies in der §14-Pipeline einzuordnen ist

Die Referenz-Pipeline endet bei "MLflow-Logging → PickMyTrade-Webhook zur Ausführung", weil das die natürliche Vertrauensgrenze ist. Ihr Modell gibt ein Signal aus → ein TradingView-Alert wird ausgelöst, oder — da ein fortgeschrittenes Setup TradingView vollständig überspringen kann — Ihr eigener Python-Dienst konstruiert das JSON und POSTet es direkt an den Webhook-Endpunkt von PickMyTrade → PickMyTrade übernimmt die OCO-Bracket-Platzierung, die broker-spezifische Order-Übersetzung, das Multi-Account-Fan-out und die Reconnect-/Retry-Schleife gegen das Venue, zu dem Sie auch immer routen. Diese Arbeitsteilung bedeutet, dass Ihr Dienst nur bis zu "einen idempotenten HTTP-POST senden" zuverlässig sein muss — er muss nie eine zustandsbehaftete, mehrwöchige Verbindung zur Session-API eines Brokers aufrechterhalten, Auth-Tokens nach Zeitplan erneuern oder den Order-Zustand nach einer Netzwerkpartition abgleichen. Diese gesamte Problemkategorie wandert von Ihrem Tisch.

JSON · illustrative Webhook-Payload-Form (generisch — Feldnamen gegen die aktuelle Anbieter-Dokumentation prüfen)
{
  "idempotencyKey": "SIG-MES-2026-07-03T14:32:00Z-000481",
  "symbol": "MES",
  "side": "buy",
  "quantity": 2,
  "orderType": "market",
  "stopLoss": 5320.25,
  "takeProfit": 5364.75,
  "meta": {
    "metaLabelConfidence": 0.62,
    "atr14": 14.8,
    "slAtrMult": 1.5,
    "tpAtrMult": 2.0,
    "regimeState": 1
  }
}

Bewusst generisch — kein verifiziertes PickMyTrade-Schema (siehe den funktionierenden send_to_pickmytrade()-Aufruf in §14 für die Feldnamen, die in der Referenz-Pipeline dieser Seite bereits verwendet werden). quantity kommt direkt aus der vol-getargeteten Sizing-Berechnung aus §11/§14; stopLoss/takeProfit sind Einstieg ± ATR × die Barrier-Multiplikatoren, die bereits im Triple-Barrier-Labeling (§7) validiert wurden; idempotencyKey — im minimalen §14-Beispiel nicht vorhanden — ist das, was aus einer At-least-once-Webhook-Zustellung eine effektiv-einmalige Order macht.

Die Fehlermodi, für die es sich lohnt, von vornherein zu designen

Webhook-Zustellung ist At-least-once, nicht Exactly-once — ein nach einem Timeout wiederholter POST kann sonst eine Order duplizieren; ein Idempotenzschlüssel macht Retries sicher. Broker-API-Rate-Limits und Auth-Token-Refresh-Zyklen sind broker-spezifische Details (Rithmic-Session-Tokens, IB-Gateway-Reconnects, Tradovate-OAuth-Refresh), auf die eine geteilte Ausführungsschicht über die Konten anderer Nutzer bereits Tausende Male gestoßen ist. Order-Zustandsabgleich nach einer Netzwerkpartition — wurde diese Bracket-Order tatsächlich platziert, oder brach die Verbindung vor dem Ack ab? — bedeutet, den Order-Zustand des Brokers abzufragen und ihn bei jedem Reconnect gegen das zu vergleichen, was Sie glauben gesendet zu haben. Und unter alledem: Ihr Forschungscode hat null SLA-Anforderungen — ein abgestürzter Kernel kostet Sie einen erneuten Durchlauf — während Ihr Ausführungscode eine Zuverlässigkeit nahe der Fünf-Neunen-Verfügbarkeit benötigt, denn "der Listener war vier Minuten lang ausgefallen" ist in seinen Konsequenzen nicht zu unterscheiden von "der Stop-Loss existierte nicht".

Halten Sie den Schadensradius der Forschungsumgebung bei null

Ihr Backtest-, Retrain- und MLflow-getrackter Experimentcode (§12) sollte keinen Codepfad haben, der eine Live-Order platzieren kann — kein Feature-Flag, kein dry_run=False-Default, der darauf wartet, versehentlich umgestellt zu werden. Jede Live-Order über eine einzige externe, schmale HTTP-Grenze zu leiten, erzwingt diese Trennung strukturell: Die einzige Möglichkeit, wie Forschungscode einen Live-Trade platzieren könnte, besteht darin, bewusst genau denselben Webhook-POST zu konstruieren, den Ihre Live-Strategie macht. Es ist derselbe Grund, warum CI-Runner keine Produktions-Datenbank-Anmeldedaten erhalten — hier kostet es ein Abonnement statt einer zweiten On-Call-Rotation.

Kommoditisierte Infrastruktur, konsumiert über API

Behandeln Sie die Ausführung so, wie Sie bereits Compute behandeln: Sie racken keine eigenen Server, um eine GPU zu bekommen, und es steckt auch kein Alpha darin, Ihren eigenen Order-Router zu racken. PickMyTrade ist Infrastruktur, die Sie aufrufen, keine Komponente Ihres Edges — das Modell, das Regime-Gate und die Validierung sind die Teile dieses Stacks, die es zu verteidigen lohnt.

Entscheidungsmatrix — welches Werkzeug für welche Aufgabe

Eine einzige Nachschlagetabelle für "Ich muss… → nutze dies → weil…".

I need to…UseWhy
Filter trade quality (meta-label)LightGBM + mlfinpy triple-barrierHighest-ROI, lowest-risk ML addition; GBDT dominates tabular financial data
Detect market regime causallyhmmlearn (filtered posterior) + ruptures cross-checkCheap, interpretable; ruptures independently confirms structural breaks the HMM finds
Size positionsarch (GARCH) vol forecast + fractional KellyDeterministic math owns sizing — this is where drawdown control actually lives
Get a zero-shot volatility forecastChronos-Bolt or TimesFMApache-2.0, CPU-runnable, no training needed, legitimately useful for vol (not direction)
Validate without leakageskfolio CombinatorialPurgedCV + PBO + Deflated SharpeProduces an OOS performance distribution, not one lucky split; lower PBO than plain walk-forward
Track every experiment / enforce trial-count honestyMLflowThe DSR correction is only as honest as your trial count — MLflow makes it a queryable fact, not a memory
Fast first-pass parameter sweepvectorbt (community)Numba-vectorized triage of thousands of configs in seconds — never trust it as the final answer
Re-validate with realistic fills before capitalNautilusTraderOnly engine here with true research-to-live parity — same strategy code, real fill/slippage modeling
Build a full quant research pipeline fastMicrosoft QlibData handler + Alpha158/360 + model zoo + walk-forward harness, all wired via one YAML config
Extract automated time-series featurestsfreshHundreds of candidate features with a built-in FDR-controlled relevance filter
Benchmark before trusting any "edge"Nixtla statsforecast AutoARIMA/AutoETSMandatory sanity check — DLinear/AAAI-23 showed complexity alone proves nothing
Allocate across a correlated basketHRP via PyPortfolioOpt, skfolio, or Riskfolio-LibRobust to noisy covariance estimates, unlike mean-variance optimization
Optimize for tail risk specifically (CVaR/CDaR)Riskfolio-LibPurpose-built convex-optimization risk measures beyond variance — matches a "least drawdown" mandate
Detect live input/prediction driftEvidently AIStatistical drift tests (KS, PSI, Wasserstein) across features and predictions
Estimate live performance before labels arriveNannyML (CBPE/DLE)Label-free — critical since triple-barrier outcomes only resolve after the barrier is hit
Use financial sentiment as a risk vetoFinBERT (ProsusAI)Apache-2.0, CPU, sub-second — defensive filter, not an alpha engine
Cheaply fine-tune an LLM on financial textFinGPT (LoRA on LLaMA)~3.67M trainable params vs. 6.17B full fine-tune — fits on one consumer GPU
Orchestrate the nightly pipelinePrefect (Dagster at scale)Scheduling/retries/caching once a cron script becomes unwieldy — not needed pre-MVP
Avoid a non-commercial license trapPrefer Chronos / TimesFM / Lag-Llama / MOMENT over MoiraiMoirai is CC BY-NC-4.0 — not usable in a system that manages your own capital
Find structural breaks / changepointsruptures (PELT)Linear-cost exact search, no assumed number of breakpoints
Use RL without it blowing up your backtestStable-Baselines3 (PPO) on a narrow sub-problem, PBO-testedFinRL's own contests reject overfit agents at 10% significance — confine RL accordingly
Execute live ordersPickMyTrade webhookExecution is a solved, hardened problem — your edge lives in the model layers, not order plumbing
Draft / review pipeline code quicklyClaude Fable (claude-fable-5)Pair-engineer for CPCV fold math, causal HMM decoding, and leakage review — see §14.5; every merge is still a human decision
Bridge a model signal to a live broker orderPickMyTrade (webhook execution bridge)One idempotent POST replaces weeks of broker auth, retry, and OCO state-machine engineering — see §14.6

Lizenz-Anhang

Jedes auf dieser Seite behandelte Werkzeug und Modell, mit seiner Lizenz und einer klaren Kennzeichnung. Sicher = permissiv, keine nennenswerte Einschränkung für kommerzielle/Live-Trading-Nutzung. Vorsicht = nutzbar, aber lesen Sie die Bedingungen (Copyleft-Verpflichtungen, Source-available-aber-eingeschränkte Klauseln oder eher ein Wartungsstatus-Bedenken als ein lizenzrechtliches). Eingeschränkt = ein echter Blocker für ein uneingeschränktes kommerzielles/Live-System ohne gesonderte Vereinbarung.

Tool / modelLicenseFlagNote
LightGBMMITSafe
XGBoostApache-2.0Safe
CatBoostApache-2.0Safe
scikit-learnBSD-3-ClauseSafe
neuralforecast / statsforecast / mlforecast (Nixtla)Apache-2.0SafeCovers §2's from-scratch DL architectures via one API
Nixtla TimeGPTProprietary / paid APICautionClosed, vendor lock-in; prefer open Chronos/TimesFM instead
Amazon Chronos / Chronos-BoltApache-2.0Safe
Google TimesFMApache-2.0Safe
Salesforce Moirai / Moirai-MoECC BY-NC-4.0RestrictedNon-commercial only — do not use in a system managing your own capital without a separate license
Lag-LlamaApache-2.0Safe
MOMENTMITSafe
IBM Granite-TimeSeries (PatchTSMixer/PatchTST/TTM)Apache-2.0Safe
FinBERT (ProsusAI)Apache-2.0Safe
FinBERT-toneApache-2.0Safe
FinGPT (code)MITCautionCode is MIT, but fine-tuned checkpoints inherit the base LLaMA weights' separate Meta community license — check that independently
FinRL / FinRL-MetaMITSafe
Stable-Baselines3MITSafe
TensorTradeApache-2.0CautionLicense is permissive, but maintenance has stalled enough that a community fork (TensorTrade-NG) exists specifically to address it — plan accordingly
Microsoft QlibMITSafe
mlfinpyMITSafe
skfolioBSD-3-ClauseSafe
mlfinlab (paid)CommercialCautionPaid license required — the two free packages above already cover the essentials
hmmlearnBSDSafe
rupturesBSD-2-ClauseSafe
vectorbt (community)Apache-2.0 + Commons ClauseCautionCommons Clause blocks selling a product/service whose value derives primarily from the software itself; fine for internal use, and maintenance-frozen
backtraderGPL-3.0RestrictedStrong copyleft; also stalled since ~2021 — avoid for new work on both grounds
Zipline-reloadedApache-2.0Safe
NautilusTraderLGPL-3.0-or-laterCautionPermits linking from closed-source strategy code; modifications to NautilusTrader itself must be shared back — verify current terms before commercial deployment
QuantConnect LEANApache-2.0Safe
btMITSafe
backtesting.pyAGPL-3.0RestrictedNetwork-use copyleft — a real constraint if you build a hosted/SaaS product on it; fine for private, non-distributed use
freqtradeGPL-3.0RestrictedCrypto-only bot; strong copyleft restricts closed-source commercial derivatives — flagged since it's a common trap
PyPortfolioOptMITSafe
Riskfolio-LibBSD-3-ClauseSafe
archNCSASafePermissive, commercial-OK
tsfreshMITSafe
MLflowApache-2.0Safe
Evidently AIApache-2.0Safe
NannyMLApache-2.0Safe
PrefectApache-2.0Safe
DagsterApache-2.0Safe
PickMyTradeProprietary / paid SaaSCautionExecution API, not an installable library — no open-source or self-hosted option; a subscription gates access (see §14.6), a vendor-dependency call rather than an OSS-license one
Dies ist keine Rechtsberatung

Lizenzen und ihre Auslegung können sich ändern, und die Grenzen der "kommerziellen Nutzung" (insbesondere bei CC BY-NC und AGPL) sind wirklich einzelfallabhängig. Behandeln Sie diese Tabelle als Ausgangskarte für die Due Diligence, nicht als Ersatz dafür, den aktuellen Lizenztext selbst zu lesen — oder die Meinung eines Anwalts einzuholen — vor jedem Deployment, das echtes Kapital berührt oder an andere verteilt wird.

Wichtiger finanzieller Haftungsausschluss

Nur zu Bildungszwecken. Alle Inhalte auf dieser Seite werden zu allgemeinen Bildungs- und Informationszwecken bereitgestellt und stellen weder eine Anlage-, Finanz-, Rechts- oder Steuerberatung noch eine Empfehlung oder Aufforderung zum Kauf oder Verkauf eines Wertpapiers, Futures-Kontrakts oder anderen Finanzinstruments dar.

Erhebliches Verlustrisiko. Der Handel mit Futures, Derivaten und anderen gehebelten Produkten ist mit einem erheblichen Verlustrisiko verbunden und nicht für alle Anleger geeignet. Sie können mehr als Ihre ursprüngliche Investition verlieren. Für den Handel sollte ausschließlich Risikokapital eingesetzt werden — Geld, dessen Verlust Sie sich leisten können, ohne dass es Ihre Lebensführung beeinträchtigt.

Vergangene Wertentwicklung ist kein Indikator für künftige Ergebnisse. Hypothetische und rückgetestete Performance-Ergebnisse unterliegen inhärenten Beschränkungen: Sie werden mit dem Vorteil der Rückschau erstellt, sind mit keinem finanziellen Risiko verbunden und können nicht alle Faktoren berücksichtigen — einschließlich der Fähigkeit, Verluste zu verkraften —, die den tatsächlichen Handel beeinflussen. Jede auf dieser Seite zitierte Benchmark-Zahl und jede Star-/Download-Zahl spiegelt eine Momentaufnahme wider, die während der Recherche Mitte 2026 erfasst wurde, und kann sich bis zu dem Zeitpunkt, an dem Sie dies lesen, geändert haben — prüfen Sie aktuelle Zahlen anhand der Primärquelle (GitHub-Repository, Hugging-Face-Model-Card oder zitiertes Paper), bevor Sie sich darauf verlassen.

Keine Garantien. Nichts auf dieser Seite garantiert Gewinn oder Schutz vor Verlust. Machine-Learning-Modelle — einschließlich der in §3 besprochenen Zeitreihen-Foundation-Modelle — können falsch liegen, Marktbedingungen ändern sich, und automatisierte Systeme können fehlerhaft funktionieren.

Kein registrierter Berater. Der Autor und Herausgeber dieser Seite ist kein registrierter Anlageberater, Broker-Dealer, Commodity Trading Advisor (CTA) oder Finanzplaner. Bevor Sie eine finanzielle Entscheidung treffen, konsultieren Sie einen zugelassenen Finanzberater, der Ihre individuellen Umstände beurteilen kann.

Keine Rechtsberatung zur Lizenzierung. Der Lizenz-Anhang in §16 wird der Einfachheit halber bereitgestellt und spiegelt eine nach bestem Wissen erfolgte Auslegung öffentlich verfügbarer Lizenzdateien zum Zeitpunkt der Recherche wider; er stellt keine Rechtsberatung dar. Bestätigen Sie die aktuellen Lizenzbedingungen direkt bei jedem Projekt vor jeder kommerziellen oder produktiven Nutzung.

Über die genannten Werkzeuge. PickMyTrade ist ein Drittanbieter-Werkzeug zur Ausführungsautomatisierung, das Alerts an Broker weiterleitet; es bietet keine Handelsberatung, Signale oder Strategien. Alle genannten Bibliotheken, Modelle und Frameworks (Hugging Face, Amazon, Google, Salesforce, IBM, Microsoft, Meta/LLaMA, AI4Finance Foundation und jedes referenzierte Open-Source-Projekt) sind Eigentum ihrer jeweiligen Inhaber; diese Seite ist unabhängiger Bildungsinhalt und wird von keinem von ihnen unterstützt oder ist mit keinem von ihnen verbunden. Sachliche Details (Lizenzen, Star-Zahlen, Benchmark-Werte) wurden zum Zeitpunkt der Recherche offiziellen Repositories, Model-Cards und zitierten Papern entnommen und können sich ändern — überprüfen Sie stets die Primärquelle.

↑ Zurück nach oben

Automatisieren Sie den letzten Sprung mit PickMyTrade

Ihr Edge lebt in den Modell-, Regime-Gate- und Validierungsschichten. Lassen Sie PickMyTrade die Ausführungs-Verrohrung übernehmen — ein idempotenter Webhook zu über 60 Brokern und Prop-Firmen, mit angehängten Bracket-Orders.