AlgoLab Blog · 잠재고객 눈높이 · 2026 실전

"분명 이 가격이었는데" 왜 다른 값에 사졌을까

체결·슬리피지 2026-07-06 · 약 15분 읽기 · 알고랩 AlgoLab

봇이 55,000원에 사라고 했는데, 나중에 체결내역을 보니 평균 55,180원. 100만 원어치를 주문했는데 절반만 채워지고 나머지는 "미체결". 혹은 지정가로 걸어둔 주문이 몇 시간째 그대로 매달려 있다가 사라졌습니다. 자동매매를 처음 돌려본 분들이 거의 예외 없이 겪는 당황스러움입니다. 이 글은 왜 그런 일이 벌어지는지를, 코딩이나 트레이딩 용어를 몰라도 이해되도록 그림 한두 장과 함께 풀어씁니다. 그리고 잘 만든 봇은 이 '체결의 현실'을 어떻게 다루는지까지, 맡기려는 분이 무엇을 확인해야 하는지 관점에서 정리합니다.

이 글의 흐름

  1. "주문했다 ≠ 원하는 값에 다 샀다" — 세 가지 흔한 장면
  2. 가격표는 하나가 아니다 — 호가창이라는 계단
  3. 지정가 vs 시장가 — 자동매매의 가장 근본적인 선택
  4. 슬리피지: 시장가가 계단을 먹고 올라가는 원리 (숫자 예시)
  5. 미체결·부분체결: 지정가가 안 사지는 이유
  6. 왜 이게 백테스트에선 안 보였을까
  7. 진짜 범인은 '유동성' — 슬리피지가 폭발하는 순간
  8. 국내주식은 좀 다르다 — 틱·상하한가·동시호가
  9. 좋은 봇은 체결을 이렇게 다룬다 (5가지)
  10. 한 장면으로: 같은 신호, 다른 결과
  11. 맡길 때 물어볼 5가지 질문

1. "주문했다 ≠ 원하는 값에 다 샀다"

자동매매를 처음 접하면 머릿속 그림이 대개 이렇습니다. "봇이 55,000원이라는 가격을 보고, 55,000원에 딱 사고, 끝." 마치 편의점에서 정가표 붙은 물건을 집어 계산하는 것처럼요. 그런데 시장은 편의점이 아니라 수많은 사람이 서로 다른 가격을 외치고 있는 경매장에 가깝습니다. 그래서 실제로는 이런 장면들이 생깁니다.

🎯

값이 밀렸다 (슬리피지)

55,000원으로 보고 시장가로 샀는데 평균 55,180원에 체결. 화면 가격과 실제 체결가가 다르게 나온 경우.

🧩

절반만 샀다 (부분체결)

100만 원 주문했는데 52만 원어치만 채워지고 나머지는 안 됨. 봇이 "다 샀다"고 착각하면 다음 계산이 꼬임.

아예 안 샀다 (미체결)

지정가로 걸어둔 주문이 몇 시간째 그대로. 가격이 거기까지 안 내려와서 영영 체결 안 됨.

이 셋은 봇이 고장 난 것도, 제작이 잘못된 것도 아닙니다. 시장이 원래 이렇게 돌아가기 때문에 생기는 자연스러운 현상입니다. 다만 이걸 모르고 시작하면 "봇이 이상하다"고 오해하거나, 더 나쁘게는 봇이 스스로 이 상황을 처리하지 못해 엉뚱한 매매로 번집니다. 그래서 체결이 어떻게 이루어지는지를 아는 것이, 화려한 전략을 아는 것보다 실전에서는 훨씬 먼저입니다.

2. 가격표는 하나가 아니다 — 호가창이라는 계단

모든 오해의 출발점은 "가격이 하나"라는 착각입니다. 우리가 차트에서 보는 "현재가 55,000원"은 방금 마지막으로 거래가 체결된 값일 뿐, 지금 내가 그 값에 살 수 있다는 뜻이 아닙니다. 실제 시장에는 호가창(order book)이라는 것이 있고, 이건 가격이 층층이 쌓인 계단처럼 생겼습니다.

