2026년 7월 23일, 제 봇의 국내 기록에는 이렇게 남아 있습니다. 종목 922개를 살펴봤고, 걸린 시간은 1,488초. 약 25분입니다.

그날 조건을 통과한 종목은 하나도 없었습니다.

그런데 고장이 아니었습니다. 여러분이 “신청하면 된다”고 듣고 그냥 넘어간 것도 지금 이 상태일 수 있습니다.

오류도 안 났고 기록도 멀쩡했습니다. 조건이 그날 한 번도 안 걸렸을 뿐입니다.

2026년 7월 23일 하루 기록입니다
머니노트 · 정보·교육·참고용
표로 보기
25분을 쓰고 한 건도 안 걸렸습니다
항목 설명
살펴본 종목 922 당일 기록
걸린 시간 25분 1,488초
조건 통과 0건 당일 결과

여기서 ‘조건을 통과했다’는 건 봇이 살 만한 종목을 찾았다는 뜻입니다. 봇은 매일 종목을 훑으면서 미리 정해 둔 조건에 맞는 게 있는지 봅니다. 그날은 922개를 다 보고도 맞는 게 없었던 거죠.

개발기 15에서는 검사가 재려던 것에 손도 안 댄 이야기를, 19에서는 통과는 했는데 통과시킨 게 딴 자였다는 이야기를 했습니다.

오늘은 다릅니다. 조건은 적힌 그대로 정확히 작동했습니다. 검사도 옳았고요.

다만 그 조건에 걸릴 수 있는 것이 너무 드물었을 뿐입니다.

조용한 것만 골라 놓고, 그중에서 제일 시끄러운 걸 찾았습니다

봇이 살 종목을 고르는 규칙은 2단계였습니다.

1단계는 조용해진 종목을 추립니다. 가격도 거래량도 잠잠해진 것들이요. 2단계는 그중에서 바로 다음 날 거래량이 확 터지는 종목을 찾습니다.

쉽게 말하면 이런 겁니다. 도서관에서 제일 조용한 사람들만 먼저 추려 놓고, 그 사람들 중에 내일 갑자기 소리 지를 사람을 찾은 셈입니다.

여기서 하나 갈라 읽어야 합니다. 거래량 기준이 시장마다 달랐거든요. 해외는 평소의 2배, 국내는 1.5배를 요구했습니다.

해외 쪽 재현 결과가 개발 기록에 남아 있습니다. 1단계를 통과한 272건 중에서, 다음 날 거래량 조건까지 통과한 건 3건. 약 1.1%였습니다.

조용한 것을 고른 다음 폭발을 요구했습니다
머니노트 · 정보·교육·참고용
표로 보기
앞 조건이 뒤 조건을 지우고 있었습니다
단계 내용 설명
1단계 1단계 조용한 것만
2단계 통과분 272건 거래량 0.81배
3단계 2단계 요구 평소의 2배
4단계 통과 3건

같은 표본에서 거래량 비율의 중앙값은 0.81배였습니다. 비율을 작은 순서대로 늘어놓았을 때 딱 한가운데 오는 값이라는 뜻입니다. 국내도 0.83배로 거의 같았습니다.

터지기는커녕 더 줄어든 겁니다.

개발 기록은 비교할 값도 함께 적어 뒀습니다. 시장 전체에서 “거래량이 평소의 2배”가 일어나는 비율이 4.63%라고요.

통과 종목에서는 1.1%였으니 약 4배 더 드물어진 겁니다.

필터를 통과할수록 확률이 낮아졌습니다
머니노트 · 정보·교육·참고용
표로 보기
1.1%는 엄격한 게 아니라 이상한 것이었습니다
항목 설명
시장 전체 아무 종목이나 4.63%
1단계 통과분 조용해진 종목 1.1%

“1.1%” 만 보면 그냥 까다로운 조건으로 읽힙니다. 옆에 4.63%를 놓고 나서야 뜻이 뒤집혔습니다.

1단계가 2단계를 도운 게 아니라 방해하고 있었던 겁니다.

