Strasmore Research
Lernen Matt ConnorVon Matt Connor

Self-Hosted-Quant-Workbench für A-Aktien erklärt

Eine selbst gehostete Quant-Workbench für A-Aktien bündelt Screening und Backtests auf Ihrem Rechner. Diese vier Punkte sollten Sie zuerst prüfen.

Eine selbst gehostete Quant-Workbench für A-Aktien ist eine Webanwendung, die den Markt screent, eine Beobachtungsliste überwacht, Backtests ausführt und nach Börsenschluss eine Analyse erstellt. Sie läuft auf einem von Ihnen kontrollierten Rechner und nicht auf dem Terminal eines Brokers. Ein MIT-lizenziertes Projekt namens tickflow-stock-panel bündelt diese Funktionen hinter einem einzigen Port. Bis August 2026 hatte es rund 2.800 GitHub-Sterne gesammelt. Die Funktionsliste ist leicht zu lesen. Die darunterliegende Ebene entscheidet, ob das System im nächsten Quartal noch funktioniert.

Woraus eine selbst gehostete Quant-Workbench für A-Aktien besteht

Die Architektur ist überschaubar. Anhand des Codes und der Dokumentation zum Commit vom August 2026 ergibt sich folgendes Bild:

  • Eine mit React und TypeScript erstellte Webseite.
  • Ein Python-Dienst auf Basis von FastAPI mit einem Scheduler, der die Daten in festgelegten Intervallen aktualisiert.
  • Ein lokaler Speicher: Parquet-Dateien auf der Festplatte, abgefragt mit DuckDB und verarbeitet mit Polars.
  • Eine Backtesting-Engine, vectorbt, die auf diese Dateien zugreift.
  • Ein SDK des Datenanbieters, das jeden Kurs abruft, den das Panel anzeigt.

Beachten Sie, was fehlt. Keine Komponente dieses Stacks ist mit einer Börse verbunden. Das Panel berechnet; der Datenanbieter liefert. „Selbst gehostet“ beschreibt, wo der Code ausgeführt wird, und sagt nichts darüber aus, woher die Zahlen stammen. Für den Besitz der Rohdaten ist die darunterliegende Schicht zuständig: ein lokaler A-Aktien-Marktdatenbestand. Sie sorgt dafür, dass alle darüberliegenden Komponenten austauschbar sind.

Was die kostenlose Stufe der Datenquelle abdeckt

Eine Umgebungsvariable bestimmt, was das Panel sehen kann. Bleibt der Anbieterschlüssel leer, läuft das Projekt in dem in der Dokumentation als None-Modus bezeichneten Zustand: historische Tagesbalken von einem kostenlosen Endpunkt, wobei die aktuelle Sitzung erst ein bis zwei Stunden nach Börsenschluss verfügbar ist. Wird der Schlüssel eingetragen, wird der Zugriff abhängig von der kostenpflichtigen Stufe freigeschaltet. Für Arbeiten auf Tagesbasis ist das eine brauchbare kostenlose Stufe. Für alles Intraday ist sie eine klare Grenze – zu Bedingungen, die der Anbieter bei jeder Verlängerung neu formulieren kann.

Der Maintainer beschreibt die Vereinbarung direkt:

Dieses Projekt dient ausschließlich dem Lernen und der quantitativen Forschung und stellt keine Anlageberatung dar. Backtest-Ergebnisse lassen keine Rückschlüsse auf künftige Renditen zu.
Dieses Projekt ist ein persönliches Open-Source-Projekt auf Basis der Datenquelle TickFlow und kein offizielles Projekt von TickFlow.
README, shy3130/tickflow-stock-panel, abgerufen am 13. August 2026

Auf Deutsch bedeutet das: Das Projekt dient dem Lernen und der quantitativen Forschung, stellt „keine Anlageberatung dar“, Backtest-Ergebnisse lassen keine Rückschlüsse auf künftige Renditen zu, und es handelt sich um „ein persönliches Open-Source-Projekt, kein offizielles Produkt von TickFlow“. Das ist die dauerhafte Lehre aus dieser gesamten Kategorie. Zero-Ops nimmt Ihnen den operativen Aufwand ab. Die Abhängigkeit bleibt jedoch unverändert bestehen: Sie mieten Daten von einem Unternehmen, das nie zugesagt hat, dieses Panel zu unterstützen. Das README beschränkt die Nutzung außerdem auf Lernen und Forschung, während die Lizenzdatei MIT verwendet.

Warum Sie eine Commit-SHA statt einer Versionsnummer angeben sollten

Eine Commit-SHA ist der 40-stellige Fingerabdruck, den git jeder gespeicherten Änderung zuweist. Sie bezeichnet dauerhaft genau einen Zustand des Codes.

