Strasmore Research
Deep Dives · Matt ConnorBy Matt Connor ·

Grid Trading Bot Mechanik Analyse

Ein Grid-Trading-Bot kauft auf jeder Stufe unter dem Kurs und verkauft darüber. Die Seite zerlegt die Mechanik und misst die Marktformen, die über Gewinn oder Verlust entscheiden.

Ein Grid-Trading-Bot platziert eine Leiter von Orders in festen Preisabständen: einen Kauf auf jeder Stufe unter dem aktuellen Kurs, einen Verkauf auf jeder Stufe darüber. Jedes Mal, wenn der Markt nach unten tritt, kauft der Bot. Jedes Mal, wenn er wieder nach oben steigt, verkauft der Bot das, was er tiefer gekauft hat. Der Mechanismus erntet Oszillationen und baut eine offene Position auf, sobald der Markt die Leiter in eine Richtung verlässt und weiterläuft.

Diese Seite zerlegt die Mechanik und misst dann die beiden Marktformen, die über das Ergebnis entscheiden. Jedes Panel unten ist eine gespeicherte Abfrage über reale US-Aktienkurse, festgelegt auf fixe Daten, damit die Zahlen reproduzierbar bleiben.

Wie ein Grid-Trading-Bot funktioniert

Drei Einstellungen definieren ein Grid: die obere und untere Grenze des Bereichs, die Anzahl der Linien darin und die Ordermenge an jeder Linie. Der Abstand zwischen den Linien ergibt sich aus den ersten beiden.

Hier ist die Rechnung mit runden Zahlen, die zur Verdeutlichung gewählt wurden und nicht von einem echten Kurs stammen. Angenommen, eine Aktie wird nahe 100 $ gehandelt, und ein Betreiber setzt ein Grid von 95 $ bis 105 $ mit elf Linien im Abstand von einem Dollar und 100 Aktien pro Linie. Der Kurs fällt auf 99 $, und die ruhende Kauforder wird ausgeführt. Der Kurs kehrt auf 100 $ zurück, und die passende Verkaufsorder wird ausgeführt, was das Paar für einen Bruttogewinn von 100 $ schließt. Beide Orders werden wieder aktiviert. Nichts am Unternehmen hat sich in dieser Stunde geändert. Die Position hat einfach eine Rundreise zwischen zwei benachbarten Stufen abgeschlossen.

In den öffentlich zugänglichen Open-Source-Projekten tauchen zwei Varianten auf. Ein arithmetisches Grid ordnet die Linien in festen Dollarbeträgen an. Ein geometrisches Grid ordnet sie in festen Prozentsätzen an, was den prozentualen Gewinn pro Rundreise über einen weiten Bereich konstant hält. Die Dokumentation unterscheidet auch zwischen einem neutralen Grid, das flach startet und in beide Richtungen arbeitet, und einem Long-Grid, das mit einem Bestand startet und in die Stärke hinein verkauft.

Die Auszahlungsstruktur verdient einen klaren Satz. Der Gewinn aus einer abgeschlossenen Rundreise ist auf einen Grid-Schritt abzüglich Kosten begrenzt. Die offene Position, die sich aufbaut, wenn der Kurs den Bereich verlässt, trägt keine entsprechende Begrenzung.

Die Marktform, die ein Grid braucht

Ein Grid wird durch Bewegung bezahlt, nicht durch die Richtung. Zwei Aktien können einen Zeitraum zum gleichen Kurs beenden, nachdem sie völlig unterschiedliche Strecken zurückgelegt haben. Die Summe der absoluten Größe jeder täglichen Bewegung ergibt die zurückgelegte Gesamtstrecke. Die Division der Netto-Bewegung durch diese Strecke ergibt eine Effizienzquote, ein Standardmaß dafür, wie gerichtet ein Pfad war. Eine niedrige Quote beschreibt einen Pfad, der umherirrte. Eine hohe Quote beschreibt einen geraden Marsch.

AbfrageZurückgelegte Strecke vs. Netto-Bewegung: zwölf bekannte Aktien, Jan 2024 bis Jun 2026
Das exakte SQL hinter jeder Zahl
WITH daily AS (
    SELECT ticker,
           toDate(toTimeZone(window_start, 'America/New_York')) AS dt,
           argMax(toFloat64(close), toTimeZone(window_start, 'America/New_York')) AS c
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('SPY','KO','PG','JNJ','VZ','MO','XOM','JPM','WMT','NVDA','TSLA','NFLX')
      AND toDate(toTimeZone(window_start, 'America/New_York')) BETWEEN toDate('2024-01-02') AND toDate('2026-06-30')
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
           + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
    GROUP BY ticker, dt
),
steps AS (
    SELECT ticker, dt, c,
           c / lagInFrame(c) OVER (PARTITION BY ticker ORDER BY dt) - 1 AS ret
    FROM daily
)
SELECT ticker,
       round(sum(abs(ret)) * 100, 0) AS travel_pct,
       round(abs(argMax(c, dt) / argMin(c, dt) - 1) * 100, 1) AS net_move_pct,
       round(100 * abs(argMax(c, dt) / argMin(c, dt) - 1) / sum(abs(ret)), 1) AS efficiency_pct
