15 Νοέμβριος 2026 · έρευνα

Πώς κάνεις backtest στον όγκο crypto όταν οι wash trades φουσκώνουν την ταινία;

Πώς κάνεις backtest στον όγκο crypto όταν οι wash trades φουσκώνουν την ταινία;

Τη Δευτέρα κάναμε το υπεύθυνο πράγμα. Ο agent είχε μια στρατηγική momentum σε ένα mid-cap USDT-M perpetual, με clip 25,000 USDT ανά συναλλαγή, και το πρώτο backtest χωρίς φίλτρο όγκου γέμιζε κάθε σήμα σαν το βιβλίο να ήταν BTC. Οπότε προσθέσαμε την κλασική πύλη από το εγχειρίδιο: είκοσι μπάρες 1 λεπτού όγκου σε δολάρια έπρεπε να ξεπερνούν το εικοσαπλάσιο του clip πριν βγει εντολή. Είκοσι λεπτά, μισό εκατομμύριο δολάρια ταινίας. Το νόμισμα τύπωνε περίπου $40 million σε μια φορτωμένη μέρα. Το φίλτρο κράτησε τα περισσότερα σήματα. Η καμπύλη equity έγινε λιγότερο οδοντωτή. Το στείλαμε σε paper.

Έντεκα ώρες αργότερα μια αγορά 25,000 USDT έφαγε 8,400 από το bid και σταμάτησε. Ο όγκος των είκοσι μπαρών εκείνο το λεπτό ήταν $1.14 million. Το φίλτρο είχε πει ναι.

34%της δηλωμένης ταινίας δεν μετακίνησε ποτέ επίπεδο βιβλίου
11 ώρεςpaper πριν το πρώτο κολλημένο clip
20×κανόνας clip-προς-όγκο που είπε και πάλι ναι

Δευτέρα: το φίλτρο που μας έκανε να νιώθουμε τίμιοι

Το σημείωμα του agent στο pull request ήταν «προστέθηκε έλεγχος χωρητικότητας, 20× notional.» Το ενέκρινα. Έχω εγκρίνει αυτή την πρόταση και πριν. Είναι το είδος κανόνα που γράφεις αφού κάποιος σου δείξει ένα backtest που διαπραγματευόταν ένα νόμισμα $4,000-OI σε clip των $50,000, και όλοι στην αίθουσα μορφάζουν, και προσθέτεις ένα πολλαπλάσιο όγκου για να μην ξανασυμβεί.

Τη Δευτέρα ο κανόνας έκανε αυτό που κάνει πάντα σε ένα backtest. Έκοψε τις νεκρές ώρες. Κράτησε τις ώρες όπου ο ίδιος ο αριθμός όγκου του ανταλλακτηρίου έμοιαζε δυνατός. Ο τζίρος έπεσε περίπου κατά ένα τρίτο. Το μέσο μέγεθος συναλλαγής έμεινε 25,000 γιατί το μοντέλο εκτέλεσης είναι δειλό: παίρνει ολόκληρο το clip στο last-συν-μερικά-bps όποτε η πύλη είναι ανοιχτή. Κανείς δεν ρώτησε το βιβλίο αν τα 25,000 κάθονταν πραγματικά εκεί.

Ακόμα ανατριχιάζω όταν ο 24h όγκος ενός νομίσματος είναι στρογγυλός αριθμός δίπλα σε ισχνό open interest. Είναι απομεινάρι από το 2021, όταν τα bot «market making» στο Discord ήταν δύο υπολογαριασμοί που συναλλάσσονταν μεταξύ τους και επικόλλαγαν το screenshot του όγκου στο #brag. Η ταινία μοιάζει με πάρτι. Το βιβλίο είναι χαρτόνι. Είπα στον εαυτό μου ότι ένα φίλτρο 20× σε μπάρες ενός λεπτού ήταν ο τρόπος να το ξεπεράσεις. Δεν είναι. Είναι ο τρόπος να κάνεις μέσο όρο το χαρτόνι σε έναν πιο λείο αριθμό.

