자동매매를 배우려고 하면 대부분 "어떤 전략이 수익이 나는가"부터 찾습니다. 그런데 실계좌로 돌아가는 자동매매의 코드를 칸별로 나눠 세어 보면, 전략이 차지하는 부분은 전체의 10분의 1이 되지 않습니다. 나머지는 무엇이고, 왜 그쪽이 더 큰지를 이 글에서 정리합니다. 이번 글은 시리즈 전체의 지도 역할을 하고, 다음 글부터 한 칸씩 자세히 다룹니다.
자동매매를 이루는 여섯 칸
실계좌에서 운용 중인 시스템 하나를 기준으로, 하는 일에 따라 코드를 묶으면 여섯 칸이 됩니다. 만드는 순서와 실제로 돌아가는 순서가 같습니다.
- 데이터: 가격을 모으고, 빠지거나 틀린 데이터를 걸러냅니다. 거래소 서버와 시각을 맞추는 일도 여기에 들어갑니다.
- 전략: 오늘 사야 하는지, 팔아야 하는지, 가만히 있어야 하는지를 판단합니다.
- 백테스트: 같은 판단을 과거 데이터에 돌려 봅니다. 전략이 말이 되는지 확인하는 칸입니다.
- 주문: 실제로 주문을 넣고, 무엇을 샀는지 장부에 적고, 거래소의 실제 잔고와 장부를 맞춥니다.
- 안전장치: 이상한 상황에서 멈춥니다. 급락, 연속 오류, 프로그램이 죽었을 때 되살리는 일까지 포함합니다.
- 리포트: 정해진 시각에 시스템을 돌리고, 결과와 상태를 매일 보고합니다.

이 여섯 칸에 속하지 않는 것이 하나 있습니다. 설정과 비밀키입니다. 거래소 접속 키나 운용 설정은 어느 칸에도 넣지 않고 따로 관리합니다. 칸이 아니라 모든 칸이 올라서는 바닥에 가깝습니다.
코드로 세어 본 칸별 비중
말로만 "전략은 일부"라고 하면 와닿지 않아서, 실제 코드의 양을 칸별로 세어 봤습니다. 빈 줄을 뺀 줄 수를 기준으로 했습니다.

전략 판단 부분은 전체의 한 자릿수 %에 그쳤습니다. 가장 큰 덩어리는 주문과 리포트로, 각각 전략의 약 4배였습니다. 백테스트도 전략의 약 3배였습니다. 데이터와 안전장치는 각각 전략의 1.5배 정도였습니다.
줄 수가 곧 중요도는 아닙니다. 다만 시간과 고민이 어디에 들어가는지는 보여줍니다. 전략은 "언제 살까"라는 한 가지 질문에 답하면 되지만, 주문 칸은 "주문이 절반만 체결되면?", "수수료 때문에 수량이 줄면?", "주문을 넣은 직후 프로그램이 꺼지면?" 같은 질문에 모두 답해야 합니다. 리포트 칸은 사람이 보지 않는 시간에도 시스템이 제대로 돌았는지를 증명해야 합니다. 그래서 코드가 커집니다.
실제로 만들어 본 일: 전략 칸이 비어 있는 봇
전략이 전체에서 얼마나 작은 부분인지는, 전략을 아예 밖에서 받아오는 봇을 만들어 보면 분명해집니다. 차트 분석 서비스의 지표가 보내는 매수·매도 신호를 받아서 주문만 대신 넣는 봇을 만든 적이 있습니다. 판단은 전부 외부 지표가 하니 전략 칸은 사실상 비어 있는 셈입니다.
그런데도 할 일은 줄지 않았습니다. 신호를 받으면 한 번에 얼마를 걸지 계산하고, 진입하자마자 손절 주문과 나눠서 익절하는 주문을 걸어 두고, 첫 익절이 체결되면 남은 물량의 손절선을 진입가로 옮기는 일을 모두 봇이 해야 했습니다. 계산한 규모가 규칙에 맞지 않으면 신호가 와도 진입을 거부하는 장치도 따로 필요했습니다. 신호를 받는 부분, 주문을 넣고 추적하는 부분, 거래소 상태를 실시간으로 감시하는 부분이 각각 따로 있어야 했습니다. (근거: 외부 신호 수신형 봇의 설계 문서)
이 경험이 말해주는 것은 단순합니다. 좋은 전략을 사 오거나 남의 신호를 받아 와도, 주문과 안전장치와 리포트는 직접 만들어야 합니다. 그리고 그 부분이 실계좌에서 돈을 지킵니다. 반대로 칸과 칸이 만나는 지점은 따로 점검해야 합니다. 칸 하나하나가 멀쩡해도 연결이 어긋나면 시스템은 틀린 재료로 조용히 판단을 계속할 수 있습니다. 실제로 이런 일이 데이터 칸에서 있었고, 다음 글에서 자세히 다룹니다. 그래서 테스트도 두 종류로 나눕니다. 각 칸이 혼자서 제대로 동작하는지 보는 테스트, 데이터부터 리포트까지 한 번에 흘려보는 전체 흐름 테스트입니다. 이 시스템에는 이런 테스트가 수백 개 있고, 코드를 바꿀 때마다 전부 다시 돌립니다.
강의와 광고가 파는 칸, 실제로 돈을 지키는 칸
자동매매 강의나 "딸깍" 광고가 파는 것은 대부분 전략 한 칸입니다. 어떤 지표를 쓰고, 언제 사고, 언제 파는지입니다. 그 전략이 실제로 좋더라도, 나머지 다섯 칸이 없으면 실계좌에서는 돌아가지 않습니다. 데이터가 하루 빠지면 전략은 틀린 판단을 하고, 주문이 실패했는데 장부에는 샀다고 적히면 다음 날 없는 코인을 팔려고 합니다. 급락이 왔을 때 멈추는 장치가 없으면 사람이 자는 동안 손실이 커집니다.
반대로 뼈대가 탄탄하면 전략은 바꿔 끼울 수 있습니다. 실제로 운용 중인 여섯 개 중 몇 개는 먼저 만든 시스템의 뼈대를 그대로 가져오고 전략 칸만 새로 만들었습니다. 전략을 사는 것보다 뼈대를 만드는 쪽이 오래 남는 이유입니다.
정리: 여섯 칸 점검 질문
직접 자동매매를 만든다면, 전략을 고르기 전에 칸마다 이 질문에 답할 수 있는지 먼저 확인해 보길 권합니다.
- 데이터: 가격 데이터가 빠지거나 늦게 오면 시스템은 어떻게 하는가
- 전략: 백테스트와 실거래가 정말 같은 판단 코드를 쓰는가
- 백테스트: 수수료와 체결 오차를 넣고도 결과가 남는가
- 주문: 주문이 실패하거나 일부만 체결되면 장부는 어떻게 되는가
- 안전장치: 어떤 상황에서 스스로 멈추고, 누가 다시 켜는가
- 리포트: 사람이 보지 않는 동안 제대로 돌았다는 것을 무엇으로 확인하는가
다음 글에서는 첫 번째 칸인 데이터를 다룹니다. 데이터는 멀쩡히 있었는데 전략이 보지 못했던 일, 그리고 그 뒤로 데이터가 모자라면 거래를 아예 하지 않도록 바꾼 이유를 정리합니다. 같은 내용을 카드로 정리한 요약은 인스타그램 @wealthgrid.lab 에 올립니다.
※ 특정 종목·수익을 권유하지 않는 개인 시스템 개발 기록입니다. 투자 판단과 책임은 본인에게 있습니다.