호가창 (order book) — 가격은 하나가 아니라 여러 층 55,200원 팔겠다는 사람: 40개 55,100원 팔겠다는 사람: 25개 55,000원 팔겠다는 사람: 10개 ← 가장 싼 매도 ← 이 틈(스프레드)이 넓을수록 체결이 불리 → 54,900원 사겠다는 사람: 12개 ← 가장 비싼 매수 54,800원 사겠다는 사람: 30개 54,700원 사겠다는 사람: 22개 위쪽 = 지금 팔겠다고 내놓은 가격들 · 아래쪽 = 지금 사겠다고 내놓은 가격들 ※ 개수·가격은 이해를 돕기 위한 예시입니다
호가창 — 내가 시장가로 사면 위쪽(매도) 계단을 싼 것부터 먹어 올라갑니다

그림을 말로 풀면 이렇습니다. 지금 이 종목을 당장 사고 싶다면, 나는 "팔겠다"고 내놓은 사람들 중 가장 싼 값(55,000원, 10개)부터 사게 됩니다. 그런데 그 층에 걸린 물량은 10개뿐입니다. 내가 30개를 사고 싶으면? 55,000원짜리 10개를 다 먹고, 그다음 55,100원짜리 25개 중 20개를 먹어야 30개가 채워집니다. 결과적으로 평균 단가가 55,000원보다 위로 올라갑니다. 이것이 슬리피지의 정체입니다. 뒤에서 숫자로 다시 보겠습니다.

그림에서 하나 더 눈여겨볼 것이 있습니다. 가장 싼 매도(55,000원)와 가장 비싼 매수(54,900원) 사이의 틈(스프레드)입니다. 이 틈이 좁을수록 사자마자 팔아도 손해가 작고(유동성 풍부), 넓을수록 사는 순간 이미 불리하게 출발합니다. 예컨대 스프레드가 벌어진 종목을 시장가로 샀다가 곧바로 시장가로 팔면, 가격이 전혀 안 움직였어도 스프레드만큼 손해를 봅니다. 이 "왕복 비용"을 모르고 자주 사고파는 봇을 얇은 종목에 붙이면, 시장이 제자리걸음만 해도 잔고가 스르르 줄어듭니다. 그래서 스프레드가 넓은 종목은 자주 매매하는 전략과 상극입니다.

기억할 한 문장: 차트의 "현재가"는 방금 거래된 값이고, 내가 실제로 사고팔 수 있는 값은 호가창의 각 계단입니다. 이 둘을 같다고 착각하는 데서 대부분의 "왜 다른 값에 사졌지?"가 나옵니다.

3. 지정가 vs 시장가 — 가장 근본적인 선택

주문을 낼 때 우리는 크게 두 갈래 중 하나를 고릅니다. 이름은 거래소·상품마다 조금씩 다르지만 본질은 같습니다.

지정가 (Limit) — "이 값 이하로만 산다"

  • 가격이 확실: 내가 정한 값(또는 더 유리한 값)에만 체결
  • 슬리피지가 거의 없음
  • 대신 체결이 불확실: 가격이 안 오면 영영 안 사짐
  • 일부만 채워지는 부분체결이 잦음
  • 흔한 용도: 서두를 필요 없는 진입, 분할매집, 좋은 가격 노리기

시장가 (Market) — "값이 어떻든 지금 당장 산다"

  • 체결이 확실: 거의 즉시, 있는 물량을 먹어 채움
  • 대신 가격이 불확실: 계단을 먹고 올라가 슬리피지 발생
  • 얇은 시장·큰 주문일수록 불리하게 체결
  • 흔한 용도: 손절·청산 방어처럼 "무조건 지금 나가야" 하는 순간

핵심은 "확실성을 어디에 둘 것인가"의 맞바꿈입니다. 세상에 가격도 확실하고 체결도 확실한 주문은 없습니다. 급하면 가격을 양보(시장가)하고, 가격이 중요하면 체결의 확실성을 양보(지정가)합니다. 자동매매를 "맡긴다"는 것은 사실 이 맞바꿈을 상황별 규칙으로 미리 정해두는 일과 거의 같습니다.