FROM steps
WHERE ret > -0.5 AND ret < 0.5
GROUP BY ticker
ORDER BY efficiency_pct
Run this yourself

Lesen Sie die erste und letzte Zeile zusammen. PG deckte 527% der kumulierten täglichen Bewegung ab und endete 0.9% von seinem Startpunkt entfernt, eine Effizienz von 0.2%. SPY liegt am entgegengesetzten Ende bei 14.3% und verwandelt 415% der Bewegung in eine Netto-Bewegung von 59.2%. Eine Grid-Leiter, die auf dem ersten Pfad platziert wird, trifft immer wieder auf ihre eigenen Stufen. Dieselbe Leiter, die auf dem zweiten Pfad platziert wird, wird zurückgelassen.

Ruhe und Range-Bound sind verwandte, aber unterschiedliche Eigenschaften. Eine Aktie kann in sehr kleinen täglichen Schritten nach oben driften und trotzdem ein Grid stranden lassen, was einer der Gründe ist, warum die in der Literatur zur Low-Volatility-Anomalie untersuchten Namen nicht automatisch Grid-Material sind.

Zählen der Rundreisen

Die Effizienz ist eine Linse. Das Grid-Einkommen hängt von etwas Konkreterem ab: wie oft der Kurs tatsächlich ein Niveau wieder aufsucht. Die Verankerung am ersten Schlusskurs jedes Kalenderjahres und das Zählen der Sitzungen, deren Schlusskurs auf der gegenüberliegenden Seite dieses Ankers landet, ergibt die Anzahl der Kreuzungen, die eine einzelne Grid-Linie erfasst hätte. Coca-Cola (KO) ist hier das Subjekt, ein großer, liquider Konsumwert, wie ihn die Grid-Dokumentation gerne zeigt.

AbfrageKO: Kreuzungen des Jahreseröffnungsniveaus, nach Kalenderjahr, 2019 bis 2025
Das exakte SQL hinter jeder Zahl
WITH daily AS (
    SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS dt,
           argMax(toFloat64(close), toTimeZone(window_start, 'America/New_York')) AS c
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'KO'
      AND toDate(toTimeZone(window_start, 'America/New_York')) BETWEEN toDate('2019-01-01') AND toDate('2025-12-31')
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
           + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
    GROUP BY dt
),
anchored AS (
    SELECT toYear(dt) AS year, dt, c,
           first_value(c) OVER (PARTITION BY toYear(dt) ORDER BY dt) AS anchor
    FROM daily
),
sided AS (
    SELECT year, dt, c, anchor,
           if(c >= anchor, 1, 0) AS side,
           row_number() OVER (PARTITION BY year ORDER BY dt) AS rn,
           lagInFrame(if(c >= anchor, 1, 0)) OVER (PARTITION BY year ORDER BY dt) AS prev_side
    FROM anchored
)
SELECT year,
       countIf(rn > 1 AND side != prev_side) AS crossing_count,
       count() AS sessions,
       round((argMax(c, dt) / any(anchor) - 1) * 100, 1) AS net_change_pct
FROM sided
GROUP BY year
ORDER BY year
Run this yourself

Im Jahr 2019 kreuzte der Schlusskurs sein eigenes Eröffnungsniveau 8 Mal über 252 Sitzungen und beendete das Jahr 17.9% von diesem Niveau entfernt. Im Jahr 2025 betrug die Anzahl 6 über 250 Sitzungen, mit einer Nettoveränderung von 13%. Eine Linie, eine Aktie, und das Rohmaterial für ein Grid variiert um ein Mehrfaches von Jahr zu Jahr, ohne dass die Anzahl des kommenden Jahres im Voraus bekannt ist.

Diese Variabilität ist das stille Problem. Die beworbene Rendite eines Grids wird normalerweise pro abgeschlossener Rundreise angegeben, und die Anzahl der Rundreisen wird vom Markt bestimmt, nicht von den Einstellungen.

Wo ein Grid bricht

Die Fehlerform hat eine bestimmte Gestalt. Fixieren Sie ein Grid auf einen Bereich, und lassen Sie dann den Markt ihn verlassen. Unten sind die Ober- und Untergrenze die höchsten und niedrigsten Schlusskurse der ersten zwanzig Sitzungen des Jahres 2024, die über die folgenden dreißig Monate konstant gehalten werden, wobei der monatliche Schlusskurs des S&P 500-Trackers dagegen gezeichnet wird.

