오늘의 HERMES v3: 쥬는 잘 나온 종목보다 마지막 하루를 먼저 고쳤다
오늘 HERMES v3에서 가장 눈에 띈 결과는 “어떤 종목이 제일 잘 나왔나”가 아니었다.
마지막 하루가 맞지 않으면, 좋아 보이는 백테스트도 아직 믿지 않는다.
이 글은 2026-08-07 22:13 KST의 코드 스냅샷과 22:11 KST까지의 운영 기록을 기준으로 썼다. 계좌, 보유 종목, 실제 주문 정보는 넣지 않았다.

백테스트가 종목 추천표가 아닌 이유
이번에 끝난 코인 선물 백테스트는 5개 전략을 같은 과거 구간에 돌려 본 작업이다. 추세가 눌렸을 때를 보는 전략, 거래량을 동반한 돌파를 보는 전략, 과열·과매도를 되돌아보는 전략처럼 서로 다른 방법을 함께 검사했다.
그런데 이 실험 원장은 “A 종목이 몇 퍼센트 올랐다” 같은 순위표를 남기지 않는다. 전략별로 표본 수, 비용을 뺀 결과, 여러 기간에 나눠 다시 돌렸을 때의 일관성, 과거에 사라진 종목까지 포함됐는지를 남긴다.
그래서 오늘 글에도 특정 종목 이름을 억지로 넣지 않았다. 수천 개 종목과 페어를 함께 검증한 뒤, 잘 나온 몇 개만 고르면 그럴듯한 이야기는 만들 수 있다. 하지만 그 순간부터 백테스트는 검증이 아니라 사후 자랑이 된다.
한국 주식 쪽도 같은 원칙이다. 최근 재생은 한국 시장 4,397개 종목을 포함한 과거 구간을 사용했지만, 현재 원장은 종목별 추천 목록을 공개 결과로 만들지 않는다. 쥬가 아직 “이 종목을 사라”고 말하지 않는 이유다.
오늘 끝난 13시간 54분짜리 테스트
코인 선물 쪽에서는 다섯 전략을 한꺼번에 다시 돌리는 작업이 끝났다. 단일 코어를 오래 쓰는 작업이라 13시간 54분이 걸렸고, 결과는 5개 모두 SHADOW, 즉 관찰 단계였다.
| 전략 | 이번 결과 | 쥬가 내린 결론 |
|---|---|---|
trend_pullback |
수익성·표본·기간별 검증 같은 통계 조건은 통과했다. | 마지막 상장폐지 증거가 재생 구간과 하루 어긋나서 멈췄다. |
breakout_volume |
거래량을 동반한 돌파를 검사했다. | 상장폐지 증거와 수익성 조건이 모두 더 필요했다. |
mean_reversion_band |
과열·과매도 구간의 되돌림을 검사했다. | 상장폐지 증거가 맞지 않아 관찰에 남았다. |
momentum_rank |
같은 시점의 상대적인 모멘텀을 비교했다. | 상장폐지 증거와 수익성 조건이 더 필요했다. |
volatility_contraction |
변동성이 줄었다가 추세가 이어지는 경우를 검사했다. | 상장폐지 증거와 수익성 조건이 더 필요했다. |
여기서 trend_pullback이 특히 아쉬웠다. 통계만 보면 다음 문으로 갈 수 있었지만, 과거에 사라진 선물 종목을 포함했다는 증거의 마지막 날짜와 실제 재생이 본 마지막 날짜가 하루 달랐다.
증거 쪽은 8월 5일까지 있다고 말하는데, 재생 쪽은 24시간 시장의 8월 5일 봉이 8월 6일 0시에 완성된다는 사실을 놓쳐 8월 4일까지만 읽었다. 둘 중 하나가 틀린 상태에서 “통과” 도장을 찍으면 안 된다. 그래서 쥬는 5개 모두 관찰 단계에 남겼다.
그래서 오늘은 마지막 하루를 고쳤다
문제는 거창한 전략이 아니라 날짜 해석이었다.
주식 시장은 장 마감 시간이 정해져 있어서 “8월 5일까지”라고 적으면 대체로 그날 장이 끝난 뒤를 뜻한다. 하지만 코인처럼 하루 종일 움직이는 시장에서는 8월 5일 일봉이 8월 6일 0시에야 완성된다. 프로그램이 날짜의 끝을 무조건 23:59:59로 바꾸면, 바로 그 마지막 봉 하나가 빠질 수 있다.
오늘은 이 기준을 한곳으로 모았다. 이제 데이터 설치, 백테스트 재생, 명령줄 날짜 해석이 모두 같은 “마지막으로 완성된 세션” 정의를 쓴다. 결과가 좋아서 규칙을 바꾼 게 아니라, 결과를 믿기 위한 시계부터 맞춘 것이다.
다음 재실행에서도 결과가 그대로면 그때는 한 단계 더 신뢰할 근거가 생긴다. 반대로 마지막 하루를 넣자마자 결과가 바뀐다면, 지금 멈춘 선택이 옳았다는 뜻이다. 어느 쪽이든 “좋았던 결과를 지키기”보다 낫다.
주문에 가까워진 것이 아니라, 주문을 더 어렵게 만들었다
오늘 코드에는 주문을 안전하게 다루기 위한 뼈대도 추가됐다. 다만 이건 주문 기능을 열었다는 소식이 아니다. 반대에 가깝다.
- 시장별 최대 비중과 단일 종목 한도를 코드에서 더 느슨하게 만들 수 없게 했다.
- 동시에 들 수 있는 종목 수도 시장별 10개, 전체 15개를 넘기지 못하게 했다.
- 같은 의도의 주문은 프로그램이 다시 켜져도 같은 이름으로 인식해 두 번 보내지 않도록 했다.
- 주문 상태는 수정해 덮어쓰지 않고, 변화가 일어난 순서대로 원장에 쌓도록 만들었다.
그래도 실제 거래소나 증권사에 주문을 보내는 연결은 아직 없다. 현재 게이트웨이는 일부러 “연결되지 않음”을 반환하고, 주문 원장은 미래에 연결할 때 같은 주문을 중복해서 내지 않기 위한 준비물이다.
오늘 운영 기록에도 코인 관찰 쪽의 실제 판단 호출 6번, 한국 주식 관찰 쪽의 실제 판단 호출 4번이 남았다. 이것은 시장을 읽고 메모를 남긴 횟수일 뿐, 주문은 아니다. 장이 닫힌 뒤에는 한국·미국 주식 흐름이 정상적으로 건너뛰어졌고, 코인 쪽도 새로 판단할 이유가 없으면 멈췄다.
오늘의 결론
오늘 쥬는 백테스트에서 “이길 것 같은 종목”을 고르지 않았다. 대신 다음 질문을 먼저 통과시켰다.
- 마지막 날까지 실제로 완성된 데이터를 읽었나?
- 과거에 사라진 종목을 빼고 좋은 성적만 본 것은 아닌가?
- 여러 기간에 나눠도 같은 결과가 나왔나?
- 그 모든 검증을 통과해도, 주문을 안전하게 기록하고 중복을 막을 수 있나?
지금 답은 아직 “계속 확인 중”이다. 그래서 종목 이름을 앞세운 추천글 대신, 마지막 하루가 맞지 않으면 멈추는 시스템의 이야기를 남긴다.
이 글은 개발 기록이며 투자 권유가 아니다. 백테스트 결과는 과거 데이터의 검증 기록일 뿐이며, 언급한 전략과 시장은 매수·매도 추천이 아니다.
오늘의 HERMES v3: 쥬는 잘 나온 종목보다 마지막 하루를 먼저 고쳤다
https://poul.kr/2026/08/07/20260807-hermes-v3-backtest-last-day/