Τρίτη: paper, μετά ένα υπόλοιπο

Το paper ξεκίνησε ήπια. Τα πρώτα πέντε clip γέμισαν σε 2–4 άλματα κάτω στο ask. Άσχημα, αλλά έγινε. Μετά στις 14:07 UTC, σήμα long, 25,000 USDT, κορυφή βιβλίου 1,100, επόμενο επίπεδο 2,400, μετά αέρας. Πήραμε 8,400 γεμάτα ως taker και 16,600 σε αναμονή. Σαράντα δευτερόλεπτα αργότερα το υπόλοιπο ακυρώθηκε από το δικό μας time-in-force. Η στρατηγική νόμιζε ότι ήταν long ένα πλήρες clip. Ο λογαριασμός ήταν long το ένα τρίτο ενός.

Αλλά το φίλτρο είχε πει ναι. Τράβηξα τη μπάρα. Ο όγκος σε δολάρια στα είκοσι λεπτά μέχρι τις 14:07 ήταν $1.14 million, άνετα πάνω από $500k. Περίπου $380k από αυτά τα $1.14 million ήταν ζεύγη εκτυπώσεων: ίδια τιμή, ίδιο μέγεθος, αντίθετα aggressor flags, 2–8 χιλιοστά του δευτερολέπτου απόσταση, και το μέγεθος bid/ask σε εκείνη την τιμή δεν κουνήθηκε. Εκείνες οι συναλλαγές πλήρωναν προμήθειες η μία στην άλλη. Δεν μας πρόσφεραν μια τρύπα 25,000 USDT.

Τετάρτη: αντιστοίχιση της ταινίας με το βιβλίο

Η Τετάρτη ήταν η αργή μέρα, αυτή για την οποία την επόμενη φορά θα προϋπολόγιζα διπλάσιο χρόνο. Πήραμε πέντε καθημερινές συναλλαγών και L2 snapshots στο ίδιο perp, φωτογραφίες βιβλίου 100ms, και ταξινομήσαμε κάθε εκτύπωση ως προς το βιβλίο ένα snapshot πριν και ένα snapshot μετά.

  1. Αν το μέγεθος στην τιμή της συναλλαγής έπεσε περίπου όσο το μέγεθος της συναλλαγής, άγγιξε το βιβλίο. Μέτρα το.
  2. Αν μια αγορά και μια πώληση ίσου μεγέθους εκτυπώθηκαν σε μία τιμή χωρίς αλλαγή στο βιβλίο, πες το wash και βγάλ' το από κάθε αριθμό χωρητικότητας.
  3. Αν μια συναλλαγή πέρασε μέσα από πολλά επίπεδα και αυτά τα επίπεδα εξαφανίστηκαν, αυτό είναι πραγματικός taker. Μέτρα το, και μην προσποιείσαι ότι μπορείς κι εσύ να πάρεις αυτή τη ρευστότητα· κάποιος το έκανε ήδη.
  4. Αν η συναλλαγή είναι μαρκαρισμένη ως εκκαθάριση, είναι πραγματικό μέγεθος, και είναι το τελευταίο μέγεθος που θέλεις να χρησιμοποιήσεις ως απόδειξη ότι εσύ μπορείς να κάνεις clip 25,000. Η αναγκαστική εντολή τρέχει κόντρα σου.

Τα snapshots λένε λίγο ψέματα. Οτιδήποτε γεμίζει και αναπληρώνεται μέσα σε 100ms μοιάζει με φάντασμα, και κάποιοι γνήσιοι market-makers κάνουν cancel-replace τόσο γρήγορα. Δειγματοληπτήσαμε αργότερα μερικά λεπτά βιβλίων 10ms και το μερίδιο wash μετακινήθηκε κατά μερικές μονάδες, όχι κατά έναν παράγοντα δύο. Μπορώ να ζήσω με μερικές μονάδες. Δεν μπορώ να ζήσω με το να αντιμετωπίζω το ticker όγκου του ανταλλακτηρίου ως απογραφή ρευστότητας.

