주문 지연(레이턴시) — 버튼을 누른 순간과 체결된 순간 사이에서 벌어지는 일
차트에 $80,000이 찍혀 있어서 눌렀는데 체결가는 $80,050이었습니다. 대부분 이걸 슬리피지 하나로 설명하지만, 그 앞에 더 단순한 원인이 있습니다. 누른 시점과 체결된 시점이 같은 순간이 아니라는 것입니다. 그 사이의 시간을 레이턴시(지연)라고 부릅니다.
클릭과 체결 사이는 한 구간이 아니다
주문 한 건은 여러 단계를 지나갑니다. 각 단계가 조금씩 시간을 먹고, 그 합이 실제 지연입니다. 어디가 느린지 모르면 엉뚱한 곳을 고치게 됩니다.
① 입력 화면이 가격을 그리고 내가 누르기까지
② 전송 내 기기 → 거래소 서버
③ 대기 서버 안에서 매칭 엔진 차례를 기다림
④ 매칭 호가와 맞춰 체결 처리
⑤ 응답 결과가 다시 내 화면까지
─────────────
내가 보는 것 = ①의 시작과 ⑤의 끝
실제 가격이 정해지는 곳 = ④
즉 나는 이미 지난 가격을 보고 누른다
여기서 중요한 건 ④가 ①보다 뒤에 있다는 사실입니다. 화면에 그려진 가격은 거래소가 조금 전에 보내준 값이고, 내 주문이 매칭 엔진에 도착할 때쯤이면 호가는 이미 다른 모습입니다. 체결가가 화면과 다른 것은 오류가 아니라 이 순서의 결과입니다.
0.4초가 얼마인지 숫자로 본다
지연은 밀리초 단위라 감이 안 옵니다. 가격으로 바꿔보면 바로 보입니다.
BTC $80,000 · 수량 0.1 (명목 $8,000)
가정 화면 갱신 0.15초 + 전송 0.10초
+ 대기·매칭 0.05초 + 여유 0.10초
= 총 0.40초
평소 변동성에서 0.4초 동안 가격이
0.03% 움직였다고 하면
80,000 × 0.0003 = $24
내 손해 = 0.1 × 24 = $2.4
─────────────
하루 10회 거래 → $24
한 달 20일 → $480
같은 조건에서 왕복 수수료(0.10%)는
8,000 × 0.001 = $8 / 1회
지연 비용은 그 약 30% 크기다
수수료는 명세서에 찍히니까 다들 신경 씁니다. 지연 비용은 어디에도 찍히지 않아서 없는 셈 치게 됩니다. 하지만 위 계산처럼 거래 횟수가 많아질수록 무시할 수 없는 크기가 됩니다. 이 비용까지 포함한 손익분기 계산은 왕복 거래비용 쪽 정리와 같이 보면 됩니다.
참고로 위 숫자는 구조를 보여주기 위한 가정입니다. 실제 지연은 회선·기기·거래소·시간대에 따라 몇 배씩 달라집니다.
시장가와 지정가는 손해 보는 방식이 다르다
같은 지연인데 주문 종류에 따라 결과가 다르게 나타납니다. 이걸 구분하지 못하면 대책도 엉뚱해집니다.
시장가 — 가격이 밀린다
도착했을 때 호가가 이미 위로 이동
→ 더 비싸게 체결
→ 손해가 즉시 확정
지정가 — 순번이 밀린다
같은 가격에 남들이 먼저 도착
→ 대기열 뒤에 붙음
→ 체결 자체가 안 될 수 있음
─────────────
시장가 = 확실히 들어가되 비싸게
지정가 = 싸게 들어가되 못 들어갈 수도
지정가 쪽 손해는 눈에 안 보여서 더 헷갈립니다. 체결이 안 됐으니 손실 기록도 없지만, 들어갔어야 할 자리를 놓친 것은 분명한 비용입니다. 같은 가격에 걸었는데 남의 주문만 체결되는 구조는 지정가 주문 대기열(Queue)에 따로 정리돼 있고, 시장가 쪽에서 가격이 밀리는 폭 자체는 슬리피지가 큰 이유와 줄이는 법이 다룹니다. 둘 중 뭘 쓸지는 결국 지정가 vs 시장가의 선택 문제로 돌아옵니다.
필요할 때 하필 더 느려진다
지연에서 가장 곤란한 성질은 평균이 아니라 분포입니다. 평소에는 짧고, 급변할 때 길어집니다.
평소
지연 0.3초 · 0.3초 변동 0.02%
→ 밀림 $16 (BTC $80,000 기준)
급변
주문 폭주로 지연 1.5초
같은 시간 변동 0.40%
→ 밀림 $320
─────────────
지연 5배 × 변동 20배 = 체감 20배
두 값이 같은 방향으로 동시에 커진다
손절이 특히 이 구간에 몰립니다. 급락이 오면 모두가 동시에 던지고, 그때 주문 처리는 가장 느리고 호가는 가장 얇습니다. 손절 폭을 평상시 기준으로만 잡아두면 실제로 체결되는 가격은 계획보다 훨씬 아래일 수 있습니다. 조건부 주문이 발동 시각과 체결 시각 사이에서 벌어지는 문제는 조건부 주문이 발동하지 않는 이유에서 더 자세히 볼 수 있습니다.
내 지연을 직접 재는 법
남의 벤치마크는 의미가 없습니다. 내 회선, 내 기기, 내가 쓰는 거래소에서 재야 합니다.
1) 소액 시장가 주문을 같은 조건으로 20회
2) 각 주문에서 두 시각을 기록
· 보낸 시각 (내 기기 기준)
· 체결 시각 (거래소 응답 기준)
3) 차이를 모아 분포를 본다
─────────────
볼 것은 평균이 아니라
· 중앙값 = 보통 얼마나 걸리나
· 최댓값 = 최악에 얼마나 걸리나
주의: 두 시각의 기준 시계가 다르다
내 PC 시계가 틀어져 있으면 측정도 틀린다
마지막 줄이 실무에서 자주 걸리는 부분입니다. 내 컴퓨터 시계가 몇 초 어긋나 있으면 지연이 음수로 나오거나 터무니없이 크게 나옵니다. 거래소 API를 쓴다면 서버 시각을 조회해 차이를 먼저 보정하고, 시계 동기화도 켜두는 편이 안전합니다. 요청이 몰려 응답 자체가 늦어지는 상황은 지연이 아니라 한도 문제일 수 있으니 API 요청 한도와 429 에러도 같이 확인합니다.
줄일 수 있는 것과 없는 것
지연을 0으로 만들 수는 없습니다. 구간별로 손댈 수 있는 곳과 없는 곳을 나눠보면 할 일이 분명해집니다.
줄일 수 있음
· 유선 연결 (무선보다 안정적)
· 브라우저 탭·프로그램 정리
· 차트 지표 개수 줄이기
· 미리 수량·가격 입력해두기
거의 못 줄임
· 물리적 거리에 따른 전송 시간
· 거래소 서버 내부 처리
· 폭주 구간의 대기
─────────────
가장 크게 줄어드는 건 대개 ① 입력
사람이 판단하고 누르는 시간이
기술적 지연보다 훨씬 길다
맨 아랫줄이 핵심입니다. 전송 구간에서 0.05초를 아끼려 애쓰는 것보다, 진입 조건을 미리 정해두고 조건부 주문을 걸어두는 편이 훨씬 큰 시간을 줄입니다. 화면을 보다가 판단하고 클릭하는 데는 보통 1초 이상 걸리기 때문입니다.
지연을 없애는 대신 설계로 흡수한다
현실적인 대응은 지연을 없애는 게 아니라, 지연이 있어도 계획이 깨지지 않게 만드는 것입니다.
· 손절 폭에 지연분을 미리 얹는다
계획 손절 0.5% → 실제 체결 0.6%로 가정
· 진입·손절을 미리 조건부로 걸어둔다
클릭 반응 시간을 통째로 제거
· 0.1% 차이로 이기고 지는 전략은 피한다
지연 하나로 결과가 뒤집힌다
· 급변 구간에서는 수량을 줄인다
밀림 폭이 커지는 시간대이므로
─────────────
기준
지연 비용이 기대 수익의 10%를 넘으면
그 전략은 지연에 지나치게 민감하다
마지막 기준이 실전에서 유용합니다. 1회 기대 수익이 $20인데 지연 비용이 $5씩 나간다면, 그 전략은 아이디어가 아니라 체결 환경 때문에 무너집니다. 이런 전략은 보유 시간을 늘리거나 목표 폭을 키워 지연 비중을 낮추는 쪽이 맞습니다. 백테스트에서 좋았던 결과가 실전에서 무너지는 흔한 원인이기도 해서, 검증 단계에서 미리 비용을 넣어봐야 합니다 — 관련 함정은 백테스트 쪽에 정리돼 있습니다.
봇에서는 폴링 주기가 진짜 지연이다
자동매매를 쓰면 사람의 클릭 시간이 사라지지만, 대신 다른 지연이 생깁니다.
가격 조회 주기 3초
+ 판단·주문 생성 0.05초
+ 전송·매칭 0.20초
─────────────
최악의 경우 3.25초
이 중 3초가 코드가 아니라 설정
· 3초 주기 = 최대 3초 늦게 안다
· 실시간 스트림 = 발생 즉시 안다
사람 클릭(1초+)보다 느릴 수도 있다
봇이 느린 이유를 코드 최적화에서 찾다가 정작 조회 주기를 그대로 두는 경우가 많습니다. 주기적으로 물어보는 방식은 구조상 그 주기만큼 늦게 알 수밖에 없습니다. 반응 속도가 중요한 전략이라면 조회 주기부터 확인하는 편이 빠릅니다. 자동매매에 대한 기대와 실제 차이는 자동매매 환상과 현실에 더 있습니다.
정리
② 지연 구간 = 입력 · 전송 · 대기 · 매칭 · 응답
③ 0.4초 지연도 거래 횟수가 쌓이면 수수료급 비용이 된다
④ 시장가는 가격이 밀리고, 지정가는 순번이 밀린다
⑤ 지연과 변동성은 같이 커진다 — 손절 구간이 가장 불리하다
⑥ 측정은 보낸 시각과 체결 시각으로, 중앙값과 최댓값을 같이 본다
⑦ 두 시각의 기준 시계가 다르면 측정 자체가 틀린다
⑧ 가장 큰 지연은 대개 사람이 판단하고 누르는 시간이다
⑨ 대책은 제거가 아니라 흡수 — 손절 폭에 얹고, 미리 걸어둔다
⑩ 봇에서는 조회 주기가 진짜 지연이다
한 줄로 줄이면 이렇습니다. 나는 항상 조금 과거의 가격을 보고 결정합니다. 이걸 없앨 방법은 없으니, 없앨 수 없는 만큼을 계획에 미리 넣어두는 것이 유일한 대응입니다. 지연 0.1초를 다투는 자리에서 경쟁하지 않는 전략을 고르는 것도 같은 이야기입니다.
주의
본문의 지연 시간, 변동 폭, 수수료율, 손익 금액은 구조를 설명하기 위한 가정 예시이며 특정 거래소나 종목의 실제 측정값이 아닙니다. 실제 지연은 회선·기기·지역·거래소·시간대에 따라 크게 달라지므로 직접 측정해야 합니다. 레버리지 거래는 원금 전액을 잃을 수 있으며, 투자 판단과 그 결과는 본인 책임입니다.
NOONOO TRADING 무료 채팅방에서 실시간 트레이딩을 같이 보세요.
무료 채팅방 입장 →📈 OKX 신규 가입 시 거래 수수료 할인
OKX 수수료 할인 가입 →