물론 이 비교를 너무 세게 밀면 안 됩니다. 4.63%가 어느 시장에서 몇 개를 놓고 잰 값인지는 기록에 안 적혀 있거든요. 비교할 짝이 있어야 숫자가 말을 한다는 건 배웠지만, 그 짝의 출처까지 봐야 결론이 선다는 것도 같이 배웠습니다.

그럼 조건을 좀 낮추면 되는 것 아닌가요

저도 그 생각을 제일 먼저 했습니다. 요구하는 배수를 낮추면 신호가 나오겠죠.

안 낮췄습니다. 이유는 표본입니다.

이 전략의 82일 운영 기록에 남은 실제 매매는 4건입니다. 2건은 팔았고 2건은 아직 들고 있었어요. 그 4건으로는 이 규칙이 좋은지 나쁜지를 따질 수가 없습니다. 그 상태에서 숫자를 만지면 잘 돼도 왜 잘 됐는지 모르고, 못 돼도 왜 못 됐는지 모릅니다.

조건이 아예 불가능했던 것도 아닙니다. 해외 표본에서도 3건은 통과했으니까요. 문제는 성적을 매길 자료가 안 쌓인다는 쪽이었습니다.

272건 중 3건만 넘었습니다
머니노트 · 정보·교육·참고용
표로 보기
1단계를 넘어도 거기서 다시 걸립니다
항목 설명
2단계 통과 3건 1.1
넘지 못함 269건 98.9

그래서 새로 사는 것만 멈추고, 이미 산 것을 파는 기능은 그대로 뒀습니다.

Photo: Mark Stebnicki / Pexels
Photo: Mark Stebnicki / Pexels

여기서 하나 배웠습니다. 성적을 보기 전에 표본이 쌓이는 속도를 먼저 봐야 한다는 것.

그리고 안 나오는 것도 비용입니다. 아무것도 안 나오는 일에 매일 25분을 쓰고 있었으니까요.

더 조용했던 건, 아무도 안 켠 스위치였습니다

두 번째 이야기입니다.

새 기능을 만들어 서버에 올렸습니다. 다음 날 확인해 보니 그 기능이 한 번도 안 돌았습니다. 스위치가 꺼져 있었거든요.

Photo: Phil Ledwith / Pexels
Photo: Phil Ledwith / Pexels

개발기 15에서도 스위치 이야기를 했는데, 그때와는 반대 방향입니다. 그때는 검사 준비 코드가 스위치를 켜 놓고 시작해서 검사가 자기가 켠 걸 다시 확인했어요. 이번엔 켜는 사람이 아예 없었습니다.

그리고 이건 버그가 아니었습니다. 설계서에 “처음엔 꺼진 채로 올린다”고 제가 적어 뒀고, 코드도 그대로였습니다.

검사도 통과했습니다. 그 검사가 확인한 게 “꺼져 있을 때 아무 일도 안 일어나는가”였는데, 정확히 그대로였으니까요.

켜는 날만 비어 있었습니다
머니노트 · 정보·교육·참고용
표로 보기
만들고 올리는 날은 정했는데 켜는 날이 없었습니다
시점 사건 설명
8월 14일 쓰기로 정함 이 기능을 켜서 쓴다
8월 15일 서버에 올림 새벽 5시 25분
8월 16일 실측하니 꺼짐 한 번도 안 돌았음

빠진 건 딱 한 줄이었습니다. “그럼 언제 켜나.”

설계서에도, 인수인계 문서에도, 어디에도 그 문장이 없었습니다. 쓰기로 정한 것도 맞고 올린 것도 맞는데, 켜는 날을 아무도 안 정한 것입니다.

쓰기로 정한 것과 실제가 갈렸습니다
머니노트 · 정보·교육·참고용
표로 보기
쓰기로 정한 것과 실측이 갈렸습니다
배포 다음 날 확인 쓰기로 정한 것 서버에서 잰 값
그 기능 켜서 쓴다 꺼져 있음
그 기능이 넣은 자료 분리해서 집계 149건 중 0건
후속 관찰 통과율 보고 판단 안 쌓이는 중