거래소에 따라 post-only(무조건 지정가로만, 시장가처럼 체결되면 취소), IOC·FOK(즉시 안 되면 취소하거나 전량 아니면 취소) 같은 세부 옵션이 더 있습니다. 이름과 동작이 거래소·상품마다 다르니 실제 사용 전 공식 API 문서로 확인하세요. 다만 큰 그림은 "가격을 지킬래(지정가) vs 체결을 지킬래(시장가)"의 변주입니다.

4. 슬리피지: 시장가가 계단을 먹고 올라가는 원리

이제 앞의 호가창 숫자로 슬리피지를 직접 계산해 보겠습니다. 어렵지 않습니다. 초등학교 곱셈·나눗셈이면 충분합니다. 상황: 나는 이 종목을 시장가로 30개 사려고 합니다. 매도 계단은 이랬습니다.

계단(매도호가)걸린 물량내가 먹는 양지출
55,000원10개10개550,000원
55,100원25개20개1,102,000원
합계30개1,652,000원

30개를 사는 데 1,652,000원을 썼으니, 평균 단가 = 1,652,000 ÷ 30 = 약 55,067원입니다. 나는 화면에서 55,000원을 봤는데, 실제로는 개당 67원 비싸게 산 셈입니다. 이 67원이 슬리피지입니다. 비율로는 약 0.12%. 작아 보이나요? 하루에 수십 번 사고파는 봇이라면 이 0.12%가 매번, 살 때도 팔 때도 붙습니다. 왕복이면 벌써 0.2%가 넘고, 여기에 수수료까지 더해집니다. 매매가 잦을수록 이 "보이지 않는 비용"이 수익을 갉아먹습니다.

시장가 30개 매수 — 계단을 먹고 평균가가 위로 내가 기대한 값 55,000원 55,000 × 10개 55,100 × 20개 실제 평균 55,067원 슬리피지 67원 주문이 클수록·계단이 얇을수록, 더 위층까지 먹어 평균가가 더 벌어집니다 ※ 숫자는 예시. 실제 슬리피지는 종목·시각·주문크기에 따라 달라집니다
시장가는 "지금 당장"을 사는 대신, 계단을 올라간 만큼의 값을 치릅니다

슬리피지 말고 하나 더 — 지정가는 수수료도 대개 싸다

많은 거래소가 수수료를 두 종류로 나눕니다. 이름이 좀 낯설지만 개념은 단순합니다.

그러니까 시장가에는 슬리피지 + 더 비싼 테이커 수수료가 이중으로 붙고, 지정가는 슬리피지도 거의 없고 수수료도 대개 더 싼 편입니다. "그럼 무조건 지정가네?" 싶지만, 앞서 봤듯 지정가는 안 채워질 위험을 안습니다. 결국 다시 맞바꿈으로 돌아옵니다. 다만 이 사실 하나는 분명합니다 — 매매가 잦은 봇일수록, 무지성 시장가는 슬리피지와 수수료 양쪽에서 새어나갑니다.

메이커·테이커의 정확한 요율, 등급별 할인, 리베이트 여부는 거래소·상품·회원등급마다 크게 다릅니다. 수치는 반드시 각 거래소 공식 수수료 안내로 확인하세요. 이 글에서 기억할 것은 정확한 숫자가 아니라 "지정가(메이커)가 대체로 더 싸다"는 방향입니다. 수수료가 손익분기에 미치는 영향은 → 최소 자본금·수수료·손익분기 글에서 더 봅니다.

5. 미체결·부분체결: 지정가가 안 사지는 이유

그럼 반대로 지정가를 쓰면 슬리피지가 없으니 무조건 좋을까요? 여기엔 다른 함정이 있습니다. 지정가는 "이 값 이하로만 산다"는 조건부 주문이라, 시장 가격이 내가 건 값까지 내려와 주지 않으면 체결되지 않습니다.

예를 들어 현재가가 55,000원인데 내가 "54,500원에 사겠다"고 지정가를 걸었다고 합시다. 가격이 54,500원까지 내려오면 체결되지만, 그 사이 시장이 그냥 위로 가버리면 나는 구경만 하다 못 삽니다. 전략상 "여기서 잡았어야 하는" 구간을 놓치는 거죠. 자동매매에서 이건 생각보다 뼈아픕니다. 봇의 다음 로직이 "매수 성공"을 전제로 짜여 있으면, 안 사진 상태에서 매도·손절 로직이 헛돌 수 있습니다.

