HERMES v3 2차수: 쥬는 아직 매매하지 않고, 시장의 날씨를 읽는 중

HERMES v3 2차수: 쥬는 아직 매매하지 않고, 시장의 날씨를 읽는 중

HERMES v3를 다시 세운 뒤, 두 번째 큰 구현 차수에 들어왔다.

지난 글에서 “데이터부터 다시 쌓는다”고 적었는데, 이제는 그 위에 시장을 읽는 규칙을 올리기 시작했다. 그래도 쥬는 아직 매매하지 않는다. 지금 하고 있는 일은 매수 버튼을 누르게 만드는 일이 아니라, 그 버튼을 누르면 안 되는 날을 더 잘 구분하는 일에 가깝다.

이번 글은 2026-08-02 20:50 KST에 고정한 HERMES v3 코드 스냅샷을 기준으로 쓴다. 실시간 계좌·보유 종목·주문 정보는 넣지 않았다.

새벽 작업실에서 신호 타일을 정리하는 쥬와 부엉이

이번 차수는 무엇을 만드는 중인가

쉽게 말하면, 쥬가 종목 하나만 보고 “오를 것 같다”고 말하지 않도록 만드는 차수다.

종목의 추세나 거래량만 읽으면 시장 전체가 흔들리는 날에도 같은 목소리를 내기 쉽다. 그래서 이번에는 세 층을 따로 만들고 있다.

  1. 종목 자체에서 나오는 기술 피처와 신호
  2. 시장 전체의 가격·변동성·폭을 읽는 가격 레짐
  3. 금리·달러·변동성·리서치 발간 흐름을 읽는 매크로·서사 레짐

여기서 레짐은 거창한 예측기가 아니다. 지금을 “상승 추세”, “하락 추세”, “횡보”, “변동성이 큰 시기”처럼 한 번 접어 부르는 시장 상태다. 나중에 신호를 평가할 때도, 같은 돌파 신호가 어느 날에는 의미 있고 어느 날에는 조심해야 하는지 설명하는 배경이 된다.

가격과 매크로와 리서치가 각각 시장의 날씨를 읽는 구조

1. 종목 신호는 다섯 가지, 하지만 전부 그림자다

이번에 만든 기본 신호는 다섯 가지다.

  • 추세가 이어지는 중 잠깐 눌린 자리를 보는 trend_pullback
  • 거래량을 동반해 경계를 넘는 breakout_volume
  • 밴드 바깥으로 과하게 밀렸는지를 보는 mean_reversion_band
  • 같은 시장 안에서 상대적으로 강한 흐름을 보는 momentum_rank
  • 변동성이 조여진 뒤 움직임을 준비하는 volatility_contraction

이름만 보면 당장 거래할 것 같지만, 지금은 아니다. 다섯 신호 모두 shadow 전용이다. 신호가 나도 시스템의 진입 자격은 여전히 no_experiment, 즉 아직 실험조차 끝나지 않은 상태로 남는다.

이 규칙을 둔 이유는 단순하다. 신호를 만들었다는 사실과, 신호가 비용을 빼고도 쓸 만하다는 사실은 전혀 다르기 때문이다. 후자는 다음 Phase 3의 워크포워드 백테스트와 비용 게이트에서 확인할 일이다.

또 하나는 기권이다. 필요한 값이 비었을 때는 애매하게 중립 점수를 주지 않고, “판단 불가”라는 사유를 남긴다. 예를 들어 충분한 장기 이동평균이 없는 신규 상장 종목은 신호를 억지로 내지 않는다. 아무 일도 없어서 신호가 없던 것과, 자료가 모자라서 말하지 못한 것은 다른 문장이다.

2. 가격 레짐은 ‘지수만 오르는 날’을 추세라고 부르지 않는다

가격 레짐은 세 가지를 같이 본다.

  • 지수 프록시의 빠른 이동평균과 느린 이동평균 관계
  • 지난 1년 안에서 현재 변동성이 어느 위치인지
  • 유니버스 안에서 50일 이동평균 위에 있는 종목 비율, 즉 시장의 폭

흥미로운 규칙은 폭이다. 지수는 오르는데 실제로 오른 종목이 절반도 안 되면, 이 시스템은 그날을 자신 있게 상승 추세라고 부르지 않는다. 몇 개의 대형주만 지수를 끌어올리는 장과, 시장 전체가 같이 가는 장은 다르게 봐야 한다는 판단이다.

변동성이 지난 1년의 상위 20%에 들어오면 방향보다 변동성 상태를 먼저 본다. 반대로 필요한 값이 하나라도 없으면 횡보로 대충 접지 않고, 상태 자체를 계산하지 못했다고 남긴다. “횡보라서 조심”과 “모르니 조심”은 다른 이유니까.

3. 매크로와 리서치는 LLM이 아니라, 먼저 숫자로 남긴다