더 나빴던 건 그다음입니다. 그사이 다른 문서 두 개가 “지금 돌고 있다”는 전제로 쓰였어요.

하나는 “통과율을 봐야 판단할 수 있다”고 적혀 있었습니다. 안 돌고 있으니 통과율은 쌓이질 않죠. 다른 하나는 그 기능이 붙이는 이름표로 자료를 나눠 세겠다고 적었는데, 그 이름표가 붙은 자료는 149건 중 0건이었습니다.

아무 일도 안 일어난 자리 위에 계획이 얹히고 있었습니다.

그럼 제대로 걸리게 고치면 되는 것 아닌가요

여기서 방향이 뒤집힙니다.

신호가 드물던 그 매수 조건과는 별개로, 화면을 자동으로 갱신하는 도구에서도 안 걸리는 조건이 나왔습니다. 낡은 데이터로 판단하는 걸 막으려고 넣어 둔 조건이었어요.

그게 영원히 안 걸리게 적혀 있었습니다. 값을 찾아가는 주소를 틀리게 썼거든요. 없는 서랍을 열어 보고 “이상 없습니다”라고 답하는 셈입니다.

여기까지가 검토 세 단계였습니다. 처음에는 조건이 없다는 지적이 나왔고, 조건을 넣는 과정에서 주소가 틀렸고, 다음 검증자가 그래서 이 조건은 안 걸린다고 짚었죠.

네 번째가 한 걸음 더 갔습니다.

“주소를 바로잡으면 정상적인 갱신까지 막히지 않나요?”

왜 그런지 풀어 보면 이렇습니다. 그 시스템은 국내 판단을 저녁 7시 50분에 기록하는데, 미국의 하루치 가격·거래량 자료는 다음 날 새벽 5시 30분에 받았습니다.

그러니 자료를 정상적으로 받아도 미국 자료의 날짜가 국내 판단일보다 앞설 수 있습니다. 어쩌다 그런 게 아니라 구조상 그렇습니다.

주소를 고쳤다면 그 뒤 단계가 평일마다 막혔을 겁니다. 그리고 무서운 대목은 이겁니다 — 그 멈춤은 오류를 하나도 안 냅니다. 화면이 조용히 멈추고, 한참 뒤에나 눈치챕니다.

Photo: Yetkin Ağaç / Pexels
Photo: Yetkin Ağaç / Pexels

그래서 그 조건은 판정에서 빼고 기록만 남기기로 했습니다. 잘못 쓴 자가 아니라, 애초에 낡음을 재는 데 쓸 수 없는 자였던 것입니다. 대신 갱신이 막히거나 뒷일이 실패하면 알림이 오도록 했습니다.

질문이 단계마다 달랐습니다
머니노트 · 정보·교육·참고용
표로 보기
네 번째 질문에서 방향이 갈렸습니다
단계 내용 설명
1단계 1단계 조건이 없다
2단계 2단계 주소가 틀렸다
3단계 3단계 그래서 안 걸린다
4단계 4단계 걸리면 안 된다

오해하지 마세요. 안 걸리는 조건을 다 빼라는 이야기가 아닙니다.

질문 하나를 순서에 넣자는 겁니다. 안 걸리는 조건을 찾았을 때, 고치기 전에 한 번 더 묻는 거예요. “이게 걸리면 무엇이 멈추지?”

그래서 제가 바꾼 건 조건이 아니라 기본값이었습니다

블로그 자동화 쪽에서도 같은 모양을 하루에 여섯 자리에서 찾았습니다.

새 공정을 하나 만들었는데, 그 공정에 딸려 가야 할 자료 목록에서 한 줄이 빠졌습니다. 그림 스타일 모음집 경로였어요.

기존 공정에는 처음부터 있었고 새로 만든 칸에만 없었습니다. 제가 두 번 짚고 나서야 그 빠진 줄을 찾았습니다.