Bei der Prüfung am 13. August 2026 enthielt die GitHub-Releases-Seite des Repositorys keine Einträge. Es gibt zwar 31 Versions-Tags von v0.1.31 bis v0.1.88, allerdings mit Lücken in der Nummerierung und ohne hinterlegte Hinweise. Das neueste Tag verwies auf einen Commit vom 31. Juli 2026. Der Default-Branch war dagegen bereits auf einen Stand vom 6. August 2026 weiterentwickelt worden. Ein Tag, das hinter dem Branch zurückliegt und keine Hinweise enthält, sagt Ihnen nicht, was Sie tatsächlich erhalten.

Notieren Sie daher die SHA. Der Kopf des Default-Branch am 6. August 2026 war ecfddb451e97f6fc9a7e43ac33e4ef0e69933b33. Checken Sie diesen Commit aus und vermerken Sie ihn neben jedem Ergebnis, das Sie aus den Backtests ableiten. Sechs Wochen später sagt die Formulierung „Ich habe die aktuelle Version ausgeführt“ nichts mehr aus.

Der dokumentierte Start besteht aus zwei Zeilen: Kopieren Sie die Beispiel-Umgebungsdatei nach .env. Führen Sie anschließend docker compose up --build aus. Dieser Befehl stellt das Panel auf Port 3018 bereit. Das sind die Anweisungen des Maintainers für diesen Commit und kein getesteter Ausführungspfad. Beim Build werden Images heruntergeladen, und dafür ist Netzwerkzugriff erforderlich. Dieser Zugriff wurde auf dieser Seite nicht getestet. Für den Entwicklungsweg (./dev.sh beziehungsweise unter Windows .\dev.ps1) benötigen Sie Python 3.11 oder neuer, Node 20 oder neuer sowie die Paketmanager uv und pnpm.

Was die LLM-Strategiefunktion übermittelt und wohin

Die Generierung von Strategien, Kommentare zu Einzelaktien und die Ausarbeitung der Analyse sind optional. Lassen Sie AI_API_KEY leer, bleibt die gesamte Oberfläche deaktiviert. Wenn Sie den Wert eintragen, legen Sie zugleich AI_PROVIDER (einen OpenAI-kompatiblen Endpoint oder Ollama), AI_BASE_URL, AI_MODEL und AI_DAILY_TOKEN_BUDGET fest. Damit werden weitere Aufrufe beendet, sobald das tägliche Token-Limit aufgebraucht ist.

Die Richtung der Datenübermittlung ist entscheidend. Ihr Prompt und alle Kontextinformationen, die das Panel daran anhängt, verlassen Ihr Gerät in Richtung des konfigurierten Endpoints. Verweisen Sie mit der Base-URL auf eine gehostete API, geht die Anfrage an das betreffende Unternehmen. Verweisen Sie auf eine Laufzeitumgebung in Ihrem eigenen Netzwerk, bleibt sie dort. Das Self-Hosting des Panels bedeutet nicht, dass auch das Modell lokal betrieben wird. Die Schlüssel liegen im Klartext in einer .env im Projektstammverzeichnis. Sie können auch über die Einstellungsseite bearbeitet werden. Diese ist durch ein Dashboard-Passwort mit mindestens sechs Zeichen geschützt. Unsere Anmerkung zu LLM-generierten Alpha-Faktoren erläutert, an welchen Punkten maschinell erstellte Strategien typischerweise scheitern.

Berücksichtigt der Backtester Handelskosten?

Der Backtester wirbt mit T+1-Abwicklung, Provisionen, Slippage und Stop-Loss-Orders. Dass diese Schalter vorhanden sind, bedeutet nicht, dass sie aktiviert sind. Ein Backtest, der zum ausgewiesenen Schlusskurs ausführt und die Kosten auf null setzt, unterstellt kostenlosen Handel. Das ist nicht realistisch. Ein Basispunkt entspricht einem Hundertstelprozent. Das folgende Panel misst den durchschnittlichen Abstand zwischen dem besten Geld- und Briefkurs in Basispunkten. Die Messung umfasst sechs US-Listings während einer Stunde zur Mittagszeit am 17. Juni 2026.

AbfrageKosten beim Überqueren des spread: durchschnittlicher quotierter spread, sechs US-Listings, mittags am 17. Juni 2026
Das exakte SQL hinter jeder Zahl
SELECT
    ticker                                                                       AS symbol,
    round(avg(toFloat64(ask_price) - toFloat64(bid_price))
          / avg((toFloat64(ask_price) + toFloat64(bid_price)) / 2) * 10000, 2)   AS spread_bps
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('SPY', 'AAPL', 'MSFT', 'NVDA', 'KO', 'F')
  AND sip_timestamp >= toDateTime('2026-06-17 15:00:00', 'UTC')
  AND sip_timestamp <  toDateTime('2026-06-17 16:00:00', 'UTC')
  AND bid_price > 0
  AND ask_price > bid_price
