ChatGPT를 해지하고, HERMES v3를 다시 세운다
오늘 ChatGPT 구독을 해지했다. 그동안 GPT와 코덱스로 HERMES를 꽤 멀리까지 끌고 왔다. 화면도 만들고, 쥬의 말투도 붙이고, KIS와 바이낸스를 연결하고, 실패할 때마다 규칙을 덧댔다.
그런데 어느 순간부터는 고치는 속도보다 구조를 이해하는 속도가 더 느려졌다. 기능 하나를 만질 때마다 다른 곳의 예외와 오래된 실험이 같이 따라오고, “이게 왜 여기 있지”라는 질문이 먼저 나오는 상태. 열심히 만든 것이 틀렸다는 뜻은 아니지만, 계속 덧붙이는 방식으로는 내가 원하는 종류의 시스템이 되기 어렵다는 뜻은 분명했다.
그래서 이번에는 Claude를 새로 구독하고, 새 작업 환경에서 HERMES v3를 다시 시작한다. 이 글은 “어느 모델이 더 똑똑한가”에 대한 결론이 아니다. 오히려 모델이 바뀌어도 흔들리지 않아야 할 경계와 규칙을 먼저 세우는 기록이다.
기준 시점: 2026년 8월 1일. v3 저장소의 Phase 0 구현과 테스트 결과를 바탕으로 썼다. 아직 v3는 실거래를 시작한 시스템이 아니라, 재작성의 기반을 검증하는 단계다.
왜 새로 시작하나
v2는 많은 것을 할 수 있었다. 대신 너무 많은 것이 한곳에 쌓였다. Python 코드만 36만 줄이 넘고, 실행 진입점은 21개, 독립적으로 도는 러너는 14개였다. 한 달 동안 LLM을 17,715번 호출해 약 1억 6,900만 토큰을 썼다.
문제는 비용만이 아니었다. 종목 분석의 상당 부분이 LLM 호출에 기대고 있으면, 같은 조건을 다시 돌려도 같은 판단을 보장하기 어렵다. 재현하기 어렵다면 백테스트로 검증하기도 어렵고, 검증하지 못하면 “좋아 보이는 판단”과 “돈을 걸어도 되는 판단”을 나눌 수 없다.
실제 기록도 이 불편한 결론을 피하지 못했다. 표본이 쌓인 전략군에서 뚜렷한 양의 기대값을 증명하지 못했고, 만들어 둔 검증 장치도 실제 진입 경로에서 우회된 적이 있었다. 프롬프트를 더 길게 쓰거나 모델을 한 번 더 바꾸는 일로 해결할 문제가 아니다.
v3에서 먼저 바꾸는 것
v3의 첫 원칙은 단순하다. 재현 가능해야 개선할 수 있다.
종목을 넓게 훑는 일은 가능한 한 로컬의 결정론적인 분석 엔진이 맡는다. 같은 데이터와 같은 시점이면 같은 결과가 나와야 한다. LLM은 모든 종목을 매번 읽는 엔진이 아니라, 이벤트가 생겼을 때 포트폴리오 전체를 해석하는 판단 계층으로 줄인다.
여기서 Claude는 기본 판단 프로바이더가 된다. 다만 코드의 경계는 특정 모델에 묶지 않는다. 입력과 출력의 계약은 모델 바깥에 두고, Claude가 구조화된 결과를 내는지와 예산 안에서 동작하는지를 먼저 확인하는 식이다. 다음에 모델을 바꾸더라도 투자 규칙과 데이터 계층까지 다시 갈아엎지 않기 위해서다.
| v2에서 불편했던 것 | v3에서 바꾸는 방식 |
|---|---|
| 종목 분석이 LLM 호출에 크게 의존 | 로컬 알파 엔진이 분석을 만들고, LLM은 필요한 판단만 담당 |
| 검증 장치가 있어도 진입 경로에서 우회 가능 | enter는 워크포워드 검증을 통과한 신호만 만들 수 있게 설계 |
| 여러 러너가 각자 타이머를 가짐 | KIS와 Binance를 세 개의 명시적 스테이지 DAG로 정리 |
| DB 연결 규칙이 모듈마다 다름 | 단일 SQLite 연결 팩토리로 WAL과 잠금 대기 규칙을 강제 |
Claude와 함께 시작한 첫날은 기능 추가가 아니었다
첫날에 만든 것은 멋진 화면도, 새 매매 로직도 아니다. 계획과 계약, 그리고 그 계약을 어기기 어렵게 만드는 작은 기반이다.
우선 v2를 실제 데이터로 다시 감사했다. 무엇을 버리고 무엇을 가져갈지 정하려면 “아마 복잡할 것이다”가 아니라, 어떤 경로가 비용을 쓰고 어떤 기록이 성과 측정에 남아 있는지부터 알아야 한다. 그 뒤 Phase 0 계획, 데이터·알파·판단·실행의 경계, 그리고 쥬 페르소나의 역할을 문서로 분리했다.
구현으로는 SQLite 연결을 한 군데로 모았다. 새 데이터베이스는 WAL 모드와 잠금 대기 시간, 외래키 설정을 같은 규칙으로 열고, 다른 모듈이 직접 연결을 만들면 검사 단계에서 막힌다. 눈에 띄는 기능은 아니지만, 런타임이 길어질수록 이런 작은 규칙이 시스템의 성격을 결정한다.
이 첫 기반은 단위 테스트 11개와 코드 검사, 포맷 검사, 모듈 의존성 검사까지 통과했다. 아직 “잘 굴러간다”는 말은 할 수 없지만, 적어도 어디까지가 공용 기반이고 무엇을 침범하면 안 되는지는 실행 도구가 확인한다.
이번에는 무엇을 기대하나
Claude를 구독했다고 수익률이 갑자기 좋아질 거라고 기대하지는 않는다. HERMES v3가 제대로 가는지 판단할 기준도 거기에 두지 않을 생각이다.
- 같은 입력을 넣었을 때 같은 분석이 나오는가.
- 검증을 통과하지 못한 신호가 실거래로 새지 않는가.
- 비용과 실패 사유를 나중에 다시 설명할 수 있는가.
- 모델이나 UI를 바꿔도 데이터와 실행 안전 규칙은 그대로 남는가.
이 네 가지가 먼저다. 통과한 전략이 하나도 없다는 결과도, 실자본을 계속 태우는 것보다 낫다. 이번 리팩토링은 뭔가를 더 많이 시키는 작업이 아니라, 모르는 것을 모른다고 적고, 확인한 것만 다음 단계로 넘기는 연습에 가깝다.
ChatGPT를 해지하고 Claude로 옮긴 일은 겉으로 보면 구독 서비스 하나를 바꾼 것뿐이다. 하지만 내게는 HERMES를 다시 이해할 수 있는 크기로 되돌리는 시작점이다. 모델은 새로울 수 있어도, 이번에는 구조가 먼저다.
이 글은 개인 프로젝트의 개발 기록이며 투자 권유가 아니다. HERMES v3의 검증 결과와 실제 동작은 이후 구현과 측정에 따라 달라질 수 있다.
ChatGPT를 해지하고, HERMES v3를 다시 세운다
https://poul.kr/2026/08/01/20260801-hermes-v3-claude-restart/