De digitale vingerafdruk van een trader: hoe je een market maker herkent aan zijn orderboekgedrag
Gedragsmatige vingerafdruk van een handelsalgoritme: unieke patronen in timing, ordergrootte en plaatsing
Elk algoritme laat een unieke vingerafdruk achter. Leer die te lezen — en je weet wie er aan de andere kant van je trade zit.
Inleiding: het orderboek als plaats delict
Wanneer een forensisch onderzoeker een plaats delict betreedt, zoekt hij naar vingerafdrukken, schoenafdrukken, DNA — alles wat een gebeurtenis aan een specifiek individu koppelt. Het orderboek is een plek waar elke seconde honderden deelnemers hun "vingerafdrukken" achterlaten: orders van een bepaalde grootte, met een bepaalde frequentie, op een bepaalde afstand van de prijs, met een bepaalde levensduur.
Op gecentraliseerde exchanges (CEX) zijn deze vingerafdrukken anoniem — je ziet alleen het geaggregeerde volume op elk prijsniveau. Maar zelfs uit geaggregeerde data valt veel af te leiden. En op DEX-exchanges met een on-chain orderboek — zoals Hyperliquid — is elke order gekoppeld aan een specifiek walletadres, en worden de "vingerafdrukken" persoonlijk.
In dit artikel onderzoeken we hoe je een systeem van "gedragsmatige vingerafdrukken" bouwt om het type deelnemer en specifieke market-maker-algoritmes te identificeren.
Deel 1: wat is een gedragsmatige vingerafdruk
Radardiagram: vijf kerndimensies van de gedragsmatige vingerafdruk van een trader
Elk algoritme is een verzameling regels
Een market-making bot is een programma dat beslissingen neemt op basis van vaste (of aangeleerde) regels:
- Hoe ver van de mid-price worden orders geplaatst? Elke MM heeft zijn eigen "spreadprofiel."
- Welke grootte? Ronde lots (100, 500, 1000)? Willekeurige getallen? Vaste grootte met ±5% ruis?
- Hoe vaak worden quotes bijgewerkt? Elke 50ms? Alleen wanneer de mid-price verandert? Op een timer?
- Hoe wordt er gereageerd op fills? Onmiddellijk opnieuw quoten? Pauzeren? De resterende kant verschuiven?
- Hoe wordt er gereageerd op volatiliteit? Spreadverbreding? Quotes terugtrekken? Ordergrootte verkleinen?
- Hoe wordt de inventaris beheerd? Quote-skewing bij het opbouwen van een positie?
Elke combinatie van antwoorden op deze vragen vormt een unieke "handtekening" van het algoritme.
Vijf dimensies van de vingerafdruk
┌─────────────────────────────────────────────────────────────────┐
│ DIGITAL FINGERPRINT OF A TRADER │
│ │
│ 1. TIMING │ Inter-order intervals, reaction │
│ │ to events, circadian patterns │
│──────────────────┼───────────────────────────────────────────── │
│ 2. SIZING │ Order size distribution, │
│ │ round-lot ratio, dispersion │
│──────────────────┼───────────────────────────────────────────── │
│ 3. PLACEMENT │ Distance from mid-price, │
│ │ bid/ask symmetry, level anchoring │
│──────────────────┼───────────────────────────────────────────── │
│ 4. REACTION │ Response to fills, cancels, price jumps, │
│ │ volatility changes │
│──────────────────┼───────────────────────────────────────────── │
│ 5. LIFECYCLE │ Average order lifetime, │
│ │ cancel conditions, modify vs cancel+new │
│──────────────────┴───────────────────────────────────────────── │
└─────────────────────────────────────────────────────────────────┘
Deel 2: feature-extractie
Zichzelf opwekkend Hawkes-proces: clusters van gebeurtenissen met exponentiële afname
Timing: wanneer en hoe vaak
Het timingpatroon is het moeilijkst te vervalsen element van de vingerafdruk. Het wordt bepaald door de architectuur van het algoritme, netwerklatentie, hardware, en zelfs de tijdzone van de ontwikkelaars.
Belangrijkste metrics:
-
Inter-order interval (IOI) — de tijd tussen opeenvolgende orders van dezelfde deelnemer. Voor een HFT-bot: IOI = 50–500 microseconden. Voor een handmatige trader — seconden tot minuten.
-
Reactietijd op een trade — de vertraging tussen een orderfill en de volgende actie. Weerspiegelt de interne architectuur van de bot.
-
Circadiaans patroon — het dagelijkse activiteitsprofiel. Een institutionele MM opereert tijdens handelssessies. Een cryptobot draait 24/7.
-
Zelf-excitatie (Hawkes-intensiteit) — hoe sterk een huidige order de volgende "triggert". Market makers vertonen sterke zelf-excitatie.
Voor het modelleren van timingpatronen zijn Hawkes-processen — zichzelf opwekkende puntprocessen — ideaal. De parameters van het Hawkes-proces (basisintensiteit μ, excitatiecoëfficiënt α, afnamesnelheid β) vormen een compacte "chronologische vingerafdruk" van een deelnemer.
Sizing: hoeveel en hoe
- Groottedistributie — de verdeling van ordergroottes. Professionele MM's gebruiken vaak ronde lots met ruis: 100 ± 5, 500 ± 10.
- Grootte-diepte-correlatie — hangt de ordergrootte af van de huidige diepte van het boek?
- Bid-ask groottesymmetrie — de verhouding tussen groottes op bid en ask. Het skew-patroon is het "handschrift" van inventarisbeheer.
- Grootte-autocorrelatie — herhaalbaarheid van groottes in de tijd.
Placement: waar in het boek
- Spread-offset — afstand tot de mid-price in ticks of bps
- Niveauvoorkeur — verankering aan specifieke niveaus (ronde getallen?)
- Quotingsymmetrie — hoe symmetrisch zijn de bid- en ask-orders
- Multi-level footprint — hoeveel niveaus worden tegelijk gequote
Reaction: hoe wordt er gereageerd op gebeurtenissen
- Post-fill gedrag — wat gebeurt er nadat een order is gevuld
- Volatiliteitsrespons — hoe verandert het gedrag bij toenemende volatiliteit
- Quote-to-trade ratio (QTR) — de verhouding tussen orderupdates en fills
- Reactie op adverse selection — reactie op prijsbeweging tegen de positie in
Lifecycle: de levenscyclus van de order
- Distributie van de orderlevensduur — gemiddelde levensduur van een order
- Modify vs Cancel+New — wordt er bijgewerkt via modify of via cancel+new?
- Cancel-clustering — wordt er één voor één of in batches geannuleerd?
Deel 3: classificatie van deelnemers
Taxonomie van marktdeelnemers: market makers, HFT, opportunistisch, fundamenteel en noise traders
Taxonomie van marktdeelnemers
Op basis van gedragsmatige kenmerken kunnen deelnemers worden ingedeeld in stabiele categorieën. Onderzoek van de CFTC (Kirilenko et al., 2011):
1. Market Makers
- Tweezijdige quotes (bid + ask) gedurende >80% van de tijd
- Nul of bijna nul netto positie aan het einde van de dag
- Hoge QTR (>100:1)
- Reageren op volatiliteit door spreads te verbreden
2. High-Frequency Traders (HFT)
- Extreem hoge berichtenfrequentie (>1000 events/minuut)
- Zeer korte houdperiode (seconden)
- Reactietijden onder een milliseconde
3. Opportunistische traders
- Gematigde frequentie
- Reageren op specifieke marktomstandigheden
- Onregelmatige timing, geclusterd rond gebeurtenissen
4. Fundamentele traders
- Bouwen posities op lange termijn op
- Lage frequentie, grote ordergroottes
- TWAP/VWAP-algoritmes voor uitvoering
5. Noise traders (retail)
- Kleine groottes, onregelmatige timing
- Reactief: handelen nadat de prijs beweegt, niet ervoor
- Market orders op het hoogtepunt van volatiliteit
Classificatiemethoden
Supervised learning: Voor DEX-data (Hyperliquid) kan een trainingsset worden samengesteld uit adressen van bekende market makers. RNN-modellen behalen een nauwkeurigheid >85%.
Unsupervised learning:
- Spectral Clustering (Cont et al., 2023) — clustering op basis van gelijkenis in orderflowpatronen
- FIDR-SCAN (2024) — feature-interpolatie + dimensiereductie + dichtheidsgebaseerde clustering
- Inverse Reinforcement Learning (CFTC, 2014) — het herleiden van de rewardfunctie van elke trader
Deel 4: specifieke market makers identificeren
Van classificatie naar identificatie
Classificatie beantwoordt de vraag "Is dit een market maker?" Identificatie beantwoordt de vraag "Is dit die specifieke market maker?"
De fingerprint-vector opbouwen
Uit de vijf dimensies extraheren we een numerieke vector — de embedding van de deelnemer:
Fingerprint Vector (example):
┌──────────────────────────────────────────────────────────┐
│ Timing: │
│ hawkes_mu: 0.3 (base intensity) │
│ hawkes_alpha: 0.7 (self-excitation) │
│ hawkes_beta: 1.2 (decay rate) │
│ median_IOI_ms: 240 (ms between orders) │
│ circadian_peak_utc: 14.5 (peak activity) │
│ │
│ Sizing: │
│ median_size: 500 │
│ size_cv: 0.08 (coeff. of variation) │
│ round_lot_ratio: 0.92 (round lot share) │
│ bid_ask_size_ratio: 0.97 │
│ │
│ Placement: │
│ median_offset_bps: 3.2 (from mid-price) │
│ quoting_symmetry: 0.94 (0=asymmetric,1=symm) │
│ num_levels: 5 (quoted levels) │
│ │
│ Reaction: │
│ post_fill_delay_ms: 12 │
│ vol_spread_elasticity: 2.1 (spread/sigma) │
│ qtr: 850 (quote-to-trade ratio) │
│ │
│ Lifecycle: │
│ median_lifetime_ms: 1200 │
│ modify_ratio: 0.85 (modify vs cancel+new) │
│ batch_cancel_rate: 0.60 (batch cancel share) │
└──────────────────────────────────────────────────────────┘
Adresclustering: "één operator — N wallets"
Adresclustergrafiek: één operator — meerdere wallets, gegroepeerd op gedragsmatige gelijkenis
Op Hyperliquid kan een enkele market maker via tientallen of honderden adressen opereren.
Clusteringalgoritme:
- Voor elk actief adres — bouw een fingerprint-vector over een venster van N uur
- Hiërarchische clustering — voeg adressen samen met afstand < drempelwaarde
- Temporele validatie — controleer de stabiliteit van het cluster over tijd
- Cross-pair-validatie — als twee adressen verschillende paren verhandelen maar de fingerprints overeenkomen — sterk signaal
Cluster #7 (suspected: Wintermute)
├── 0x3a1f...2e8c — BTC/USDT, 45% of activity
├── 0x7b2d...9f1a — ETH/USDT, 30% of activity
├── 0xc4e8...5d3b — SOL/USDT, 15% of activity
└── 0x91fa...0c7e — ARB/USDT, 10% of activity
Common pattern: symmetric quoting, 5 levels, median_IOI=240ms,
median_size=500±8%, batch cancel 60%, presence 95%
Deel 5: manipulatiescenario's en hun vingerafdrukken
Spoofing: de vingerafdruk van een nepmuur
Spoofer fingerprint:
cancel_rate: > 95%
lifetime: < 2 seconds
placement: 1-3 ticks from mid-price
size: anomalously large (>10x median depth)
reaction_to_approach: cancel when price approaches
cyclicity: repeats >3 times / minute
Squeeze: de liquiditeitsval
Vier fasen: stille accumulatie, liquiditeitsonttrekking, cascade van stop-orders, winstneming. Real-time detectie is mogelijk door de overgang van Fase 1 naar Fase 2 te herkennen.
Iceberg / verborgen accumulatie: de stille opbouw
Hidden accumulation fingerprint:
visible_size: small (10-50 lots)
refill_speed: instant (< 100ms after fill)
refill_count: > 20 at a single level per session
price_reaction: price does not move despite volume
Wash trading: zelfhandel
Twee of meer adressen uit hetzelfde cluster zitten tegelijkertijd op bid en ask en handelen tegen elkaar. Doel: het opblazen van het volume.
Deel 6: implementatie in Marketmaker.cc
Architectuur van het systeem voor gedragsmatige vingerafdrukken
┌─────────────────────────────────────────────────────────────┐
│ DATA LAYER │
│ ├── Hyperliquid Node → L3 order-by-order + wallet IDs │
│ ├── CEX WebSocket → L2 depth + trades │
│ └── Historical Store → QuestDB / Parquet │
├─────────────────────────────────────────────────────────────┤
│ FEATURE EXTRACTION │
│ ├── Timing Engine → Hawkes fit, IOI distribution │
│ ├── Sizing Engine → Size stats, round-lot detection │
│ ├── Placement Engine → Offset calc, symmetry analysis │
│ ├── Reaction Engine → Post-fill tracker, vol response │
│ └── Lifecycle Engine → Lifetime stats, cancel patterns │
├─────────────────────────────────────────────────────────────┤
│ CLASSIFICATION / IDENTIFICATION │
│ ├── Online Classifier → Real-time participant tagging │
│ ├── Cluster Engine → Address clustering (DEX) │
│ ├── Similarity Search → Fingerprint matching │
│ └── Anomaly Detector → Spoof / squeeze / wash detection │
├─────────────────────────────────────────────────────────────┤
│ VISUALIZATION │
│ ├── Queue Position + Participant Labels │
│ ├── Cluster Graph (known MM clusters) │
│ ├── Alert System (manipulation detected) │
│ └── Historical Fingerprint Browser │
└─────────────────────────────────────────────────────────────┘
Wat de trader in de terminal ziet
╔═══════════════════════════════════════════════════════════════════════════╗
║ 10000 USDT │ Total: 3,200 ║
║──────────────┼───────────────────────────────────────────────────────── ║
║ Breakdown: │ 🤖 MM (cluster#7, ~Wintermute): 800 lots [5 levels] ║
║ │ 🤖 MM (cluster#12, unknown): 400 lots [3 levels] ║
║ │ ⚠️ Suspicious (spoof score 87): 500 lots [lifetime<2s]║
║ │ 🟡 @pro_scalper: 100 lots ║
║ │ 🔴 MINE: 10 lots ║
║ │ 👤 Retail / unclassified: 1,390 lots ║
║──────────────┼───────────────────────────────────────────────────────── ║
║ Queue ahead │ Real: ~1,200 (excl. spoof) Nominal: 1,800 ║
║ "Clean" ETA │ 6.7s (vs nominal 10s) ║
║ Wall type: │ MM-backed (65% MM volume) — likely to hold ║
╚═══════════════════════════════════════════════════════════════════════════╝
Meldingen
- 🔴 Spoof gedetecteerd op jouw prijsniveau — er is een verdacht blok geïdentificeerd vóór jouw order
- 🟡 MM trekt zich terug — een market maker heeft quotes teruggetrokken, liquiditeit is gedaald
- 🟡 Squeeze-opzet gedetecteerd — een cluster van adressen bouwt een positie op en onttrekt liquiditeit
- 🟢 Muur versterkt — volume van een bekende MM is toegevoegd op jouw niveau
Deel 7: ethiek en beperkingen
Wat wel en niet aanvaardbaar is
Aanvaardbaar en aangemoedigd:
- Anonieme deelnemers classificeren naar type voor je eigen handelsbeslissingen
- Manipulatie detecteren ter bescherming tegen adverse selection
- Adressen op DEX clusteren om de marktstructuur te begrijpen
Niet aanvaardbaar:
- Individuen deanonimiseren via walletadressen
- Geïdentificeerde patronen verkopen zonder toestemming
- Data gebruiken voor marktmanipulatie
Beperkingen
- Adaptieve algoritmes — geavanceerde MM's voegen randomisatie toe
- Regimewisseling — een enkele bot kan van gedrag veranderen afhankelijk van het marktregime
- Vals-positieven — twee deelnemers kunnen toevallig vergelijkbare parameters hebben
- CEX-ondoorzichtigheid — L3-data is niet beschikbaar op CEX
Conclusie: van het lezen van het boek naar het lezen van de deelnemers
Een traditionele trader ziet: 2.400 lots op het niveau van 10000. Een gevorderde trader ziet: "mijn order staat 1.800ste in de wachtrij, ETA — 15 seconden." Maar een trader met gedragsmatige vingerafdrukken ziet:
"800 van die 2.400 zijn van een market maker (vermoedelijk Wintermute), de muur is solide. 500 zijn vermoedelijke spoofs, de echte wachtrij vóór mij is 1.300, niet 1.800. Aangepaste ETA — 10 seconden. De market maker trekt zijn quotes niet terug — dus voorlopig wordt geen grote beweging verwacht."
Elke nieuwe informatielaag is een edge. En in tegenstelling tot snelheid is de kwaliteit van orderboekinterpretatie een domein waarop een retailtrader kan concurreren.
Bij Marketmaker.cc bouwen we dit systeem — van queue position tot gedragsmatige vingerafdrukken — als één geïntegreerd product.
Vorig artikel in de reeks: "Queue Inside the Wall: Analyzing Order Position in Order Book Density"
Referenties en verder lezen
- Kirilenko A., Kyle A., Samadi M., Tuzun T. — "The Flash Crash: High-Frequency Trading in an Electronic Market" (CFTC, 2011)
- Paddrik M., Hayes R., Scherer W., Beling P. — "Gaussian Process-Based Algorithmic Trading Strategy Identification" (CFTC / OFR, 2014)
- Cont R. et al. — "Unsupervised spectral clustering of trader order flow" (2023)
- FIDR-SCAN — "Explainable Machine Learning for HFT Dynamics Discovery" (2024)
- Do B.L., Putniņš T.J. — "Detecting Layering and Spoofing in Markets" (SSRN, 2023)
- Hawkes A.G. — "Spectra of Some Self-Exciting and Mutually Exciting Point Processes" (Biometrika, 1971)
- Avellaneda M., Stoikov S. — "High-Frequency Trading in a Limit Order Book" (Quantitative Finance, 2008)
Auteurs
Trading-systems engineer
Trading-systems engineer building bots since 2017: cross-exchange arbitrage (connected up to 30 venues), cointegration-based pairs arbitrage across spot and futures, scalping, news and sentiment-driven strategies, trend algorithms, and portfolio management and balancing algorithms. Also builds sub-millisecond order execution, big-data warehouses, backtesting engines, AI agents, and trading interfaces (incl. open-source profitmaker.cc). Stack: JS/TS, Python, Rust/Zig/Go, DevOps, backend, frontend, architecture.