Τα AggTrades ήδη συμπτύσσουν έναν taker που χτυπάει πολλούς makers σε μία τιμή. Δεν συμπτύσσουν δύο υπολογαριασμούς που κάνουν wash. Αν το «καθαρό» feed σου είναι aggregated trades, εξακολουθείς να έχεις αυτό το πρόβλημα. Απλώς το έχεις με λιγότερες γραμμές.

Και ο 24h όγκος στο ticker API είναι το ίδιο βρώμικο άθροισμα, με καθυστέρηση, γι' αυτό τον αγαπούν οι research agents. Ένα πεδίο. Πάντα παρόν. Μοιάζει με feature. Είναι ένα στατιστικό μάρκετινγκ που τυχαίνει να βρίσκεται στο protobuf των market-data.

Αν ένας αριθμός όγκου δεν μπορεί να αντιστοιχηθεί σε μια αλλαγή στο βιβλίο, δεν ανήκει σε έλεγχο χωρητικότητας, σε μοντέλο impact ή σε φίλτρο universe. Το 24h ticker είναι το χειρότερο αντίγραφο αυτού του αριθμού, γιατί έχει ήδη αθροιστεί, στρογγυλοποιηθεί και απογυμνωθεί από χρόνο.

Πέμπτη: η εβδομάδα σε έναν πίνακα

Πέντε συνεδρίες, ίδιο clip, ίδιος κανόνας 20×, ίδιο μοντέλο εκτέλεσης στο backtest. Ο λόγος paper fill είναι το εκτελεσμένο notional προς το προβλεπόμενο notional για τις εντολές που στείλαμε πραγματικά εκείνη τη συνεδρία. Το paper της Δευτέρας είναι κενό γιατί ήμασταν ακόμα στο backtest.

ΣυνεδρίαΤαινία ανταλλακτηρίουΚίνηση βιβλίουΤύπου washΕκτυπ. εκκαθ.Το φίλτρο είπε πάμεPaper fill
Δευ$38.4m$22.6m$13.5m$2.3m41 / 48 σήματαn/a
Τρι$41.1m$24.2m$15.2m$1.7m36 / 400.61
Τετ$29.6m$20.1m$8.1m$1.4m22 / 310.77
Πεμ$44.8m$25.6m$17.4m$1.8m39 / 440.54
Παρ$33.2m$22.3m$9.4m$1.5m28 / 350.71

Οι εκτυπώσεις τύπου wash ήταν 34% της ταινίας της εβδομάδας. Δεν ήταν ομοιόμορφα κατανεμημένες. Η Πέμπτη, η συνεδρία που το αρχικό φίλτρο συμπαθούσε περισσότερο, ήταν η πιο βρώμικη. Αυτός είναι ο τρόπος αποτυχίας που με νοιάζει. Η πύλη δεν υπερεκτιμά απλώς τη ρευστότητα κατά μέσο όρο. Ανοίγει πιο διάπλατα τις μέρες που δουλεύουν τα wash bots, γιατί εκείνες τις μέρες ο ακατέργαστος αριθμός δείχνει πιο υγιής.

Ξανατρέξαμε το backtest μόνο με όγκο που κινεί το βιβλίο, ίδιο πολλαπλάσιο 20×. Τα σήματα έπεσαν από 198 στην εβδομάδα σε 121. Πολλά από αυτά που απορρίφθηκαν κάθονταν σε εκείνες τις ώρες στυλ Πέμπτης όπου η ταινία ήταν δυνατή και η κορυφή του βιβλίου ήταν 1,100 USDT. Το αρχικό Sharpe χρησιμοποιούσε 198 πλήρεις εκτελέσεις. Δεν πρόκειται να παραθέσω το καινούργιο σαν να ήταν εύρημα για τη στρατηγική. Είναι εύρημα για το μοντέλο εκτέλεσης: μόλις σταματήσεις να χορηγείς 25,000 USDT σε τιμή που το βιβλίο δεν είχε, ένα κομμάτι του «edge» είναι απλώς ολοκληρωμένες εντολές που θα ήταν υπόλοιπα.

