🔍
광고 자리 · 리더보드

자동매매를 완전자동으로 안 만든 이유, 체결과 보고가 따로 놀았다

8월 16, 2026
광고 자리 · 본문 상단

주식 자동매매를 만들면서 자동매매 승인 게이트를 일부러 남겼다. 밤에 계획이 나오고 아침에 주문이 나가는데, 그 사이에 내가 버튼을 한 번 누른다. 없애도 됐는데 안 없앴고, 덕분에 큰 걸 하나 잡았다.

자동화를 만들다 보면 어느 순간 "이거 끝까지 자동으로 돌려버릴까" 하는 지점이 온다. 나도 그랬다. 매달 종목을 고르고 주문을 내는 걸 사람 손 없이 돌리면 깔끔하겠다 싶었지. 근데 돈이 실제로 나가는 자리라 마지막에 손을 못 뗐다. 그래서 아침 주문 직전에 "내가 승인해야만 진행"이라는 문 하나를 세워뒀다. 안 누르면 그날은 아무것도 안 나간다.

결과부터 말하면, 그 문이 잡은 건 잘못된 주문이 아니었다. 주문은 제대로 나갔는데 나한테 오는 보고가 통째로 거짓말을 하고 있었다. 그걸 알아챈 게 승인하려고 화면을 들여다보던 그 몇 분이었다.

자동으로 다 돌렸으면? 몇 달 뒤에 알았겠지..

📑 목차


1. 자동매매 승인 게이트가 무슨 말이냐면

용어부터 풀고 가자.

  • 자동매매: 사람이 매번 주식 앱을 켜서 사고파는 대신, 프로그램이 정해진 규칙대로 주문을 내는 것.
  • 승인 게이트: 그 자동 흐름 중간에 "사람이 OK 해야만 다음 단계로 넘어가는" 관문. 여기서는 아침 주문 직전에 걸어뒀다.
  • 모의투자: 증권사가 주는 가짜 돈 계좌. 주문·체결 흐름은 진짜와 거의 같은데 돈은 안 나간다. 지금 돌리는 건 전부 이 모의계좌다.

한 문장으로 하면 이렇다. 종목 고르기·수량 계산·주문 내기·기록하기는 전부 기계가 하고, 나는 "그래 이대로 가"만 한 번 누른다. 그 한 번이 없으면 아침에 프로그램이 깨어나서 상태를 확인하고 그냥 조용히 종료한다.

기계에 어디까지 권한을 줄지 선을 긋는 얘기는 예전에 클로드코드 권한, 어디까지 자동으로 풀어도 될까에서 파일 작업 기준으로 한 번 정리했었다. 이 글은 그 연장인데, 대상이 파일이 아니라 돈이라 성격이 좀 다르더라. 파일은 잘못돼도 되돌리면 그만인데 주문은 체결되면 끝이다. 잘못 산 주식을 되돌리려면 다시 팔아야 하고, 그 사이에 가격은 이미 움직여 있다. 되돌리기 버튼이 없는 자리에 자동화를 놓는 셈이었다.

2. 밤에 계획, 아침에 집행, 사이에 손가락 하나

실제로 도는 순서는 이렇다.

시각 누가 뭘 하나
전날 16:30 기계 잔고 맞춰보고, 목표 포트와 현재 보유의 차이로 매매 계획을 만든다. 텔레그램으로 "검토해달라" 발송
전날 22:30 기계 아직 승인 안 했으면 리마인더 한 번 더
아무 때나 대시보드에서 계획 보고 [최종승인]을 누른다. 안 누르면 여기서 끝
당일 08:55 기계 깨어나서 "승인됐나, 오늘 날짜 맞나" 확인. 아니면 즉시 종료
당일 09:10 기계 개장 후 실제 주문 발송

승인 알림이 텔레그램으로 오는 건, 이미 아침 브리핑을 텔레그램으로 받고 있어서 그 배선을 그대로 얹은 거다. 봇 연결하는 부분은 매일 아침 10시 텔레그램 자동 브리핑 쪽에 써놨으니 여기선 생략.

