← 기사 목록으로
March 20, 2026
5분 소요

벽 안의 큐: 주문장 밀도에서의 주문 포지션 분석

벽 안의 큐: 주문장 밀도에서의 주문 포지션 분석
#order book
#queue position
#scalping
#market making
#FIFO
#algorithmic trading
#market microstructure

서론: 집계된 주문장이 거짓말하는 이유

주문장으로 거래하는 모든 트레이더는 같은 화면을 봅니다: 왼쪽에 bid, 오른쪽에 ask, 그리고 각 가격 수준에 — 지정가 주문의 총 거래량을 보여주는 숫자. 예를 들어:

Price 10001  |  150 lots
Price 10000  |  2,400 lots    wall
Price  9999  |  80 lots

10000 수준에 2,400 로트 — 이것이 "벽"(밀도)입니다. 그리고 여기에 대부분의 트레이더가 무시하는 매우 중요한 질문이 있습니다: 2,400 로트 중에서 우리의 주문은 정확히 어디에 있는가?

Price 10000  [ 1,800 lots BEFORE us ][ OUR ORDER 10 lots ][ 590 lots AFTER us ]

이것은 학문적 호기심이 아닙니다. 체결되는 주문과 체결되지 않는 주문의 차이입니다. 이익과 손실의 차이입니다. 아름다운 에쿼티 곡선을 보여주는 백테스트와 전략이 작동하지 않는 현실의 차이입니다.


큐 포지션이란 무엇이며 왜 계산하는가

가격 벽 내의 FIFO 큐 FIFO 큐의 시각화: 가격 수준에서 다른 주문 사이의 트레이더 위치

FIFO와 거래소의 현실

거래소의 대다수 — 전통적 거래소(CME, NASDAQ)와 암호화폐 거래소(Binance, Bybit, OKX) 모두 — 는 Price-Time Priority(FIFO) 규칙을 사용합니다. 즉, 같은 가격에서 먼저 배치된 주문이 먼저 체결됩니다.

시장가 매도 주문이 도착하여 우리의 bid 가격 수준을 "히트"하면, 큐의 선두부터 후미까지 순차적으로 지정가 주문을 체결합니다. 시장가 주문이 큐에서 우리의 위치에 도달할 만큼 충분히 크지 않으면 — 우리는 미체결 상태로 남습니다.

큐 포지션 가치의 두 가지 구성 요소

학술 연구(Moallemi & Yuan, Columbia Business School, 2017)는 큐 포지션 가치의 두 가지 구성 요소를 식별합니다:

  1. 정적 구성 요소 — 스프레드 캡처와 역선택 간의 트레이드오프. 큐에서 뒤에 있을수록, 대규모 정보를 가진 주문(노이즈가 아닌)으로 체결될 확률이 높아집니다. 간단히 말해: 큐에서 마지막에 체결되면 — 가격이 이미 불리하게 움직이고 있을 가능성이 가장 높습니다.

  2. 동적 구성 요소 — 시간 경과에 따른 큐 포지션 개선이 제공하는 옵션성. 우리 앞의 주문이 취소되거나 체결되면, 아무런 조치 없이도 우리의 위치가 개선됩니다.

실증 데이터는 틱 사이즈가 큰 상품에서 큐 포지션의 가치가 스프레드 크기에 비견될 수 있음을 보여줍니다. 이는 매우 큰 규모입니다.


큐 포지션 추정 방법

추정 문제

가격 P에 크기 S의 지정가 주문을 배치합니다. 배치 시점에 해당 가격 수준에 이미 Q 로트가 있습니다. 초기 포지션 추정값:

V̂(t₀) = Q(t₀)     — 우리 앞의 로트 수

다음으로, 가격 수준에서의 모든 거래량 변화를 추적합니다. 이것이 Erik Rigtorp이 설명하고 Trading Technologies(TT), Bookmap 등의 제품에 구현된 핵심 알고리즘입니다.

업데이트 알고리즘

가격 수준에서의 각 감소 ΔQ에 대해, 주문이 우리 앞에 있었는지 뒤에 있었는지 결정해야 합니다:

체결(execution)과 취소(cancellation)를 구별할 수 있는 경우:

  • 체결: 우리 앞의 큐를 명확하게 줄임 → V̂ = max(V̂ + ΔQ, 0)
  • 취소: 불확실성 — 취소된 주문이 앞에 있었을 수도 뒤에 있었을 수도 있음

취소에는 확률 모델이 사용됩니다:

V̂(n+1) = max(V̂(n) + p(n) × ΔQ(n), 0)

여기서 p(n)은 취소된 주문이 우리 앞에 있었을 확률입니다. 모델 패밀리:

p(n) = f(V̂(n)) / (f(V̂(n)) + f(max(Q(n) - S - V̂(n), 0)))

여기서 f(x)ln(1+x) 또는 항등 함수와 같은 증가 함수입니다. 직관: 뒤의 거래량에 비해 앞의 거래량이 클수록, 취소가 앞에서 발생했을 가능성이 높습니다.

데이터 레벨과 암호화폐 시장의 현실

추정 품질은 데이터 세분성에 직접적으로 의존합니다:

데이터 레벨 보이는 것 PIQ 추정 정확도
Level 1(BBO) 최우선 bid/ask + 거래량 추정 불가
Level 2(가격 집계) 각 가격 수준의 거래량 확률적 추정
Level 3(Market-by-Order, MBO) ID를 가진 각 개별 주문 정확한 포지션

암호화폐 시장 상황:

  • Binance — 100ms마다 업데이트되는 L2 depth 스트림 제공. L3(MBO) 데이터는 공개되지 않음.
  • Coinbase — 완전한 order-by-order 데이터를 가진 WebSocket을 통한 L3 스트림을 제공하는 소수의 CEX 중 하나.
  • CME(BTC/ETH 선물) — ITCH 피드를 통한 완전한 MBO 데이터.

대부분의 암호화폐 트레이더는 L2로 작업하며 확률적 추정에 의존합니다. 그러나 확률적 추정조차도 추정이 전혀 없는 것보다 근본적으로 우수합니다.


시각화: 미니 주문장으로서의 벽

각 중요한 밀도(벽)를 주문장 안의 미니 주문장으로 시각화할 것을 제안합니다:

╔════════════════════════════════════════════════════════════════╗
║  Price 10001150 lots                                     ║
╠════════════════════════════════════════════════════════════════╣
║  Price 10000[████████████░░░▓▓░░░░░░░]  2,400 lots       ║
║               │   ↑ 1,800 앞     ↑ 자신  ↑ 590 뒤            ║
║               │   소화 속도: ~120 lots/초                      ║
║               │   체결 예상 시간: ~15 초                       ║
╠════════════════════════════════════════════════════════════════╣
║  Price  999980 lots                                      ║
╚════════════════════════════════════════════════════════════════╝

실시간으로 계산되는 것

  1. 주문 앞의 로트 수 — 도달하기 전에 체결되거나 취소되어야 하는 거래량의 추정.

  2. 주문 뒤의 로트 수 — 이후에 배치된 거래량. 벽이 후미에서 빠르게 "팽창"하고 있으면 — 다른 참가자들이 이 수준을 매력적으로 판단.

  3. 큐 소화 속도 — 이 가격 수준에서의 실제 거래(execution)로 계산. lots/초로 표현.

  4. 체결 예상 시간(ETF) — 주문이 체결될 때까지의 시간 예측, lots_ahead / drain_rate로 계산.

  5. 하나의 밀도 내 복수 주문 — 봇은 같은 벽 내에 여러 주문이 있는 경우 각각의 포지션을 추적 가능.


스캘핑에서의 활용

큐 인식 백테스팅 나이브 vs 큐 인식 백테스팅 비교: 실제 체결 확률 vs 낙관적 추정

캔들 기반 백테스팅의 문제

OHLCV 캔들의 고전적 백테스트는 다음과 같이 작동합니다: 가격이 지정가 주문에 도달하면 — 체결로 카운트. 그러나 이것은 치명적 오류입니다:

예시. 10000에 buy-limit이 있습니다. 1분 캔들에서 low = 10000. 캔들 백테스트는 이를 체결로 카운트합니다. 그러나 현실에서는:

  • 10000 수준에 5,000 로트의 벽이 있었음
  • 우리 주문은 큐의 후미에 있었음(위치 4,800)
  • 해당 1분 동안 해당 수준에서 거래된 거래량은 2,000 로트뿐
  • 실제로 우리 주문은 체결되지 않았을 것

큐 인식 백테스팅은 이 문제를 해결합니다: 큐 포지션을 모델링하고, 틱 데이터에서 수준별 거래 거래량을 카운트하고, 거래된 거래량이 우리 위치에 도달하기에 충분했는지 결정합니다.

1분 내 복수 체결

활발한 스캘핑에서 주문은 1분 내에 여러 번 체결 및 재배치될 수 있습니다. 캔들 기반 백테스트는 이를 모델링할 수 없습니다. 큐 모델링을 포함한 틱 레벨 분석만이 다음을 가능하게 합니다:

  • 각 체결의 정확한 시간 결정
  • 주문을 재배치할 시간이 있는지 이해
  • 일정 간격 내에서 전략이 실제로 몇 번 트리거되었을지 추정

체결까지의 시간 예측

큐 포지션과 현재 벽의 "소화" 속도를 아는 봇은 다음이 가능합니다:

  1. ETA 계산 — 체결까지의 대략적 시간
  2. ETA와 가격 움직임 예측 비교 — ETA = 30초이지만 모델이 10초 후 반전을 예측하면, 주문을 취소해야 함
  3. 주문 크기 적응 — pro-rata 거래소(CME)에서는 더 큰 주문이 큐 선두에 가깝지만, FIFO 거래소에서는 크기가 큐 포지션에 영향 없음

소화 속도와 평균 비교

스캘퍼에게 매우 귀중한 지표: 현재 큐 소화 속도 vs N개 캔들의 평균 속도.

  • 평균 이상의 속도 → 시장가 주문 공격성 높음 → 벽을 "돌파"할 수 있음 → 체결 가능성 높음
  • 평균 이하의 속도 → 시장이 "정체" → 벽이 유지됨 → 주문이 체류하고 가격이 이탈할 수 있음

기존 구현 현황: 시장 개요

Trading Technologies(TT) — Position In Queue(PIQ)

가장 성숙한 구현. TT는 Floating Order Book 컬럼에 각 트레이더 주문의 PIQ를 표시합니다. 피드를 통해 큐 포지션 데이터를 직접 제공하는 거래소(CME, ICE)에서는 정확한 값이 표시됩니다. 나머지에서는 보수적 추정.

Bookmap Quant

Bookmap의 프로페셔널 버전($499/월)에는 주문 큐 포지션 시각화와 이벤트 내보내기가 포함됩니다. Bookmap Quant는 MBO 데이터를 사용하며, L0 API로 모든 데이터 소스용 커스텀 어댑터를 구축할 수 있습니다.

CQG — Queue Position Estimation

CQG는 선물 시장용 큐 포지션 추정을 제공합니다. 플랫폼은 L2/L3 데이터를 기반으로 확률적 PIQ 추정을 계산하고 DOMTrader 인터페이스에 표시합니다.

Rithmic — Order Queue Data

Rithmic은 큐 포지션 추정용 저지연 데이터 접근을 제공하는 시장 데이터 공급자입니다. 많은 프롭 트레이딩 회사와 알고리즘 트레이더가 자체 PIQ 모델을 구축하기 위한 인프라 레이어로 사용합니다.

Jigsaw Trading — Order Flow Visualization

Jigsaw Trading은 큐 포지션 추정을 포함한 주문 흐름 시각화를 전문으로 합니다. Depth & Sales와 Reconstructed Tape 도구는 트레이더가 가격 수준에서의 실제 실행 상황을 확인하는 데 도움을 줍니다.