더 까다로운 건 부분체결입니다. 가격이 내 지정가를 살짝 스치고 지나가면, 걸어둔 물량 중 일부만 채워지고 나머지는 미체결로 남습니다. 100개를 걸었는데 37개만 사진 상태. 이때 봇이 "주문 냈으니 100개 샀겠지"라고 가정해 버리면, 존재하지 않는 63개를 팔려고 시도하거나 수량 계산이 전부 어긋납니다.

구체적으로 그려볼까요. 봇이 "54,500원에 100개 매수" 지정가를 걸었습니다. 가격이 54,500원을 잠깐 찍고 곧장 위로 튀어 올랐습니다. 그 짧은 순간 37개만 체결됐고 63개는 안 됐습니다. 그런데 이 봇의 다음 규칙이 "매수 후 3% 오르면 100개 전량 매도"였다면? 봇은 자기가 100개를 가졌다고 믿고 100개 매도를 시도합니다. 실제 보유는 37개뿐이니, 나머지 63개 매도는 거부되거나(잔고 부족) — 더 나쁘게, 선물이라면 없던 방향의 포지션이 잡힐 수도 있습니다. 작은 인식 오류 하나가 이렇게 엉뚱한 매매로 번집니다. 그래서 "실제로 몇 개 체결됐는지"를 매번 되묻는 절차가 있고 없고가 결정적입니다.

⚠️ 초보 봇이 가장 많이 내는 사고: "주문을 냈다"와 "주문이 체결됐다"를 같은 것으로 취급하는 것. 이 둘은 완전히 다릅니다. 잘 만든 봇은 주문 직후 거래소에 "방금 그거 얼마나 체결됐어?"를 되물어 실제 체결 수량·평균가를 확인한 뒤에야 다음 단계로 넘어갑니다. 이 되묻는 절차가 없으면, 조용히 수량이 어긋난 채로 계속 굴러갑니다.

그래서 체결 관리가 잘 된 봇은 지정가 주문에 대해 대략 이런 규칙을 갖습니다. "지정가로 건다 → 정해둔 시간(예: 30초) 안에 다 안 채워지면 → 남은 수량을 취소하고, 상황에 따라 다시 걸거나 시장가로 전환한다." 이렇게 미체결을 방치하지 않는 규칙이 있느냐 없느냐가, 실전에서 백테스트와의 격차를 크게 좌우합니다.

6. 왜 이게 백테스트에선 안 보였을까

많은 분이 "백테스트(과거 데이터로 돌려본 모의성적)에선 분명 좋았는데 실거래는 왜 이래?"라고 묻습니다. 큰 이유 중 하나가 바로 체결입니다. 상당수의 간단한 백테스트는 암묵적으로 이렇게 가정합니다.

백테스트의 흔한 낙관적 가정

  • 원하는 가격에 즉시 체결된다
  • 원하는 수량이 전량 체결된다
  • 슬리피지 = 0, 미체결 = 없음
  • 주문을 내는 순간 = 체결되는 순간

실거래의 현실

  • 계단을 먹고 올라간 평균가에 체결
  • 유동성 부족 시 부분·미체결
  • 슬리피지·수수료가 매 거래마다 누적
  • 주문→체결 사이에 지연과 가격 변화

이 격차는 매매가 잦을수록, 다루는 종목이 얇을수록 커집니다. 하루 두세 번 매매하는 느린 전략은 슬리피지 몇 bp가 크게 티 안 나지만, 하루 수십·수백 번 회전하는 전략은 이 비용이 성패를 가릅니다. 그래서 알고랩은 백테스트에 현실적인 슬리피지·수수료를 일부러 얹어 보수적으로 보고, 실제로 소액을 넣어 체결 품질부터 확인합니다. 이 주제는 → 백테스트 +50%인데 실거래 -10%인 7가지 이유에서 더 깊이 다룹니다.

