호가창 읽기: 시장 미시구조 기초
대부분의 초보자는 차트(체결된 과거)를 봅니다. 하지만 시장이 지금 무엇을 원하는지는 호가창(아직 체결되지 않은 미래의 의사)에 있습니다. 봇을 만들며 호가를 다루다 보니, 차트만 볼 때는 안 보이던 것들이 보였습니다.
⚠️ 이 글은 교육·정보 제공 목적입니다. 호가 해석이 수익을 보장하지 않으며, 투자 손실 책임은 본인에게 있습니다.
1. 호가창의 구조
호가창은 사려는 사람(매수 호가)과 팔려는 사람(매도 호가)의 대기 주문 목록입니다. 국내 증권사 실시간 시세는 보통 매수·매도 각 10호가와 잔량을 함께 줍니다.
가격 잔량
매도10 10,050 1,200
...
매도2 10,010 800
매도1 10,005 300 ← 지금 사면 여기서 체결
------- 스프레드 5원 -------
매수1 10,000 500 ← 지금 팔면 여기서 체결
매수2 9,995 900
...
매수10 9,955 2,000
실시간 봇은 이 데이터를 이렇게 파싱해 들고 있습니다. KIS 웹소켓 호가(H0STASP0)에서 매도1호가·매수1호가와 각 잔량을 뽑는 식입니다.
type RealtimeQuote struct {
AskPrice float64 // 매도1호가 (내가 사는 값)
BidPrice float64 // 매수1호가 (내가 파는 값)
AskQty int64 // 매도1호가 잔량
BidQty int64 // 매수1호가 잔량
}
2. 스프레드 — 거래 비용의 하한
스프레드 = 매도1호가 − 매수1호가. 지금 사서 곧바로 팔면 이 차이만큼 즉시 손해입니다. 즉 스프레드는 왕복 거래의 최소 비용이자, 그 종목의 유동성을 재는 첫 번째 지표입니다.
spread := q.AskPrice - q.BidPrice
spreadPct := spread / q.BidPrice * 100
// 스프레드가 넓으면 단타 진입 자체를 보류
if spreadPct > 0.30 {
// 유동성 부족 — 체결 비용이 엣지를 잡아먹음
return skip
}
스프레드가 좁으면(대형 우량주·주요 ETF) 언제든 낮은 비용으로 드나들 수 있고, 넓으면(소형주·거래 한산) 들어가는 순간 이미 지고 시작합니다.
3. 잔량이 말하는 것 — 그리고 속이는 것
매수 잔량이 매도보다 두껍다면 매수 대기 압력이 크다고 읽을 수 있습니다. 호가 불균형(imbalance)은 단기 방향의 힌트가 됩니다.
imbalance := float64(q.BidQty-q.AskQty) / float64(q.BidQty+q.AskQty)
// +1에 가까움 → 매수 우위, -1에 가까움 → 매도 우위
다만 호가 잔량은 약속이 아닙니다. 대기 주문은 언제든 취소되고, 실제로 두꺼운 벽처럼 보이던 잔량이 체결 직전 사라지기도 합니다(스푸핑). 그래서 잔량은 참고 신호일 뿐, 단독 근거로 삼지 않습니다. 한 순간의 스냅숏보다 잔량이 쌓이고 걷히는 흐름이 더 믿을 만합니다.
4. 봇은 호가를 어떻게 쓰나
봇에게 호가는 세 가지 실전 용도가 있습니다.
- 진짜 체결가 추정: 신호는 현재가로 나지만, 실제로 사는 값은 매도1호가입니다. 봇은
AskPrice·BidPrice로 실제 진입 비용을 미리 계산합니다. 차익거래에서는 이 한 틱 차이가 수익/손실을 가릅니다. - 유동성 게이트: 스프레드가 넓거나 1호가 잔량이 내 주문보다 얇으면 진입을 건너뜁니다. "좋은 신호"라도 빠져나올 수 없는 자리면 들어가지 않습니다.
- 주문 크기 결정: 1호가 잔량 안에서 체결되도록 수량을 맞추면 슬리피지가 최소화됩니다(슬리피지 편 참고).
// 현재가가 아니라 실제 체결가로 갭 재계산
if q != nil && q.AskPrice > 0 && q.BidPrice > 0 {
askNavGap = (q.AskPrice - nav) / nav * 100.0 // 살 때 기준
bidNavGap = (q.BidPrice - nav) / nav * 100.0 // 팔 때 기준
}
정리
- 차트는 과거, 호가창은 지금의 의사 — 봇은 둘 다 본다
- 스프레드는 왕복 거래의 최소 비용이자 유동성의 첫 지표
- 잔량 불균형은 힌트지만 취소·스푸핑으로 속일 수 있다 — 흐름으로 읽기
- 봇은 호가로 실제 체결가 추정·유동성 게이트·주문 크기를 결정
호가창을 읽는다는 건 미래를 맞히는 게 아니라, 지금 이 자리에서 사고팔 수 있는 실제 조건을 정직하게 보는 일입니다. 그 정직함이 백테스트와 실전의 간극을 좁힙니다.
댓글
댓글 쓰기