중요한 건 승인이 "주문을 내라"가 아니라 "이 계획으로 무장해라"라는 점이다. 승인 시점에는 아무것도 안 나간다. 계획이 잠기고, 다음 날 아침 그 잠긴 계획대로만 나간다. 밤에 승인하고 새벽에 마음이 바뀌면 그냥 안 켜면 된다.

자동매매 승인 게이트가 들어간 하루 흐름 ▲ 자동매매 승인 게이트가 들어간 하루 흐름 (자체 제작 이미지)

3. 첫 사고는 주문 쪽이었다, 8종목 중 1주

처음엔 장 시작 전인 08:55에 바로 주문을 넣게 해뒀다. 그날 계획은 8종목. 실제로 체결된 건 LG 1주였다.

원인은 순서였다. 팔아서 생긴 돈으로 사는 구조인데, 장 시작 전 동시호가에서 매도가 체결이 안 됐다. 돈이 안 들어오니 매수가 굶었다. 계획은 8종목인데 손에 쥔 건 1주. 판이 아니라 순서 문제였던 거다.

고친 건 세 가지다.

주문 시각을 개장 후 09:10으로 옮겼다. 매도가 전량 체결된 다음에만 매수로 넘어가게 했다. 부분 체결로는 안 넘어간다. 그리고 시장가 대신 지정가를 쓰되, 매수는 현재가에서 한 틱 위, 매도는 한 틱 아래로 걸게 했다. 호가 단위(주가대별로 정해진 최소 가격 간격)는 종목 가격에 따라 다른데, 그건 규정표대로 계산하게 시켰다.

30분 안에 체결이 안 되면? 시스템은 취소도 재주문도 안 한다. 나한테 알림만 보내고 손을 뗀다. 주문은 호가창에 그대로 남아 있으니 내가 증권사 앱에서 직접 처리한다. 여기서 기계가 알아서 가격을 올려 다시 넣게 만들 수도 있었는데, 안 했다. 미체결을 처리하는 방식은 그날 시장 분위기에 따라 다른데 그 판단을 규칙으로 못 적겠더라. 규칙으로 못 적는 걸 그대로 코드에 넣으면 무슨 일이 생길까. 시장이 어떻든 똑같은 자리에 똑같은 가격으로 다시 밀어넣는 기계가 하나 생긴다. 그건 자동화가 아니라 그냥 고집이지.

4. 두 번째가 진짜였다, 체결됐는데 매수 0건

집행이 안정된 뒤 모의계좌로 며칠 돌려봤다. 어느 날 아침 텔레그램에 이렇게 왔다.

매수 0건 · 매도 0건

근데 그날 실제로는 삼성전자 2주가 팔렸고 삼성물산 1주가 사졌다. 나머지 두 종목은 현금이 모자라 못 산 상태였고. 계좌를 열어보면 다 찍혀 있는데, 나한테 온 보고만 아무 일도 없었다고 하고 있었다.

승인하려고 화면을 보다가 숫자가 안 맞아서 계좌를 열어본 게 시작이었다. 파고 들어가니 어긋난 게 하나가 아니었다.

어디서 뭐라고 나왔나 실제
텔레그램 매수 0건 · 매도 0건 매도 1건, 매수 1건 체결
매매일지 보유현황 "보유 종목 없음" 7종목 보유 중
매매일지 체결표 전부 "체결"로만 표시 매도인지 매수인지 구분 불가
거래 기록 날짜 하루 전 날짜로 기록 실제 집행일은 그날

네 개 다 성격이 달라 보이는데 하나만 짚고 넘어가자면, "보유 종목 없음"이 제일 무서웠다. 계좌에 7종목이 들어 있는데 일지에는 텅 비었다고 적혀 있었으니까. 이유는 어이없었다. 종목 하나에 이름 정보가 빠져 있었고, 그것 때문에 평가 계산이 통째로 실패했고, 실패한 결과가 "빈 목록"으로 처리돼서 화면에는 "보유 없음"으로 찍힌 거다. 한 칸이 비었더니 전체가 거짓말이 됐다.

