프리미엄
예측대회
투자분석
아카데미
커뮤니티
로그인Valley AI 시작하기시작하기
Valley Space인기
[DOCS] Limit Order Market Making
wongCrypto HFT

[DOCS] Limit Order Market Making

avatar
Wong
2025.12.17조회수 54회
avatar
Wong
구독자 22명구독중 4명
안녕하세요. 개발과 경제에 관심있는 ADAS 연구원입니다. https://github.com/Wong-Woo
  • 매수, 매도 주문을 동시에 제출하여 스프레드와 거래소 리베이트를 취하는 전략

  • 짧은시간 동안 가격 떨림(틱단위로)이 발생하면 그 사이에서 엄청난 거래를 반복하면서 돈을 버는 방법

    • 예를들어, 1초동안 100원과 100.1원 사이를 1000번 왔다갔다 했다면 매매 기회가 1000번 포착되는 것, 이를 통해 돈을 벌 수 있음 (거래소 수수료 제외 0.1원*1000 ⇒ 초당 100원 수익)

로직

적정가 계산 방법

  1. micro price

Pmicro=Vbid⋅Pask+Vask⋅PbidVbid+VaskP_{micro} = \frac{V_{bid} \cdot P_{ask} + V_{ask} \cdot P_{bid}}{V_{bid} + V_{ask}}Pmicro​=Vbid​+Vask​Vbid​⋅Pask​+Vask​⋅Pbid​​
  • V: 오더북 L1 혹은 L1~L5까지의 Volume

  1. order book imbalance

ρ=Vbid−VaskVbid+Vask\rho = \frac{V_{bid} - V_{ask}}{V_{bid} + V_{ask}}ρ=Vbid​+Vask​Vbid​−Vask​​
  • ρ값이 크면 bid(매수) ...

회원가입만 해도
이 글을 무료로 읽을 수 있어요.

Basic 7일 무료 체험 시작하기
이미 계정이 있으신가요?로그인하기
댓글 1개
avatar
플라톤
2026.03.17

order flow imbalance 도 구해볼 수 있을 것 같습니다.

Crypto HFT 카테고리의 다른글

[DOCS] HFT Backtest 원리, 환경설정, 프로세스

백테스트 원리 HFT 백테스트란? 과거 시장 데이터를 사용하여 틱(tick) 단위로 오더북을 재구성하고, 주문의 체결 과정을 시뮬레이션하는 것입니다. 일반 백테스트와 달리, HFT 백테스트는 다음을 정밀하게 시뮬레이션합니다: 오더북의 실시간 변화 (호가 추가/삭제) 주문이 호가창에서 대기하는 큐(Queue) 위치 주문 전송 및 응답 레이턴시(Latency) 부분 체결(Partial Fill) 가능성 3가지 핵심 메커니즘 1. Snapshot (초기 오더북 생성) T=0T=0 시점에 오더북의 초기 상태를 설정 시간: 00:00:00.000 ┌─────────────────────┐ │ Ask (매도 호가) │ ├─────────────────────┤ │ $61,010 → 0.5 BTC │ │ $61,005 → 1.2 BTC │ │ $61,000 → 2.0 BTC │ ← Best Ask ├─────────────────────┤ │ $60,995 → 1.8 BTC │ ← Best Bid │ $60,990 → 1.5 BTC │ │ $60,985 → 0.8 BTC │ ├─────────────────────┤ │ Bid (매수 호가) │ └─────────────────────┘ 2. Incremental (호가 변경 반영) T>0T>0 이후, 실시간으로 오더북 업데이트 이벤트 1 (T=100ms): 새로운 매도 호가 추가 → $61,000에 0.3 BTC 추가 → 호가창: $61,000 → 2.0 + 0.3 = 2.3 BTC 이벤트 2 (T=150ms): 매수 호가 취소 → $60,995에서 0.5 BTC 제거 → 호가창: $60,995 → 1.8 - 0.5 = 1.3 BTC 이벤트 3 (T=200ms): 시장가 매수 체결 → Best Ask($61,000)에서 1.0 BTC 체결 → 호가창: $61,000 → 2.3 - 1.0 = 1.3 BTC 3. Trades (내 주문의 큐 관리 및 체결) 호가창에 제출한 내 주문의 대기 순서와 체결 시뮬레이션 시나리오: $61,000에 매도 지정가 주문 0.5 BTC 제출 초기 상태: $61,000 호가창: 2.0 BTC 대기 중 내 주문: 2.0 BTC 뒤에 대기 (큐 포지션 = 2.0) 이벤트 1: 0.8 BTC 시장가 매수 체결 → 큐 포지션: 2.0 - 0.8 = 1.2 BTC 이벤트 2: 1.2 BTC 시장가 매수 체결 → 큐 포지션: 1.2 - 1.2 = 0 → ✅ 내 주문 체결 시작 이벤트 3: 0.5 BTC 시장가 매수 체결 → ✅ 내 주문 0.5 BTC 전량 체결 완료 HFTBacktest Asset 설정 메서드 1. 데이터 설정 .data(data) 백테스트에 사용할 피드 데이터 설정 Parameters: data (str | List[str] | ndarray): 파일 경로 또는 numpy 배열 Example: asset.data(['BTCUSDT_20240626.npz']) .initial_snapshot(snapshot) 백테스트 시작 시점의 초기 오더북 스냅샷 설정 Parameters: snapshot (str | ndarray): 초기 스냅샷 파일 경로 또는 numpy 배열 Example: asset.initial_snapshot('BTCUSDT_20240626.npz') 2. 자산 타입 .linear_asset(contract_size) 선형 계약 자산 설정 (USDT-margined futures, BTC-marin 거래소에서 백테스트시 inverse_asset을 사용하는데 지금은 거의 사용하지 않음) Parameters: contract_size (float): 계약 크기 (1계약당 거래 수량, 거래소마다 수량 다를 수 있음. 일반적으로는 1임) Example: ...
Crypto HFT
2025. 12. 06
2
3
79