Παρασκευή: τι βάζουμε τελικά σε παραγωγή, και τι θα προσπερνούσα

Η πύλη που κρατήσαμε είναι βαρετή. Κυλιόμενο notional που κινεί το βιβλίο, μετρημένο μόνο από εκτυπώσεις που πήραν μέγεθος από ένα επίπεδο, πρέπει να ξεπερνάει 20× το clip, και το μετράμε στις μπάρες πριν τη μπάρα απόφασης ώστε το wash του τρέχοντος λεπτού να μην μπορεί να ψηφίσει. Οι εκτυπώσεις εκκαθάρισης παίρνουν ξεχωριστό όριο: αν πάνω από το ένα τέταρτο του πρόσφατου όγκου που κινεί το βιβλίο είναι εκκαθαρίσεις, η στρατηγική μένει εκτός. Η αναγκαστική ροή είναι πραγματικό μέγεθος που τρέχει κόντρα σου.

Το impact πήρε την ίδια δίαιτα. Το παλιό μοντέλο συμπέρανε ένα Kyle lambda από τον όγκο του ανταλλακτηρίου και το clip μας. Τάισέ το με wash και το lambda πέφτει, γιατί η αγορά μοιάζει βαθιά. Τάισέ το με όγκο που κινεί το βιβλίο και το ίδιο clip είναι πολύ μεγαλύτερο μερίδιο αυτού που πραγματικά άλλαξε το βιβλίο. Η ολίσθηση στο paper στις επόμενες λίγες συνεδρίες κάθισε πιο κοντά σε εκείνον τον πιο άσχημο αριθμό. Πιο κοντά, όχι ταυτόσημο. Ακόμα δεν βλέπουμε ουρά, και μια φωτογραφία 100ms ακόμα χάνει κάποιο γνήσιο μέγεθος.

Αυτό που θα προσπερνούσα την επόμενη φορά είναι ολόκληρη η πρώτη Δευτέρα. Μην ξεκινήσεις από το ticker, μην ξεκινήσεις από τον 24h όγκο, μην αφήσεις τον agent να βάλει ακατέργαστο όγκο σε δολάρια στο feature store και στην πύλη σαν να ήταν δύο ιδέες. Είναι μία βρώμικη σειρά, χρησιμοποιημένη δύο φορές. Χτίσε πρώτα την ταινία που συνάδει με το βιβλίο, ακόμα κι αν αυτό σημαίνει ότι ερευνάς δύο μέρες σε ένα μόνο mid-cap πριν έχεις universe. Ένα universe φιλτραρισμένο στο wash είναι μια λίστα νομισμάτων που είναι καλά στο να δείχνουν απασχολημένα.

Το άλλο που θα προσπερνούσα: οποιοδήποτε μοντέλο εκτέλεσης που αντιμετωπίζει έναν περασμένο έλεγχο όγκου ως εκτέλεση. Το υπόλοιπο της Τρίτης ήταν η στρατηγική. Το φίλτρο μπορεί να απαντήσει μόνο «έχει συναλλαγεί κανείς.» Δεν μπορεί να απαντήσει «τα 25,000 σου θα μείνουν σε αναμονή ή θα εξαφανιστούν.» Αυτή η δεύτερη ερώτηση χρειάζεται το βιβλίο, ένα υπόλοιπο και ένα time-in-force, που είναι διαφορετικό ημερολόγιο, και αυτό που έπρεπε να είχαμε γράψει πριν από αυτό.

wash tradingόγκοςcryptobacktestingμικροδομή αγοράς
ΚοινοποίησηXLinkedInFacebookRedditHacker NewsWhatsAppTelegramEmail
← Όλα τα άρθρα