학술 모델

  • Moallemi & Yuan(2017) — NASDAQ ITCH 데이터 기반 큐 포지션 평가의 형식 모델
  • Cont, Stoikov & Talreja(2010) — 출생-사망 과정 시스템으로서의 지정가 주문장 모델
  • Gould & Bonart(2015) — 중간가격 움직임의 예측 인자로서의 큐 불균형
  • Deep Learning 접근법 — 체결 확률과 체결 시간 추정을 위한 RNN 모델(Columbia, 2022)

시장에 존재하지 않는 것

기존 제품 중 어느 것도 스캘핑 봇에 맞춤화된 형식으로 암호화폐 시장의 벽 내부 구조 시각화를 제공하지 않습니다. 이것이 Marketmaker.cc가 채울 수 있는 틈새입니다.


조작 전략 대응

주문장 스푸핑 감지 가짜 벽 감지: 진짜 주문 vs 높은 취소율의 스푸핑 블록

벽의 내부 구조를 이해하는 것은 단순히 자신의 실행을 최적화하는 것만이 아닙니다. 조작에 대한 보호 도구이며, 숙련되게 사용하면 대형 플레이어의 의도를 읽는 도구입니다.

스푸핑: 가짜 벽

스푸핑은 실행 전에 취소할 의도로 대규모 주문을 배치하는 것입니다. 목적은 수요/공급에 대한 거짓 인상을 만드는 것입니다.

PIQ 분석이 도움이 되는 방법:

  • 벽 축적 속도. 진짜 벽은 점진적으로 형성됩니다. 스푸핑 벽은 즉시 나타납니다.
  • 가격 접근 시 행동. 진짜 벽은 유지됩니다. 스푸프 벽은 "도주합니다."
  • 취소율. 스푸퍼는 실행 전에 주문을 취소합니다. 배치/취소 비율을 추적하면 실시간 스푸프 감지가 가능합니다.
  • 주기성. 스푸핑은 종종 반복 패턴을 보입니다: 출현 → 소멸 → 새 수준에서 출현.

레이어링: 연쇄적 가짜 수준

레이어링은 여러 가격 수준에 걸쳐 가짜 주문을 배치하는 더 정교한 형태의 스푸핑입니다.

PIQ 분석이 도움이 되는 방법:

  • 상관된 취소. 5개 연속 수준의 주문이 동시에 취소되면 — 거의 확실히 단일 참가자에 의한 레이어링.
  • 주문장 비대칭. 진짜 유동성은 보통 비교적 균등하게 분포.
  • 체결에 대한 반응. 진짜 주문은 체결되며 "도주하지 않습니다."

아이스버그 주문: 숨겨진 유동성

아이스버그는 작은 가시적 부분으로 분할된 대규모 주문입니다. 한 부분이 체결되면 다음이 자동으로 나타납니다.

PIQ 분석이 도움이 되는 방법:

  • "불멸" 수준 패턴. 거래량이 지속적으로 체결되지만 감소하지 않음.
  • 흡수 분석. 가격이 벽에 도달하여 가시적 거래량을 체결시키지만 벽이 재생됨.
  • 흡수 중 큐 행동. 아이스버그 슬라이스가 체결되고 큐 후미에 재배치될 때마다 포지션이 "앞으로 미끄러짐."

벽 안의 "보이지 않는" 참가자로서의 마켓 메이커

전문 마켓 메이커는 여러 전술을 사용합니다:

  1. Quote stuffing — 경쟁자의 데이터를 "오염"시키기 위한 대량 주문 배치 및 취소
  2. Penny jumping — 경쟁자보다 1틱 나은 주문을 배치하여 우선권 확보
  3. Dynamic quoting — 큐 불균형 변화에 따른 실시간 주문 적응
  4. Level defense — 가격이 접근함에 따라 유동성 추가

구현: 큐 포지션 트래커 모듈 아키텍처

입력 데이터

1. WebSocket order book stream (L2 depth):
   - Best bid/ask updates
   - Depth updates (volume at each price level)