[DOCS] nkaz001 hftbacktest

개요 HFT 백테스팅 프레임워크 주문 대기 시간, 주문 입력 지연 시간, 주문 대기열 위치가 고려된 주문 체결 시뮬레이션 특징 Numba JIT function 사용 파이썬 코드로 작성되지만 Numba JIT 컴파일러 사용으로 C/C++급 연산속도 도달 가능 틱 수준 가격변화 구현 / 데이터 피드 업데이트 시간 주기 커스터마이징 가능 풀사이즈 오더북 구현 데이터 피드 및 주문 시 레이턴시 반영 가능 주문 대기열 구현 다양한 종목과 거래소를 대상으로 백테스팅 가능 러스트 환경에서 실시간 트레이딩 봇 배포 서비스 가능 예제코드 import numpy as np from numba import njit from hftbacktest import ( BacktestAsset, HashMapMarketDepthBacktest, COL_PRICE, COL_QTY, COL_SIDE, GTX, # Post-Only (Maker 주문) LIMIT, # 지정가 주문 BUY, SELL, Linear, # 선형 지연 모델 ConstantLatency # 상수 지연 모델 ) # --------------------------------------------------------- # 1. (임시) 테스트용 가상 데이터 생성 함수 # 실제 사용 시에는 바이낸스 틱 데이터를 수집하여 .npz로 변환해야 합니다. # --------------------------------------------------------- def generate_dummy_data(filename): print("가상 데이터 생성 중...") # 1시간 분량의 데이터 (대략적인 구조만 모방) # 실제 데이터는 timestamp(us), local_timestamp, type, price, qty, ... 등의 컬럼이 필요함 # 간단한 사인파 형태로 가격이 움직인다고 가정 t = np.arange(0, 3600 * 1_000_000, 100_000, dtype=np.int64) # 0.1초 간격 price = 1000 + 10 * np.sin(t / 10_000_000) # hftbacktest용 데이터 배열 생성 (rows, cols) # 컬럼 포맷은 hftbacktest 문서 참조 (일반적으로 6개 이상의 컬럼) data = np.zeros((len(t), 6), dtype=np.float64) # Event Type 1: Depth Update (매우 단순화됨) data[:, 0] = 1 # Event Type data[:, 1] = t # Exchange Timestamp data[:, 2] = t + 1000 # Local Timestamp (1ms latency) data[:, 3] = 1 # Side (의미 없음, 스냅샷 갱신용) data[:, 4] = price # Price data[:, 5] = 1.0 # Qty # 데이터를 npz 포맷으로 저장 # 실제로는 ask/bid가 나뉘어 들어오지만, 예제 구동을 위해 단순화 np.savez_compressed(filename, data=data) print(f"{filename} 생성 완료.") # --------------------------------------------------------- # 2. 전략 로직 (Numba JIT 컴파일) # --------------------------------------------------------- @njit def grid_maker_strategy(hbt): # 설정값 half_spread = 0.5 # 중간 가격 대비 0.5만큼 벌려서 주문 grid_interval = 1_000_000 # 1초 (마이크로초 단위) order_qty = 0.01 # 주문 수량 # 백테스트 시작 while hbt.elapse(grid_interval) == 0: # 현재 시장가 확인 (Best Bid/Ask) # 데이터가 충분하지 ...
Crypto HFT
2025. 11. 24
2

[TODO] HFT 학습 로드맵

백테스팅 프레임워크 https://github.com/nkaz001/hftbacktest AI 워크스페이스 구성하기 마켓메이킹 전 체크리스트 시장 구조 학습 현물 vs 선물 (변동성, 유동성, 스프레드 구조) 수수료 구조(maker, taker)에 따른 타겟 스프레드 주문 조건 (호가 단위, 최소 주문 수량, 최소 주문 금액) 리스크 관리 매매 로직보다 우선되어야 함 최대 포지션 최대 일 손실 최대 단일 포지션 손실 킬스위치 전략 구현 및 실습
Crypto HFT
2025. 11. 24
1
1
48
0
48