트레이더의 디지털 핑거프린트: 주문장 행동으로 마켓 메이커를 식별하는 방법
트레이딩 알고리즘의 행동 핑거프린트: 타이밍, 크기, 배치의 고유한 패턴
모든 알고리즘은 고유한 핑거프린트를 남깁니다. 그것을 읽는 법을 배우면 거래 반대편에 누가 있는지 알 수 있습니다.
서론: 범죄 현장으로서의 주문장
법의학 수사관이 범죄 현장에 도착하면 지문, 발자국, DNA — 사건을 특정 개인과 연결하는 모든 것을 찾습니다. 주문장은 매초 수백 명의 참가자가 "지문"을 남기는 곳입니다: 특정 크기, 특정 빈도, 가격으로부터 특정 거리, 특정 유효 기간의 주문.
중앙집중형 거래소(CEX)에서 이러한 지문은 익명입니다 — 각 가격 수준에서 집계된 거래량만 볼 수 있습니다. 그러나 집계된 데이터에서도 많은 것을 배울 수 있습니다. 그리고 온체인 주문장이 있는 DEX 거래소 — Hyperliquid와 같은 — 에서는 각 주문이 특정 지갑 주소에 연결되어 "지문"이 개인적인 것이 됩니다.
이 기사에서는 참가자 유형과 특정 마켓 메이커 알고리즘을 식별하기 위한 "행동 핑거프린트" 시스템을 구축하는 방법을 탐구합니다.
파트 1: 행동 핑거프린트란 무엇인가
레이더 차트: 트레이더 행동 핑거프린트의 5가지 핵심 차원
모든 알고리즘은 규칙의 집합
마켓 메이킹 봇은 엄격한(또는 학습된) 규칙에 기반하여 결정을 내리는 프로그램입니다:
- 중간가격으로부터 얼마나 멀리 주문을 배치해야 하는가? 모든 MM에는 고유한 "스프레드 프로필"이 있습니다.
- 어떤 크기인가? 라운드 로트(100, 500, 1000)? 랜덤 숫자? ±5% 노이즈가 있는 고정 크기?
- 얼마나 자주 호가를 업데이트하는가? 50ms마다? 중간가격이 변할 때만? 타이머로?
- 체결에 어떻게 반응하는가? 즉시 재호가? 일시 중지? 나머지 쪽 이동?
- 변동성에 어떻게 반응하는가? 스프레드 확대? 호가 철회? 크기 축소?
- 재고를 어떻게 관리하는가? 포지션 축적 시 호가 스큐잉?
이러한 질문에 대한 각 답변 세트가 알고리즘의 고유한 "시그니처"입니다.
핑거프린트의 5가지 차원
┌─────────────────────────────────────────────────────────────────┐
│ 트레이더의 디지털 핑거프린트 │
│ │
│ 1. 타이밍 │ 주문 간 간격, 이벤트에 대한 반응, │
│ │ 일중 패턴 │
│──────────────────┼───────────────────────────────────────────── │
│ 2. 사이징 │ 주문 크기 분포, │
│ │ 라운드 로트 비율, 분산 │
│──────────────────┼───────────────────────────────────────────── │
│ 3. 배치 │ 중간가격으로부터의 거리, │
│ │ bid/ask 대칭성, 레벨 앵커링 │
│──────────────────┼───────────────────────────────────────────── │
│ 4. 반응 │ 체결, 취소, 가격 급변, │
│ │ 변동성 변화에 대한 응답 │
│──────────────────┼───────────────────────────────────────────── │
│ 5. 라이프사이클 │ 평균 주문 유효 기간, │
│ │ 취소 조건, modify vs cancel+new │
│──────────────────┴───────────────────────────────────────────── │
└─────────────────────────────────────────────────────────────────┘
파트 2: 특성 추출
자기 여기 Hawkes 프로세스: 지수 감쇠를 동반한 이벤트 클러스터
타이밍: 언제 그리고 얼마나 자주
타이밍 패턴은 핑거프린트에서 위조하기 가장 어려운 요소입니다. 알고리즘의 아키텍처, 네트워크 지연, 하드웨어, 심지어 개발자의 시간대에 의해 결정됩니다.
핵심 지표:
-
주문 간 간격(IOI) — 동일 참가자의 연속 주문 사이 시간. HFT 봇의 경우 IOI = 50
500 마이크로초. 수동 트레이더의 경우 수초수분. -
거래에 대한 반응 시간 — 주문 체결과 다음 행동 사이의 지연. 봇의 내부 아키텍처를 반영합니다.
-
일중 패턴 — 일일 활동 프로필. 기관 MM은 거래 세션 동안 운영됩니다. 암호화폐 봇은 24/7 운영됩니다.
-
자기 여기(Hawkes 강도) — 현재 주문이 다음 주문을 얼마나 강하게 "트리거"하는가. 마켓 메이커는 강한 자기 여기를 보입니다.
타이밍 패턴 모델링에는 Hawkes 프로세스 — 자기 여기 점 과정 — 가 이상적입니다. Hawkes 프로세스 매개변수(기저 강도 μ, 여기 계수 α, 감쇠율 β)는 참가자의 컴팩트한 "시간적 핑거프린트"를 형성합니다.
사이징: 얼마나 그리고 어떻게
- 크기 분포 — 주문 크기의 분포. 전문 MM은 종종 노이즈가 있는 라운드 로트를 사용: 100 ± 5, 500 ± 10.
- 크기-깊이 상관관계 — 주문 크기가 장부의 현재 깊이에 의존하는가?
- Bid-ask 크기 비대칭 — bid와 ask의 크기 비율. 스큐 패턴은 재고 관리의 "필적"입니다.
- 크기 자기상관 — 시간에 따른 크기의 반복성.
배치: 장부의 어디에
- 스프레드 오프셋 — 중간가격으로부터 틱 또는 bps 단위의 거리
- 레벨 선호 — 특정 레벨에 대한 앵커링(라운드 넘버?)
- 호가 대칭성 — bid와 ask 주문이 얼마나 대칭적인가
- 멀티레벨 풋프린트 — 동시에 몇 개의 레벨에 호가하는가
반응: 이벤트에 대한 응답
- 체결 후 행동 — 주문이 체결된 후 어떤 일이 발생하는가
- 변동성 응답 — 변동성이 증가할 때 행동이 어떻게 변하는가
- Quote-to-trade 비율(QTR) — 주문 업데이트 대 체결 비율
- 역선택 응답 — 포지션에 불리한 가격 움직임에 대한 반응
라이프사이클: 주문의 생명 주기
- 주문 유효 기간 분포 — 평균 주문 유효 시간
- Modify vs Cancel+New — modify로 업데이트하는가 cancel+new로 하는가?
- 취소 클러스터링 — 하나씩 취소하는가 배치로 취소하는가?
파트 3: 참가자 분류
시장 참가자 분류 체계: 마켓 메이커, HFT, 기회주의자, 펀더멘털, 노이즈 트레이더
시장 참가자의 분류 체계
행동 특성을 기반으로 참가자를 안정적인 범주로 분류할 수 있습니다. CFTC 연구(Kirilenko et al., 2011):
1. 마켓 메이커
- 80% 이상의 시간 동안 양방향 호가(bid + ask)
- 일말 기준 제로 또는 거의 제로의 순 포지션
- 높은 QTR(>100:1)
- 변동성에 스프레드 확대로 반응
2. 고빈도 트레이더(HFT)
- 초고 메시지율(>1000 이벤트/분)
- 매우 짧은 보유 기간(초 단위)
- 서브밀리초 반응 시간
3. 기회주의적 트레이더
- 중간 빈도
- 특정 시장 조건에 반응
- 불규칙한 타이밍, 이벤트 주변에 클러스터링
4. 펀더멘털 트레이더
- 장기 포지션 축적
- 낮은 빈도, 큰 주문 크기
- 실행에 TWAP/VWAP 알고리즘 사용
5. 노이즈 트레이더(개인투자자)
- 작은 크기, 불규칙한 타이밍
- 반응적: 가격 움직임 후에 거래, 이전이 아님
- 피크 변동성 시 시장가 주문
분류 방법
지도 학습: DEX 데이터(Hyperliquid)의 경우 알려진 마켓 메이커의 주소로 훈련 세트 구성 가능. RNN 모델로 정확도 >85% 달성.
비지도 학습:
- 스펙트럴 클러스터링(Cont et al., 2023) — 주문 흐름 패턴 유사도 행렬에 의한 클러스터링
- FIDR-SCAN(2024) — 특성 보간 + 차원 축소 + 밀도 기반 클러스터링
- 역강화학습(CFTC, 2014) — 각 트레이더의 보상 함수 복원
파트 4: 특정 마켓 메이커 식별
분류에서 식별로
분류는 "이것이 마켓 메이커인가?"라는 질문에 답합니다. 식별은 "이것이 그 특정 마켓 메이커인가?"라는 질문에 답합니다.
핑거프린트 벡터 구축
5가지 차원에서 수치 벡터 — 참가자의 임베딩 — 을 추출합니다:
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) │
└──────────────────────────────────────────────────────────┘
주소 클러스터링: "하나의 운영자 — N개의 지갑"
주소 클러스터 그래프: 하나의 운영자 — 여러 지갑, 행동 유사성으로 그룹화
Hyperliquid에서 단일 마켓 메이커는 수십~수백 개의 주소를 통해 운영할 수 있습니다.
클러스터링 알고리즘:
- 각 활성 주소에 대해 — N시간 윈도우에서 핑거프린트 벡터 구축
- 계층적 클러스터링 — 거리가 임계값 미만인 주소 병합
- 시간적 검증 — 시간에 따른 클러스터 안정성 확인
- 크로스 페어 검증 — 두 주소가 다른 페어를 거래하지만 핑거프린트가 일치하면 — 강한 신호
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: 조작 시나리오와 그 핑거프린트
스푸핑: 가짜 벽의 핑거프린트
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
스퀴즈: 유동성 함정
4가지 단계: 조용한 축적, 유동성 제거, 스톱 오더 캐스케이드, 이익 실현. 1단계에서 2단계로의 전환을 식별하여 실시간 감지가 가능합니다.
아이스버그 / 숨겨진 축적: 조용한 누적
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
워시 트레이딩: 자기 거래
동일 클러스터의 2개 이상의 주소가 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 │ 합계: 3,200 ║
║──────────────┼───────────────────────────────────────────────────────── ║
║ 내역: │ 🤖 MM (cluster#7, ~Wintermute): 800 lots [5 levels] ║
║ │ 🤖 MM (cluster#12, 미확인): 400 lots [3 levels] ║
║ │ ⚠️ 의심스러움 (spoof score 87): 500 lots [lifetime<2s]║
║ │ 🟡 @pro_scalper: 100 lots ║
║ │ 🔴 내 주문: 10 lots ║
║ │ 👤 개인투자자 / 미분류: 1,390 lots ║
║──────────────┼───────────────────────────────────────────────────────── ║
║ 앞선 대기열 │ 실질: ~1,200 (spoof 제외) 명목: 1,800 ║
║ "클린" ETA │ 6.7초 (명목 10초 대비) ║
║ 벽 유형: │ MM 지원 (65% MM 거래량) — 유지될 가능성 높음 ║
╚═══════════════════════════════════════════════════════════════════════════╝
알림
- 🔴 가격 수준에서 스푸프 감지 — 주문 앞에 의심스러운 블록이 식별됨
- 🟡 MM 철수 — 마켓 메이커가 호가를 철회하여 유동성 감소
- 🟡 스퀴즈 셋업 감지 — 주소 클러스터가 포지션을 축적하고 유동성을 제거 중
- 🟢 벽 강화 — 알려진 MM의 거래량이 해당 수준에 추가됨
파트 7: 윤리와 한계
허용되는 것과 허용되지 않는 것
허용되고 권장되는 것:
- 자체 거래 결정을 위한 익명 참가자의 유형별 분류
- 역선택 방어를 위한 조작 감지
- 시장 구조 이해를 위한 DEX 주소 클러스터링
허용되지 않는 것:
- 지갑 주소를 통한 개인 식별
- 동의 없이 식별된 패턴 판매
- 시장 조작을 위한 데이터 사용
한계
- 적응형 알고리즘 — 고급 MM은 무작위화를 추가
- 레짐 전환 — 단일 봇이 시장 레짐에 따라 행동을 변경 가능
- 거짓 양성 — 두 참가자가 우연히 유사한 매개변수를 공유할 수 있음
- CEX 불투명성 — L3 데이터는 CEX에서 이용 불가
결론: 장부 읽기에서 참가자 읽기로
전통적인 트레이더가 보는 것: 10000 수준에 2,400 로트. 고급 트레이더가 보는 것: "내 주문은 대기열에서 1,800번째, ETA — 15초." 그러나 행동 핑거프린팅을 가진 트레이더가 보는 것:
"2,400 중 800은 마켓 메이커(아마도 Wintermute)이고, 벽은 견고합니다. 500은 스푸프 의심이며, 내 앞의 실질 대기열은 1,800이 아니라 1,300입니다. 조정된 ETA — 10초. 마켓 메이커가 호가를 철회하지 않고 있으므로 — 당분간 큰 움직임은 예상되지 않습니다."
정보의 각 새로운 레이어는 엣지입니다. 그리고 속도와 달리, 주문장 해석의 품질은 개인 트레이더가 경쟁할 수 있는 영역입니다.
Marketmaker.cc에서는 큐 포지션부터 행동 핑거프린팅까지 통합 제품으로 이 시스템을 구축하고 있습니다.
시리즈의 이전 기사: "벽 안의 큐: 주문장 밀도에서의 주문 포지션 분석"
참고 문헌
- 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)
MarketMaker.cc Team
퀀트 리서치 및 전략