자동매매 봇을 만들다 보면, 어느 순간 이런 생각이 든다.
“내가 만든 이 코드… 대체 어떤 구조로 돌아가고 있는 거지?”
진입 조건 짜고, 청산 로직 붙이고, 백테스트 돌리는 건 재밌다. 그런데 그 위아래로 감싸고 있는 것들 — 실행 루프, 배포, 모니터링 — 이런 걸 뭐라 불러야 하는지, 어떻게 바라봐야 하는지는 막상 정리해본 적이 없었다.
그래서 한번 정리해봤다. 같은 시스템을 다른 각도로 바라보는 렌즈들을.
프레임워크 — “네 코드를 내가 호출해줄게”
처음엔 프레임워크가 뭔지 감이 안 왔다. 라이브러리랑 뭐가 다른 건데?
레고로 비유하니까 바로 이해됐다.
📦 라이브러리
공구상자. 내가 필요할 때 드릴을 꺼내 쓴다. 내가 호출한다.
🧱 프레임워크
조립 설명서가 포함된 레고 세트. 순서대로 조립하되, 블록 색깔은 내가 고른다. 프레임워크가 나를 호출한다.
핵심 차이는 주도권이다. 이걸 멋있는 말로 IoC(Inversion of Control, 제어의 역전)라고 부른다.
트레이딩 봇에서 프레임워크란 뭘까? 바로 이런 거다:
30분마다 봉 마감 → 인디케이터 계산 → 시그널 확인 → 주문 실행
이 실행 루프 자체가 프레임워크다. 전략 로직(언제 사고 팔지)은 이 뼈대 안에 끼워 넣는 블록일 뿐이다. 새로운 진입 필터를 추가하고 싶으면? 프레임워크가 정해둔 자리에 블록 하나 끼우면 된다.
하네스 — 엔진을 감싸는 운전석
프레임워크가 자동차 엔진이라면, 하네스는 운전석 + 계기판 + 안전벨트다.
엔진이 아무리 좋아도 운전석이 없으면 차를 몰 수 없다. 마찬가지로, 전략 로직이 아무리 훌륭해도 이걸 서버에 올리고, 죽으면 재시작하고, 상태를 모니터링하는 장치가 없으면 실전에서 쓸 수가 없다.
🔧 하네스의 종류
테스트 하네스
코드를 자동 실행하고 결과 검증
pytest, JUnit
실행 하네스
프로세스 시작/중지/재시작
systemd, Docker
CI/CD 하네스
코드 변경 시 자동 빌드·테스트·배포
GitHub Actions
모니터링 하네스
상태 조회, 알림, 원격 제어
텔레그램 봇, Grafana
봇을 만들 때 전략에만 집중하기 쉽다. 그런데 실전에서는 하네스의 완성도가 안정성을 결정한다. 봇이 조용히 죽어있는데 알림이 안 온다면? 배포했는데 문제가 생겨서 되돌리고 싶은데 방법이 없다면? 이런 게 전부 하네스 영역이다.
에이전트 관점 — 내 봇은 얼마나 똑똑한가
요즘 AI 에이전트가 화두인데, 가만 생각해보면 트레이딩 봇도 에이전트다. 환경을 관찰하고(시세 데이터), 판단하고(시그널 계산), 자율적으로 행동하니까(주문 실행).
에이전트의 자율성에는 단계가 있다:
🤖 에이전트 자율성 레벨
L1 반응형 — 고정 규칙대로 실행
“slope이 기준 넘으면 진입”
L2 적응형 — 환경에 따라 파라미터 조절
추세 강도에 따라 트레일링 폭 변경
L3 학습형 — 과거 경험에서 학습
최근 승률로 포지션 사이즈 자동 조절
L4 자율형 — 스스로 전략을 탐색·변경
새로운 진입 조건을 스스로 발견
대부분의 퀀트 트레이딩 봇은 L1~L2 수준이다. 그리고 이건 의도적인 선택이다.
왜? 트레이딩에서는 “똑똑한 봇”보다 “예측 가능한 봇”이 더 안전하기 때문이다. L3 이상으로 올라가면 봇이 스스로 전략을 바꿔버릴 수 있고, 그 순간 개발자도 봇이 왜 그런 결정을 했는지 설명하기 어려워진다. 자는 동안 봇이 전략을 바꿔서 계좌를 날렸다면? 끔찍한 시나리오다.
프론트엔드 / 백엔드 — 식당의 홀과 주방
웹 개발에서 익숙한 이 구분, 트레이딩 봇에도 적용된다.
🍽️ 프론트엔드 (홀)
사용자가 보고 조작하는 부분
텔레그램 봇 UI · 터미널 CLI · Google Sheets
🔥 백엔드 (주방)
뒤에서 돌아가는 핵심
전략 엔진 · 리스크 관리 · 거래소 API · 서버
트레이딩 봇의 특징은 백엔드 비중이 99%라는 점이다. 웹 서비스처럼 화려한 UI가 필요 없다. 텔레그램으로 /status 치면 상태 나오고, 스프레드시트에서 거래 기록 보면 그걸로 충분하다. 주방이 핵심인 집밥 같은 거다.
전체 그림 — 같은 시스템, 다른 렌즈
여기까지 정리하고 보니, 결국 이 개념들은 전부 같은 시스템을 다른 각도에서 바라보는 렌즈였다.
🔍 네 가지 렌즈
프레임워크 — “어떤 흐름으로 실행되나?”
엔진 루프, 시그널 파이프라인
하네스 — “어떻게 운영하나?”
배포, CI, 모니터링, 테스트
에이전트 — “얼마나 자율적인가?”
관찰→판단→행동, 자율성 수준
프론트/백 — “어디서 실행되나?”
사용자 접점 vs 서버 로직
전략 로직에만 집중하면 나무만 보게 된다. 이런 렌즈들을 갖고 있으면 숲 전체를 조망할 수 있고, 어디가 취약하고 어디를 개선해야 하는지 체계적으로 파악할 수 있다.
공유의 경계 — 어디까지 열고, 어디까지 닫을까
마지막으로, 한 가지 더 생각해봤다. 이런 아키텍처를 공유해도 될까?
소프트웨어 아키텍처를 GitHub에 올려 공유하는 이유는 단순하다. 바퀴를 매번 새로 만들 필요가 없으니까. 거래소 API 연동 라이브러리(ccxt), 데이터 처리(pandas) 같은 건 이미 잘 만들어진 바퀴를 가져다 쓰는 거다.
하지만 트레이딩 전략은 얘기가 다르다. 전략이 공개되면 같은 시그널로 같은 타이밍에 진입하는 사람이 많아지고, 결국 알파(edge)가 사라진다.
그래서 나는 이런 경계를 두기로 했다:
✅ 공개
개발 과정과 스토리
아키텍처 개념
공개된 지표의 원리
🔒 비공개
구체적 파라미터 값
필터 조합, 청산 조건
최적화 결과
개발기를 공유하면서 신뢰를 쌓고, 핵심 엣지는 지킨다. 이 균형이 퀀트 개발자에게 가장 현실적인 전략이 아닐까.
READ NEXT ON GEONULAB
개념을 읽었다면, 이제 실제 구현 흐름도 이어서 보세요
퀀트지식은 개념을 정리하고, 빌드로그는 그 개념이 실제 전략과 운영에서 어떻게 구현되는지를 기록합니다.
최신 글 흐름은 피드에서도 확인할 수 있습니다.
Email Updates
빌드로그와 퀀트지식 새 글이 올라오면 메일로 보내드립니다.
추후 봇 트레이딩 입문 PDF 소식도 가장 먼저 안내드릴게요.