그럼 백테스트를 조금이라도 현실에 가깝게 만들려면 무엇을 넣어야 할까요? 코드를 몰라도 개념만 알면 제작자에게 "이거 반영됐나요?"라고 물을 수 있습니다. ①수수료(메이커/테이커 구분해서), ②슬리피지 가정(시장가라면 최소 몇 bp는 불리하게), ③미체결 처리(지정가가 안 채워지는 경우를 성공으로 세지 않기), ④주문 지연(신호가 뜬 값 그대로가 아니라 살짝 뒤 값에 체결). 이 네 가지를 넣기 전과 후의 성적이 크게 벌어진다면, 그 전략은 체결 비용에 민감한 전략이라는 뜻이고, 실전 투입에 더 신중해야 합니다. 반대로 네 가지를 넣어도 성적이 크게 안 흔들리면, 체결에 둔감한 튼튼한 전략일 가능성이 높습니다.

7. 진짜 범인은 '유동성' — 슬리피지가 폭발하는 순간

지금까지 나온 현상들(슬리피지·미체결·부분체결)의 뿌리를 하나로 요약하면 유동성(liquidity)입니다. 유동성은 쉽게 말해 "내가 사고팔고 싶을 때, 반대편에 상대가 얼마나 두툼하게 대기하고 있는가"입니다. 계단마다 물량이 두툼하면 큰 주문도 값 안 밀리고 체결되고(유동성 풍부), 계단이 듬성듬성 얇으면 작은 주문에도 값이 훌쩍 튑니다(유동성 부족).

그래서 같은 봇, 같은 전략이라도 아래 상황에서는 슬리피지가 갑자기 커지고 미체결이 잦아집니다. 맡기든 직접 하든, 이 "위험한 시간·종목"을 아는 것만으로도 사고를 크게 줄일 수 있습니다.

🌑

거래량 얇은 시간대

새벽, 주말, 명절 등 참여자가 적을 때. 계단이 비어 있어 작은 주문에도 값이 튐.

🪙

거래량 적은 종목

상장 초기·소형 알트코인·잡주. 호가 간격이 넓어 슬리피지가 상시적으로 큼.

급변장·뉴스 순간

급등락·발표 직후엔 계단이 순식간에 걷혀, 시장가가 몇 %씩 밀리기도.

여기에 한 가지 더. 유동성이 얇을 때 큰 금액을 시장가로 한 번에 넣으면, 내 주문이 스스로 계단을 훑고 올라가 내가 나를 불리하게 만듭니다. 이걸 시장충격(market impact)이라 부릅니다. "한 번에 크게"가 아니라 "나눠서 조금씩"이 왜 안전한지가 여기서 나옵니다. 급변장에서의 봇 대응 원칙은 → 예정된 큰 이벤트를 자동매매가 넘기는 법과도 연결됩니다.

비유: 유동성이 두툼한 시장은 넓은 강과 같아서 돌을 던져도 잔물결만 입니다. 유동성이 얇은 시장은 작은 웅덩이라서, 같은 돌 하나에도 물이 확 튑니다. 내 주문이 그 "돌"입니다. 웅덩이에선 돌을 잘게 쪼개 살살 던져야 합니다.

비개발자도 유동성을 눈대중으로 가늠할 수 있습니다. 거래소 앱에서 종목의 호가창을 열어, 내가 넣으려는 주문 금액과 각 계단에 걸린 물량을 비교해 보세요. 내 주문이 맨 앞 한두 계단으로 다 소화된다면 그 시각엔 충분히 두툼한 것이고, 대여섯 계단을 훑어야 겨우 채워진다면 얇은 것입니다. 또 하나, "일일 거래대금"이 큰 종목일수록 대체로 유동성이 넉넉합니다. 봇을 맡길 때 "어떤 종목을, 어느 시간대에, 얼마씩 거래할지"를 미리 정해두면, 제작자가 그 종목·시간의 유동성에 맞춰 주문 방식(지정가/분할 등)을 설계할 수 있습니다. 종목과 시간대를 안 정한 채 "알아서 좋은 걸로"라고 맡기면, 정작 이 중요한 튜닝을 할 수 없습니다.

