결론부터 말씀드리면, 제가 공부하며 이해한 자동매매 봇의 뼈대는 ‘데이터 → 신호 → 자금관리 → 실행’ 네 칸으로 나뉩니다. 이 칸을 나누는 이유는 코드를 예쁘게 정리하려는 게 아니라, 한 칸을 고쳐도 다른 칸이 무너지지 않게 하고, 무엇이 성과를 바꿨는지 따로 확인하기 위해서라고 합니다. 특히 ‘신호’와 ‘자금관리’를 떼어 놓는 것이 가장 중요하다는 걸 이번에 배웠습니다.
미리 말씀드리면 저는 코딩도 매매 로직도 초보입니다. 봇은 클로드에게 맡겨 만들었고, 이 글은 그 구조를 뒤늦게 공부하면서 정리한 학습 노트입니다. 잘못 이해한 부분이 있다면 댓글로 알려주세요.
이걸 왜 공부하게 됐나
첫 봇은 거의 파일 하나에 모든 게 들어 있었습니다. 종목을 불러오고, 점수를 매기고, 주문을 내고, 기록을 남기는 코드가 한데 섞여 있었죠. 그러다 보니 매수 조건 한 줄을 바꿔 달라고 했을 뿐인데 엉뚱한 곳에서 에러가 나는 일이 생겼습니다. 저는 코드를 읽을 줄 모르니 어디가 문제인지조차 알 수 없었습니다.
두 번째 봇을 만들 때 클로드가 폴더를 여러 개로 나눠 놓았는데, 처음엔 왜 그렇게 하는지 몰랐습니다. 그래서 “이 폴더들은 각각 무슨 역할이야?”부터 물어보며 공부를 시작했습니다.
찾아본 정의 — 자동매매 시스템은 어떻게 나뉘나
자료를 찾아보니, 자동매매 시스템은 보통 데이터 수집, 신호 생성, 리스크 관리, 주문 실행, 모니터링 같은 단계로 나뉜다고 합니다. 미국 컴퓨터학회(ACM) 학회지에 실린 리뷰 글에 따르면, 주문을 내기 전 단계만 해도 ‘앞으로 오를지 예측하는 부분(알파 모델)’, ‘위험을 따지는 부분(리스크 모델)’, ‘거래 비용을 따지는 부분’이 따로 있다고 합니다.
제가 이해한 말로 바꾸면, 봇은 “무엇을 볼까 → 살 만한가 → 얼마나 살까 → 실제로 주문” 네 가지 질문을 차례로 던지는 기계입니다.
제가 정리해 본 4개의 칸
| 칸 | 던지는 질문 | 들어가는 것 → 나오는 것 | 따로 떼어 두는 이유(제가 이해한 것) |
|---|---|---|---|
| ① 데이터 | 무엇을 볼까? | 시장 전체 → 검토할 후보 목록 | 여기서 데이터가 틀리면 뒤 단계가 전부 틀린 재료로 계산하게 됨 |
| ② 신호 | 살 만한가? | 후보 목록 → 점수·순위 | 전략을 가장 자주 바꾸는 곳이라, 여기만 바꿔 볼 수 있어야 함 |
| ③ 자금관리 | 얼마나 살까? | 점수 → 비중·수량 | 손실을 막는 마지막 관문. 신호가 좋아도 무조건 크게 사지 않게 함 |
| ④ 실행 | 실제로 주문할까? | 수량 → 주문·기록·알림 | 문제가 생겼을 때 사람이 멈출 수 있는 장치를 두는 곳 |
공부하면서 가장 오래 붙잡고 있었던 건 ②와 ③을 왜 굳이 나누느냐였습니다. 처음엔 “좋은 신호면 많이 사면 되지” 싶었는데, 자료들을 보니 이게 초보가 가장 흔히 하는 실수라고 합니다. 신호가 강하다고 크게 담으면 판단이 한 번만 틀려도 계좌 전체가 흔들립니다. 그래서 ‘얼마나 살까’는 신호와 상관없이 따로 정하는 칸이 필요하다고 합니다. 이 부분은 켈리 공식을 공부한 글에서 조금 더 정리했습니다.
칸을 나눴을 때 좋아지는 점 (공부하며 이해한 것)
- 무엇이 효과였는지 따로 볼 수 있습니다. 신호만 바꾸고 나머지는 그대로 두면, 성과가 바뀐 이유가 신호 때문인지 확인하기 쉽다고 합니다. 이 방법은 2×2 대조 실험 글에서 정리했습니다.
- 바꿔 끼우기가 안전해집니다. 데이터를 가져오는 곳을 바꿔도 신호 칸은 그대로 쓸 수 있고, 반대로 전략을 갈아엎어도 주문 코드는 건드리지 않아도 됩니다.
- 문제가 생겼을 때 찾기 쉽습니다. 저처럼 코드를 못 읽는 사람도 “네 칸 중 어디서 값이 이상해졌는지 찾아줘”라고 AI에게 물을 수 있게 됩니다. 저한테는 이게 가장 큰 차이였습니다.
초보인 제가 앞으로 지키려는 것
- AI에게 시킬 때 칸을 지정하기. “신호 칸만 고쳐 줘, 자금관리와 주문 칸은 건드리지 마”처럼 범위를 못 박아 부탁하려고 합니다.
- 멈춤 장치부터 확인하기. 실행 칸에 ‘사람이 멈출 수 있는 버튼’이 있는지 먼저 확인하려 합니다. 급할 때 손으로 계좌를 뒤져야 하는 상황은 피하고 싶습니다.
- 칸마다 모의로 먼저 돌려 보기. 실계좌에 올리기 전에 각 칸이 따로 제대로 도는지 모의 환경에서 확인하려 합니다.
아직 모르는 것, 다음에 공부할 것
네 칸 사이에서 데이터가 어떤 모양으로 오가는지, 장중에 여러 종목을 동시에 처리할 때는 어떻게 순서를 정하는지는 아직 잘 모릅니다. 신호 칸 안에서 종목을 어떻게 걸러내는지는 종목 선정 3단계를 공부한 글에 따로 정리했습니다.
자주 묻는 질문(FAQ)
Q1. 자동매매 봇은 왜 여러 모듈로 나눠서 만드나요?
제가 이해한 바로는, 한 부분을 고칠 때 다른 부분이 같이 망가지지 않게 하고, 어떤 변경이 성과를 바꿨는지 따로 확인하기 위해서입니다.
Q2. 자동매매 봇의 기본 구조는 어떻게 되나요?
자료들을 보면 대체로 데이터 수집 → 신호 생성 → 리스크(자금) 관리 → 주문 실행 → 모니터링 순서로 정리됩니다. 저는 이걸 네 칸으로 묶어 이해했습니다.
Q3. 신호와 자금관리를 왜 분리해야 하나요?
“좋은 신호면 크게 산다”는 방식은 판단이 한 번 틀렸을 때 피해가 너무 크기 때문이라고 합니다. 얼마나 살지는 신호와 따로 정해야 손실을 통제할 수 있습니다.
Q4. 코딩을 몰라도 봇 구조를 이해할 수 있나요?
저도 코드를 못 읽지만, AI에게 “이 폴더는 무슨 역할이야?”라고 하나씩 물어보며 이해했습니다. 구조만 알아도 AI에게 부탁하는 방식이 훨씬 정확해졌습니다.
Q5. 1인 개인 봇도 이렇게 나눌 필요가 있나요?
공부해 보니 오히려 혼자 관리할수록 더 필요하다는 의견이 많았습니다. “어제 멀쩡하던 봇이 오늘 왜 이상한지” 찾을 사람이 나밖에 없기 때문입니다.
면책 고지: 이 글은 코딩·매매 초보인 필자가 공부한 내용을 정리한 학습 노트이며, 특정 종목 추천이나 투자 권유, 수익 보장이 아닙니다. 실제 봇의 세부 설정값은 공개하지 않습니다. 자동매매는 원금 손실이 발생할 수 있으며, 투자 판단과 그 책임은 본인에게 있습니다.
참고 출처
- Communications of the ACM, “Algorithmic Trading Review” — https://cacm.acm.org/research/algorithmic-trading-review/
- ITU Online, “What Is an Algorithmic Trading System?” — https://www.ituonline.com/tech-definitions/what-is-an-algorithmic-trading-system/
답글 남기기