2. WebSocket trade stream:
   - Each trade: price, volume, side (buy/sell), timestamp

3. Own orders (from the trading bot):
   - order_id, price, size, placement timestamp

핵심 알고리즘(Python 유사 의사코드)

class QueuePositionTracker:
    def __init__(self, order_price, order_size, initial_depth):
        self.price = order_price
        self.size = order_size
        self.queue_ahead = initial_depth  # V̂(t₀) = Q(t₀)
        self.queue_behind = 0
        self.fill_velocity = EMA(span=30)  # EMA of fill rate

    def on_trade(self, trade_price, trade_size):
        """Called on each trade at our price level"""
        if trade_price == self.price:
            self.queue_ahead = max(self.queue_ahead - trade_size, 0)
            self.fill_velocity.update(trade_size)

    def on_depth_change(self, new_depth, change_type):
        """Called when depth changes at our price level"""
        if change_type == 'cancel':
            total = self.queue_ahead + self.size + self.queue_behind
            p_ahead = log(1 + self.queue_ahead) / (
                log(1 + self.queue_ahead) + log(1 + self.queue_behind)
            )
            cancelled = abs(new_depth - total)
            self.queue_ahead = max(
                self.queue_ahead - p_ahead * cancelled, 0
            )
            self.queue_behind = max(
                self.queue_behind - (1 - p_ahead) * cancelled, 0
            )
        elif change_type == 'new_order':
            added = new_depth - (self.queue_ahead + self.size + self.queue_behind)
            self.queue_behind += added

    @property
    def estimated_time_to_fill(self):
        """Estimated time to fill in seconds"""
        if self.fill_velocity.value <= 0:
            return float('inf')
        return self.queue_ahead / self.fill_velocity.value

    @property
    def fill_probability(self, horizon_sec=60):
        """Probability of fill within a given horizon"""
        expected_volume = self.fill_velocity.value * horizon_sec
        return min(expected_volume / max(self.queue_ahead, 1), 1.0)

중요한 엣지 케이스

  1. 벽이 완전히 "소진됨"queue_ahead가 0으로 떨어지면 다음 시장가 주문이 우리를 체결
  2. 대량 취소(벽 철회) — 벽이 갑자기 사라지고 queue_ahead가 급격히 변화
  3. 주문이 이동됨 — 취소 후 재배치 시 큐 후미로 이동
  4. 같은 벽 내 복수 주문 — 각각 독립적으로 추적

대시보드와 백테스팅용 지표

실시간(스캘핑 터미널)

지표 공식 색상
큐 포지션 % queue_ahead / total_depth × 100 초록 < 30%, 노랑 30-70%, 빨강 > 70%
체결 예상 시간 queue_ahead / fill_velocity
벽 건전성 depth_now / depth_5sec_ago 벽 안정성
흡수율 filled_volume / visible_depth 숨겨진 유동성 존재 여부
스푸프 점수 cancel_rate × sudden_appear × distance_from_price 0-100, 가짜 지표

백테스팅용(큐 인식 시뮬레이션)

  1. 큐 조정 체결률 — 큐 포지션을 고려한 실제 체결된 주문의 비율
  2. 실효 체결 지연 — 배치에서 실행까지의 실제 시간
  3. 체결당 역선택 — 체결 후 불리한 평균 가격 움직임
  4. 큐 속도 상관관계 — 큐 소화 속도와 후속 가격 움직임 간의 상관관계

소셜 주문장: 벽 안의 팀 주문

소셜 주문장 3단계 가시성 모델: 벽 안의 개인 주문, 구독, 팀 포지션

Tier 1: 거래소 또는 트레이딩 플랫폼

거래소나 트레이딩 터미널이라면, 모든 사용자의 주문 포지션에 대한 절대적 지식을 보유합니다. 플랫폼은 다른 참가자의 신원을 공개하지 않고 각 사용자에게 주문 앞뒤에 얼마나 많은 "다른" 거래량이 있는지 표시할 수 있습니다.

Tier 2: Marketmaker.cc 플랫폼 — 개인 주문 + 소셜 레이어