그래서 지금은 "기록 못 함"과 "진짜로 빈 계좌"를 화면에서 다르게 표시한다. 이게 별거 아닌 것 같은데, 자동화가 사람한테 거짓말하는 경로는 대개 여기다. 실패를 실패라고 안 하고 0이나 빈칸으로 삼켜버리는 것.

보고와 실제 체결 내역이 어긋난 사례 ▲ 보고와 실제 체결 내역이 어긋난 사례 (자체 제작 이미지)

5. 조각조각 고칠 때마다 다시 어긋난 이유

처음엔 하나씩 고쳤다. 텔레그램 숫자 고치고, 일지 표에 구분 컬럼 넣고, 날짜 바로잡고. 근데 고칠 때마다 다른 데가 또 어긋났다.

이유를 따져보니 단순했다. "오늘 무슨 거래가 일어났나"를 알아내는 경로가 두 개였다.

하나는 주문을 낸 쪽이 직접 남기는 체결 보고. 뭘 몇 주에 얼마로 팔았다는 기록이다. 다른 하나는 증권사 계좌 잔고를 다시 읽어와서 전과 비교하는 대조 결과. 실전에서는 주문 낸 직후에 아직 체결이 안 잡히는 경우가 있어서 이 대조가 필요하다.

문제는 모의계좌에서 이 대조가 항상 "변화 0"을 낸다는 거였다. 모의에서는 주문이 그 자리에서 처리되고 상태가 저장된 다음에 대조가 돌기 때문에, 대조 입장에선 이미 반영이 끝나 있어서 달라진 게 없다. 그런데 텔레그램은 하필 이 대조 결과를 읽고 있었다. 그래서 매수 0건.

여기서 진짜 문제는 어느 쪽이 틀렸느냐가 아니었다. 보고를 받아 쓰는 곳마다 서로 다른 출처를 보고 있었다는 것. 텔레그램은 대조를 보고, 일지 한 칸은 다른 걸 보고, 날짜는 또 다른 데서 가져왔다. 그러니 한 군데 고쳐도 나머지는 그대로였지.

그래서 방향을 바꿨다. "오늘 체결된 것"의 정답은 체결 보고 하나로 정하고, 실전에서 뒤늦게 발견된 체결만 대조 쪽에서 보태는 걸로 규칙을 못 박았다. 그리고 텔레그램이든 일지든 이 하나를 통해서만 읽게 했다. 두 화면이 같은 함수를 보게 되니 다시 어긋날 방법이 없어졌다.

이건 클로드코드한테 시킬 때 지시 방식도 바꾼 셈이다. "텔레그램 숫자가 0으로 나오니 고쳐줘"가 아니라 "체결 정보의 출처를 하나로 통일하고, 모든 표시 화면이 거기만 보게 해줘"로. 증상 말고 구조를 시켜야 한다는 건 클로드코드 프롬프트 6가지에서도 한 번 정리했던 얘긴데, 이번엔 그걸 안 하고 두 번 헤맨 대가를 치렀다.

수정 뒤에 트레이딩 쪽 테스트는 212개가 통과했고, 그날 데이터로 텔레그램·일지·거래기록 세 군데를 나란히 놓고 대조해서 같은 값이 나오는 걸 확인했다.

6. 승인 화면을 보다가 예산 기준도 바꿨다

승인 게이트가 준 부수적인 이득이 하나 더 있다. 매일 계획을 눈으로 보게 되니까 안 보이던 게 보인다.

원래 매수 예산은 처음 넣은 원금 기준 고정이었다. 그러다 보니 평가액이 불어나도 예산은 그대로라 돈이 계좌에 놀고 있었다. 승인 화면에서 그게 계속 눈에 밟혀서 기준을 바꿔봤다. 예수금과 평가액을 합친 현재 순자산을 예산으로 따라가게.

