Diese Seite wurde maschinell übersetzt. Das englische Original ist maßgeblich. Auf Englisch lesen
Zum Hauptinhalt springen

Market Maker Protection (MMP)

Fill-Window-Limits und Auto-Cancel-Verhalten für Market Maker.

Überblick

MMP schützt Market Maker vor schnellen nachteiligen Ausführungen durch:

  1. Verfolgung kumulativer Fill-Metriken innerhalb eines rollierenden Zeitfensters
  2. Stornierung von Orders, wenn Limits überschritten werden
  3. Automatische Stornierung aller anderen MMP-aktivierten Orders für dieselbe Kombination aus Wallet und Basiswert

Konfiguration

MMP-Konfiguration setzen

Endpunkt: POST /mmp-config

Anfrage: SetMmpConfigRequest

{
"wallet": "0x...",
"currency": "BTC",
"interval_ms": 60000,
"frozen_time_ms": 300000,
"qty_limit": 1000000,
"delta_limit": 10.0,
"vega_limit": 5.0,
"enabled": true,
"nonce": 1,
"signature": "0x..."
}

Felder:

  • wallet: Wallet-Adresse
  • currency: Währung des Basiswerts (z. B. "BTC", "ETH")
  • interval_ms: Länge des rollierenden Fensters in Millisekunden
  • frozen_time_ms: Einfrierdauer nach Auslösung (Millisekunden)
  • qty_limit: Optionales Mengenlimit (Kontrakteinheiten)
  • delta_limit: Optionales Delta-Limit
  • vega_limit: Optionales Vega-Limit
  • enabled: Ob MMP für diese Kombination aus Wallet und Währung aktiviert ist

Antwort: ApiResponse<MmpConfigData>

MMP-Konfiguration abrufen

Endpunkt: GET /mmp-config?wallet=...&currency=...

Query-Parameter:

  • wallet (erforderlich)
  • currency (optionaler Filter)

Antwort: MmpConfigResponse

{
"success": true,
"data": [
{
"wallet_address": "0x...",
"currency": "BTC",
"interval_ms": 60000,
"frozen_time_ms": 300000,
"qty_limit": 1000000,
"delta_limit": 10.0,
"vega_limit": 5.0,
"enabled": true
}
]
}

MMP-Konfiguration löschen

Endpunkt: DELETE /mmp-config

Anfrage: DeleteMmpConfigRequest

{
"wallet": "0x...",
"currency": "BTC",
"nonce": 1,
"signature": "0x..."
}

Antwort: ApiResponse<String>

MMP-Status zurücksetzen

Endpunkt: POST /mmp-config/reset

Anfrage: ResetMmpRequest

{
"wallet": "0x...",
"currency": "BTC",
"nonce": 1,
"signature": "0x..."
}

Antwort: ApiResponse<String>

Hinweise: Setzt den MMP-Fill-Window-Status zurück (löscht kumulative Metriken, hebt das Einfrieren der Währung auf).

MMP-Verhalten (wichtig zu verstehen)

Reihenfolge der Fill-Verarbeitung

Die MMP-Auswertung erfolgt POST-FILL:

  1. Die Engine matcht und akzeptiert den Fill zuerst
  2. Danach prüft MMP die kumulativen Metriken
  3. Wenn Limits überschritten werden:
    • MMP wird ausgelöst
    • Die verbleibende Menge der aktiven Order wird nicht weiter verarbeitet
    • Die Order erhält den Status CANCELED mit dem Grund: "MMP triggered during fill processing"
    • Die Engine sendet ein MmpTriggered-Ereignis
    • Die Engine storniert automatisch alle anderen offenen MMP-aktivierten Orders für dieselbe Kombination aus Wallet und Basiswert

Konsequenz: Sie können Fills erhalten, die Sie über Ihre konfigurierten Schwellenwerte hinausbringen, bevor MMP ausgelöst wird.

Auslösebedingungen

MMP wird ausgelöst, wenn eines der konfigurierten Limits überschritten wird:

  • Mengenlimit: cumulative_qty > qty_limit
  • Delta-Limit: |cumulative_delta| > delta_limit
  • Vega-Limit: |cumulative_vega| > vega_limit

Kumulative Metriken werden über das rollierende Fenster (interval_ms) berechnet.

Stornierungsverhalten

Wenn MMP ausgelöst wird:

  1. Aktive Order: Die verbleibende Menge wird gestoppt, die Order erhält den Status CANCELED mit dem Grund "MMP triggered during fill processing"
  2. Andere Orders: Alle anderen offenen MMP-aktivierten Orders für dieselbe Kombination aus Wallet und Basiswert werden automatisch storniert mit dem Grund "Order canceled by MMP trigger"

