On the wire · 14:56:55 UTC Live 119 · Prematch 8,510 · Markets 34,179 Vol. I · No. 1 · Monday 9 November 2026 wss://pinnfeed.io/v1/stream
PinnFeed
Anleitung · Steam · Dropping Odds

Dropping Odds und Steam Moves bei Pinnacle in Echtzeit erkennen

Aktualisiert am · PinnFeed · 3 Min. Lesezeit

Ein Steam Move ist ein schneller, deutlicher Quotensturz bei einem marktführenden Buchmacher wie Pinnacle, meist weil Sharp-Geld auf eine Seite geflossen ist. Soft-Buchmacher hinken oft Sekunden oder Minuten hinterher, deshalb gehören Steam-Alerts zu den nützlichsten Signalen aus einem Live-Feed. In dieser Anleitung baust du einen Detektor auf dem PinnFeed-WebSocket. Er ist ein statistisches Werkzeug, kein Tippsystem.

Schritt 1 — Festlegen, was Steam ist#

Eine praxistaugliche Definition, die du anpassen kannst:

  • die Dezimalquote eines Ausgangs fällt um mindestens 5 % gegenüber ihrem Höchstwert der letzten 2 Minuten;
  • der Maximaleinsatz des Markts liegt bei mindestens 500, denn Pinnacle erhöht die Limits, je sicherer es sich bei einem Preis ist; Bewegungen in dünnen Märkten sind verrauschter;
  • du alarmierst einmal pro Ausgang und Fenster, nicht bei jedem Tick.

Schritt 2 — Das Quotenbuch streamen#

Nutze den Python-Client aus der Python- und Node-Anleitung. Speichere ihn als pinnfeed_stream.py neben dem Skript unten; er ruft on_market(old, new, event) auf, sobald sich ein Markt ändert.

Schritt 3 — Das gleitende Maximum jedes Ausgangs verfolgen#

Halte pro Markt und Ausgang eine kurze Deque mit (timestamp, price), wirf alles weg, was älter als das Fenster ist, und vergleiche den aktuellen Preis mit dem Maximum im Fenster:

# steam.py: meldet Steam Moves bei Pinnacle (schnelle, starke Quotenstürze) aus dem Live-WebSocket.
# Nutzt pinnfeed_stream.py aus der Python/Node-Anleitung. pip install websockets
import asyncio, collections, os, time
from pinnfeed_stream import stream, SIDES

WINDOW_S = int(os.environ.get("WINDOW_S", 120))        # Rückblickfenster
MIN_DROP = float(os.environ.get("MIN_DROP", 0.05))  # Alarm, wenn die Quote im Fenster um 5 % oder mehr fällt
MIN_STAKE = float(os.environ.get("MIN_STAKE", 500))  # dünne Märkte ignorieren: Pinnacles Maximaleinsatz ist ein Vertrauenssignal

history = collections.defaultdict(collections.deque)  # (Markt-id, Ausgang) -> deque[(ts, decimal)]
alerted = {}


def on_market(old, new, event):
    if not event or (new.get("maxStake") or 0) < MIN_STAKE:
        return
    now = time.time()
    for o in new["outcomes"]:
        if o["name"] not in SIDES:
            continue
        h = history[(new["id"], o["name"])]
        h.append((now, o["decimal"]))
        while h and now - h[0][0] > WINDOW_S:
            h.popleft()
        high = max(p for _, p in h)
        drop = 1 - o["decimal"] / high
        key = (new["id"], o["name"])
        if drop >= MIN_DROP and now - alerted.get(key, 0) > WINDOW_S:
            alerted[key] = now
            pts = o.get("points")
            line = "" if pts is None else f" {pts:g}" if new["type"] == "total" else f" {pts:+g}"
            print(f'STEAM {event["sport"]} | {event["home"]} v {event["away"]} | {new["type"]}{line} {o["name"]}: '
                  f'{high:.3f} -> {o["decimal"]:.3f} (-{drop:.1%} in {WINDOW_S}s) fair {o["fair"]:.3f} max stake {new["maxStake"]}')


asyncio.run(stream({"sports": ["soccer", "tennis", "basketball"], "markets": ["moneyline", "spread", "total"],
                    "main": True, "specials": False}, on_market))

Starte es mit python steam.py. Die Schwellen sind Umgebungsvariablen, zum Beispiel MIN_DROP=0.03 WINDOW_S=300 python steam.py für 3 % in fünf Minuten. Eine typische Zeile:

STEAM tennis | Sebastian Baez v Daniil Glinka | moneyline away: 2.260 -> 2.050 (-9.3% in 120s) fair 2.143 max stake 975

Schritt 4 — Oder den REST-Endpoint fragen#

Wenn dir eine regelmäßige Liste reicht, liefert GET /v1/drops die stärksten Quotenstürze in einem gleitenden Fenster, serverseitig berechnet:

curl -H "x-api-key: $PINNFEED_KEY" "https://pinnfeed.io/v1/drops?sport=soccer&live=true&minutes=10&min_pct=5"

Jede Zeile enthält Event, Markt, Linie, Ausgang, from, to, dropPct und movedAt. Das funktioniert in allen Plänen, auch in Free mit seinen 30 Sekunden Verzögerung.

Schritt 5 — Von Alerts zu Picks#

  • Mit Soft-Buchmachern vergleichen. Ein Steam Move nützt nur dort, wo sich der Soft-Preis noch nicht bewegt hat. Die Value-Betting-Anleitung zeigt, wie du diesen Vorteil mit Pinnacles fairen Quoten beziffern kannst.
  • Für den Rückstand der Soft-Buchmacher Pre-Match bevorzugen; live gehen Bewegungen oft auf den Spielstand zurück und weniger auf Sharp-Geld.
  • Dich messen mit dem Closing Line Value: Schlagen deine Steam-Picks im Schnitt die Schlussquote, ist das Signal echt.
  • Veröffentlichen: Der Telegram-Tipp-Bot schickt diese Alerts in einen Kanal.

Häufige Fragen#

Was ist der Unterschied zwischen Dropping Odds und Steam?#

Dropping Odds sind jede fallende Quote. Steam ist ein schneller, deutlicher Sturz bei einem Sharp-Buchmacher, meist ausgelöst durch informiertes Geld, der sich danach oft auf andere Buchmacher überträgt.

Warum Pinnacle für die Steam-Erkennung?#

Pinnacle akzeptiert hohe Limits und bewegt seine Preise mit der Sharp-Action, seine Bewegungen sind also das beste Marktsignal. Soft-Buchmacher kopieren sie oder ziehen später nach.

Geht das auch ohne WebSocket?#

Ja, per Polling von /v1/drops, das in allen Plänen funktioniert. Der WebSocket sieht jede Bewegung, wenn sie passiert; Polling sieht sie erst bei deiner nächsten Anfrage.

Der WebSocket-Plan: Builder, 99 €/Monat.

Pinnacle-Quoten in Echtzeit über einen einzigen WebSocket: alle 13 Sportarten, alle Märkte, faire Quoten ohne Marge und Schlussquoten. 3 Tage kostenlos, mit einem Klick kündbar.

Form K-1 · Free API key

Get your free API key.

No password. We email you a link; click it and your key is on screen.

One free key per email. Link valid for 20 minutes.