정리 도구도 그랬습니다. 이건 두 군데에서 막혀 있었어요. 찾도록 만든 ‘완료’ 구역이 실제 문서에 없었고, 그걸 고쳐도 항목 길이가 중앙값 3줄, 최대 36줄이라 100줄 기준에 닿지 않았습니다.

도구는 커밋할 때마다 불려 나갔고, 매번 “옮길 게 없습니다”라고 답했어요. 만들어 두고 반영이 안 됐다고 생각했는데, 돌고는 있었고 눈금이 안 닿았던 겁니다. 이쪽은 길이 대신 상태로 가르도록 기준 자체를 바꿨습니다.

Photo: Daniel Andraski / Pexels
Photo: Daniel Andraski / Pexels

코드 주석에 예전에 적어 둔 한 줄이 있더군요.

“밀어넣은 것은 지켜지고, 가져오게 시킨 것은 안 지켜진다.”

자료 목록 쪽은 조건을 고치지 않고 목록의 방향을 뒤집었습니다.

적는 대상을 반대로 바꿨습니다
머니노트 · 정보·교육·참고용
표로 보기
방향을 뒤집으니 잊는 쪽이 막혔습니다
자료 목록
손으로 적는 것 실을 공정 안 실을 공정
안 적으면 조용히 빠짐 이름 대고 멈춤
빠지려면 아무것도 필요 없음 이유를 적어야
새 공정을 만들면 잊는 게 통과 빠짐이 잡힘

전에는 자료를 실을 공정을 손으로 적었습니다. 그러면 새 공정을 만들면서 안 적는 것이 곧 통과입니다. 잊는 쪽이 기본값이었던 겁니다.

지금은 뺄 공정만 적습니다. 빼려면 이유를 적어야 합니다. 목록에 없는데 자료도 안 실린 공정이 있으면 도구가 그 공정 이름을 대고 멈춥니다.

이 검사는 새로 만든 공정만 보는 게 아니라 기존 공정까지 전부 봅니다. 문도 두 개 더 달았습니다. 빼는 이유를 안 적으면 면제가 아니고, 이미 없어진 공정이 그 목록에 남아 있어도 잡습니다. 안 그러면 그 목록이 조용한 쓰레기통이 되거든요.

확인은 일부러 망가뜨려서 했습니다. 네 가지 시험을 넣었더니 네 번 다 울었어요. 그중 하나가 전날 실제로 저지른 그 실수를 본뜬 것이었습니다.

일부러 지워 보고 확인했습니다
머니노트 · 정보·교육·참고용
표로 보기
적어 두는 대신 막게 만들었습니다
항목 설명
넣어 본 시험 4가지 자료 목록
경보가 울린 것 4가지 전부 잡힘
실제 사고를 본뜬 것 1가지 전날 그 실수

이게 이번에 제일 크게 남은 겁니다. 규칙을 더 적는 것으로는 안 지켜졌습니다. 아무것도 안 했을 때 벌어지는 일을 바꾸니까 그제야 지켜지더군요.

여러분이 아무것도 안 했을 때, 지금 무엇이 정해지고 있나요

Photo: Kampus Production / Pexels
Photo: Kampus Production / Pexels

여기까지가 봇 이야기인데, 이 질문은 돈 쪽으로도 가져갈 수 있습니다. “내가 아무것도 하지 않으면 다음에 무엇이 일어나지?”

우리가 받는 안내에는 두 갈래가 섞여 있습니다. 내가 움직여야만 되는 것과, 가만히 있으면 저절로 넘어가는 것이요.

“신청하시면 됩니다” 라는 문장이 앞쪽입니다. 안내처럼 들리지만, 실제로는 아무것도 안 하면 아무 일도 안 일어난다는 뜻이거든요.

제 스위치가 꺼져 있던 것과 같은 자리예요. 쓰기로 정했고, 자격도 되고, 서류도 있는데, 켜는 날을 아무도 안 정한 상태입니다.