GROUP BY ticker
ORDER BY spread_bps
Run this yourself

Der engste Wert im Panel, SPY, wies in dieser Stunde einen durchschnittlichen Spread von 0.29 Basispunkten auf. Der breiteste Wert, F, kam auf 6.98 Basispunkte. Wer diesen Spread zweimal überquert, einmal beim Einstieg und einmal beim Ausstieg, zahlt für den Round Trip vor Provisionen ungefähr das Doppelte des angezeigten Werts.

Der Ausführungszeitpunkt ist ebenso wichtig wie das ausgewählte Wertpapier. Das nächste Panel nimmt eines dieser Listings und misst, wie weit sich sein Kurs innerhalb einer einzelnen Minute bewegte. Die Werte sind für denselben Tag in halbstündlichen Intervallen zusammengefasst.

AbfrageWie weit sich der Kurs innerhalb einer Minute bewegt: KO, nach New Yorker Uhrzeit, 17. Juni 2026
Das exakte SQL hinter jeder Zahl
SELECT
    formatDateTime(
        toStartOfInterval(toTimeZone(window_start, 'America/New_York'), INTERVAL 30 MINUTE),
        '%H:%i')                                                                 AS et_time,
    round(avg((toFloat64(high) - toFloat64(low)) / toFloat64(close)) * 10000, 1)  AS range_bps
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'KO'
  AND window_start >= toDateTime('2026-06-17 12:00:00', 'UTC')
  AND window_start <  toDateTime('2026-06-17 21:00:00', 'UTC')
  AND volume > 0
  AND close > 0
GROUP BY et_time
ORDER BY et_time
Run this yourself

Das Panel beginnt um 08:00, also vor der regulären Sitzung. Dort legte die durchschnittliche Minutenkerze eine Kursstrecke von 0 Basispunkten zurück. Die Minuten mit tatsächlich ausgeführten Trades lagen jeweils bei einem einzigen Kurs. Das letzte Intervall, 16:30, liegt nach dem Börsenschluss und kam auf durchschnittlich 4.2 Basispunkte. Ein Backtest wählt aus jeder dieser Spannen einen Punkt aus und behandelt ihn als Ausführungskurs. Entscheidend ist der Verlauf, nicht die Endpunkte: Dieselbe Annahme ist in manchen Stunden günstig und in anderen nachteilig. Für A-Aktien gelten zusätzliche Einschränkungen. T+1 verhindert, dass heute gekaufte Aktien vor der nächsten Sitzung verkauft werden. Tägliche Kurslimits können einen modellierten Ausstieg vollständig verhindern. Unser Leitfaden zu einem reproduzierbaren Backtest zeigt, welche Angaben ein belastbares Setup festhält. Look-ahead-Bias behandelt die andere Ursache, aus der eine sauber aussehende Kurve fehlerhaft wird.

Bereinigt oder unbereinigt: die Frage nach der Datenherkunft

Unternehmensmaßnahmen sind ein Bereich, in dem ein Screener unbemerkt irreführen kann. Eine Aktie, die im Verhältnis ten-for-one gesplittet wird, weist an diesem Tag einen Kursrückgang von 90 % aus, obwohl niemand auch nur einen Cent verliert. Die folgende Übersicht zeigt die zwölf größten Forward-Splits bei US-notierten Aktien zwischen dem 1. Januar und dem 13. August 2026.

AbfrageDie zwölf größten Forward-Aktiensplits an US-Listings, 1. Januar bis 13. August 2026
Das exakte SQL hinter jeder Zahl
SELECT
    ticker                                                            AS symbol,
    formatDateTime(execution_date, '%b %e, %Y')                       AS effective_on,
    round(any(toFloat64(split_to)) / any(toFloat64(split_from)), 2)   AS shares_after_per_share
FROM global_markets.stocks_splits
WHERE execution_date >= toDate('2026-01-01')
  AND execution_date <= toDate('2026-08-13')
  AND split_from > 0
  AND split_to > split_from
  AND ticker NOT IN ('SPCX')
GROUP BY ticker, execution_date
ORDER BY shares_after_per_share DESC, execution_date DESC
LIMIT 12
Run this yourself

Beim größten Split wird aus einer Aktie 10000, wirksam ab Feb 10, 2026. Verhältnisse dieser Größenordnung sind nicht der übliche four-for-one-Split; ein Feed für Unternehmensmaßnahmen führt die gesamte Bandbreite in einer einzigen Spalte. Beim kleinsten der zwölf wird aus einer Aktie dennoch 20. Das reicht aus, damit ein unbereinigter Chart wie ein Kurseinbruch aussieht. Ein Momentum-Screen, der die Rohkurse auswertet, stuft jeden dieser Fälle als Crash ein. Chinesische Feeds haben dasselbe Problem in ihrer eigenen Terminologie und liefern für jede Zeitreihe drei Varianten: unbereinigt, vorwärtsbereinigt und rückwärtsbereinigt. Sie müssen wissen, welche Variante Ihre Übersicht geladen hat. Kursverlauf nach Aktiensplits erläutert die Berechnung.

