QuantLabNote

매매 신호 56,063건이 체결 76건이 되기까지 — 자동매매 필터의 깔때기

자동매매 봇이 만든 신호 56,063건 중 실제 체결은 76건. 매매 신호 필터링(사이징·서킷브레이커·안전 가드)이 각 단계에서 얼마나 걸러내는지 상태별로 전수 집계했습니다.

2026-07-27 · 데이터 2026-05-29 ~ 2026-07-17 · 자체 자동매매 시스템 signals·orders·fills (읽기 전용) · signals/orders/fills 상태별 전수 카운트 (2026-06-03 사고일 제외, 본문에 명시)

매매신호필터링자동매매필터리스크관리AI자동매매

자동매매를 말하는 글은 많지만, 신호가 실제 체결이 되기까지 무엇이 걸러내는지를 숫자로 보여주는 글은 드뭅니다. 운용 중인 봇의 로그를 전수 집계했습니다(2026-05-29 ~ 2026-07-17, 모든 수치는 코드로 계산 — 방법론).

깔때기 한눈에 (사고일 제외)

단계건수비율(신호 대비)
전략이 생성한 신호39,701100%
└ 필터에 거부(REJECTED)39,41899.3%
└ 보류(DEFERRED)104
└ 주문 실패(FAILED)25
주문 생성1790.45%
└ 제출 성공154
체결(fill)750.19%

신호 100건 중 약 99건이 주문이 되기 전에 잘립니다. 자동매매 필터는 장식이 아니라, 사실상 시스템의 본체입니다.

데이터 노트 (정직하게 밝힙니다): 2026-06-03 하루 동안 휴장일 판정 버그로 KR 주문 16,356건이 전부 실패(FAILED) 처리되는 사고가 있었습니다(신호 16,362건). 이 날을 포함하면 깔때기가 ‘주문 실패’ 쪽으로 심하게 왜곡되므로 위 표에서는 제외했고, 전체 기간 체결은 76건(사고일 1건 포함)입니다. 이런 운영 사고도 자동매매의 실제 비용입니다.

무엇이 걸러냈나 — 거부 사유 상위

필터건수거부 중 비중
포지션 사이징 필터 (수량 0 — 한도 대비 가격 초과)34,06586.4%
서킷브레이커 (연속 손실 매매 정지)4,67911.9%
분산 한도 (동시 보유 종목 수)2310.6%
안전 가드 (중복·동시 매수/매도 차단)1520.4%
수동 정지 (대시보드 스위치)1480.4%
서킷브레이커 (일일 손실 한도)1280.3%
기타 (API 오류·잔고 부족 등)150.0%

거부의 대부분은 포지션 사이징(계좌 한도 대비 주문 수량이 0으로 계산)이고, 그다음이 서킷브레이커(연속 손실·일일 손실 한도 도달 시 그날 매매 정지)입니다. 즉 이 봇의 매매 신호 필터링은 ‘좋은 신호 고르기’보다 ‘나쁜 날 안 사기’ 에 가깝습니다.

전략별: 누가 신호를 쏟아내나

전략신호 수집행(EXECUTED)
momentum26,86263
mean_reversion12,73739
barbell5448
gap440
barbell_cleanup44

신호량과 집행량이 비례하지 않는다는 점이 핵심입니다 — 신호를 많이 내는 전략일수록 필터에 더 많이 걸립니다.

무엇을 배웠나

  • 자동매매의 성패는 신호 생성보다 신호를 버리는 규칙(필터·가드·서킷브레이커)이 좌우한다.
  • 운영 사고(휴장일 버그)는 백테스트에 없는 실전 비용이다 — 로그를 남기고 공개하는 이유.
  • 체결까지 간 결정들의 성적은 연구 0001에서, 테마별 성적은 연구 0002에서 채점했습니다.

다음 연구 예고: 봇의 ‘파는 판단’(매도 규율)만 떼어 채점한 결과를 공개합니다.

※ 본 글은 정보·교육 목적이며 특정 종목의 매수·매도 권유가 아닙니다. 모든 수치는 위에 명시된 데이터·기간 기준으로 코드로 계산한 값이며, 과거 성과는 미래 수익을 보장하지 않습니다.

📘 이 글, 책으로도 있어요 — 무료 샘플 읽기 · 전자책 보기