Hinweis: Nur MMP-aktivierte Orders werden storniert. Orders mit mmp_enabled=false sind nicht betroffen.

Einfrierverhalten

Nach der MMP-Auslösung:

  • Die Währung wird für frozen_time_ms Millisekunden eingefroren
  • Während des Einfrierens können neue Fills abgelehnt werden (implementierungsabhängig)

Berechnung der Fill-Metriken

Menge

  • Quelle: Fill-size (Kontrakteinheiten)
  • Kumulativ: Summe aller Fills im rollierenden Fenster

Delta

  • Quelle: Berechnet aus dem Fill-Symbol und dem GreeksCache
  • Kumulativ: Summe aller Fill-Deltas im rollierenden Fenster

Vega

  • Quelle: Berechnet aus dem Fill-Symbol und dem GreeksCache
  • Kumulativ: Summe aller Fill-Vegas im rollierenden Fenster

Rollierendes Fenster

Fenster-Bereinigung

Fills, die älter als interval_ms sind, werden automatisch aus dem Fenster entfernt:

  • Die Bereinigung läuft periodisch (Hintergrundprozess)
  • Kumulative Metriken werden verringert, wenn alte Fills entfernt werden

Fenster-Zurücksetzung

Setzen Sie den MMP-Status über POST /mmp-config/reset zurück:

  • Löscht alle Fills im Fenster
  • Setzt kumulative Metriken auf null zurück
  • Hebt das Einfrieren der Währung auf

MMP-Ereignisse

MmpTriggered-Ereignis

Internes Ereignis (wird derzeit nicht an WS-Clients weitergeleitet):

MmpTriggeredMessage {
wallet: WalletAddress,
currency: String,
reason: String, // "qty_limit" | "delta_limit" | "vega_limit"
}

Bewährte Praktiken

Konfiguration

  1. Setzen Sie angemessene Limits: Basierend auf Ihrer Risikotoleranz und typischen Fill-Größen
  2. Verwenden Sie währungsspezifische Konfigurationen: Konfigurieren Sie pro Basiswert (BTC, ETH usw.)
  3. Überwachen Sie MMP-Auslösungen: Eine hohe Auslöserate kann auf fehlkonfigurierte Limits oder nachteilige Marktbedingungen hinweisen

Order-Management

  1. Aktivieren Sie MMP selektiv: Setzen Sie mmp_enabled=true nur für Orders, die geschützt werden sollen
  2. Verwenden Sie eine konsistente Währung: Stellen Sie sicher, dass alle Orders für denselben Basiswert dieselbe Währung in der MMP-Konfiguration verwenden
  3. Behandeln Sie MMP-Stornierungen: Implementieren Sie Logik, um MMP-ausgelöste Stornierungen zu erkennen und das Quoting anzupassen

Überwachung

  1. Verfolgen Sie MMP-Auslösungen: Achten Sie auf die Gründe "MMP triggered during fill processing" und "Order canceled by MMP trigger"
  2. Überprüfen Sie Fill-Fenster: Prüfen Sie kumulative Metriken über die MMP-Konfiguration (derzeit nicht über die API verfügbar)
  3. Passen Sie Limits an: Wenn MMP zu häufig ausgelöst wird, erhöhen Sie die Limits; wenn zu selten, verringern Sie die Limits

Häufige Probleme

MMP wird zu häufig ausgelöst

Ursachen:

  • Limits zu niedrig für typische Fill-Größen
  • Nachteilige Marktbedingungen
  • Schnelles Quoting verursacht viele Fills

Lösungen:

  • Erhöhen Sie qty_limit, delta_limit oder vega_limit
  • Erhöhen Sie interval_ms, um mehr Fills im Fenster zuzulassen
  • Reduzieren Sie die Quoting-Frequenz

MMP wird nicht ausgelöst

Ursachen:

  • Limits zu hoch
  • MMP für Orders nicht aktiviert (mmp_enabled=false)
  • Währungsdiskrepanz (MMP-Konfigurationswährung != Basiswert der Order)

Lösungen:

  • Verringern Sie die Limits
  • Überprüfen Sie, ob mmp_enabled=true für Orders gesetzt ist
  • Überprüfen Sie, ob die Währung der MMP-Konfiguration mit dem Basiswert der Order übereinstimmt

Unerwartete Stornierungen

Symptom: Orders wurden mit dem Grund "Order canceled by MMP trigger" storniert, obwohl Sie dies nicht erwartet haben.

Ursache: Eine andere Order für dieselbe Kombination aus Wallet und Basiswert hat MMP ausgelöst.

Lösung: Überprüfen Sie alle MMP-aktivierten Orders für denselben Basiswert, wenn eine Order MMP auslöst.