Come abbiamo perso $25k a causa di una stranezza dell'API di un DEX perp Facciamo trading pesante su un DEX perp (top 10 per punti, top 5 per volume). Si scopre che il loro endpoint API cancel_order() è... speciale. Restituisce sempre 200 OK. Puoi chiamare cancel_order() con: • Un ID ordine valido (13295238234991) • Un ID ordine cliente valido • Un ID ordine o ID ordine cliente non valido • Un ID ordine già annullato • Un ID ordine di 6 mesi fa • Un panino al prosciutto • Tua madre → Ancora 200 OK. Questo va bene se sai che sta succedendo e codifichi di conseguenza. Noi non lo sapevamo. Il problema reale: • Occasionalmente, i tempi di risposta di create_order() aumentano a 50ms+ durante i periodi di alta attività. • Inviavamo un ordine, poi lo annullavamo per ID ordine cliente prima che l'ordine fosse effettivamente eseguito. • L'annullamento restituisce 200 OK, quindi assumiamo che l'ordine sia morto e lo rimuoviamo dai nostri registri. • Pochi secondi dopo, si esegue. → Veniamo colpiti per 10-20 bps per incidente. Il colpo di grazia? Questi eseguiti erano mescolati con esecuzioni normali, quindi era difficile individuarli. Avevamo anche cicli di fondo per ordini scaduti in esecuzione, ma sono periodici e non sempre catturavano questi prima dell'esecuzione. Correzione: • Per questo DEX, ora *richiediamo* conferme di annullamento tramite websocket o continuiamo a inviare richieste di annullamento fino a esaurire il nostro limite massimo di ripetizioni. Danno: • Perdita stimata: $20K-$30K. Lezione: • Ogni API ha stranezze. Di solito non sono logiche, a volte nemmeno visibili, e spesso costose. • Verifica sempre che il successo significhi effettivamente successo, non fidarti di un 200.
Sì, stiamo anche eseguendo strategie di arb taker su questo venue e probabilmente ci stavamo anche "sollevando". Ma è una corsa contro tutti i MM e le nostre soglie di taker per i DEX per i perps sono generalmente più alte, quindi spesso ci perdiamo o non raggiungiamo la soglia di taker prima di tentare.
l'altra cosa un po' fottuta è che ora sono incentivato a NON dire al locale di questo dato che è diventato un vantaggio per me
@0xKeef
Loris
Loris27 lug 2025
l'altra cosa un po' fottuta è che ora sono incentivato a NON dire al locale di questo dato che è diventato un vantaggio per me
42,64K