8. 국내주식은 좀 다르다 — 틱·상하한가·동시호가

지금까지의 원리(호가 계단·지정가·시장가·슬리피지)는 코인이든 주식이든 똑같이 적용됩니다. 다만 국내주식(키움·KIS 등)으로 자동매매를 한다면, 코인엔 없는 몇 가지 규칙이 체결에 끼어듭니다. 맡길 때 "이건 어떻게 처리하나요?"라고 물어볼 값어치가 있는 것들입니다.

📏

호가 단위(틱)

주식은 가격대별로 최소 호가 간격이 정해져 있습니다. 그 사이 값(예: 틱이 100원인데 55,050원)으로는 주문 자체가 안 됩니다. 봇이 틱에 안 맞는 값을 내면 거부당합니다.

🚧

상한가·하한가

하루 오르내림에 한도(±30%)가 있어, 상한가에선 사려는 사람만 몰려 사고 싶어도 못 사는 극단적 미체결이 납니다.

동시호가·시간외

장 시작·마감엔 주문을 모아 한 번에 체결하는 동시호가 구간이 있어, 평소와 체결 방식이 다릅니다. 시간외 거래도 별도 규칙.

여기에 거래정지·VI(변동성 완화장치)처럼 순간적으로 거래가 멈추는 장치도 있습니다. 이런 순간에 봇이 "왜 주문이 거부됐지?"를 이해하지 못하고 같은 주문을 계속 재시도하면, 오히려 상황을 악화시킵니다. 그래서 국내주식 봇은 "거부 사유를 읽고 그에 맞게 행동하는" 처리가 코인 봇보다 한층 더 중요합니다.

틱 단위·상하한 폭·동시호가 시간·VI 발동 기준 등 구체 수치와 규칙은 시장·종목·제도 개정에 따라 달라집니다. 반드시 거래소(KRX)·증권사 공식 자료로 최신 내용을 확인하세요. 이 글은 "코인과 달리 이런 추가 규칙이 있다"는 큰 그림만 전합니다. 국내 증권사 API 자동매매의 전반은 → 전략 선택 가이드와 각 증권사별 글에서 이어집니다.

정리하면, 체결의 뼈대는 코인과 주식이 같지만(계단·지정가·시장가·슬리피지), 국내주식은 그 위에 틱·상하한·동시호가·거래정지라는 안전 규칙이 얹혀 있어 봇이 이를 이해하고 순응해야 합니다. 이 차이를 모른 채 코인 봇 감각으로 주식 봇을 굴리면, 멀쩡한 주문이 자꾸 거부되는 당혹스러운 상황을 만납니다.

9. 좋은 봇은 체결을 이렇게 다룬다 (5가지)

여기까지 오면 "그래서 잘 만든 봇은 뭐가 다른데?"가 궁금해집니다. 체결 품질이 좋은 봇은 대체로 아래 다섯 가지 장치를 갖추고 있습니다. 이건 화려한 전략이 아니라 '기본기'에 가깝고, 오히려 이 기본기 때문에 실전 성적이 갈립니다.

1기본은 지정가, 필요할 때만 시장가

서두를 이유가 없는 진입은 지정가로 좋은 값을 노리고, "무조건 지금 나가야" 하는 손절·청산 방어에서만 시장가로 확실히 체결시킵니다. 무지성으로 전부 시장가를 쓰면 슬리피지가 새고, 전부 지정가만 쓰면 정작 나가야 할 때 못 나갑니다.

2미체결 타임아웃 — 걸어두고 방치하지 않는다

지정가로 걸었으면 "언제까지 안 채워지면 어떻게 한다"를 규칙으로 정합니다. 예: 30초 안에 미체결이면 취소 후 재주문, 또는 시장가로 전환. 이 규칙이 없으면 안 사진 주문을 계속 매달아 두고 다음 로직이 꼬입니다.

3허용 슬리피지 한도 — 너무 밀리면 포기

"기대가보다 0.3% 넘게 불리하면 이 주문은 아예 내지 않는다" 같은 상한선을 둡니다. 급변장에서 계단이 걷혀 값이 왕창 밀릴 때, 나쁜 값에 억지로 체결되는 대신 이번 판은 거른다는 안전장치입니다. 손실을 막아준다는 뜻이 아니라, 통제 불능인 체결을 피한다는 뜻입니다.