뒤쪽도 있습니다. 자동으로 연장되거나, 만기 뒤에 다른 조건으로 바뀌거나 하는 경우요. 이쪽은 내가 아무 결정을 안 해도 결정이 내려집니다.

아무것도 안 했을 때 갈립니다
머니노트 · 정보·교육·참고용
표로 보기
가만히 있을 때 결과가 갈립니다
내가 아무것도 안 하면 신청해야 되는 것 자동으로 되는 것
그때 결과 아무 일 없음 그대로 진행
확인할 것 접수됐나 다음 조건이 뭔가
어디서 보나 해당 기관 해당 기관

한 가지 덧붙이면, 제도와 상품마다 절차가 다르고 한 상품 안에서도 단계마다 갈립니다. 신청이 필요한 단계와 자동으로 넘어가는 단계를 따로 확인하셔야 하는 이유예요.

제 실수를 되짚어 보면 문제는 조건 자체가 아니었습니다. 켜져 있다고 믿은 것과 실제로 켜져 있는 것을 한 번도 안 맞춰 본 것이었어요. 서버에 물어보면 확인할 수 있었는데, 저는 문서만 보고 있었습니다.

오늘 딱 하나만 해 보신다면 이걸 권합니다. 최근에 “신청하면 된다”고 들은 것 하나를 고르세요.

그리고 그게 지금 어떤 상태인지를 문서 말고 해당 기관에서 한 번 확인해 보시는 겁니다. 접수가 됐는지, 더 낼 것이 있는지, 언제부터 적용되는지요.

오늘 제가 아직 못 잰 것

이 글도 “다 고쳤습니다”로 닫지는 않겠습니다.

방향을 뒤집은 장치는 자료가 빠졌는지는 잡지만, 그 자료의 내용이 낡았는지나 적어 둔 면제 이유가 타당한지까지는 판단하지 못합니다. 그건 다음 숙제입니다.

그리고 이번에 고치는 도중에 새 결함이 셋 생겼습니다. 하나는 작업 중 자체 확인에서, 나머지 둘은 별도 검증에서 나왔습니다.

그중 하나가 하필 “이 검사가 센다”고 주석에 적어 놓고 실제로는 안 만든 것이었습니다. 이 글이 내내 이야기한 그 병을, 그 병을 고치는 중에 또 저지른 겁니다.

고칠수록 새로 내는 구간이 있다는 걸 그때 알았습니다.

봇 쪽 세 사례는 개발 기록에 적힌 값을 옮긴 것이고, 그 실행을 다시 돌려 본 건 아닙니다. 그리고 이 운영 기록에는 실제 손실도 남아 있습니다. 신호가 드물었던 문제와 그 손실의 원인은 별개 조사로 갈라 뒀습니다.

그래도 오늘은 하나 확실히 얻었습니다. 전에는 규칙을 적어 두고 지켜지길 바랐는데, 이제는 안 지키면 그 자리에서 멈추게 해 뒀어요.

25분을 쓰고 조용하던 그 화면이 지금 저에게 남긴 건 질문 하나입니다. “작동한다고 믿는 것 중에, 실제로 확인해 본 건 몇 개지?”

※ 이 글은 자동매매 시스템과 블로그 자동화를 만들며 겪은 과정을 기록한 개발기입니다. 특정 종목이나 매매 방법을 권유하지 않으며, 본문에서 인용한 봇 쪽 수치는 개발 기록에 적힌 값을 옮긴 것입니다. 각종 제도·상품의 신청 요건과 자동 적용 여부는 기관과 상품에 따라 다르므로 개별 사안은 해당 기관에 확인하셔야 합니다. 투자 판단과 그 책임은 본인에게 있습니다. 2026.09 기준 정보·교육·참고용으로만 봐 주세요.

기준이 바뀌면 알려드릴까요?

세율·요율·한도는 해마다 바뀝니다. 주 1회, 그 주에 알아둘 것만 모아 보내드립니다.

지난 편지 보기 →

언제든 해지할 수 있습니다 · 정보·교육·참고용