AbfrageEin auf Anfang 2024 fixiertes Raster und wohin der S&P 500-Tracker danach ging
Das exakte SQL hinter jeder Zahl
WITH daily AS (
    SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS dt,
           argMax(toFloat64(close), toTimeZone(window_start, 'America/New_York')) AS c
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'SPY'
      AND toDate(toTimeZone(window_start, 'America/New_York')) BETWEEN toDate('2024-01-02') AND toDate('2026-06-30')
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
           + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
    GROUP BY dt
),
opening_20 AS (
    SELECT c FROM daily ORDER BY dt LIMIT 20
),
band AS (
    SELECT min(c) AS grid_low, max(c) AS grid_high FROM opening_20
),
monthly AS (
    SELECT toStartOfMonth(dt) AS month_start, argMax(c, dt) AS close_px
    FROM daily
    GROUP BY month_start
)
SELECT formatDateTime(monthly.month_start, '%Y-%m') AS month,
       round(monthly.close_px, 2) AS spy_close,
       round(band.grid_high, 2) AS grid_top,
       round(band.grid_low, 2) AS grid_bottom
FROM monthly, band
ORDER BY monthly.month_start
Run this yourself

Die Spanne reicht von $467.27 bis $491.26. Der erste Monat der Serie schloss bei $482.92, innerhalb der Spanne. Der letzte der 30 Monate schloss bei $746.32, weit über der Obergrenze, und das Diagramm zeigt die Linie, die die Spanne verlässt und nie zurückkehrt.

Gehen Sie durch, was die Leiter auf diesem Pfad tut. Beim Aufstieg durch die Spanne verkauft der Bot Stufe für Stufe Bestand und verbucht dabei jeweils einen Schritt Gewinn. Oberhalb der Obergrenze hält er Bargeld und schaut zu. Jeder weitere Punkt des Anstiegs ist ein Gewinn, an dem der Betreiber nicht mehr teilnimmt – das ist die milde Version des Fehlers.

Die schwere Version ist das Spiegelbild. Der Kurs fällt durch die Untergrenze, und der Bot hat auf dem Weg nach unten auf jeder Stufe gekauft, sodass er jetzt die gesamte Leiter des Bestands zu einem Durchschnittskurs über dem Markt hält, wobei jeder weitere Schritt den unrealisierten Verlust vergrößert. Eine Spanne, die einst stetige, kleine, sichtbar erfolgreiche Trades hervorbrachte, verwandelt sich in eine einzige konzentrierte Position. Grid-Marketing beschreibt dies als den Bot, der "feststeckt"; auf einem Brokerauszug ist es ein offener Drawdown ohne eingebauten Ausstieg.

Kosten skalieren mit der Anzahl der Trades

Ein Grid führt viele kleine Trades aus, und jeder zahlt die vollen Kosten einer Rundreise: den Spread, plus Provisionen oder Börsengebühren, wo sie anfallen. Der Geld-Brief-Spread ist das Stück, das in der Grid-Mathematik am häufigsten weggelassen wird, da es in einer Abrechnung nie als Einzelposten erscheint.

Die veranschaulichende Rechnung ist schnell. Bei einer 100 $-Aktie mit einem Spread von einem Cent gibt eine Rundreise, die den Spread auf beiden Seiten überquert, grob zwei Cent oder 0,02 % des Nominalwerts auf. Bei einem Grid-Schritt von einem Dollar sind das etwa 2 % des Bruttogewinns pro Fahrt. Erweitern Sie den Spread auf fünf Cent, eine übliche Zahl bei einem dünner gehandelten Wert, und dieselbe Fahrt gibt zehn Cent gegen einen Dollar Brutto auf, oder 10 %. Wenn Sie das Grid auf Zehn-Cent-Schritte verengen, um mehr Oszillationen zu erfassen, sinkt der Bruttogewinn pro Fahrt auf zehn Cent, während die Kosten unverändert bleiben, und der Fünf-Cent-Spread verschlingt nun den gesamten Trade.

Diese Beziehung setzt eine Untergrenze für den nutzbaren Grid-Abstand: Die Schritte müssen im Verhältnis zu den Rundreisekosten groß bleiben, und je enger das Grid, desto mehr von seinem Einkommen gehört dem Handelsplatz und nicht dem Betreiber.

Warum Backtests Grid-Bots schöner darstellen

