회고EthiBot

그 시각은 오지 않았다

운용 컴퓨터를 바꾸는 날마다 아침 매매가 비었다. 수칙으로 막았다가 재발했고, 테스트를 통과한 수정은 저장을 한 번도 하지 않았다. 조건이 참일 때 동작하는지가 아니라, 그 조건이 참이 되는 순간이 실제로 오는지를 물어야 했다.
📅 2026.10.12⏱ 읽기 약 5분
EthiLab오늘 시장과 종목의 위치돈이 몰린 테마와 종목의 위치를 웹에서 확인하세요바로가기 →

컴퓨터를 바꾸는 날 아침이 비었다

EthiBot은 하루 종일 한 대의 컴퓨터에서 돈다. 그런데 운용을 다른 컴퓨터로 옮기는 날이 있다. 그날만 아침 매매가 비었다.

매수 판단에 쓰는 지표는 몇십 분치 가격 흐름이 쌓여야 계산된다. 평소에는 전날 지켜본 종목들의 가격 기록이 컴퓨터에 남아 있어서, 장이 열리자마자 그 기록을 이어 붙여 바로 계산한다. 같은 컴퓨터에서 이어 돈 10월 7일은 장 시작 2분 만에 대부분의 종목에서 지표가 준비됐다.

컴퓨터를 바꾼 10월 6일은 달랐다. 새 컴퓨터에는 "어제 어떤 종목을 봤는가"라는 목록이 없었다. 가격 기록 자체는 어디서든 다시 받아올 수 있었지만, 무엇을 받아올지를 몰랐다. 09:01에 지표가 준비된 종목은 하나도 없었고, 그날 가격이 다 쌓인 10:45에야 전부 준비됐다. 첫 매수는 11:24였다.

수칙으로 막은 결함은 다시 터졌다

처음 겪었을 때는 "옮기려면 전날부터 같은 컴퓨터로 돌린다"는 수칙으로 처리했다. 코드를 고치지 않고 사람이 지키는 순서로 막은 것이다.

10월 6일은 그 수칙이 있는데도 재발한 날이다. 수칙은 기억해야 지켜지고, 기억은 바쁜 날 먼저 빠진다. 결함은 그대로 있었고 수칙이 그 위를 덮고 있었을 뿐이다.

💡 사람이 기억해야 지켜지는 수칙은 처방이 아니라 결함의 다른 이름이다. 원인이 코드 안에 있으면 처방도 코드 안에 있어야 한다.

테스트를 통과한 수정이 한 번도 저장하지 않았다

그래서 코드로 고쳤다. 장 마감 무렵에 그날 지켜본 종목 목록을, 컴퓨터를 옮길 때 함께 넘어가는 설정 저장소에 남겨 둔다. 다음 날 새 컴퓨터는 자기 기록이 비어 있으면 그 목록을 보고 가격 기록을 받아온다.

저장 시점은 "15:20 이후 첫 확인 때"로 정했다. 마감 직전에 목록이 다 모였을 때 저장하려는 뜻이었다. 판정 함수에 테스트도 붙였고, 전부 통과했다.

배포 다음 날 로그를 열어 보니 저장 줄이 0줄이었다.

매매 루프는 장 마감 청산을 마치면 스스로 끝난다. 10월 7일 로그의 마지막 줄은 15:18:07 매매 루프 종료였다. 15:20 이후의 확인은 원리상 오지 않는다. 루프가 끝난 뒤에는 아무것도 확인하지 않기 때문이다.

그 결과 10월 8일, 다른 컴퓨터로 옮긴 날 아침은 다시 비었다. 넘겨받을 목록이 없었고 첫 매수는 10:43이었다.

테스트가 묻지 않은 질문

테스트는 틀리지 않았다. 확인한 것은 **"조건이 참이면 저장하는가"**였고 그 답은 맞았다. 묻지 않은 것은 **"조건이 참이 되는 순간이 실제로 오는가"**였다.

판정 함수만 떼어 놓고 보면 15:20은 그냥 하나의 입력값이다. 테스트는 그 값을 직접 넣어 볼 수 있으니 언제든 그 순간을 만들어 낸다. 실제 운용에서는 그 값이 들어오는 길이 15:18에 끊긴다. 함수는 옳았고, 함수를 부르는 시간이 없었다.

시각을 당기지 않고 자리를 옮겼다

처음 떠오른 처방은 시각을 15:15쯤으로 당기는 것이다. 하지만 그것은 "루프가 언제 끝나는가"에 대한 추측을 하나 더 하는 일이다. 마감 청산이 길어지는 날, 사람이 손으로 루프를 멈춘 날, 오류로 루프가 끝난 날마다 다른 답이 나온다.

그래서 저장을 루프가 끝나는 자리로 옮겼다. 마감으로 끝나든, 손으로 멈추든, 오류로 끝나든 루프는 반드시 그 한 곳을 지난다. 시각을 맞히는 대신 반드시 지나가는 길목에 놓은 것이다.

10월 8일 장 마감 때 처음으로 저장 줄이 찍혔다. 15:18:27, 그날 지켜본 종목 목록이 남았다.

오늘 아침

오늘(10월 12일) 운용은 또 다른 컴퓨터에서 시작했다. 중간에 휴장일과 주말이 끼어 있었지만, 넘겨받을 목록의 날짜는 직전 거래일 하나로 맞았다.

  • 08:59 직전 거래일(10월 8일) 목록을 넘겨받음
  • 09:02 대부분의 종목에서 지표 준비 (같은 컴퓨터에서 이어 돈 날보다 많았다)
  • 09:36 첫 매수

컴퓨터를 바꾼 날 첫 매수가 11:24 → 10:43 → 09:36으로 당겨졌다. 오늘은 장이 열리고 2분 만에 지표가 준비됐다. 컴퓨터를 바꾸지 않은 날과 같은 아침이다.

남은 것

조건이 참일 때 동작하는지와, 그 조건이 참이 되는 순간이 오는지는 다른 질문이다. 시각이나 상태를 조건으로 걸 때는 그 순간을 지나가는 실행 경로가 실제로 있는지부터 본다.

맞히기 어려운 시각을 맞히려 하지 말고, 반드시 지나가는 자리를 찾는다. 끝나는 방식이 여럿이면 그것들이 모이는 한 곳이 있다.

수칙으로 덮은 결함은 덮인 채로 남아 있다. 재발했을 때 놀라지 않으려면 처음부터 코드로 고친다.

오늘 시장과 종목의 위치는 EthiLab에서 볼 수 있습니다.