백테스트로 확인한 차이는 이랬다. 검증 구간에서 순자산 추종 방식이 누적 95.1%, 코스피가 47.7%, 고정 원금 방식이 28.8%. 고정 방식은 자금의 45%가 현금으로 놀고 있었다. 참고로 이건 과거 데이터 위에서 돌린 결과지 앞으로 그렇게 된다는 뜻이 아니다. 백테스트 숫자를 믿었다가 접은 얘기는 갭상승 롱온리를 접기로 했다유명한 개장 돌파 전략, 왜 내 데이터에선 안 먹혔을까에 각각 써놨다. 여기 숫자도 그 정도 무게로 봐야 맞다.

예산 기준에 따른 백테스트 누적수익률 비교 ▲ 예산 기준에 따른 백테스트 누적수익률 비교 (자체 제작 이미지)

7. 정리, 아직 안 끝난 것

솔직히 말하면 이 시스템은 완성이 아니다. 지금 남아 있는 건 이렇다.

아직 모의계좌다. 실전 돈은 안 들어가 있다. 실전에서는 주문이 비동기로 처리돼서 체결이 뒤늦게 잡히는데, 그때 대조로 보태는 부분이 제대로 도는지는 아직 확인 못 했다. 그거 확인 전엔 실전 전환 안 한다.

그리고 잘못 기록된 과거 거래 두 건이 아직 그대로 있다. 코드는 고쳤지만 이미 남은 기록을 손대는 건 별개 문제라 그냥 뒀다. 자동화가 만든 데이터를 나중에 손으로 정정하는 건 그것대로 위험해서.

만들면 끝이 아니라는 건 자동화를 다 만들면 끝일까, 점검하는 자동화가 따로 필요했다에서도 겪은 건데, 이번 건 좀 결이 다르다. 그때는 자동화가 조용히 죽는 게 문제였고, 이번엔 자동화가 멀쩡히 살아서 틀린 보고를 계속 보내는 거였다. 후자가 더 안 좋다. 죽으면 알아채기라도 하지.

누가 이런 걸 만들면 좋냐면, 규칙은 정해져 있는데 실행이 귀찮은 일을 가진 사람. 근데 돈이나 외부로 나가는 게 걸린 자리라면, 마지막 버튼 하나는 남겨두는 쪽을 권한다. 그 버튼은 잘못된 실행을 막으려고 있는 게 아니다. 매일 한 번 시스템을 쳐다보게 만들려고 있는 거더라.

3줄 요약 - 자동매매를 만들다 아침 주문 직전에 승인 버튼 하나를 남겼다. 안 누르면 그날은 아무것도 안 나간다. - 승인하려고 들여다보다 잡은 건 잘못된 주문이 아니라, 체결은 됐는데 "매수 0건"이라 보고하던 결함이었다. 원인은 체결 정보의 출처가 두 갈래로 갈려 있었던 것. - 아직 모의계좌고, 실전에서 뒤늦게 잡히는 체결 처리는 검증 전이다. 그 전엔 실전 전환 안 한다.

버튼을 없앴으면 지금도 매일 "매수 0건"을 받으면서 잘 돌아가는 줄 알고 있었을 거다.


이 글은 개인 기록이자 정보 제공 목적의 글이고, 투자 권유나 수익 보장이 아니다. 본문 수치는 전부 과거 데이터 기준 검증 결과라 미래 성과와 무관하다. 실제 매매는 모의계좌에서만 돌렸다. 시스템 구성이나 코드 동작의 정확성을 보장하지도 않으니 참고용으로만 봐야 한다. 증권사 API 사양·수수료·호가 단위 규정은 작성 시점(2026년 8월) 기준이며 변경될 수 있으니, 직접 만들 계획이라면 공식 문서를 확인하는 게 좋다.

참고한 공식 자료 - 한국투자증권 오픈API 개발자 포털(주문·잔고 조회 API): apiportal.koreainvestment.com [⚠️UNVERIFIED 최신 URL 구조 변경 가능] - 클로드코드 개요·기본 사용: code.claude.com/docs - 호가 가격단위·매매제도 안내(한국거래소): krx.co.kr [⚠️UNVERIFIED 세부 페이지 경로 미확인]

광고 자리 · 멀티플렉스

함께 읽으면 좋은 글