매크로 레짐은 미국 10년물, 장단기 금리차, 국고채 3년물, 달러인덱스, VIX, 유가, 원·달러 같은 7개 시리즈를 읽는다. 값 하나만 던지는 대신 지난 1년 백분위와 최근 변화량도 같이 붙인다.

여기서 중요한 건 이월 기록이다. 어떤 매크로 값은 매일 새로 나오지 않는다. 최신값을 이월해서 쓰되, 며칠 전 관측치인지도 같이 남긴다. 그래야 수집이 멈춘 값을 최신으로 착각하지 않는다.

리서치 쪽도 비슷하다. 증권사 보고서 본문을 즉석에서 AI에게 읽히는 대신, 우선 발간량과 의견 흐름을 센다. 기존에 모은 6,364건 가운데 62%는 특정 종목이 아니라 시장·섹터·매크로 이야기였다. 이 문서들은 개별 종목 목표주가를 억지로 뽑기보다, 시장에서 어떤 주제에 관심이 몰리는지 보는 데 쓰는 편이 자연스럽다.

다만 리서치 데이터의 실제 기간은 약 6개월뿐이다. 그래서 그 이전 시점에는 레짐 값을 만들지 않고 비워 둔다. 데이터가 없던 날을 조용한 날로 해석하면, 시작 직후의 관심 급증이 가짜 신호가 되기 때문이다.

4. 지금은 조금 빨라졌고, 더 조심스러워졌다

이번 차수의 실제 측정도 하나 남겨 둔다.

3개 시장을 합쳐 17,540개 심볼, 약 1,030만 행을 훑는 T0 전수 스캔은 신호 5종까지 포함해 33.12초가 걸렸다. 기준은 60초다. 처음에는 203초가 걸렸는데, 데이터 구조와 다양성 계산을 손봐서 줄였다.

속도는 자랑거리가 아니라 운영 조건이다. 매일 전체 시장을 한 번 훑는 작업이 너무 오래 걸리면, 아무리 좋은 규칙도 실제로는 늦은 어제의 판단이 된다.

그렇다고 빨라졌다고 바로 주문으로 연결하지는 않는다. 지금의 흐름은 아래처럼 중간 문이 하나 더 있다.

데이터에서 신호까지는 열렸지만 백테스트와 주문 문은 아직 잠긴 흐름

아직 만들지 않은 것

이번 글에서 가장 중요한 문장은 이것이다.

신호와 시장 상태가 생겼지만, 아직 성과가 증명된 전략은 없다.

다음 큰 작업은 같은 파이프라인을 과거 시간 위에서 다시 돌리는 이벤트 기반 백테스트다. 수수료와 세금, 생존 편향, 수정계수, 데이터가 실제로 존재했던 시점까지 모두 넣고도 기대값이 남는지 봐야 한다.

그래서 아직은 하지 않은 것들도 명확하다.

  • 신호 임계값을 과거 성과로 맞춰 보는 튜닝
  • 성과가 좋아 보인다는 이유로 진입 권한을 주는 일
  • 주문 API 호출
  • 리서치가 부족한 구간을 그럴듯한 값으로 메우는 일

이런 빈칸을 남기는 일이 느려 보일 수는 있다. 그래도 v2에서 느꼈던 복잡함은 대부분 “없는 사실을 있는 것처럼 이어 붙이는 순간” 커졌다. 이번에는 모르면 모른다고 남기고, 기권이면 기권이라고 적는 쪽을 선택하고 있다.

오늘의 쥬는 매매자가 아니라 야간 관측자다

그래서 오늘의 쥬는 차트를 보고 매수 버튼을 찾는 캐릭터라기보다, 새벽 작업실에서 신호 조각을 정리하는 관측자에 가깝다. 옆의 부엉이는 빨리 결론 내리지 말라는 감시자 정도로 두면 될 것 같다.

모델을 Claude로 바꾼다고 수익이 생기거나 구조가 저절로 정리되는 건 아니다. 그래도 이번 2차수에서는, 복잡한 시스템을 더 복잡하게 만들기보다 각 판단이 어디서 왔고 언제 기권했는지 설명할 수 있는 쪽으로 조금씩 가고 있다.

게시 전 이 스냅샷에서 전체 테스트, 의존성 경계 검사, Ruff 정적 검사와 포맷 검사를 실행했고 모두 통과했다. 테스트는 코드 규칙을 확인할 뿐, 미래 수익을 보장하지 않는다.

이 글은 개발 기록이며 투자 권유가 아니다. HERMES v3는 아직 백테스트와 실행 게이트를 통과하지 않았고, 실제 투자 판단은 별도로 해야 한다.

HERMES v3 2차수: 쥬는 아직 매매하지 않고, 시장의 날씨를 읽는 중

https://poul.kr/2026/08/02/20260802-hermes-v3-second-cycle/

Author

PouL

Posted on

2026-08-02

Updated on

2026-08-02

Licensed under

댓글