ลายนิ้วมือดิจิทัลของนักเทรด: วิธีระบุตัวตน Market Maker จากพฤติกรรมใน Order Book
ลายนิ้วมือเชิงพฤติกรรมของอัลกอริทึมการเทรด: รูปแบบเฉพาะตัวของเวลา ขนาด และตำแหน่งการวาง
ทุกอัลกอริทึมทิ้งลายนิ้วมือที่เป็นเอกลักษณ์ไว้ เรียนรู้การอ่านมัน — และคุณจะรู้ว่าใครอยู่อีกฝั่งของการซื้อขายของคุณ
บทนำ: Order Book ในฐานะเวทีอาชญากรรม
เมื่อนักสืบนิติวิทยาศาสตร์มาถึงที่เกิดเหตุ พวกเขามองหาลายนิ้วมือ รอยเท้า DNA — ทุกสิ่งที่เชื่อมโยงเหตุการณ์กับบุคคลใดบุคคลหนึ่ง Order book คือสถานที่ที่ทุกวินาที ผู้เข้าร่วมหลายร้อยรายทิ้ง "ลายนิ้วมือ" ของพวกเขา: คำสั่งซื้อขนาดเฉพาะ ที่ความถี่เฉพาะ ที่ระยะห่างเฉพาะจากราคา ด้วยอายุการใช้งานเฉพาะ
บนตลาดซื้อขายแบบรวมศูนย์ (CEX) ลายนิ้วมือเหล่านี้ไม่ระบุชื่อ — คุณเห็นเพียงปริมาณรวมที่แต่ละระดับราคา แต่แม้จากข้อมูลรวม คุณก็สามารถเรียนรู้ได้มาก และบน DEX ที่มี order book บนเชน — เช่น Hyperliquid — คำสั่งซื้อแต่ละรายการผูกกับที่อยู่กระเป๋าเงินเฉพาะ และ "ลายนิ้วมือ" กลายเป็นเรื่องส่วนตัว
ในบทความนี้ เราจะสำรวจวิธีสร้างระบบ "ลายนิ้วมือเชิงพฤติกรรม" สำหรับระบุประเภทของผู้เข้าร่วมและอัลกอริทึม market maker เฉพาะราย
ส่วนที่ 1: ลายนิ้วมือเชิงพฤติกรรมคืออะไร
แผนภูมิเรดาร์: ห้ามิติสำคัญของลายนิ้วมือเชิงพฤติกรรมของนักเทรด
ทุกอัลกอริทึมคือชุดของกฎ
บอทสำหรับ market-making คือโปรแกรมที่ตัดสินใจตามกฎที่เข้มงวด (หรือที่เรียนรู้มา):
- ควรวางคำสั่งซื้อห่างจาก mid-price เท่าไร? MM แต่ละรายมี "โปรไฟล์สเปรด" ของตัวเอง
- ขนาดเท่าไร? Round lot (100, 500, 1000)? ตัวเลขสุ่ม? ขนาดคงที่ที่มีสัญญาณรบกวน ±5%?
- ควรอัปเดตการเสนอราคาบ่อยแค่ไหน? ทุก 50ms? เฉพาะเมื่อ mid-price เปลี่ยน? ตามตัวจับเวลา?
- จะตอบสนองต่อการ fill อย่างไร? Re-quoting ทันที? หยุดชั่วคราว? เลื่อนด้านที่เหลือ?
- จะตอบสนองต่อความผันผวนอย่างไร? ขยายสเปรด? ดึงการเสนอราคา? ลดขนาด?
- จะจัดการ inventory อย่างไร? เบี่ยงการเสนอราคาเมื่อสะสม position?
ชุดคำตอบแต่ละชุดสำหรับคำถามเหล่านี้คือ "ลายเซ็น" เฉพาะตัวของอัลกอริทึม
ห้ามิติของลายนิ้วมือ
┌─────────────────────────────────────────────────────────────────┐
│ ลายนิ้วมือดิจิทัลของนักเทรด │
│ │
│ 1. TIMING │ ช่วงเวลาระหว่างคำสั่ง การตอบสนอง │
│ │ ต่อเหตุการณ์ รูปแบบรายวัน │
│──────────────────┼───────────────────────────────────────────── │
│ 2. SIZING │ การกระจายขนาดคำสั่ง │
│ │ สัดส่วน round-lot การกระจาย │
│──────────────────┼───────────────────────────────────────────── │
│ 3. PLACEMENT │ ระยะห่างจาก mid-price │
│ │ ความสมมาตร bid/ask การยึดระดับ │
│──────────────────┼───────────────────────────────────────────── │
│ 4. REACTION │ การตอบสนองต่อ fill, cancel, การกระโดดราคา │
│ │ การเปลี่ยนแปลงความผันผวน │
│──────────────────┼───────────────────────────────────────────── │
│ 5. LIFECYCLE │ อายุการใช้งานเฉลี่ยของคำสั่ง │
│ │ เงื่อนไขการยกเลิก modify vs cancel+new │
│──────────────────┴───────────────────────────────────────────── │
└─────────────────────────────────────────────────────────────────┘
ส่วนที่ 2: การดึงคุณลักษณะ
กระบวนการ Hawkes แบบ self-exciting: กลุ่มเหตุการณ์ที่มีการลดลงแบบเอกซ์โพเนนเชียล
เวลา: เมื่อไรและบ่อยแค่ไหน
รูปแบบเวลาเป็นองค์ประกอบที่ยากที่สุดของลายนิ้วมือในการปลอมแปลง มันถูกกำหนดโดยสถาปัตยกรรมของอัลกอริทึม ความหน่วงของเครือข่าย ฮาร์ดแวร์ และแม้แต่เขตเวลาของนักพัฒนา
ตัวชี้วัดสำคัญ:
-
ช่วงเวลาระหว่างคำสั่ง (IOI) — เวลาระหว่างคำสั่งต่อเนื่องจากผู้เข้าร่วมคนเดียวกัน สำหรับบอท HFT IOI = 50–500 ไมโครวินาที สำหรับนักเทรดมนุษย์ — วินาทีถึงนาที
-
เวลาตอบสนองต่อการซื้อขาย — ความล่าช้าระหว่างการ fill คำสั่งและการดำเนินการถัดไป สะท้อนสถาปัตยกรรมภายในของบอท
-
รูปแบบรายวัน — โปรไฟล์กิจกรรมประจำวัน MM สถาบันทำงานระหว่างช่วงการซื้อขาย บอทคริปโตทำงาน 24/7
-
Self-excitation (ความเข้มข้น Hawkes) — คำสั่งปัจจุบัน "กระตุ้น" คำสั่งถัดไปได้มากแค่ไหน Market maker แสดง self-excitation ที่แข็งแกร่ง
สำหรับการสร้างแบบจำลองรูปแบบเวลา กระบวนการ Hawkes — กระบวนการจุดแบบ self-exciting — เหมาะสมที่สุด พารามิเตอร์กระบวนการ Hawkes (ความเข้มข้นฐาน μ ค่าสัมประสิทธิ์การกระตุ้น α อัตราการสลายตัว β) ก่อตัวเป็น "ลายนิ้วมือทางลำดับเวลา" ที่กะทัดรัดของผู้เข้าร่วม
ขนาด: เท่าไรและอย่างไร
- การกระจายขนาด — การกระจายของขนาดคำสั่ง MM มืออาชีพมักใช้ round lot ที่มีสัญญาณรบกวน: 100 ± 5, 500 ± 10
- ความสัมพันธ์ขนาด-ความลึก — ขนาดคำสั่งขึ้นอยู่กับความลึกปัจจุบันของ order book หรือไม่?
- ความไม่สมมาตรขนาด bid-ask — อัตราส่วนขนาดบน bid และ ask รูปแบบการเบี่ยงคือ "ลายมือ" ของการจัดการ inventory
- การสหสัมพันธ์อัตโนมัติของขนาด — ความสามารถในการทำซ้ำของขนาดตามเวลา
ตำแหน่ง: ที่ไหนใน Order Book
- ออฟเซ็ตสเปรด — ระยะห่างจาก mid-price เป็น tick หรือ bps
- การชอบระดับ — การยึดกับระดับเฉพาะ (ตัวเลขกลม?)
- ความสมมาตรการเสนอราคา — คำสั่ง bid และ ask สมมาตรกันแค่ไหน
- รอยเท้าหลายระดับ — มีกี่ระดับที่เสนอราคาพร้อมกัน
การตอบสนอง: วิธีตอบสนองต่อเหตุการณ์
- พฤติกรรมหลัง fill — เกิดอะไรขึ้นหลังคำสั่งถูก fill
- การตอบสนองต่อความผันผวน — พฤติกรรมเปลี่ยนอย่างไรเมื่อความผันผวนเพิ่มขึ้น
- อัตราส่วนการเสนอราคาต่อการซื้อขาย (QTR) — อัตราส่วนการอัปเดตคำสั่งต่อการ fill
- การตอบสนองต่อการคัดเลือกที่ไม่เอื้ออำนวย — การตอบสนองต่อการเคลื่อนที่ของราคาที่ต้าน position
วงจรชีวิต: วงจรชีวิตของคำสั่ง
- การกระจายอายุการใช้งานของคำสั่ง — เวลาการใช้งานเฉลี่ยของคำสั่ง
- Modify vs Cancel+New — อัปเดตผ่าน modify หรือ cancel+new?
- การรวมกลุ่มการยกเลิก — ยกเลิกทีละรายการหรือเป็นชุด?
ส่วนที่ 3: การจำแนกประเภทผู้เข้าร่วม
อนุกรมวิธานของผู้เข้าร่วมตลาด: market maker, HFT, นักเทรดเชิงโอกาส, นักเทรดพื้นฐาน และ noise trader
อนุกรมวิธานของผู้เข้าร่วมตลาด
จากคุณลักษณะเชิงพฤติกรรม ผู้เข้าร่วมสามารถจำแนกเป็นประเภทที่เสถียร การวิจัยโดย CFTC (Kirilenko et al., 2011):
1. Market Maker
- การเสนอราคาสองด้าน (bid + ask) มากกว่า 80% ของเวลา
- ตำแหน่งสุทธิเป็นศูนย์หรือใกล้ศูนย์เมื่อสิ้นวัน
- QTR สูง (>100:1)
- ตอบสนองต่อความผันผวนด้วยการขยายสเปรด
2. นักเทรดความถี่สูง (HFT)
- อัตราข้อความสูงมาก (>1000 เหตุการณ์/นาที)
- ระยะเวลาถือครองสั้นมาก (วินาที)
- เวลาตอบสนองต่ำกว่ามิลลิวินาที
3. นักเทรดเชิงโอกาส
- ความถี่ปานกลาง
- ตอบสนองต่อสภาวะตลาดเฉพาะ
- เวลาไม่สม่ำเสมอ รวมกลุ่มรอบเหตุการณ์
4. นักเทรดพื้นฐาน
- สะสม position ระยะยาว
- ความถี่ต่ำ ขนาดคำสั่งใหญ่
- อัลกอริทึม TWAP/VWAP สำหรับการดำเนินการ
5. Noise Trader (ค้าปลีก)
- ขนาดเล็ก เวลาไม่สม่ำเสมอ
- เชิงรับ: เทรดหลังราคาเคลื่อนที่ ไม่ใช่ก่อน
- คำสั่งตลาดที่จุดสูงสุดของความผันผวน
วิธีการจำแนกประเภท
การเรียนรู้แบบมีผู้ดูแล: สำหรับข้อมูล DEX (Hyperliquid) สามารถรวบรวมชุดการฝึกจากที่อยู่ของ market maker ที่รู้จัก โมเดล RNN ให้ความแม่นยำ >85%
การเรียนรู้แบบไม่มีผู้ดูแล:
- Spectral Clustering (Cont et al., 2023) — การรวมกลุ่มตามเมทริกซ์ความคล้ายคลึงของรูปแบบกระแสคำสั่ง
- FIDR-SCAN (2024) — การแก้ไขคุณลักษณะ + การลดมิติ + การรวมกลุ่มตามความหนาแน่น
- Inverse Reinforcement Learning (CFTC, 2014) — การกู้คืนฟังก์ชันรางวัลของนักเทรดแต่ละราย
ส่วนที่ 4: การระบุตัวตน Market Maker เฉพาะราย
จากการจำแนกประเภทสู่การระบุตัวตน
การจำแนกประเภทตอบคำถาม "นี่คือ market maker หรือไม่?" การระบุตัวตนตอบคำถาม "นี่คือ market maker รายนั้นๆ หรือไม่?"
การสร้าง Vector ลายนิ้วมือ
จากห้ามิติ เราดึง vector ตัวเลข — embedding ของผู้เข้าร่วม:
Fingerprint Vector (ตัวอย่าง):
┌──────────────────────────────────────────────────────────┐
│ 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) │
└──────────────────────────────────────────────────────────┘
การรวมกลุ่มที่อยู่: "ผู้ดำเนินการหนึ่งราย — N กระเป๋าเงิน"
กราฟคลัสเตอร์ที่อยู่: ผู้ดำเนินการหนึ่งราย — กระเป๋าเงินหลายใบ จัดกลุ่มตามความคล้ายคลึงเชิงพฤติกรรม
บน Hyperliquid market maker รายเดียวสามารถดำเนินการผ่านหลายสิบหรือหลายร้อยที่อยู่
อัลกอริทึมการรวมกลุ่ม:
- สำหรับแต่ละที่อยู่ที่ใช้งาน — สร้าง vector ลายนิ้วมือในช่วงเวลา N ชั่วโมง
- การรวมกลุ่มแบบลำดับชั้น — รวมที่อยู่ที่มีระยะทาง < threshold
- การตรวจสอบความถูกต้องตามเวลา — ตรวจสอบความเสถียรของคลัสเตอร์ตามเวลา
- การตรวจสอบความถูกต้องข้ามคู่ — หากสองที่อยู่เทรดคู่ต่างกันแต่ลายนิ้วมือตรงกัน — สัญญาณที่แข็งแกร่ง
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%
ส่วนที่ 5: สถานการณ์การบิดเบือนและลายนิ้วมือของพวกมัน
Spoofing: ลายนิ้วมือของกำแพงปลอม
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: กับดักสภาพคล่อง
สี่ขั้นตอน: การสะสมอย่างเงียบๆ การถอนสภาพคล่อง การต่อเนื่องของคำสั่ง stop และการทำกำไร การตรวจจับแบบเรียลไทม์เป็นไปได้โดยการระบุการเปลี่ยนแปลงจากขั้นตอนที่ 1 ไปยังขั้นตอนที่ 2
Iceberg / การสะสมที่ซ่อนอยู่: การสร้างแบบเงียบ
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: การซื้อขายกับตัวเอง
สองที่อยู่หรือมากกว่าจากคลัสเตอร์เดียวกันนั่งพร้อมกันบน bid และ ask และดำเนินการต่อกันเอง วัตถุประสงค์: การพองปริมาณการซื้อขาย
ส่วนที่ 6: การนำไปใช้ใน Marketmaker.cc
สถาปัตยกรรมระบบลายนิ้วมือเชิงพฤติกรรม
┌─────────────────────────────────────────────────────────────┐
│ 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 │
└─────────────────────────────────────────────────────────────┘
สิ่งที่นักเทรดเห็นในเทอร์มินัล
╔═══════════════════════════════════════════════════════════════════════════╗
║ 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 ║
╚═══════════════════════════════════════════════════════════════════════════╝
การแจ้งเตือน
- 🔴 ตรวจพบ Spoof ที่ระดับราคาของคุณ — บล็อกที่น่าสงสัยถูกระบุด้านหน้าคำสั่งของคุณ
- 🟡 MM ถอนตัว — market maker ดึงการเสนอราคา สภาพคล่องลดลง
- 🟡 ตรวจพบการตั้งค่า Squeeze — คลัสเตอร์ของที่อยู่กำลังสะสม position และถอนสภาพคล่อง
- 🟢 กำแพงได้รับการเสริมกำลัง — ปริมาณจาก MM ที่รู้จักถูกเพิ่มที่ระดับของคุณ
ส่วนที่ 7: จริยธรรมและข้อจำกัด
อะไรที่ยอมรับได้และอะไรที่ไม่ยอมรับได้
ที่ยอมรับได้และสนับสนุน:
- การจำแนกผู้เข้าร่วมที่ไม่ระบุชื่อตามประเภทสำหรับการตัดสินใจเทรดของตัวเอง
- การตรวจจับการบิดเบือนเพื่อป้องกันการคัดเลือกที่ไม่เอื้ออำนวย
- การรวมกลุ่มที่อยู่บน DEX เพื่อทำความเข้าใจโครงสร้างตลาด
ที่ไม่ยอมรับได้:
- การเปิดเผยตัวตนบุคคลด้วยที่อยู่กระเป๋าเงิน
- การขายรูปแบบที่ระบุโดยไม่ได้รับความยินยอม
- การใช้ข้อมูลเพื่อการบิดเบือนตลาด
ข้อจำกัด
- อัลกอริทึมปรับตัว — MM ขั้นสูงเพิ่มการสุ่ม
- การสลับระบอบ — บอทเดียวสามารถเปลี่ยนพฤติกรรมขึ้นอยู่กับระบอบตลาด
- ผลบวกปลอม — ผู้เข้าร่วมสองรายอาจมีพารามิเตอร์คล้ายกันโดยบังเอิญ
- ความไม่โปร่งใสของ CEX — ข้อมูล L3 ไม่สามารถใช้ได้บน CEX
สรุป: จากการอ่าน Order Book สู่การอ่านผู้เข้าร่วม
นักเทรดดั้งเดิมเห็น: 2,400 lot ที่ระดับ 10000 นักเทรดขั้นสูงเห็น: "คำสั่งของฉันอยู่ในคิวที่ 1,800 ETA — 15 วินาที" แต่นักเทรดที่มีการระบุลายนิ้วมือเชิงพฤติกรรมเห็น:
"800 จาก 2,400 นั้นคือ market maker (น่าจะเป็น Wintermute) กำแพงแข็งแกร่ง 500 น่าสงสัยว่าเป็น spoof คิวจริงด้านหน้าฉันคือ 1,300 ไม่ใช่ 1,800 ETA ที่ปรับแล้ว — 10 วินาที Market maker ไม่ดึงการเสนอราคา — ดังนั้นยังไม่คาดว่าจะมีการเคลื่อนที่ขนาดใหญ่"
ชั้นข้อมูลใหม่แต่ละชั้นคือความได้เปรียบ และไม่เหมือนความเร็ว คุณภาพของการตีความ order book คือโดเมนที่นักเทรดค้าปลีกสามารถแข่งขันได้
ที่ Marketmaker.cc เรากำลังสร้างระบบนี้ — จากตำแหน่งในคิวถึงการระบุลายนิ้วมือเชิงพฤติกรรม — เป็นผลิตภัณฑ์แบบรวม
บทความก่อนหน้าในซีรีส์: "คิวภายในกำแพง: การวิเคราะห์ตำแหน่งคำสั่งในความหนาแน่นของ Order Book"
เอกสารอ้างอิงและการอ่านเพิ่มเติม
- 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)
ผู้เขียน
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.