4분할 주문 — 큰 건 나눠서 살살

한 번에 크게 넣어 스스로 값을 밀지 않도록, 큰 주문을 여러 조각으로 쪼개 시간을 두고 냅니다(흔히 TWAP 등으로 부릅니다). 유동성이 얇은 종목·시간대일수록 효과가 큽니다.

5부분체결 정확 인식 — "실제로 얼마나 샀나"를 되묻는다

주문 후 체결 수량·평균가를 거래소에 되물어 확인하고, 그 실제 수량을 기준으로 다음 계산을 합니다. 남은 미체결분은 취소·재주문 규칙으로 정리합니다. 앞서 말한 "주문했다 ≠ 체결됐다"를 코드가 확실히 구분하는 부분입니다.

정리하면: 좋은 봇의 체결 관리는 "더 똑똑한 예측"이 아니라 "현실을 인정하고 규칙으로 대비"하는 쪽입니다. 값이 밀릴 수 있음을 인정하고 한도를 걸고, 안 채워질 수 있음을 인정하고 타임아웃을 걸고, 부분만 될 수 있음을 인정하고 되물어 확인하는 것. 이 기본기가 갖춰진 봇이 오래 살아남습니다. 주문 실패·지연 시 감지·복구는 → 봇 장애·복구 플레이북을 함께 보세요.

10. 한 장면으로: 같은 신호, 다른 결과

지금까지의 이야기를 구체적인 한 장면으로 묶어 보겠습니다. 새벽 3시, 거래가 한산한 어떤 알트코인에서 두 봇에게 똑같은 매수 신호가 떴다고 합시다. "지금 300만 원어치 매수." 화면상 현재가는 1,000원. 그런데 이 시간 호가창은 얇습니다. 1,000원 층엔 50만 원어치뿐이고, 위로 1,005원·1,010원·1,020원… 듬성듬성 물량이 걸려 있습니다.

🙈 체결을 모르는 봇

  • 고민 없이 시장가로 300만 원을 한 번에 투척
  • 얇은 계단을 순식간에 훑고 올라가 평균 1,018원에 체결 (약 1.8% 슬리피지)
  • 테이커 수수료까지 이중으로 지불
  • "300만 원어치 샀다"고 기록 → 실제론 시장을 밀어 스스로 비싸게 산 것
  • 다음 날 값이 1,000원으로 돌아오자, 매수하자마자 이미 마이너스

🧭 체결을 아는 봇

  • 먼저 유동성 확인 → "이 시간 이 종목은 얇다" 판단
  • 300만 원을 여러 조각으로 분할, 지정가로 살살 매집
  • "기대가보다 0.5% 넘게 밀리면 그 조각은 포기"라는 슬리피지 한도 적용
  • 30초 안에 안 채워진 조각은 취소·재주문, 실제 체결 수량만 장부에 반영
  • 결과: 평균 1,004원 부근에 필요한 만큼만 확보, 못 채운 건 깔끔히 포기

두 봇의 전략(매수 신호)은 완전히 같았습니다. 다른 건 오직 체결을 다루는 방식뿐이었죠. 그런데 시작 단가부터 1% 넘게 벌어졌고, 장부의 정확성도, 이후 로직의 안정성도 달라졌습니다. 이 차이가 매일·매 거래 쌓이면 성적표가 갈라집니다. "좋은 전략"을 찾는 데 쏟는 에너지의 일부를 "좋은 체결"에 쓰는 것이 실전에서 훨씬 남는 장사인 이유입니다. (숫자는 원리를 보여주기 위한 예시이며, 실제 값은 종목·시각·주문 크기에 따라 달라집니다.)

여기서 오해하면 안 되는 것: 체결을 잘 다룬다고 수익이 보장되는 건 아닙니다. 나쁜 전략은 체결이 완벽해도 손실입니다. 체결 관리는 "좋은 전략의 성과를 새지 않게 실전으로 옮기는" 배관 공사에 가깝습니다. 전략이라는 물이 좋아야 하고, 배관(체결)이 튼튼해야 그 물이 새지 않고 도착합니다. 둘 다 필요합니다.

