← Zurück zu den Artikeln
July 30, 2026
5 min read

AutoML für systematische Handelspipelines

AutoML für systematische Handelspipelines
#AutoML
#NAS
#feature-engineering
#automation
#quant

This blog has spent a long arc on how to search: which sampler to use and when (the crossover is eval cost), how to price the search you ran (the Deflated Sharpe Ratio), how to score the selection procedure itself (PBO), and where that whole apparatus honestly lands (no robust edge).

Was nie abgedeckt wurde, ist das, wonach Sie nach suchen. Diese Artikel nehmen alle den Funktionsumfang und die Strategiefamilie als gegeben an und optimieren die darin enthaltenen Parameter. AutoML greift die darüber liegende Ebene an – es automatisiert die Erstellung der Kandidaten selbst. Drei Teile davon erscheinen nirgendwo sonst in diesem Blog:

  1. Automatisierte Feature-Extraktion – tsfresh wandelt eine Preisreihe in ca. 794 statistisch charakterisierte Features um und Featuretools setzt Features über verwandte Markttabellen über Deep Feature Synthesis zusammen.
  2. Budgetbewusstes AutoML – FLAMLs kostensparende Optimierung, die das beste Modell innerhalb eines Rechenbudgets findet und nicht unabhängig von den Kosten.
  3. Die Formel-Alpha-Fabrik – WorldQuants 101 Formel-Alphas als zusammensetzbare Operatorgrammatik, die eine Maschine aufzählen kann.

Alles andere – objektive Funktion, Validierungsschema, Mehrfachtestkorrektur – wird hier bereits an anderer Stelle gemessen, daher wird in diesem Artikel eher verlinkt als erneut gelehrt. Das ist wichtiger als sonst, denn AutoML lässt die Anzahl der Versuche explodieren, und genau um die Anzahl der Versuche geht es im Rest des Handlungsbogens.

! ZXQKEEP0QXZ

Was AutoML automatisiert

AutoML ist kein einzelner Algorithmus. Es handelt sich um eine Familie von Techniken, die verschiedene Phasen der Pipeline automatisieren:

Bühne Manueller Ansatz AutoML-Ansatz
Feature-Engineering Domänenexperten-Handwerksindikatoren Automatisierte Extraktion (tsfresh, Featuretools)
Funktionsauswahl Korrelationsanalyse, Intuition Statistische Hypothesenprüfung, SHAP
Modellauswahl Probieren Sie 2-3 Modelle aus Durchsuchen Sie Dutzende von Lernenden
Hyperparameter-Tuning Rastersuche, manuelle Optimierung Bayesianische / kostensparende Suche (Optuna, FLAML)
Architekturdesign Feste neuronale Netzwerktopologie Suche nach neuronaler Architektur (NAS)
Ensemblebau Manuelles Stapeln Automatisierte Ensembleauswahl

Die Prämisse ist, dass der Kandidatenraum im systematischen Handel enorm ist – eine einzelne OHLCV-Serie generiert Hunderte von technischen Merkmalen und mehrere Vermögenswerte, Orderbuchdaten und alternative Quellen machen sie kombinatorisch. Die Prämisse ist auch die Gefahr: Jeder Kandidat ist eine Prüfung, und Prüfungen führen zu falschen Entdeckungen.

One AutoML-specific point on the objective: the metric the search maximizes must be the financial one, because the search will optimize exactly what you wrote down and nothing you meant. Which scalar you pick silently selects your strategy — see Objective-Function Design, where a naive per-trade Sharpe crowns a sub-5%-exposure lottery in 56% of 600 seeds and posts an in-sample Sharpe of 21 that collapses to 0.13 out of sample. Wire the financial metric into the AutoML scorer from the start; do not optimize roc_auc and hope it transfers.

Automatisiertes Feature-Engineering

Im Feature Engineering leben die meisten Alphas. Die Rohpreisdaten sind für alle gleich. Die Umwandlung dieser Daten in prädiktive Signale unterscheidet profitable Strategien vom Rauschen.

! ZXQKEEP0QXZ

tsfresh: Von einer Preisserie zu über 800 Funktionen

tsfresh (Time Series Feature Extraction based on Scalable Hypothesis Tests) is purpose-built for time series feature extraction. It computes 63 characterization methods that expand into ~794 features by default, including:

  • Statistische Momente (Mittelwert, Varianz, Schiefe, Kurtosis)
  • Autokorrelation bei mehreren Verzögerungen
  • Fourier-Koeffizienten und Spektralenergie
  • Komplexitätsmaße (ungefähre Entropie, Probenentropie)
  • Nichtlineare Merkmale (Friedrich-Koeffizienten, max. Langevin-Fixpunkt)
  • Quantile und Bereichszählungen ändern

For financial data, this means a single price series produces hundreds of candidate features — many capturing dynamics that manual feature engineering would miss. This is a materially different approach from the hand-crafted, domain-derived feature sets used in spread modeling and DeepLOB: there a human decides that order-book imbalance matters; here a library enumerates everything and lets a hypothesis test decide. For financial data, this means a single price series produces hundreds of candidate features — many capturing dynamics that manual feature engineering would miss. This is a materially different approach from the hand-crafted, domain-derived feature sets used in spread modeling and DeepLOB : there a human decides that order-book imbalance matters; here a library enumerates everything and lets a hypothesis test decide.

import pandas as pd
import numpy as np
from tsfresh import extract_features, select_features
from tsfresh.utilities.dataframe_functions import impute

def prepare_rolling_windows(df: pd.DataFrame, window_size: int = 20) -> pd.DataFrame:
    """Convert OHLCV DataFrame into rolling windows for tsfresh."""
    records = []
    for i in range(window_size, len(df)):
        window = df.iloc[i - window_size:i].copy()
        window["id"] = i  # window identifier
        window["time"] = range(window_size)
        records.append(window[["id", "time", "close", "volume", "high", "low"]])
    return pd.concat(records, ignore_index=True)

df_ohlcv = pd.read_csv("btc_1h.csv", parse_dates=["timestamp"])
df_rolled = prepare_rolling_windows(df_ohlcv, window_size=24)

features = extract_features(
    df_rolled,
    column_id="id",
    column_sort="time",
    n_jobs=8,  # parallel extraction
    disable_progressbar=False,
)

impute(features)

y = df_ohlcv["close"].pct_change(4).shift(-4).iloc[24:].reset_index(drop=True)
y_binary = (y > 0).astype(int)

features_selected = select_features(features, y_binary, fdr_level=0.05)
print(f"Selected {features_selected.shape[1]} features from {features.shape[1]}")

The select_features function applies a Benjamini-Yekutieli procedure to control the false discovery rate across the whole feature battery — which is the right instinct, and the same instinct the Deflated Sharpe article applies to strategy searches. Note what it does not do: FDR control on the feature-selection step says nothing about the trial cost of the model search that follows it. Those are two separate multiplicities and both have to be paid.