Grid-Strategien erzeugen ungewöhnlich attraktive Backtests, und vier strukturelle Gründe erklären den Großteil davon.

  1. Bereichsauswahl mit Rückschau. Grenzen, die nach dem Betrachten der Daten gewählt wurden, werden die Daten enthalten. Ein Grid, das an einen Zeitraum angepasst wurde, der in einer Spanne lag, wird für diesen Zeitraum eine hohe Trefferquote zeigen.
  2. Die ungeschlossene Leiter. Ein Test, der an einem gewählten Enddatum stoppt, zählt oft realisierte Rundreisen, während der verbleibende Bestand großzügig behandelt wird. Die ehrliche Buchhaltung bewertet die offene Position am letzten Tag zum Marktpreis und bezieht diesen Verlust in das Ergebnis ein.
  3. Ausführungsannahmen. Simulierte ruhende Orders werden ausgeführt, sobald der Kurs sie berührt. Echte Warteschlangen werden nicht immer bei Berührung ausgeführt, und die Fahrten, die nicht ausgeführt werden, sind in schnellen Märkten überproportional die profitablen.
  4. Parameterdichte. Grenzen, Linienanzahl, Abstand und Ordermenge ergeben vier Stellschrauben für eine einzige Kursreihe, was ausreicht, um fast jedes historische Fenster anzupassen.

Die obigen Kreuzungszahlen sind das Gegengewicht zu allen vieren. Sie stammen allein aus der Kurshistorie, ohne Einstellungen, und sie variieren von Jahr zu Jahr auf eine Weise, die keine Parameterwahl kontrolliert. Jeder, der eine Grid-Behauptung bewertet, kann eine einzige Frage dazu stellen: Wie viele abgeschlossene Rundreisen setzt dies voraus, und woher stammt diese Anzahl? Eine Übungsphase auf einem Simulator, bei der die offene Leiter am Ende zum Marktpreis bewertet wird, beantwortet sie ehrlicher als ein Diagramm realisierter Fahrten.

FAQ

Verdienen Grid-Trading-Bots tatsächlich Geld?

Ein Grid verdient einen begrenzten Gewinn auf jede abgeschlossene Rundreise und trägt eine unbegrenzte offene Position, wenn der Kurs seinen Bereich verlässt. Ob die realisierten Fahrten die offene Position in einem bestimmten Zeitraum überwiegen, hängt davon ab, wie stark der Markt innerhalb dieses Bereichs oszilliert hat, was eine Eigenschaft des Marktes und nicht der Software ist.

Welche Marktbedingungen eignen sich für einen Grid-Bot?

Der Mechanismus ist für einen Kurs gebaut, der wiederholt dieselben Niveaus aufsucht: hohe zurückgelegte Gesamtstrecke im Verhältnis zur Netto-Bewegung. Im obigen Panel mit zwölf Namen lagen die Effizienzquoten zwischen 0.2% am wandernden Ende und 14.3% am gerichteten Ende, und der Leitermechanismus trifft seine eigenen Stufen nur am ersten Ende.

Was passiert, wenn der Kurs aus dem Grid-Bereich ausbricht?

Oberhalb des Bereichs hat der Bot seinen Bestand verkauft und sitzt auf Bargeld, während der Markt ohne ihn weiterläuft. Unterhalb des Bereichs hält er jede Stufe, die er auf dem Weg nach unten gekauft hat, zu einem Durchschnittskurs über dem aktuellen Kurs, und jeder weitere Rückgang vergrößert diesen unrealisierten Verlust.

Wie unterscheidet sich Grid-Trading vom Cost-Average-Effekt?

Beide kaufen mehr, wenn der Kurs fällt, und dort endet die Ähnlichkeit. Der Cost-Average-Effekt fügt einen festen Betrag nach einem festen Zeitplan hinzu, ohne Ausstiegsregel und ohne Obergrenze. Ein Grid kauft und verkauft aufgrund von Kursauslösern innerhalb eines im Voraus gewählten Bereichs, und sein Verhalten ändert sich vollständig, sobald der Kurs diesen Bereich verlässt.

Erzeugt ein engerer Grid-Abstand mehr Einkommen?

Ein engerer Abstand erhöht die Anzahl der Rundreisen und senkt den Bruttogewinn pro Fahrt, während die Kosten pro Rundreise gleich bleiben. Ab einem durch den Spread bestimmten Punkt schmälern zusätzliche Fahrten die Summe, anstatt sie zu erhöhen.


Jede Zahl oben stammt aus einer gespeicherten, versionierten Abfrage über reale Aktienkurse; öffnen Sie das SQL unter jedem Panel, um es zu überprüfen, oder messen Sie die Bewegung gegen die Netto-Bewegung für Ihre eigene Liste von Namen auf dem Strasmore-Terminal.

#grid trading#trading bots#automation#mean reversion#market data