11. 맡길 때 물어볼 5가지 질문

제작을 맡기려는 분이라면, 코드를 몰라도 아래 다섯 가지만 물어봐도 그 봇의 체결 기본기를 가늠할 수 있습니다. 좋은 제작자는 이 질문들에 막힘없이 답합니다.

물어볼 것왜 중요한가
① 기본 주문을 지정가로 하나요, 시장가로 하나요? 상황별로 어떻게 나누나요?무지성 시장가는 슬리피지가 샘. 상황별 규칙이 있어야 함
② 지정가가 안 채워지면(미체결) 어떻게 처리하나요?취소·재주문·시장가전환 규칙이 없으면 로직이 꼬임
③ 슬리피지가 너무 크면 주문을 포기하는 한도가 있나요?급변장에서 통제 불능 체결을 피하는 안전장치
④ 큰 주문을 나눠 내는 분할주문을 지원하나요?시장충격을 줄여 스스로 값을 밀지 않게 함
⑤ 부분체결을 어떻게 인식하고 남은 수량을 처리하나요?"주문=체결" 착각을 코드가 구분하는지의 핵심

반대로, "그냥 시장가로 사고팔면 됩니다"라거나 "슬리피지는 신경 안 써도 돼요"라고 가볍게 넘기는 답이 돌아온다면, 매매가 잦은 전략에서는 특히 조심하는 게 좋습니다. 물론 하루 한두 번 매매하는 느린 전략이라면 체결 정교함의 비중이 상대적으로 작을 수 있습니다. 내 전략이 얼마나 자주 매매하느냐에 따라 이 다섯 가지의 무게가 달라집니다. 어떤 전략이 나에게 맞는지부터 고민 중이라면 → 성향별 전략 선택 가이드가 도움이 됩니다.

정리하는 문서 한 장이면 견적도 결과도 훨씬 정확해집니다. "어떤 종목을, 얼마를, 얼마나 자주, 어떤 주문 방식으로" 매매할지만 적어도 됩니다. 틀은 → 자동매매 명세서 작성 가이드를 참고하세요. 비용의 감을 잡고 싶다면 → 제작 비용·견적 가이드도 함께 보시면 좋습니다.

마무리 — 체결을 알면 봇을 보는 눈이 바뀐다

자동매매를 처음 알아볼 때는 "어떤 전략이 돈을 버느냐"에만 눈이 갑니다. 하지만 실제로 봇을 굴려보면, 똑같은 전략도 체결을 어떻게 다루느냐에서 성적이 갈립니다. 화면의 가격과 실제 체결가가 다른 것도, 절반만 사지는 것도, 걸어둔 주문이 안 채워지는 것도 — 전부 시장이 원래 그렇게 생겼기 때문이고, 좋은 봇은 그 현실을 규칙으로 미리 대비합니다.

이 글의 내용을 한 문장으로 줄이면 이렇습니다. "가격은 하나가 아니라 계단이고, 주문했다는 것이 원하는 값에 다 샀다는 뜻은 아니다." 이 한 가지만 몸에 익혀도, 봇의 체결내역을 보며 "이상하다"가 아니라 "아, 이래서 이렇게 됐구나"라고 읽게 됩니다. 그리고 맡길 때 무엇을 물어야 할지도 또렷해집니다.

체결까지 꼼꼼히 챙긴 봇을 만들고 싶다면, "무엇을 언제 사고팔지"만 알려주세요. 지정가·시장가 전략, 미체결·부분체결 처리, 슬리피지 한도, 분할주문까지 포함해 맞춤 제작해 드립니다. 코딩을 몰라도 괜찮습니다.

체결까지 챙긴 봇을 원한다면

지정가·시장가 규칙, 미체결·부분체결 처리, 슬리피지 한도, 분할주문까지 포함해 맞춤 제작해 드립니다. "무엇을 언제 사고팔지"만 알려주시면 됩니다.
24시간 빠른 답변 가능합니다.

무료 상담 시작하기