Was Sie prüfen sollten, bevor Sie etwas Ähnliches selbst hosten

  • Datenherkunft. Welcher Anbieter liefert die Daten? Unter welcher Lizenz stehen sie? Deckt der kostenlose Tarif Ihre geplante Nutzung ab?
  • Umgang mit API-Schlüsseln. Wo werden die API-Schlüssel auf der Festplatte gespeichert? Wer kann die Einstellungsseite erreichen? Ist der Rechner außerhalb Ihres eigenen Netzwerks zugänglich?
  • Kostenmodellierung. Berücksichtigt der Backtester Provisionen, Slippage und die eigenen Handelsregeln des Marktes? Welche Werte werden für diese Felder verwendet, wenn Sie sie unverändert lassen?
  • Aktualisierungspfad. Halten Sie den exakt bereitgestellten Commit neben Ihren Ergebnissen fest. So bleibt die Auswertung auch Monate später reproduzierbar.

FAQ

Ist eine selbst gehostete Quant-Workbench für A-Aktien kostenlos?

Der Code steht unter der MIT-Lizenz und ist kostenlos. Die Daten sind eine separate Frage: Bleibt der Anbieterschlüssel leer, greift dieses Projekt auf kostenlose historische Tageskurse zurück. Die Daten der laufenden Sitzung treffen ein bis zwei Stunden nach Handelsschluss ein. Alles, was schneller oder umfangreicher ist, läuft über die kostenpflichtigen Tarife des Anbieters.

Was bedeutet „selbst gehostet“ hier genau?

Die Webseite, der Scheduler, die gespeicherten Dateien und der Backtester laufen auf Ihrem eigenen Rechner oder Server. Sie benötigen kein Konto bei einer fremden Plattform. Das bedeutet nicht, dass Ihnen die Daten gehören. Die optionalen KI-Funktionen bleiben extern, sofern Sie sie nicht auf ein Modell in Ihrem eigenen Netzwerk ausrichten.

Sendet die LLM-Funktion meine Daten an einen Dritten?

Wenn sie aktiviert ist, ja. Die Daten werden an den von Ihnen konfigurierten OpenAI-kompatiblen Endpunkt gesendet. Die Funktion ist standardmäßig deaktiviert. Solange der KI-Schlüssel leer bleibt, verlässt nichts den Rechner.

Warum sollte man einen Commit-SHA statt eines Versions-Tags festlegen?

Am 13. August 2026 hatte dieses Repository keine veröffentlichten Releases und keine Release Notes. Außerdem verwies sein neuestes Tag auf älteren Code als der Standard-Branch. „Latest“ bezeichnet dann den Stand des Branches an dem Tag, an dem Sie ihn klonen. Ein Commit-SHA ist dagegen eindeutig. Dieselbe Disziplin gilt allgemein für Open-Source-Quant-Trading-Material: Legen Sie genau den Stand fest, den Sie ausgeführt haben.

Hinweise zur Überprüfung

Jedes oben genannte Architektur- und Konfigurationsdetail wurde am 13. August 2026 aus dem öffentlichen Repository ausgelesen, bei Commit ecfddb451e97f6fc9a7e43ac33e4ef0e69933b33, dem Kopf des Standard-Branches vom 6. August 2026. Die Releases-Seite enthielt keine Einträge. Die Tag-Liste umfasste 31 Versions-Tags von v0.1.31 bis v0.1.88. Das neueste Tag verwies auf einen Commit vom 31. Juli 2026. Die zitierten Zeilen stammen vom Maintainer selbst. Sie wurden aus der README übernommen und nicht paraphrasiert. Der Befehl zum Starten des Containers wurde aus dieser README zitiert und hier nicht ausgeführt.

Die Marktpanels zeigen US-notierte Wertpapiere. Ihre Daten sind auf feste vergangene Zeitpunkte festgelegt, damit die Zahlen unverändert bleiben. Sie veranschaulichen zwei Prüfungen, die auf jeden Markt übertragbar sind: Ausführungskosten und die Anpassung an Kapitalmaßnahmen. Sie sollen nicht den chinesischen Markt beschreiben.


Jedes Panel enthält die zugrunde liefernde SQL-Abfrage. Sie lässt sich darunter aufklappen. Wenn Sie denselben spread-Check vor der Aufnahme eines Titels in einen Screener auf Ihre eigene Auswahlliste anwenden möchten, fordern Sie ihn auf dem Strasmore-Terminal in einfachem Englisch an.

#open-source#backtesting#screening#a-shares#self-hosted