Piyasa Yapıcı Koruması (MMP)
Piyasa yapıcılar için gerçekleşme (fill) penceresi limitleri ve otomatik iptal davranışı.
Genel Bakış
MMP, piyasa yapıcıları hızlı ve olumsuz gerçekleşmelerden şu şekilde korur:
- Kayan bir zaman penceresi içinde kümülatif gerçekleşme metriklerini takip eder
- Limitler aşıldığında emirleri iptal eder
- Aynı cüzdan+dayanak varlık için MMP etkin diğer tüm emirleri otomatik olarak iptal eder
Yapılandırma
MMP Yapılandırmasını Ayarlama
Endpoint: POST /mmp-config
İstek: 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..."
}
Alanlar:
wallet: Cüzdan adresicurrency: Dayanak varlık para birimi (örn."BTC","ETH")interval_ms: Kayan pencere uzunluğu (milisaniye)frozen_time_ms: Tetiklenme sonrası dondurma süresi (milisaniye)qty_limit: İsteğe bağlı miktar limiti (kontrat birimi)delta_limit: İsteğe bağlı delta limitivega_limit: İsteğe bağlı vega limitienabled: Bu cüzdan+para birimi için MMP'nin etkin olup olmadığı
Yanıt: ApiResponse<MmpConfigData>
MMP Yapılandırmasını Görüntüleme
Endpoint: GET /mmp-config?wallet=...¤cy=...
Sorgu parametreleri:
wallet(zorunlu)currency(isteğe bağlı filtre)
Yanıt: 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 Yapılandırmasını Silme
Endpoint: DELETE /mmp-config
İstek: DeleteMmpConfigRequest
{
"wallet": "0x...",
"currency": "BTC",
"nonce": 1,
"signature": "0x..."
}
Yanıt: ApiResponse<String>
MMP Durumunu Sıfırlama
Endpoint: POST /mmp-config/reset
İstek: ResetMmpRequest
{
"wallet": "0x...",
"currency": "BTC",
"nonce": 1,
"signature": "0x..."
}
Yanıt: ApiResponse<String>
Notlar: MMP gerçekleşme penceresi durumunu sıfırlar (kümülatif metrikleri temizler, para biriminin dondurulmasını kaldırır).
MMP Davranışı (Anlaşılması Kritik)
Gerçekleşme İşleme Sırası
MMP değerlendirmesi GERÇEKLEŞME SONRASI yapılır:
- Motor eşleştirmeyi yapar ve önce gerçekleşmeyi kabul eder
- Ardından MMP kümülatif metrikleri kontrol eder
- Limitler aşılmışsa:
- MMP tetiklenir
- Aktif emirdeki kalan miktarın işlenmesi durur
- Emir,
"MMP triggered during fill processing"gerekçesiyleCANCELEDdurumuna geçer - Motor
MmpTriggeredolayı yayınlar - Motor, aynı cüzdan+dayanak varlık için MMP etkin diğer tüm açık emirleri otomatik olarak iptal eder
Sonuç: MMP tetiklenmeden önce, sizi yapılandırdığınız eşiklerin ötesine taşıyan gerçekleşmeler alabilirsiniz.
Tetiklenme Koşulları
Yapılandırılmış limitlerden herhangi biri aşılırsa MMP tetiklenir:
- Miktar limiti:
cumulative_qty > qty_limit - Delta limiti:
|cumulative_delta| > delta_limit - Vega limiti:
|cumulative_vega| > vega_limit
Kümülatif metrikler, kayan pencere (interval_ms) üzerinden hesaplanır.
İptal Davranışı
MMP tetiklendiğinde:
- Aktif emir: Kalan miktar durur, emir
"MMP triggered during fill processing"gerekçesiyleCANCELEDdurumuna geçer - Diğer emirler: Aynı cüzdan+dayanak varlık için MMP etkin diğer tüm açık emirler,
"Order canceled by MMP trigger"gerekçesiyle otomatik olarak iptal edilir
Not: Yalnızca MMP etkin emirler iptal edilir. mmp_enabled=false olan emirler etkilenmez.
Dondurma Davranışı
MMP tetiklendikten sonra:
- Para birimi
frozen_time_msmilisaniye boyunca dondurulur - Dondurma süresince yeni gerçekleşmeler reddedilebilir (uygulamaya bağlıdır)
Gerçekleşme Metriklerinin Hesaplanması
Miktar
- Kaynak: Gerçekleşme
sizedeğeri (kontrat birimi) - Kümülatif: Kayan pencere içindeki tüm gerçekleşmelerin toplamı
Delta
- Kaynak: Gerçekleşme sembolünden ve GreeksCache'ten hesaplanır
- Kümülatif: Kayan pencere içindeki tüm gerçekleşme deltalarının toplamı
Vega
- Kaynak: Gerçekleşme sembolünden ve GreeksCache'ten hesaplanır
- Kümülatif: Kayan pencere içindeki tüm gerçekleşme vegalarının toplamı
Kayan Pencere
Pencereden Çıkarma
interval_ms süresinden eski gerçekleşmeler pencereden otomatik olarak çıkarılır:
- Çıkarma işlemi periyodik olarak çalışır (arka plan görevi)
- Eski gerçekleşmeler çıkarıldıkça kümülatif metrikler azaltılır
Pencere Sıfırlama
MMP durumunu POST /mmp-config/reset ile sıfırlayın:
- Penceredeki tüm gerçekleşmeleri temizler
- Kümülatif metrikleri sıfıra sıfırlar
- Para biriminin dondurulmasını kaldırır
MMP Olayları
MmpTriggered Olayı
Dahili olay (şu anda WS istemcilerine iletilmemektedir):
MmpTriggeredMessage {
wallet: WalletAddress,
currency: String,
reason: String, // "qty_limit" | "delta_limit" | "vega_limit"
}
En İyi Uygulamalar
Yapılandırma
- Uygun limitler belirleyin: Risk toleransınıza ve tipik gerçekleşme büyüklüklerinize göre
- Para birimine özel yapılandırmalar kullanın: Her dayanak varlık (BTC, ETH vb.) için ayrı yapılandırın
- MMP tetiklenmelerini izleyin: Yüksek tetiklenme oranı, yanlış yapılandırılmış limitlere veya olumsuz piyasa koşullarına işaret edebilir
Emir Yönetimi
- MMP'yi seçici olarak etkinleştirin:
mmp_enabled=trueayarını yalnızca korunmasını istediğiniz emirler için kullanın - Tutarlı para birimi kullanın: Aynı dayanak varlık için tüm emirlerin MMP yapılandırmasında aynı para birimini kullandığından emin olun
- MMP iptallerini yönetin: MMP tarafından tetiklenen iptalleri tespit eden ve kotasyonları buna göre ayarlayan bir mantık uygulayın
İzleme
- MMP tetiklenmelerini takip edin:
"MMP triggered during fill processing"ve"Order canceled by MMP trigger"gerekçelerini izleyin - Gerçekleşme pencerelerini gözden geçirin: Kümülatif metrikleri MMP yapılandırması üzerinden kontrol edin (şu anda API üzerinden sunulmamaktadır)
- Limitleri ayarlayın: MMP çok sık tetikleniyorsa limitleri artırın; çok nadir tetikleniyorsa limitleri düşürün
Sık Karşılaşılan Sorunlar
MMP Çok Sık Tetikleniyor
Nedenler:
- Limitlerin tipik gerçekleşme büyüklüklerine göre çok düşük olması
- Olumsuz piyasa koşulları
- Hızlı kotasyonun çok sayıda gerçekleşmeye yol açması
Çözümler:
qty_limit,delta_limitveyavega_limitdeğerlerini artırın- Pencerede daha fazla gerçekleşmeye izin vermek için
interval_msdeğerini artırın - Kotasyon sıklığını azaltın
MMP Tetiklenmiyor
Nedenler:
- Limitlerin çok yüksek olması
- Emirlerde MMP'nin etkin olmaması (
mmp_enabled=false) - Para birimi uyuşmazlığı (MMP yapılandırma para birimi != emrin dayanak varlığı)
Çözümler:
- Limitleri düşürün
- Emirlerde
mmp_enabled=trueolduğunu doğrulayın - MMP yapılandırma para biriminin emrin dayanak varlığıyla eşleştiğini doğrulayın
Beklenmedik İptaller
Belirti: Emirler "Order canceled by MMP trigger" gerekçesiyle iptal ediliyor, ancak siz bunu beklemiyordunuz.
Neden: Aynı cüzdan+dayanak varlık için başka bir emir MMP'yi tetikledi.
Çözüm: Biri tetiklendiğinde, aynı dayanak varlık için MMP etkin tüm emirleri gözden geçirin.