자동매매를 만들고 나서 가장 긴장되는 순간은 실계좌로 처음 돌리는 날입니다. 실계좌 전환은 한 번에 하지 않고 모의, 테스트넷, 소액, 정식 운용의 4단계로 나눠서 했고, 단계마다 앞 단계에서는 보이지 않던 문제가 하나씩 나왔습니다. 이 글은 실계좌로 운용 중인 여섯 개의 시스템을 옮기며 거친 순서와, 각 단계에서 실제로 걸렸던 일을 정리한 기록입니다.
왜 단계를 나누는가
자동매매의 버그는 대부분 코드가 아니라 상황에서 나옵니다. 주문이 절반만 체결되는 상황, 거래소가 잠깐 응답하지 않는 상황, 수수료 때문에 잔고가 장부와 조금 다른 상황 같은 것들입니다. 이런 상황은 컴퓨터 안에서 흉내 내기 어렵고, 진짜 돈이 걸린 진짜 거래소에서만 나타나는 경우가 많습니다. 그렇다고 처음부터 실계좌에 전부 맡기면, 버그를 찾는 비용을 내 돈으로 치르게 됩니다.
그래서 단계마다 "이번 단계에서 확인할 수 있는 것"과 "확인할 수 없는 것"을 먼저 적어 두고, 확인할 수 있는 것을 다 확인한 뒤에만 다음 단계로 넘어갑니다.

테스트 환경에서 확인한 것: 모의와 테스트넷
1단계 모의: 내 컴퓨터 안에서만 도는 거래
첫 단계는 거래소에 아무것도 보내지 않는 모의 운용입니다. 가격은 누구나 볼 수 있는 공개 시세를 받아 오고, 체결과 잔고는 프로그램이 직접 계산합니다. 거래소 접속 키가 없어도 돌아갑니다.
이 단계에서 확인하는 것은 전체 흐름입니다. 정해진 시각에 깨어나는지, 가격을 받아 판단까지 가는지, 판단대로 장부가 바뀌는지, 결과 보고가 오는지입니다. 주식 시스템 하나는 모의 운용 첫날 아침 실행에서 프로그램이 멈췄고, 원인을 고친 뒤 이틀 연속 정상 실행을 확인하고 나서야 다음 단계로 넘어갔습니다. 반대로 이 단계에서는 실제 체결이 어떻게 되는지는 전혀 알 수 없습니다. 체결을 프로그램이 상상해서 계산하기 때문입니다.
2단계 테스트넷: 진짜 주문, 가짜 돈
두 번째 단계는 거래소가 제공하는 테스트용 서버입니다. 진짜 접속 키로 인증하고 진짜 주문을 보내지만, 돈은 가상 자금입니다. 체결과 잔고를 거래소 서버가 관리한다는 점이 모의 단계와 결정적으로 다릅니다.
여기서는 주문이 실제로 들어가고 취소되는지, 거래소 서버와 시각이 맞는지, 거래소가 알려주는 잔고와 내 장부가 일치하는지, 알림이 실제로 휴대폰에 오는지를 확인합니다. 코인 시스템 두 개는 테스트넷에서 주문을 넣고 빼는 왕복, 잔고 대조, 알림 실전송까지 확인한 기록을 남기고 나서 실계좌로 넘어갔습니다.
그런데 테스트용 환경에도 한계가 있습니다. 주식 쪽 모의투자 서버는 체결 내역을 주문별로 알려주지 않고 합계만 줬습니다. 주문 번호로 하나하나 체결을 확인하는 것이 이 시스템의 핵심 원칙이었는데, 그 원칙 자체를 모의 환경에서는 검증할 수 없었습니다. 모의 서버의 체결도 실제 시장보다 훨씬 얇아서, 시장가 주문조차 몇 주씩 나눠서 체결되곤 했습니다. 그래서 모의 환경의 체결 속도는 실전 성능을 짐작하는 데 쓰지 않기로 했습니다. 또 다른 주식 시스템은 장 마감 가격으로 주문하는 방식을 써야 했는데, 모의투자 서버가 그 주문 방식을 아예 지원하지 않았습니다. 이렇게 "테스트 환경에서는 원천적으로 확인할 수 없는 것"을 목록으로 따로 적어 두는 것이 다음 단계의 준비가 됩니다.
실계좌에서 확인한 것: 소액과 정식 운용
3단계 소액·제한 운용: 실계좌에서만 보이는 것
세 번째 단계는 실계좌지만 피해를 작게 묶어 둔 운용입니다. 앞 단계에서 확인하지 못한 목록을 여기서 하나씩 지웁니다.
장 마감 주문 방식을 검증하지 못한 시스템은 실계좌에서 한 주만 사고파는 시험 주문을 따로 돌려 주문 방식이 제대로 들어가는지 확인했습니다. 단타 시스템은 실계좌 첫 주를 "제한 운용"으로 돌렸습니다. 투입 금액에 상한을 걸고, 종목도 우선순위가 가장 높은 두 개로만 제한한 채 계획한 5거래일을 채웠습니다. 이 기간에는 완전히 맡기지 않고 매일 아침 사람이 보고서와 증권사 프로그램의 실제 잔고를 직접 대조했습니다. 계획한 기간 동안 문제가 없는 것을 확인한 뒤에 상한을 풀었습니다. (근거: 단타 시스템 운영 이력의 제한 운용 기록)
4단계 정식 운용, 그리고 실수로 실계좌가 켜지지 않게
마지막은 제한을 푼 정식 운용입니다. 이때부터 중요한 것은 반대 방향의 사고입니다. 테스트하려다가 실수로 실계좌 주문이 나가는 일입니다.
그래서 한 시스템은 실계좌 실행에 세 겹의 잠금을 걸었습니다. 설정 파일에서 실계좌 모드를 선택해야 하고, 실계좌임을 확인하는 문구를 별도의 환경 설정에 정확히 적어야 하며, 실행할 때 화면에 뜨는 경고를 보고 직접 확인 입력을 해야 합니다. 셋 중 하나라도 빠지면 시스템은 실계좌 대신 테스트 모드로 스스로 내려갑니다. 무인으로 다시 켜지는 경우를 위해 하루에 다시 켤 수 있는 횟수도 정해 두었습니다. 실계좌는 켜기 어렵게, 테스트는 쉽게 만드는 것이 원칙입니다.
정리: 단계를 넘기 전 체크리스트
- 모의 → 테스트넷: 정해진 시각에 깨어나 판단과 보고까지 며칠 연속으로 끊김 없이 돌았는가
- 테스트넷 → 소액: 주문·취소 왕복, 시각 맞추기, 장부와 잔고 대조, 알림 실전송을 모두 확인했는가
- 테스트넷 → 소액: 테스트 환경에서 확인할 수 없는 것을 목록으로 적어 두었는가
- 소액 → 정식: 그 목록을 실계좌에서 하나씩 지웠는가, 계획한 기간을 채웠는가
- 정식 운용: 실수로 실계좌가 켜지지 않도록 잠금이 있는가
다음 글에서는 자동매매의 첫 번째 칸인 데이터를 다룹니다.
같은 기록을 카드로 정리한 요약은 인스타그램 @wealthgrid.lab 에 올립니다.
※ 특정 종목·수익을 권유하지 않는 개인 시스템 개발 기록입니다. 투자 판단과 책임은 본인에게 있습니다.
'자동매매 [ALGO]' 카테고리의 다른 글
| 자동매매 구조, 전략은 여섯 칸 중 한 칸입니다 (0) | 2026.10.02 |
|---|