Marketmaker.cc에서는 벽 내에서 3단계 주문 가시성 모델의 구현을 계획하고 있습니다:

개인 주문 — 기본 레이어. 각 트레이더는 개별 지표를 가진 모든 자신의 주문을 봅니다.

구독 주문(시그널 제공자) — 구독을 통해 포지션을 공유하는 트레이더. 옵트인 메커니즘: 리더가 포지션 표시 여부를 결정.

팀 주문(트레이딩 팀 / 펀드) — 전문 그룹에게 가장 가치 있는 레이어. 해결하는 문제: 주문 충돌, 유동성 배분, 팀 리스크 모니터링, 교육.

권한 모델

┌─────────────────────────────────────────────────────────────┐
│  트레이더의 주문                                               │
│                                                              │
│  볼 수 있는 대상:                                              │
│  ├── 트레이더 본인         → 항상                              │
│  ├── 구독자               → 트레이더가 활성화한 경우            │
│  │   ├── 표시 지연         → 설정 가능 (0s–60s)               │
│  │   ├── 크기 표시         → 예 / 숨김 / 반올림               │
│  │   └── ETA 표시          → 예 / 아니오                      │
│  └── 팀                   → 팀에 소속된 경우                   │
│      ├── 지연             → 설정 가능 (0s–5s)                 │
│      ├── 크기 표시         → 예 (리스크 관리용)                │
│      └── 역할 가시성       → 트레이더 / 매니저 / 뷰어          │
└─────────────────────────────────────────────────────────────┘

완전한 투명성: DEX 거래소와 온체인 주문장

온체인 주문장이 있는 DEX 거래소 — 주로 Hyperliquid — 에서는 모든 주문이 특정 지갑 주소에 연결됩니다. 집계된 벽뿐만 아니라 각 참가자의 개별 주문을 볼 수 있습니다.

그러나 이 데이터를 실시간으로 처리하려면 자체 Hyperliquid 블록체인 노드를 운영해야 합니다.

조작자 주문의 자동 식별

네 번째 시각화 레이어 — 참가자 유형에 따른 알고리즘적 주문 분류: 마켓 메이커, 스푸퍼, 개인투자자. 분류 알고리즘은 여러 수준에서 작동합니다: 스푸핑 감지, 마켓 메이커 분류, 스퀴즈 시나리오 감지, 트레이더 디지털 핑거프린팅.

자세한 내용은 시리즈의 다음 기사에서: "트레이더의 디지털 핑거프린트: 주문장 행동으로 마켓 메이커를 식별하는 방법"


결론

주문장 밀도 내 주문 포지션 분석은 "주문장을 보는 것"에서 "시장 미세구조를 이해하는 것"으로의 다음 진화 단계입니다. 이것은 다음이 교차하는 영역입니다:

  • 큐잉 이론 — 큐 모델링
  • 확률적 주문 흐름 모델 — 체결 확률 추정
  • 기계 학습 — 스푸핑 감지 및 벽 행동 예측
  • 저지연 엔지니어링 — 실시간 데이터 수신 및 처리

현재 암호화폐 시장의 어떤 제품도 사용자 주문 포지션, ETA 추정, 스푸핑 감지, 큐 인식 백테스팅을 단일 인터페이스에서 통합한 "미니 주문장으로서의 벽" 포괄적 시각화를 제공하지 않습니다.

Marketmaker.cc에서는 솔로 스캘퍼부터 프롭 트레이딩 팀까지 모든 트레이더에게 이 분석을 접근 가능하게 만들기 위해 노력하고 있습니다.



출처 및 참고 자료

blog.disclaimer

MarketMaker.cc Team

퀀트 리서치 및 전략

Telegram에서 토론하기
Newsletter

시장에서 앞서 나가세요

뉴스레터를 구독하여 독점적인 AI 트레이딩 통찰력, 시장 분석 및 플랫폼 업데이트를 받아보세요.

귀하의 개인정보를 존중합니다. 언제든지 구독을 취소할 수 있습니다.