<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>PouL</title>
    <link>https://poul.kr/</link>
    <description>포울 블로그</description>
    <language>ko</language>
    <copyright>All rights reserved 2026, PouL</copyright>
    <lastBuildDate>Tue, 29 Sep 2026 13:47:11 GMT</lastBuildDate>
    <generator>Hexo</generator>
    <atom:link href="https://poul.kr/rss2.xml" rel="self" type="application/rss+xml"/>
    <item>
      <title>종목만 찾던 쥬에서 자산을 맡기는 쥬로 — HERMES의 방향이 바뀌는 중</title>
      <link>https://poul.kr/2026/09/29/20260929-hermes-jue-new-direction/</link>
      <description>Claude와 함께 이어가는 HERMES 쥬의 최신 구현을 살펴봤다. 종목 후보를 찾는 도구에서 KIS와 바이낸스의 역할을 나눈 자산관리 시스템으로 어떻게 바뀌고 있는지, 아직 배포 전인 부분까지 정리한다.</description>
      <author>PouL</author>
      <category domain="https://poul.kr/categories/Project/">Project</category>
      <category domain="https://poul.kr/tags/Worklog/">Worklog</category>
      <category domain="https://poul.kr/tags/HERMES/">HERMES</category>
      <category domain="https://poul.kr/tags/KIS/">KIS</category>
      <category domain="https://poul.kr/tags/Binance/">Binance</category>
      <category domain="https://poul.kr/tags/Jue/">Jue</category>
      <category domain="https://poul.kr/tags/Claude/">Claude</category>
      <pubDate>Tue, 29 Sep 2026 13:45:00 GMT</pubDate>
      <content:encoded>
        <![CDATA[<p>요즘 HERMES 쥬 작업은 Claude가 이어서 하고 있다. 오늘은 저장소에 올라온 최신 구현을 다시 살펴봤다. 코드가 많이 늘어난 것도 맞지만, 더 큰 변화는 쥬에게 맡기려는 일이 달라졌다는 점이었다.</p><p>예전에는 국내 주식 후보를 넓게 훑고 점수를 매기는 쪽이 눈에 띄었다. 지금은 그 후보를 만드는 일을 넘어, <strong>내 자산을 어떤 역할로 나눠 관리할지</strong>를 쥬에게 맡기는 방향으로 구조를 다시 짜고 있다.</p><p><img src="/img/posts/20260929-hermes-jue-new-direction/railway-junction.jpg" alt="서로 다른 임무와 안전 규칙을 가진 두 철길로 갈라지는 HERMES 쥬"></p><span id="more"></span><h2 id="먼저-역할부터-다시-나눴다"><a href="#먼저-역할부터-다시-나눴다" class="headerlink" title="먼저 역할부터 다시 나눴다"></a>먼저 역할부터 다시 나눴다</h2><p>내가 쥬를 만들고 싶었던 이유는 단순히 수익률을 높이기 위해서가 아니었다. 주식이나 코인을 볼 때 내가 받는 스트레스를 줄이고, 내 자산을 한 발 떨어져서 관리해주는 개인 자산관리자가 필요했다.</p><p>그래서 KIS 쥬와 바이낸스 쥬의 임무를 분리했다.</p><table><thead><tr><th>구분</th><th>KIS 쥬</th><th>바이낸스 쥬</th></tr></thead><tbody><tr><td>맡은 역할</td><td>개인 자산관리자</td><td>롱·숏 판단을 하는 별도 매매 엔진</td></tr><tr><td>보는 대상</td><td>채권·금·지수·개별 종목 등</td><td>암호화폐 선물 중심</td></tr><tr><td>판단의 중심</td><td>내 자산 전체를 어떻게 나눠 관리할지</td><td>정해진 위험 한도 안에서 포지션을 어떻게 다룰지</td></tr><tr><td>중요한 기준</td><td>수익을 반드시 내는 것보다 무리하지 않고 관리하는 것</td><td>보호 주문과 손실 제한을 먼저 지키는 것</td></tr></tbody></table><p>같은 쥬라고 해도 두 시장을 한 규칙으로 처리하지 않겠다는 뜻이다. 국내 주식 계좌에는 자산배분과 장 전 판단이 중요하고, 바이낸스 선물에는 포지션·청산·거래소 보호 주문이 중요하다. 역할을 먼저 갈라야 한쪽의 규칙이 다른 쪽으로 새지 않는다.</p><h2 id="종목-점수에서-자산-판단으로"><a href="#종목-점수에서-자산-판단으로" class="headerlink" title="종목 점수에서 자산 판단으로"></a>종목 점수에서 자산 판단으로</h2><p>KIS 쥬는 이제 “오늘 무슨 종목이 강하지?”만 보는 구조가 아니다. 주식 후보와 가격 신호는 여전히 중요한 자료지만, 채권이나 금, 지수형 ETF처럼 서로 다른 자산도 함께 놓고 전체 구성을 고민하는 쪽으로 범위가 넓어졌다.</p><p>결정은 매일 장이 열리기 전에 준비하는 방향이다. 먼저 프로그램이 가격과 후보를 계산하고, 쥬는 그 결과와 보유 자산, 시장 자료를 읽어 판단한다. 무엇을 검토했는지와 어떤 입력을 받았는지는 나중에 다시 확인할 수 있도록 결정 원장에 남긴다.</p><p>여기에 최근에는 종목 리포트가 아닌 거시 자료도 들어왔다. 금리·환율·주식시장·금·원유 같은 주제를 여덟 가지 고정 질문으로 읽고, 여러 리포트의 응답을 일정한 규칙으로 모아 “거시 시각”으로 정리한다. 이 내용은 결정에 참고하는 배경이지, 그 자체로 매수 신호가 되거나 위험 한도를 바꾸지는 않는다.</p><p>쉽게 말하면 예전에는 후보 카드의 점수와 차트 모양을 보는 데 가까웠다면, 이제는 “시장 전체가 어떤 환경인지, 내 자산의 다른 칸과 함께 봤을 때 어떤 의미인지”를 설명할 재료를 더하고 있는 셈이다.</p><h2 id="결과가-좋아졌다고-미리-말하지-않기"><a href="#결과가-좋아졌다고-미리-말하지-않기" class="headerlink" title="결과가 좋아졌다고 미리 말하지 않기"></a>결과가 좋아졌다고 미리 말하지 않기</h2><p>쥬가 스스로 똑똑해진다고 선언하는 것만으로는 부족하다. 그래서 판단을 저장하고, 시간이 지난 뒤 실제 결과를 코드로 채점하는 구조도 들어가기 시작했다.</p><p>결과는 두 가지 기준과 비교한다. 하나는 정해 둔 기본 자산배분을 유지했을 때이고, 다른 하나는 직전 결정을 바꾸지 않았을 때다. 쥬가 “바꾸자”고 한 판단이 실제로 도움이 됐는지 나중에 확인하기 위한 비교선이다.</p><p>위키도 붙이고 있다. 판단 당시 위키의 어느 내용을 참고했는지 기록하고, 같은 입력에서 위키를 읽은 판단과 읽지 않은 그림자 판단을 함께 비교하는 방식이다. 이 비교는 아직 표본을 쌓아야 한다. 그러니 현재 단계에서 “쥬가 이미 학습해서 더 잘한다”고 말할 수는 없다. 지금 확인할 수 있는 건 학습을 측정할 구조가 만들어지고 있다는 정도다.</p><p>또 하나 작은 변화는 모델 사용이 막힐 때다. ChatGPT 구독 한도로 판단 요청이 실패하면 같은 결정 자료를 Claude Sonnet으로 한 번 더 시도하도록 준비했다. 모델이 바뀌어도 결정 입력과 위험 규칙은 그대로 두고, 실제로 어느 모델이 답했는지는 원장에 남기는 방식이다.</p><h2 id="안전장치는-모델-바깥에-둔다"><a href="#안전장치는-모델-바깥에-둔다" class="headerlink" title="안전장치는 모델 바깥에 둔다"></a>안전장치는 모델 바깥에 둔다</h2><p>자동화가 늘수록 “AI가 잘 판단하겠지”에 기대면 안 된다. 이번 구조에서 중요한 건 쥬가 어떤 모델을 쓰느냐보다, 잘못된 판단이 나와도 어디까지 실행될 수 있는지를 제한하는 쪽이다.</p><ul><li>새 위임 스위치는 기본값이 꺼져 있다. 코드를 추가했다고 실계좌에서 자동으로 시작되는 것은 아니다.</li><li>연습 모드에서는 판단과 계획을 기록하되 실제 주문은 내지 않는다.</li><li>KIS는 연속 합격한 연습 거래일을 확인한 뒤에야 자동 전환을 검토하고, 바이낸스는 별도의 연습 기간과 보호 주문 왕복 확인이 필요하다.</li><li>손실 제한과 주문 한도는 대화형 모델이 아니라 코드가 검사한다. 판단이 실패하거나 입력이 낡으면 새 주문을 내지 않는 쪽으로 멈춘다.</li><li>기존 후보 검증 문턱을 낮추지 않는다. 후보 점수가 높다는 이유만으로 곧바로 매매할 수는 없다.</li></ul><p>이건 아직 “AI에게 전부 맡기고 잊어도 된다”는 상태가 아니다. 위임할 범위와 멈출 조건을 실제 운용 전에 계속 확인하는 단계다.</p><h2 id="오늘-KIS-화면에서-확인한-것"><a href="#오늘-KIS-화면에서-확인한-것" class="headerlink" title="오늘 KIS 화면에서 확인한 것"></a>오늘 KIS 화면에서 확인한 것</h2><p>KIS 알파 화면의 저장 스냅샷은 <code>2026-09-29 15:29 KST</code> 기준이다. 쥬가 붙인 시장 구분은 <code>trend_down</code>이 19일 이어진 상태였고, 시장 폭 지표는 42.5%였다. 밤에 다시 확인했을 때는 이미 오래된 자료로 표시됐으므로 현재 시세처럼 읽어서는 안 된다.</p><p>더 중요한 건 상위 후보 20개가 전부 <code>no_experiment</code>였다는 점이다. 모멘텀, 변동성 수축, 업종 흐름, 쥬의 판단 신호가 후보에 붙어도 검증 문턱을 통과한 전략이라는 뜻은 아니다. 이번 구현의 방향도 점수를 주문으로 바로 연결하는 게 아니라, 후보와 판단, 안전장치와 결과 측정을 분리해 두는 데 있다.</p><h2 id="아직-구현과-실제-사용은-다르다"><a href="#아직-구현과-실제-사용은-다르다" class="headerlink" title="아직 구현과 실제 사용은 다르다"></a>아직 구현과 실제 사용은 다르다</h2><p>최신 저장소에는 결정 원장, KIS·바이낸스별 위임 스위치, 거시 자료 판독, 판단 채점과 위키 기록 같은 코드가 들어가 있다. 하지만 문서상 새 위임 운용은 아직 배포와 단계별 확인이 남아 있다. 따라서 이 글은 “쥬가 지금 실계좌를 완전히 자동 운용하고 있다”는 보고가 아니다.</p><p>현재 상태를 가장 정확히 표현하면 이렇다. <strong>설계만 있던 부분을 실제 코드와 연습 절차로 옮기고 있지만, 새 자동 운용 경로를 켜기 전 검증이 남아 있다.</strong> 이 구분을 빼면 구현된 코드와 실제 계좌에서 돌아가는 기능을 혼동하게 된다.</p><p>이번에 내가 기대하는 변화는 더 공격적으로 매매하는 쥬가 아니다. 시장이 흔들릴 때 혼자 모든 판단을 붙들고 있지 않아도 되도록, 내 자산을 살피고 이유와 결과를 차분히 정리해주는 쥬다. Claude와 함께 쌓는 코드가 그 목적에 가까워지고 있는지, 이제는 연습 기록과 실제 채점으로 확인해볼 차례다.</p><blockquote><p>이 글은 개인 프로젝트의 개발 기록이며 투자 조언이나 매수·매도 추천이 아니다. KIS 수치는 저장된 시점의 스냅샷이고, 실제 보유·잔고·주문 내역을 나타내지 않는다.</p></blockquote>]]>
      </content:encoded>
    </item>
    <item>
      <title>월요일도 쥬한테 맡겼다 — 대신 넘기지 않은 것 하나</title>
      <link>https://poul.kr/2026/08/30/20260830-hermes-jue-auto-adopt/</link>
      <description>HERMES 쥬의 배분 판본 채택을 소유자 승인 없이도 넘어가게 만든 주말 작업 기록. 무엇을 위임했고, 무엇은 끝까지 사람 몫으로 남겼는지를 정리한다.</description>
      <author>PouL</author>
      <category domain="https://poul.kr/categories/Project/">Project</category>
      <category domain="https://poul.kr/tags/Worklog/">Worklog</category>
      <category domain="https://poul.kr/tags/HERMES/">HERMES</category>
      <category domain="https://poul.kr/tags/KIS/">KIS</category>
      <category domain="https://poul.kr/tags/%ED%88%AC%EC%9E%90%EC%9E%90%EB%8F%99%ED%99%94/">투자자동화</category>
      <category domain="https://poul.kr/tags/Jue/">Jue</category>
      <pubDate>Sun, 30 Aug 2026 13:40:00 GMT</pubDate>
      <content:encoded>
        <![CDATA[<p>이번 주말 두 마디를 했다.</p><blockquote><p>“내가 매번 뭔가 결정해야 하는 게 있어? 다 쥬한테 맡겼는데.”<br>“월요일도 그냥 네가 알아서 해.”</p></blockquote><p>둘 다 별거 아닌 말처럼 들리지만, HERMES 쥬 입장에서는 코드로 옮겨야 하는 문장이었다. 지금까지 쥬는 배분(자산을 어떤 비중으로 들고 갈지)을 <strong>제안</strong>만 했고, 그걸 실제로 반영하는 <strong>채택</strong> 버튼은 항상 내가 눌렀다. 매주 월요일마다.</p><p><img src="/img/posts/20260830-hermes-jue-auto-adopt/cover.svg" alt="월요일 채택을 쥬에게 위임하되 울타리를 남겨둔 작업대"></p><span id="more"></span><h2 id="왜-이게-필요했나"><a href="#왜-이게-필요했나" class="headerlink" title="왜 이게 필요했나"></a>왜 이게 필요했나</h2><p>HERMES 쥬가 하는 일 중 하나는 “지금 자산을 이런 비중으로 들고 가자”는 배분 판본을 만드는 것이다. 이건 새 종목을 사는 판단이 아니라, 이미 들고 있는 자산들의 목표 비중을 다시 맞추는 작업에 가깝다.</p><p>원래 설계(내부에서는 <code>[자-11]</code>이라고 부르는 작업 항목)는 “쥬가 제안하고 소유자가 채택한다”였다. 그런데 몇 주 굴려 보니 이게 반복되는 잡일이 됐다. 판본이 크게 이상하지 않은데도 매번 화면을 열어 확인 버튼을 눌러야 했다. <a href="/2026/07/05/20260705-jue-purpose-reset/">지난 7월 글</a>에서 쥬를 만든 이유가 “돈을 더 버는 기계”가 아니라 “투자 앞에서 내가 덜 혼자이게 하는 것”이라고 적었는데, 매주 반복되는 확인 버튼은 그 목적과 반대 방향이었다.</p><h2 id="무엇을-넘겼나-—-조건-4개"><a href="#무엇을-넘겼나-—-조건-4개" class="headerlink" title="무엇을 넘겼나 — 조건 4개"></a>무엇을 넘겼나 — 조건 4개</h2><p>그래서 이번 주말에 <code>allocation_auto_adopt</code>라는 스테이지를 새로 만들었다. 쥬가 낸 판본이 아래 네 조건을 <strong>전부</strong> 넘으면, 사람 없이 그대로 반영된다.</p><p><img src="/img/posts/20260830-hermes-jue-auto-adopt/decision-flow.svg" alt="안전조건 4개를 통과하면 자동 채택, 하나라도 못 넘으면 대기 제안으로 남는 흐름도"></p><ol><li><strong>판본이 지금 보유 중인 자산을 전부 덮는가.</strong> 판본에 이름이 없는 보유 종목은 시스템이 “비중 0%”로 읽어서 전량 매도해 버릴 수 있다. 지금까지는 채택 전에 내가 눈으로 봐서 잡아냈던 실수인데, 자동이면 아무도 안 보고 지나간다. 그래서 이 조건이 가장 먼저다.</li><li><strong>배분을 나누는 축이 그대로인가.</strong> 자산군 단위(주식&#x2F;현금 같은 큰 덩어리)로 나눈 판본과 종목 단위로 나눈 판본은 항목 자체가 달라서 서로 비교할 수 없다. 축이 바뀌면 무조건 사람이 본다.</li><li><strong>목표 비중이 이전 판본에서 밴드 폭 안에서만 움직였는가.</strong> 밴드는 원래 “이 범위 안에서는 사고팔지 않는다”는, 이미 내가 정해둔 값이다. 새 목표가 그 범위를 벗어났다는 건 그냥 숫자가 갱신된 게 아니라 입장 자체가 바뀐 거라서, 그때는 사람이 봐야 한다고 판단했다.</li><li><strong>비교할 활성 판본이 있는가.</strong> 맨 처음 판본은 비교 대상이 없으니 당연히 사람이 본다.</li></ol><p>중요한 건 셋째 조건에 새로운 임계값을 넣지 않았다는 점이다. 만약 “몇 %까지는 자동”이라고 새 숫자를 하나 더 만들면, 그 숫자 자체가 나중에 마음대로 조정할 수 있는 손잡이가 된다. 대신 이미 있는 밴드 값을 그대로 재사용했다.</p><h2 id="막히면-거부가-아니라-보류"><a href="#막히면-거부가-아니라-보류" class="headerlink" title="막히면 거부가 아니라 보류"></a>막히면 거부가 아니라 보류</h2><p>조건을 하나라도 못 넘은 판본은 사라지지 않는다. 원장에 대기 제안으로 남아서 내가 직접 보고 채택하면 된다. “자동으로 못 넘어간다”와 “판본 자체가 틀렸다”는 다른 문제이기 때문이다.</p><p>그리고 자동으로 채택된 판본은 원장의 승인자 칸에 사람 이름 대신 <code>auto:safe_refresh</code>라는 값이 남는다. 나중에 이 판본을 사람이 확인한 건지 기계가 넘긴 건지 한 칸만 보면 구분되게 만들었다.</p><h2 id="축-전환-하나는-따로-처리했다"><a href="#축-전환-하나는-따로-처리했다" class="headerlink" title="축 전환 하나는 따로 처리했다"></a>축 전환 하나는 따로 처리했다</h2><p>만들고 보니 막히는 지점이 하나 있었다. 지금 활성 판본은 자산군 축(주식 35% 같은 큰 단위)인데, 쥬가 새로 내는 제안은 종목 축이다. 그러면 조건 ②(축이 그대로인가)에서 항상 막힌다. 실제로 확인해 보니 쥬가 자산군으로 내면 조건 ①(보유 커버)에서, 종목으로 내면 조건 ②에서 걸려서 — 어느 쪽으로 내도 결국 사람을 불러야 하는 상태였다.</p><p>이건 “이번 한 번만” 넘어가야 하는 문제라서, 별도로 <strong>1회 무장</strong>이라는 걸 추가했다. 마지막 채택 이후로 아직 한 번도 자동 채택이 없었다면, 축이 다르다는 이유만으로는 한 번 막지 않는다. 기준을 메모리가 아니라 원장에 남은 “마지막 채택 시각”으로 잡아서, 프로그램이 재시작돼도 이 허용은 딱 한 번만 쓰인다. 그리고 축 전환이 한 번 일어나면 활성 판본 자체가 종목 축이 되므로, 이 예외 조건은 자연히 다시 쓸 일이 없어진다.</p><p>여기서 분명히 해두고 싶은 게 있다. 이 1회 무장이 끄는 건 <strong>축 비교 검사 하나뿐</strong>이다. 조건 ①(보유를 전부 덮는가)은 그대로 살아 있다. 판본이 지금 들고 있는 걸 다 담지 못하면, 축이 바뀌든 말든 여전히 막힌다. 조용히 전량 매도되는 사고를 막는 건 이 조건이고, 이건 무장 여부와 무관하게 항상 켜져 있어야 한다.</p><h2 id="그래도-남는-위험은-정직하게-적는다"><a href="#그래도-남는-위험은-정직하게-적는다" class="headerlink" title="그래도 남는 위험은 정직하게 적는다"></a>그래도 남는 위험은 정직하게 적는다</h2><p>축을 넘긴 뒤에는 이전 판본과 목표 비중을 밴드로 비교할 수 없다. 그러니 쥬가 낸 종목별 비중이 지금과 많이 달라도, 그 자체로는 자동 채택을 막지 못한다. 다만 자동 채택 경로는 새 종목을 여는 권한이 없다 — 이미 들고 있는 것의 비중을 줄이거나 늘리는 것까지만 할 수 있다. 그래서 최악의 경우도 “새로운 곳에 잘못 들어간다”가 아니라 “보유를 현금 쪽으로 과하게 줄인다” 정도다. 이 정도 규모는 “푼돈”이라고 내가 직접 정하고 위임한 범위다.</p><h2 id="지금-실제로-켜져-있나-—-그렇다"><a href="#지금-실제로-켜져-있나-—-그렇다" class="headerlink" title="지금 실제로 켜져 있나 — 그렇다"></a>지금 실제로 켜져 있나 — 그렇다</h2><p>기본값은 꺼짐이다. 스테이지를 새로 만들었다고 저절로 도는 게 아니라, 실행할 때 <code>--auto-adopt</code> 플래그를 따로 줘야 켜지고, 콘솔에는 지금 이게 켜져 있는지 배너로 찍힌다. 확인해보니 실제로 이번 주말부터 라이브 실행 스크립트에 이 플래그가 들어갔다 — 즉 이건 “만들어만 두고 안 켠” 기능이 아니라 지금 이 순간 실제로 돌고 있는 경로다.</p><p>다만 <strong>효과는 아직 관측하지 못했다.</strong> 이 글을 쓰는 시점은 일요일 밤이고, 국내 장은 열리지 않는다. 이 위임이 실제로 첫 번째 채택을 만들어내는 건 내일(월요일) 개장 이후다. 지금까지 확인한 건 회귀 테스트와 코드가 말하는 조건뿐이고, 실전에서 네 조건이 어떻게 걸리는지는 아직 한 번도 보지 못했다.</p><h2 id="이건-여전히-매수-버튼이-아니다"><a href="#이건-여전히-매수-버튼이-아니다" class="headerlink" title="이건 여전히 매수 버튼이 아니다"></a>이건 여전히 매수 버튼이 아니다</h2><p>혹시 오해할까 봐 적어둔다. 이번에 위임한 건 <strong>이미 보유한 자산의 비중을 다시 맞추는 판본 채택</strong>이지, 새 종목을 사는 판단이 아니다. 개별 종목을 새로 담는 문은 이 자동 경로에서 여전히 잠겨 있다.</p><p>실제로 오늘(2026-08-28 15:41 KST 스냅샷 기준, 지금 시점으로는 <code>stale</code> 상태) KIS 국내장 알파 화면을 다시 열어봐도 마찬가지였다. 상위 20개 후보가 떠 있고 각각 모멘텀·변동성 수축 같은 신호가 붙어 있지만, 전부 <code>gate_status: no_experiment</code>다. 검증을 통과한 신호가 하나도 없다는 뜻이고, 그러니 이 후보들 중 무엇도 자동으로든 수동으로든 새 매수로 이어지지 않는다. 이번 위임과 이 후보 목록은 서로 다른 문 앞에 서 있다.</p><h2 id="마무리"><a href="#마무리" class="headerlink" title="마무리"></a>마무리</h2><p>이번 작업을 하면서 계속 떠올린 기준은 하나였다. <em>“이게 내 결정 부담을 줄이는가, 아니면 위험을 감추는가.”</em> 채택 버튼을 누르는 매주의 잡일은 줄이고 싶었지만, 그 버튼이 막아주던 사고(판본에 없는 보유가 조용히 팔리는 것 같은)까지 같이 지워버리면 그건 위임이 아니라 그냥 눈을 감는 것이다.</p><p>그래서 이번엔 “전부 맡긴다”가 아니라 “이 네 조건 안에서만 맡긴다”로 선을 그었다. 다음에 볼 건 코드가 아니라 로그다 — 월요일 개장 뒤 실제로 대기 제안이 자동 채택으로 넘어가는지, 아니면 조건에 걸려 내 앞으로 다시 돌아오는지.</p><blockquote><p>이 글은 개인 프로젝트의 개발·운영 기록이며 투자 조언이나 매수·매도 추천이 아니다. 실제 계좌 잔고, 보유 종목, 주문 내역은 다루지 않는다.</p></blockquote>]]>
      </content:encoded>
    </item>
    <item>
      <title>변동성 장에서 쥬가 본 KIS 국내장: HERMES 구현 현황과 후보 20개</title>
      <link>https://poul.kr/2026/08/27/20260827-hermes-jue-kis-market-analysis/</link>
      <description>2026년 8월 27일 KIS 국내장 알파 스냅샷과 최신 HERMES 쥬 구현 상황을 함께 정리한다. 변동성 장에서 후보 20개에 어떤 신호가 붙었는지, 그리고 왜 아직 주문으로 이어지지 않는지를 쉽게 설명한다.</description>
      <author>PouL</author>
      <category domain="https://poul.kr/categories/Project/">Project</category>
      <category domain="https://poul.kr/tags/HERMES/">HERMES</category>
      <category domain="https://poul.kr/tags/KIS/">KIS</category>
      <category domain="https://poul.kr/tags/%ED%88%AC%EC%9E%90%EC%9E%90%EB%8F%99%ED%99%94/">투자자동화</category>
      <category domain="https://poul.kr/tags/Jue/">Jue</category>
      <category domain="https://poul.kr/tags/Alpha/">Alpha</category>
      <category domain="https://poul.kr/tags/Shadow/">Shadow</category>
      <pubDate>Thu, 27 Aug 2026 14:21:49 GMT</pubDate>
      <content:encoded>
        <![CDATA[<p>요즘 HERMES 쥬를 보면 종목을 고르는 기능보다, <strong>왜 그 종목을 보고 있는지와 왜 아직 멈춰 있는지를 남기는 기능</strong>이 더 빠르게 자라고 있다.</p><p>이번에는 현재 구현 상황을 먼저 정리하고, 2026년 8월 27일 KIS 국내장 알파 화면에 실제로 들어온 후보 20개를 다시 읽어 보려고 한다. “어떤 종목이 오를까?”를 맞히는 글이 아니라, 쥬가 어떤 자료를 보고 후보를 올렸으며 그 후보가 어떤 문턱 앞에 서 있는지 적는 개발·관찰 기록이다.</p><p>기준 시각은 <code>2026-08-27 15:36 KST</code>다. 당시 KIS 원본 상태는 <code>ok</code>였지만, 글을 쓰는 밤에는 최신성 플래그가 <code>stale</code>로 바뀌어 있다. 그러므로 아래 숫자는 현재 실시간 호가가 아니라 <strong>그날 장 마감 뒤 저장된 스냅샷</strong>으로 읽어야 한다.</p><p><img src="/img/posts/20260827-hermes-jue-kis-analysis/market-lab-gate.png" alt="시장 날씨판과 업종 리본을 지나온 후보 카드가 투명한 검증 게이트 앞에서 멈춰 있는 아날로그 연구실"></p><span id="more"></span><h2 id="지금-HERMES-쥬는-어디까지-왔나"><a href="#지금-HERMES-쥬는-어디까지-왔나" class="headerlink" title="지금 HERMES 쥬는 어디까지 왔나"></a>지금 HERMES 쥬는 어디까지 왔나</h2><p>HERMES v3는 한국 주식, 미국 주식, 바이낸스 현물·선물을 한 덩어리로 다루지 않는다. 거래 시간과 통화, 데이터 특성이 다르기 때문에 시장별로 분석 평면을 나누고, 그 위에서 후보를 만들고 판단을 연결한다.</p><p>현재 구조를 쉬운 말로 풀면 다음과 같다.</p><ol><li>프로그램이 가격·거래량·변동성·기술 지표를 같은 규칙으로 넓게 계산한다. 국내장에서는 리서치와 가치·수급 자료도 별도 층으로 읽는다.</li><li>계산 결과는 일회성 화면이 아니라 스캔 원장에 저장된다. 후보와 신호, 레짐, 당시 설정 지문을 나중에 다시 볼 수 있는 형태로 남긴다.</li><li>쥬는 전 종목을 매번 대화형 모델에게 던져 추천받지 않는다. 먼저 결정론적인 로컬 알파 엔진이 후보를 줄이고, 쥬의 언어 모델 판단은 그 결과를 읽고 보류·검토하는 쪽에 배치돼 있다.</li><li><code>HERMES.app</code>은 Command, Blocks, Alpha, Assets, Review, Edge, Cost 화면을 통해 프로세스와 후보, 원장, 비용을 나눠 보여 준다. 지금은 매수 버튼보다 상태를 확인하고 멈출 수 있는 관제 화면에 가깝다.</li><li>최근에는 배분 제안이 실패했을 때도 콜 원장에 남기고, 승인 화면의 실패 콜·슬리브 결함·스탑 귀속·리밸런싱 점화를 다루는 작업이 들어갔다. 마지막으로 쥬가 낸 배분 문장이 실제 시스템이 집행할 수 있는 범위를 넘지 않도록 제약도 추가했다.</li></ol><p>KIS 주문 경로 자체를 연결하는 작업과 모의 운전은 별도로 진행되고 있다. 하지만 알파 화면의 후보가 곧 주문이라는 뜻은 아니다. <code>enter</code>에는 실험 결과와 게이트 증거가 필요하고, 이번 후보 20개는 모두 <code>no_experiment</code>였다. 즉 <strong>관찰할 이유는 있지만, 아직 검증된 전략이라고 부를 근거가 없는 상태</strong>다.</p><h2 id="8월-27일-국내장-분위기"><a href="#8월-27일-국내장-분위기" class="headerlink" title="8월 27일 국내장 분위기"></a>8월 27일 국내장 분위기</h2><p>이번 스냅샷에서 쥬가 붙인 시장 상태는 <code>volatile</code>, 즉 변동성이 큰 국면이었다. 이 상태가 70일째 이어지고 있었다.</p><table><thead><tr><th>항목</th><th align="right">스냅샷 값</th><th>쉽게 읽으면</th></tr></thead><tbody><tr><td>시장 상태</td><td align="right"><code>volatile</code></td><td>전체 시장을 편하게 추세장으로 보기 어려운 구간</td></tr><tr><td>Breadth</td><td align="right">38.2%</td><td>분석 대상 3,986개 안에서 시장의 폭이 넓게 좋아진 모습은 아니었다</td></tr><tr><td>지수 프록시</td><td align="right"><code>069500</code></td><td>쥬가 국내장 흐름을 비교할 때 사용한 기준 코드</td></tr><tr><td>기준값</td><td align="right">107,710</td><td>스냅샷 시점의 지수 프록시 값</td></tr><tr><td>빠른 EMA &#x2F; 느린 EMA</td><td align="right">106,295 &#x2F; 110,077</td><td>단기 기준선 위지만 장기 기준선 아래인 혼합된 모습</td></tr><tr><td>실현 변동성 지표</td><td align="right">98.15</td><td>엔진이 계산한 변동성 자체가 높은 편</td></tr><tr><td>변동성 백분위</td><td align="right">93.3</td><td>비교 구간 안에서도 높은 변동성 쪽에 가까움</td></tr></tbody></table><p>여기서 재미있는 점은 시장 전체는 거친데, 후보 20개 중 14개에는 <code>volatility_contraction</code>이 붙었다는 것이다. 모순처럼 보이지만 기준이 다르다. 시장 레짐은 국내장 전체의 흔들림을 보고, 변동성 수축은 각 종목의 짧은 흔들림이 그 종목의 긴 기간보다 줄었는지를 본다. 전체 바다는 거칠어도, 그 안에서 잠깐 잔잔해진 배가 있을 수 있다는 뜻이다.</p><p>다만 “잔잔해졌으니 곧 오른다”는 해석은 금물이다. 변동성 수축은 방향이 없다. 방향은 종가와 EMA50 같은 별도 조건이 보태고, 그 조건이 틀리면 수축 뒤에 아래쪽으로 확장될 수도 있다.</p><h2 id="쥬의-점수는-어떤-숫자인가"><a href="#쥬의-점수는-어떤-숫자인가" class="headerlink" title="쥬의 점수는 어떤 숫자인가"></a>쥬의 점수는 어떤 숫자인가</h2><p>현재 기본 점수는 국내장 안에서 종목들을 서로 비교하는 백분위 조합이다.</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">종합 점수 = 20일 모멘텀 백분위 x 0.40</span><br><span class="line">          + 거래대금 백분위 x 0.30</span><br><span class="line">          + (100 - 변동성 백분위) x 0.15</span><br><span class="line">          + (100 - RSI 백분위) x 0.15</span><br></pre></td></tr></table></figure><table><thead><tr><th>항목</th><th align="right">비중</th><th>의미</th></tr></thead><tbody><tr><td>20일 모멘텀</td><td align="right">40%</td><td>최근 20세션 흐름이 비교 대상 중 얼마나 강했는가</td></tr><tr><td>거래대금</td><td align="right">30%</td><td>거래가 얼마나 붙었는가</td></tr><tr><td>낮은 변동성</td><td align="right">15%</td><td>크게 출렁인 종목보다 상대적으로 덜 흔들린 쪽에 주는 점수</td></tr><tr><td>낮은 RSI</td><td align="right">15%</td><td>너무 과열된 종목만으로 점수가 치우치지 않게 하는 완충</td></tr></tbody></table><p><code>p96</code>이라고 쓰인 것은 비교 대상 안에서 상위 약 4%라는 뜻이지, 수익률 96%라는 뜻이 아니다. 종합점수 77점도 미래 수익률 77%나 승률 77%가 아니다. 같은 날 같은 국내장 안에서 어떤 후보를 먼저 들여다볼지 정하는 <strong>관찰용 숫자</strong>다.</p><p>또 하나 주의할 점이 있다. API가 반환한 20개는 종합점수 하나만 내림차순으로 줄 세운 표가 아니라, 후보·티어·신호를 합친 패널이다. 그래서 <code>engine rank</code>에 빈 번호가 있고, 점수가 순서대로 완벽하게 내려가지 않는다. 아래 표의 순서는 이 스냅샷이 반환한 순서를 유지했다.</p><h2 id="신호-이름을-사람-말로-바꾸면"><a href="#신호-이름을-사람-말로-바꾸면" class="headerlink" title="신호 이름을 사람 말로 바꾸면"></a>신호 이름을 사람 말로 바꾸면</h2><p>이번 20개에 실제로 붙은 신호는 일곱 종류였다.</p><table><thead><tr><th>시스템 신호</th><th>사람 말로 바꾸면</th></tr></thead><tbody><tr><td><code>momentum_rank</code></td><td>최근 20일 모멘텀이 상위권이고 거래대금도 최소 기준을 넘은 후보</td></tr><tr><td><code>volatility_contraction</code></td><td>10일 변동성이 60일 변동성의 70% 이하로 줄어든 후보. 방향 자체는 말해 주지 않는다.</td></tr><tr><td><code>kr_sector_rotation_momentum</code></td><td>최근 돈이 배분되는 상위 5분위 업종에 속한 후보. 개별 종목보다 업종 전체의 움직임을 본다.</td></tr><tr><td><code>kr_sector_flow_concentration</code></td><td>외국인·기관 수급이 일부 업종에 몰린 국면에서 그 업종 안에서도 흐름이 강한 후보</td></tr><tr><td><code>kr_value_flow_accumulation</code></td><td>양의 PER, PBR 1 이하, 최근 3세션 외국인·기관 순매수가 모두 양수인 후보</td></tr><tr><td><code>kr_dividend_value</code></td><td>PBR 1 이하이면서 현금배당이 있고, 배당이 이익으로 감당 가능한지 보는 후보</td></tr><tr><td><code>mean_reversion_band</code></td><td>RSI와 20일 가격 범위가 한쪽 끝으로 쏠려 평균으로 돌아갈 가능성을 관찰하는 후보</td></tr></tbody></table><p>이번 패널에서 가장 많은 것은 변동성 수축 14개, 모멘텀 12개였다. 업종 순환은 8개, 업종 자금 집중은 7개, 배당 가치 4개, 가치·수급 축적 3개, 평균 회귀 2개였다. 반대로 리서치 목표가 변화나 <code>trend_pullback</code>은 이 20개에는 붙지 않았다.</p><h2 id="실제-KIS-국내장-후보-20개"><a href="#실제-KIS-국내장-후보-20개" class="headerlink" title="실제 KIS 국내장 후보 20개"></a>실제 KIS 국내장 후보 20개</h2><p>아래 점수는 저장된 원래 값을 소수 첫째 자리로 반올림했다. <code>engine rank</code>는 API 원장 순위이고, <code>gate</code>는 이 후보가 실험·자본 투입 문턱을 통과했는지를 나타낸다. 이번 20개는 전부 <code>no_experiment</code>다.</p><table><thead><tr><th>종목</th><th>코드</th><th align="right">engine rank</th><th align="right">점수</th><th>티어</th><th>켜진 관찰 신호</th><th>저장된 근거</th></tr></thead><tbody><tr><td>빛과전자</td><td><code>069540</code></td><td align="right">1</td><td align="right">77.9</td><td>T2</td><td>모멘텀·변동성 수축·업종 순환</td><td>20일 모멘텀 p96, 거래대금 p97. 지지선 위 2.2%.</td></tr><tr><td>이름 매핑 없음</td><td><code>0148J0</code></td><td align="right">2</td><td align="right">77.7</td><td>T1</td><td>변동성 수축</td><td>종목명 매핑이 없어 코드로만 기록. 자동 근거 문장 없음.</td></tr><tr><td>티엑스알로보틱스</td><td><code>484810</code></td><td align="right">3</td><td align="right">76.9</td><td>T2</td><td>변동성 수축·업종 순환</td><td>지지선 위 0.3%.</td></tr><tr><td>원익홀딩스</td><td><code>030530</code></td><td align="right">5</td><td align="right">76.1</td><td>T2</td><td>모멘텀·변동성 수축·업종 자금 집중</td><td>자동 근거 문장 없음.</td></tr><tr><td>에이프로젠</td><td><code>007460</code></td><td align="right">6</td><td align="right">75.6</td><td>T1</td><td>기록 신호 없음</td><td>자동 근거 문장 없음.</td></tr><tr><td>지엔씨에너지</td><td><code>119850</code></td><td align="right">7</td><td align="right">75.3</td><td>T2</td><td>모멘텀·변동성 수축·업종 순환·업종 자금 집중</td><td>20일 모멘텀 p98, 거래대금 p94.</td></tr><tr><td>HL만도</td><td><code>204320</code></td><td align="right">8</td><td align="right">77.1</td><td>T1</td><td>변동성 수축·가치·수급·배분 집중</td><td>자동 근거 문장 없음.</td></tr><tr><td>TIGER화장품</td><td><code>228790</code></td><td align="right">9</td><td align="right">75.2</td><td>T1</td><td>평균 회귀·모멘텀</td><td>모멘텀 p91, 거래대금 p97. 모멘텀 p91, 변동성 p39.</td></tr><tr><td>에브리봇</td><td><code>270660</code></td><td align="right">12</td><td align="right">76.9</td><td>T1</td><td>모멘텀·변동성 수축·업종 순환</td><td>자동 근거 문장 없음.</td></tr><tr><td>SG</td><td><code>255220</code></td><td align="right">13</td><td align="right">74.6</td><td>T1</td><td>변동성 수축·업종 순환</td><td>지지선 위 1.1%.</td></tr><tr><td>HLB</td><td><code>028300</code></td><td align="right">14</td><td align="right">74.1</td><td>T1</td><td>변동성 수축</td><td>자동 근거 문장 없음.</td></tr><tr><td>우리기술</td><td><code>032820</code></td><td align="right">15</td><td align="right">74.1</td><td>T2</td><td>모멘텀·변동성 수축·업종 순환·업종 자금 집중</td><td>모멘텀 p94, 거래대금 p97. 지지선 위 2.3%.</td></tr><tr><td>오이솔루션</td><td><code>138080</code></td><td align="right">16</td><td align="right">76.4</td><td>T2</td><td>모멘텀·변동성 수축·업종 순환</td><td>모멘텀 p96, 거래대금 p90.</td></tr><tr><td>코오롱티슈진</td><td><code>950160</code></td><td align="right">18</td><td align="right">73.9</td><td>T2</td><td>모멘텀</td><td>모멘텀 p91, 거래대금 p96.</td></tr><tr><td>희림</td><td><code>037440</code></td><td align="right">19</td><td align="right">73.8</td><td>T1</td><td>변동성 수축·배당 가치</td><td>자동 근거 문장 없음.</td></tr><tr><td>알지노믹스</td><td><code>476830</code></td><td align="right">20</td><td align="right">73.8</td><td>T2</td><td>모멘텀</td><td>모멘텀 p92, 거래대금 p91.</td></tr><tr><td>풍산</td><td><code>103140</code></td><td align="right">21</td><td align="right">76.0</td><td>T2</td><td>모멘텀·가치·수급·배당 가치</td><td>모멘텀 p95, 거래대금 p94.</td></tr><tr><td>대주전자재료</td><td><code>078600</code></td><td align="right">23</td><td align="right">73.6</td><td>T1</td><td>모멘텀·변동성 수축·업종 순환·업종 자금 집중</td><td>모멘텀 p90, 거래대금 p91.</td></tr><tr><td>GS</td><td><code>078930</code></td><td align="right">24</td><td align="right">73.6</td><td>T1</td><td>평균 회귀·모멘텀·가치·수급·배당 가치·업종 자금 집중</td><td>모멘텀 p96, 거래대금 p98. 52주 최고가 대비 -1.5%.</td></tr><tr><td>LG씨엔에스</td><td><code>064400</code></td><td align="right">25</td><td align="right">75.9</td><td>T1</td><td>변동성 수축·업종 자금 집중</td><td>지지선 위 0.6%.</td></tr></tbody></table><h2 id="종목별로-보면-어떤-그림인가"><a href="#종목별로-보면-어떤-그림인가" class="headerlink" title="종목별로 보면 어떤 그림인가"></a>종목별로 보면 어떤 그림인가</h2><p>빛과전자는 이번 패널의 첫 번째 카드다. 모멘텀 p96과 거래대금 p97이 함께 잡혀 있고, 변동성 수축과 업종 순환까지 겹쳤다. 쥬가 이 후보를 보는 이유는 “최근 흐름과 거래가 동시에 강한데, 가격은 지지선에서 2.2% 위에 있다”는 조합이다. 그러나 <code>no_experiment</code>이므로 이 조합이 실제 성과로 이어진다는 검증은 아직 없다.</p><p>0148J0은 이름 매핑이 비어 있다는 점 자체가 관찰 포인트다. 점수와 변동성 수축은 원장에 있지만, 사람이 읽을 종목명이 없다. 이런 데이터 품질 빈칸을 감춘 채 이름을 추정하는 것보다 코드만 보여 주는 쪽이 낫다. 분석 시스템에서 “모름”을 “아마 이 종목”으로 바꾸지 않는 것도 안전장치다.</p><p>티엑스알로보틱스와 에브리봇, SG, 오이솔루션은 업종 순환과 변동성 수축의 조합으로 눈에 들어왔다. 이 그룹은 개별 종목의 숫자만 보는 후보라기보다, 특정 업종의 흐름 안에서 상대적으로 조용한 종목을 다시 들여다보는 카드다. 업종이 계속 돈을 받는다는 전제가 깨지면 종목 신호도 같이 약해질 수 있다.</p><p>원익홀딩스, 지엔씨에너지, 우리기술, 대주전자재료, LG씨엔에스는 업종 자금 집중 신호가 붙었다. 이는 “이 종목이 혼자 강하다”보다 “외국인·기관의 공개 수급이 몇 개 업종에 몰린 날, 그 안에서 어떤 종목이 보이는가”에 가깝다. 다만 업종 수급 합계는 대형주 영향을 크게 받을 수 있고, 업종 분류가 바뀌면 과거와 오늘의 비교도 달라질 수 있다.</p><p>HL만도와 풍산, GS는 가치·배당 계열 신호가 섞인 사례다. 여기서 <code>kr_value_flow_accumulation</code>은 PBR과 PER, 최근 3세션 수급을 함께 보고, <code>kr_dividend_value</code>는 수급이 아니라 배당과 이익 커버를 본다. 이름이 비슷해도 주장하는 시간이 다르다. 하나는 최근 수요의 축적이고, 다른 하나는 장부가 할인과 주주환원의 느린 재평가다.</p><p>TIGER화장품과 GS에는 평균 회귀 관찰도 붙었다. 이것은 “추세가 계속 간다”는 모멘텀과 “너무 한쪽으로 쏠렸으니 평균으로 돌아올 수 있다”는 가설이 동시에 화면에 있다는 뜻이다. 두 신호가 같이 뜬다고 결론이 더 강해지는 것은 아니다. 서로 다른 가설이 같은 종목을 보고 있다는 사실을 쥬가 판단 단계에서 따로 읽어야 한다.</p><p>에이프로젠처럼 기록 신호가 비어 있거나, 여러 종목처럼 자동 근거 문장이 없는 경우도 있다. 이것은 종목이 아무 이유 없이 올라왔다는 의미가 아니라, 현재 저장 원장이 최종 점수와 신호 목록, 발동한 템플릿 문장까지만 남기고 모든 점수 항목의 기여도를 보관하지 않기 때문이다. 저장되지 않은 숫자를 현재 코드로 다시 계산해 옛 점수의 정확한 이유처럼 말하지 않는 것이 맞다.</p><h2 id="이-표에서-읽으면-안-되는-것"><a href="#이-표에서-읽으면-안-되는-것" class="headerlink" title="이 표에서 읽으면 안 되는 것"></a>이 표에서 읽으면 안 되는 것</h2><p>이 20개를 보고 다음과 같은 결론을 내리면 안 된다.</p><ol><li>점수가 77점이니 77% 오를 것이다.</li><li>T1이 T2보다 더 안전하거나, 티어가 확신도 등급이다.</li><li>신호가 네 개 붙었으니 한 개 붙은 종목보다 수익 가능성이 네 배다.</li><li><code>volatility_contraction</code>이 있으니 곧 위로 터질 것이다.</li><li><code>no_experiment</code>인 후보도 쥬가 곧 주문할 것이다.</li></ol><p>현재 표에서 확인되는 것은 “그 시각에 쥬의 사전등록 조건 중 무엇이 관찰됐나”까지다. 과거 워크포워드 검증, 거래 비용과 슬리피지, 체결 가능성, 데이터 결측, 뉴스와 공시 같은 요소는 별도 문턱이다. 그래서 높은 점수와 자본 투입 사이에 <code>experiment_run</code>과 게이트 증거를 둔다.</p><h2 id="이번-기록의-결론"><a href="#이번-기록의-결론" class="headerlink" title="이번 기록의 결론"></a>이번 기록의 결론</h2><p>8월 27일 국내장 스냅샷은 시장 전체로는 변동성이 높은데, 후보 내부에서는 변동성 수축과 업종 순환이 겹쳐 보이는 날이었다. 쥬는 이런 날을 “시장이 안정됐다”고 단순화하지 않고, 전체 레짐과 개별 후보의 모양을 서로 다른 층에서 기록한다.</p><p>HERMES 쥬의 최근 구현도 같은 방향이다. 후보를 만드는 엔진은 더 넓고 빨라졌지만, 판단과 배분 제안은 오히려 제약이 많아지고 있다. 실패한 콜도 원장에 남기고, 실행할 수 없는 배분 문장은 거절하고, 스탑과 리밸런싱의 귀속을 분리해 보는 식이다.</p><p>나는 쥬를 시장을 대신 맞히는 기계로 만들고 싶은 것이 아니다. 주식과 코인을 볼 때 내가 받는 스트레스를 줄이려면, “왜 보고 있는지”뿐 아니라 “무엇이 아직 비어 있는지”도 같이 보여야 한다. 이번 후보 20개는 그 빈칸까지 포함한 관찰 일지다.</p><blockquote><p>이 글은 개인 프로젝트의 개발·관찰 기록이며 투자 조언이나 매수·매도 추천이 아니다.</p></blockquote>]]>
      </content:encoded>
    </item>
    <item>
      <title>HERMES 쥬의 KIS 국내장 Top 20: 점수표를 추천으로 읽지 않는 법</title>
      <link>https://poul.kr/2026/08/10/20260810-hermes-jue-kis-alpha-top20/</link>
      <description>2026년 8월 10일 KIS 국내장 알파 테스트 Top 20 실제 스냅샷을 바탕으로, HERMES 쥬가 점수를 만드는 방식과 각 후보에 남은 근거를 쉽게 정리한다. 이 목록은 매수 추천이 아니라 관측 기록이다.</description>
      <author>PouL</author>
      <category domain="https://poul.kr/categories/Project/">Project</category>
      <category domain="https://poul.kr/tags/HERMES/">HERMES</category>
      <category domain="https://poul.kr/tags/KIS/">KIS</category>
      <category domain="https://poul.kr/tags/%ED%88%AC%EC%9E%90%EC%9E%90%EB%8F%99%ED%99%94/">투자자동화</category>
      <category domain="https://poul.kr/tags/Jue/">Jue</category>
      <category domain="https://poul.kr/tags/Alpha/">Alpha</category>
      <category domain="https://poul.kr/tags/Shadow/">Shadow</category>
      <pubDate>Mon, 10 Aug 2026 13:22:56 GMT</pubDate>
      <content:encoded>
        <![CDATA[<p>“가비아가 82점이면 사도 되는 건가?”라는 질문부터 답하면, <strong>아니다.</strong></p><p>이번 글은 HERMES 쥬의 KIS 국내장 알파 화면에 실제로 남아 있던 후보 20개를 꺼내 보고, 그 점수가 무엇을 뜻하는지 정리한 작업 노트다. 점수가 높다고 미래 수익률이 높다는 뜻은 아니고, 쥬가 정한 몇 가지 관찰 기준을 같은 시장 안에서 비교한 결과에 가깝다.</p><p>기준 시각은 <code>2026-08-10 15:53 KST</code>다. 이때 데이터 원본 상태는 정상이었지만, 밤에 이 글을 쓰는 시점에는 그 스냅샷의 최신성 플래그가 지났다. 따라서 아래 표는 <strong>그 시각의 기록</strong>이지, 지금 바로 쓸 실시간 시세판이 아니다. 20개 모두 <code>no_experiment</code>, 즉 실험으로 검증되어 자본을 붙일 단계가 아닌 관측 후보였다.</p><p><img src="/img/posts/20260810-hermes-jue-kis-alpha-top20/scorecards-through-the-gate.png" alt="스무 장의 점수 카드가 투명한 안전 게이트를 통과하기 전 멈춰 있는 모습"></p><span id="more"></span><h2 id="먼저-HERMES-쥬는-지금-어디까지-왔나"><a href="#먼저-HERMES-쥬는-지금-어디까지-왔나" class="headerlink" title="먼저, HERMES 쥬는 지금 어디까지 왔나"></a>먼저, HERMES 쥬는 지금 어디까지 왔나</h2><p>한 줄로 요약하면, 쥬는 이제 <strong>후보를 재현 가능하게 모으고, 왜 멈춰야 하는지도 남기는 관제 시스템</strong> 쪽으로 모습을 갖추는 중이다. 종목을 고르고 주문을 내는 화려한 자동매매 화면을 만든 것이 아니다.</p><p>지금까지 구현된 흐름은 이렇다.</p><ol><li>한국 주식, 미국 주식, 코인 시장을 같은 규칙으로 뭉개지 않고 각 시장의 데이터와 거래 시간에 맞춰 따로 읽는다.</li><li>국내장에서는 가격, 거래대금, 변동성, RSI 같은 숫자로 넓게 후보를 훑는다. 일부 신호는 리서치 의견 변화나 가치·수급 조건도 함께 본다.</li><li>스캔 결과는 화면에서 잠깐 보이고 사라지지 않도록 저장한다. 한 번의 스캔에 최대 50개 후보와 신호 요약을 남기고, 14일이 지난 기록은 정리한다.</li><li><code>HERMES.app</code>은 더미 화면이 아니라 로컬 운영 기록을 읽는 방향으로 연결됐다. Command, Blocks, Alpha, Assets, Review, Edge, Cost 화면에서 프로세스·후보·기록·비용을 나눠 본다.</li><li>국내 종목 코드는 사람이 읽기 편하게 실제 이름으로 보이도록 바꿨다. 내부 키는 코드로 유지하되, 화면에는 가비아나 하나금융지주처럼 이름을 먼저 보여 준다.</li></ol><p>KIS 모의투자 서버까지 주문을 제출하는 경로도 시험해 보았다. 다만 제출, 취소, 체결, 정산을 한 바퀴로 닫아 자동으로 운용한다는 뜻은 아니다. 그 사이의 확인 작업이 남아 있기 때문에, 아래 알파 후보에서 주문으로 바로 이어지는 선은 아직 열지 않았다.</p><h2 id="82점은-무엇을-뜻하나"><a href="#82점은-무엇을-뜻하나" class="headerlink" title="82점은 무엇을 뜻하나"></a>82점은 무엇을 뜻하나</h2><p>현재 국내장 기본 점수는 그날 비교 가능한 종목들 사이의 <strong>백분위 조합</strong>이다. 쉽게 말해 “이 종목이 오늘 어느 정도 눈에 띄었나”를 같은 운동장에서 비교하는 숫자다.</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">종합 점수 = 20일 모멘텀 백분위 x 0.40</span><br><span class="line">          + 거래대금 백분위 x 0.30</span><br><span class="line">          + (100 - 변동성 백분위) x 0.15</span><br><span class="line">          + (100 - RSI 백분위) x 0.15</span><br></pre></td></tr></table></figure><table><thead><tr><th>항목</th><th align="right">비중</th><th>쉬운 말</th></tr></thead><tbody><tr><td>20일 모멘텀</td><td align="right">40%</td><td>최근 한 달 정도의 흐름이 시장 안에서 얼마나 강했는가</td></tr><tr><td>거래대금</td><td align="right">30%</td><td>실제로 거래가 얼마나 붙었는가</td></tr><tr><td>낮은 변동성</td><td align="right">15%</td><td>단순히 크게 출렁인 종목보다, 상대적으로 덜 흔들린 흐름에 조금 더 점수를 준다</td></tr><tr><td>과열되지 않은 RSI</td><td align="right">15%</td><td>이미 너무 뜨거운 구간만으로 점수가 치우치지 않게 하는 완충 장치</td></tr></tbody></table><p>예를 들어 <code>모멘텀 p98</code>은 이 스냅샷의 비교 대상 안에서 모멘텀이 상위 약 2%였다는 뜻이다. 수익률 98%도, 승률 98%도 아니다. 점수는 0~100의 <strong>관찰 우선순위</strong>이고, 서로 다른 날이나 다른 시장의 82점과 단순 비교하면 안 된다.</p><p>이 계산은 빠르게 넓은 시장을 살피기 위한 출발점이다. 어떤 항목 하나라도 계산할 수 없으면 억지로 비중을 다시 나눠 주지 않고 그 종목의 기본 점수를 만들지 않는다. 그리고 이 비중 자체도 아직 “검증된 정답”이 아니라, 실험과 워크포워드 검증을 거쳐야 할 시작 가설이다.</p><h2 id="표를-읽기-전에-점수와-신호는-다른-층이다"><a href="#표를-읽기-전에-점수와-신호는-다른-층이다" class="headerlink" title="표를 읽기 전에: 점수와 신호는 다른 층이다"></a>표를 읽기 전에: 점수와 신호는 다른 층이다</h2><p>점수는 위의 네 숫자를 섞은 기본 정렬이고, 아래의 신호는 특정한 모양이 포착됐을 때 별도로 붙는 메모다. 신호가 있다고 매수 신호는 아니다.</p><table><thead><tr><th>기록된 신호</th><th>이 시스템에서 뜻하는 관찰 조건</th></tr></thead><tbody><tr><td><code>momentum_rank</code></td><td>20일 모멘텀이 상위권이고 거래대금도 일정 기준을 넘었다는 표시</td></tr><tr><td><code>volatility_contraction</code></td><td>짧은 기간의 흔들림이 긴 기간보다 충분히 줄었다는 표시. 방향을 혼자 결정하지는 못한다.</td></tr><tr><td><code>trend_pullback</code></td><td>큰 흐름과 지지선 조건 안에서 가격이 단기 평균 쪽으로 되돌아온 모습인지 살피는 규칙</td></tr><tr><td><code>mean_reversion_band</code></td><td>RSI와 최근 가격 범위가 한쪽 끝으로 치우친 모습을 관찰하는 규칙</td></tr><tr><td><code>research_revision_drift</code></td><td>최근 리서치 목표가 조정이 위쪽으로 더 많이 쌓였는지 보는 규칙. 이 후보 원장에는 정확한 건수까지 저장되지는 않았다.</td></tr><tr><td><code>kr_value_flow_accumulation</code></td><td>양수 PER, 낮은 PBR, 최근 공개 수급의 순매수 조건을 함께 보는 국내장 전용 규칙</td></tr></tbody></table><p>여기서 중요한 정직한 한 가지가 있다. 현재 후보 원장에는 <strong>최종 점수, 켜진 신호, 자동으로 만들어진 짧은 근거 문장</strong>은 저장하지만, 네 점수 항목의 종목별 기여도 전부는 저장하지 않는다. 그래서 과거 시점의 원장을 나중 코드로 다시 계산해 놓고 “이것이 그때의 정확한 이유”라고 꾸며 쓰지 않았다. 아래에는 당시 저장된 근거만 적었다.</p><p><code>자동 근거 문장 없음</code>은 점수가 이유 없이 생겼다는 말이 아니다. 일반 문장 템플릿의 추가 조건이 그 종목에서는 발동하지 않았다는 뜻이다. 원장에 남지 않은 세부 숫자를 상상으로 채우지 않기 위한 표기다.</p><h2 id="그날의-KIS-국내장-후보-20개"><a href="#그날의-KIS-국내장-후보-20개" class="headerlink" title="그날의 KIS 국내장 후보 20개"></a>그날의 KIS 국내장 후보 20개</h2><p>아래는 앱이 보여 준 후보 묶음의 기록 순서다. 후보 화면은 점수만으로 일렬 정렬한 추천 목록이 아니라, 통과 상태와 신호를 함께 담은 관측 패널이어서 표의 순서가 정확한 점수 내림차순을 뜻하지는 않는다. 표의 점수는 읽기 좋게 소수 첫째 자리로만 표시했다.</p><table><thead><tr><th>종목</th><th>코드</th><th align="right">점수</th><th>구간</th><th>저장된 신호</th><th>당시 남은 근거</th></tr></thead><tbody><tr><td>가비아</td><td><code>079940</code></td><td align="right">82.1</td><td>T2</td><td><code>momentum_rank</code>, <code>volatility_contraction</code></td><td>20일 모멘텀 p98, 거래대금 p91. 지지선 위 0.7%.</td></tr><tr><td>기가레인</td><td><code>049080</code></td><td align="right">82.1</td><td>T2</td><td><code>momentum_rank</code></td><td>20일 모멘텀 p100, 거래대금 p93.</td></tr><tr><td>하나금융지주</td><td><code>086790</code></td><td align="right">81.2</td><td>T1</td><td><code>research_revision_drift</code></td><td>모멘텀 p82, 변동성 p32. 덜 흔들리며 오른 흐름으로 기록.</td></tr><tr><td>STX그린로지스</td><td><code>465770</code></td><td align="right">79.8</td><td>T2</td><td><code>momentum_rank</code></td><td>지지선 위 1.1%.</td></tr><tr><td>고려산업</td><td><code>002140</code></td><td align="right">76.8</td><td>T1</td><td><code>momentum_rank</code>, <code>kr_value_flow_accumulation</code></td><td>지지선 위 2.4%.</td></tr><tr><td>현대약품</td><td><code>004310</code></td><td align="right">76.7</td><td>T2</td><td><code>momentum_rank</code></td><td>자동 근거 문장 없음.</td></tr><tr><td>SK이노베이션</td><td><code>096770</code></td><td align="right">79.8</td><td>T2</td><td><code>momentum_rank</code>, <code>research_revision_drift</code></td><td>20일 모멘텀 p94, 거래대금 p99.</td></tr><tr><td>JW신약</td><td><code>067290</code></td><td align="right">76.3</td><td>T2</td><td><code>momentum_rank</code></td><td>20일 모멘텀 p99, 거래대금 p94.</td></tr><tr><td>중앙첨단소재</td><td><code>051980</code></td><td align="right">76.0</td><td>T1</td><td><code>momentum_rank</code></td><td>자동 근거 문장 없음.</td></tr><tr><td>현대힘스</td><td><code>460930</code></td><td align="right">75.9</td><td>T2</td><td><code>momentum_rank</code></td><td>자동 근거 문장 없음.</td></tr><tr><td>DB손해보험</td><td><code>005830</code></td><td align="right">79.7</td><td>T1</td><td>-</td><td>모멘텀 p88, 변동성 p36. 덜 흔들리며 오른 흐름으로 기록.</td></tr><tr><td>한미사이언스</td><td><code>008930</code></td><td align="right">75.7</td><td>T1</td><td><code>mean_reversion_band</code>, <code>momentum_rank</code></td><td>20일 모멘텀 p98, 거래대금 p92. 모멘텀 p98, 변동성 p41.</td></tr><tr><td>엑시온그룹</td><td><code>069920</code></td><td align="right">75.5</td><td>T2</td><td><code>momentum_rank</code>, <code>volatility_contraction</code></td><td>자동 근거 문장 없음.</td></tr><tr><td>케이뱅크</td><td><code>279570</code></td><td align="right">75.4</td><td>T1</td><td><code>volatility_contraction</code></td><td>자동 근거 문장 없음.</td></tr><tr><td>샘씨엔에스</td><td><code>252990</code></td><td align="right">79.3</td><td>T2</td><td><code>momentum_rank</code></td><td>20일 모멘텀 p97, 거래대금 p91.</td></tr><tr><td>넥스틸</td><td><code>092790</code></td><td align="right">75.1</td><td>T1</td><td><code>trend_pullback</code>, <code>momentum_rank</code>, <code>kr_value_flow_accumulation</code></td><td>20일 모멘텀 p91, 거래대금 p97.</td></tr><tr><td>삼성공조</td><td><code>006660</code></td><td align="right">74.9</td><td>T1</td><td><code>momentum_rank</code></td><td>자동 근거 문장 없음.</td></tr><tr><td>테크윙</td><td><code>089030</code></td><td align="right">74.8</td><td>T2</td><td>-</td><td>자동 근거 문장 없음.</td></tr><tr><td>SK이터닉스</td><td><code>475150</code></td><td align="right">78.7</td><td>T2</td><td><code>trend_pullback</code>, <code>momentum_rank</code></td><td>20일 모멘텀 p93, 거래대금 p99. 지지선 위 0.6%.</td></tr><tr><td>위닉스</td><td><code>044340</code></td><td align="right">74.8</td><td>T2</td><td><code>momentum_rank</code></td><td>자동 근거 문장 없음.</td></tr></tbody></table><h2 id="이-표에서-읽을-수-있는-것과-읽으면-안-되는-것"><a href="#이-표에서-읽을-수-있는-것과-읽으면-안-되는-것" class="headerlink" title="이 표에서 읽을 수 있는 것과 읽으면 안 되는 것"></a>이 표에서 읽을 수 있는 것과 읽으면 안 되는 것</h2><p>가비아와 기가레인은 모멘텀과 거래대금 백분위가 아주 높게 기록돼 기본 점수가 앞쪽에 있다. 하나금융지주와 DB손해보험은 같은 모멘텀이라도 변동성 쪽이 상대적으로 낮았다는 메모가 남았다. 고려산업과 넥스틸은 국내장 전용 가치·수급 규칙까지 같이 켜졌다. 한미사이언스는 강한 모멘텀 기록과 평균 회귀 관찰 규칙이 동시에 있었고, SK이터닉스는 추세 속 되돌림 규칙이 함께 붙었다.</p><p>하지만 이것을 “그래서 오른다”로 번역하면 안 된다. 이 표에는 다음이 빠져 있다.</p><ol><li>오늘 이후의 가격 움직임과 수익률</li><li>거래 비용, 슬리피지, 시장 충격을 포함한 실현 성과</li><li>각 신호를 과거 여러 구간에서 반복 검증한 결과</li><li>반대 신호, 뉴스, 공시, 유동성 위험처럼 점수 밖에서 확인해야 할 맥락</li></ol><p>특히 T1과 T2도 신뢰도 등급이 아니다. 화면에서 후보를 다루기 위한 분류일 뿐, 투자 판단의 확신도를 뜻하지 않는다. 20개 전부 <code>no_experiment</code>인 이유도 여기에 있다. <strong>관찰할 이유와 자본을 투입할 이유는 다른 문장</strong>이다.</p><h2 id="다음에-더-보강할-것"><a href="#다음에-더-보강할-것" class="headerlink" title="다음에 더 보강할 것"></a>다음에 더 보강할 것</h2><p>이번 글을 쓰면서 후보 원장에 더 남겨야 할 것도 선명해졌다. 다음 스캔부터는 최종 점수만 남기지 않고, 모멘텀·거래대금·변동성·RSI가 각각 몇 점을 보탰는지와 계산 버전까지 같이 보관하는 편이 좋다. 그래야 나중에 “왜 이 종목이 그날 76.8점이었나”를 같은 기록만으로 다시 설명할 수 있다.</p><p>쥬의 목적은 시장을 대신 맞히는 기계가 아니라, 내가 주식과 코인 앞에서 받는 스트레스를 줄일 수 있도록 판단의 근거와 빈칸을 보이게 만드는 것이다. 이번 Top 20도 그 목적에 맞춰 남긴 관찰 일지다. 좋은 후보를 빨리 고르는 것보다, 아직 모르는 것을 주문으로 바꾸지 않는 쪽을 계속 지키려 한다.</p><blockquote><p>이 글은 개인 프로젝트의 개발·관찰 기록이며 투자 조언이나 매수·매도 추천이 아니다.</p></blockquote>]]>
      </content:encoded>
    </item>
    <item>
      <title>HERMES 쥬는 지금 어디까지 왔나: 추천보다 먼저, 관제와 안전장치</title>
      <link>https://poul.kr/2026/08/09/20260809-hermes-v3-implemented-now/</link>
      <description>2026년 8월 9일 기준 HERMES v3 쥬의 구현 상태를 정리한다. 세 시장의 데이터 경로, 백테스트 게이트, shadow 운전, HERMES.app 관제 화면과 아직 열지 않은 실주문 경계를 쉽게 설명한다.</description>
      <author>PouL</author>
      <category domain="https://poul.kr/categories/Project/">Project</category>
      <category domain="https://poul.kr/tags/Worklog/">Worklog</category>
      <category domain="https://poul.kr/tags/HERMES/">HERMES</category>
      <category domain="https://poul.kr/tags/%ED%88%AC%EC%9E%90%EC%9E%90%EB%8F%99%ED%99%94/">투자자동화</category>
      <category domain="https://poul.kr/tags/Jue/">Jue</category>
      <category domain="https://poul.kr/tags/%EB%B0%B1%ED%85%8C%EC%8A%A4%ED%8A%B8/">백테스트</category>
      <category domain="https://poul.kr/tags/HERMES-app/">HERMES.app</category>
      <pubDate>Sun, 09 Aug 2026 12:12:00 GMT</pubDate>
      <content:encoded>
        <![CDATA[<p>지난 글에서는 백테스트의 마지막 하루를 맞추는 일을 썼다. 오늘은 그보다 조금 넓게, <strong>그래서 쥬가 지금 실제로 무엇을 할 수 있는 상태인지</strong>를 정리해 본다.</p><p>한 줄로 말하면 이렇다.</p><blockquote><p><strong>쥬는 종목을 찍어 주는 자동매매 봇이 아니라, 자료를 읽고 검증되지 않은 판단에는 자본을 붙이지 않도록 만든 개인 운용 시스템이다.</strong></p></blockquote><p>이 글은 <code>2026-08-09 18:55 KST</code>의 HERMES v3 코드 스냅샷과 그때까지의 구현 기록을 기준으로 썼다. 계좌 잔고, 보유 종목, 실제 주문 정보는 넣지 않았다.</p><p><img src="/img/posts/20260809-hermes-v3-implemented-now/jue-observation-workshop.png" alt="여러 시장의 정보를 읽되 안전 게이트 앞에서 멈춘 쥬의 작업실"></p><span id="more"></span><h2 id="먼저-쥬가-하려는-일"><a href="#먼저-쥬가-하려는-일" class="headerlink" title="먼저, 쥬가 하려는 일"></a>먼저, 쥬가 하려는 일</h2><p>예전 버전은 종목을 살펴보는 일부터 LLM에게 많이 맡겼다. 설명을 듣기에는 편했지만, 같은 날 같은 자료를 넣어도 결과를 완전히 재현하기 어렵다. 그러면 과거에 다시 돌려 검증하기도 어렵고, 왜 판단이 바뀌었는지도 추적하기 힘들다.</p><p>v3에서는 순서를 뒤집었다.</p><ol><li>가격, 거래량, 리서치, 파생시장 자료는 프로그램이 같은 규칙으로 넓게 읽는다.</li><li>그 결과를 과거 구간에서 다시 재생해, 비용을 빼고도 의미가 있는지 검사한다.</li><li>그 다음에야 쥬가 “이번에는 관찰할 이유가 있는가”를 읽는다.</li><li>검증 문턱을 통과하지 못하면 결론은 매수가 아니라 <code>shadow</code>, 즉 <strong>관찰만</strong>이다.</li></ol><p>LLM은 전 종목을 무작정 훑어 추천을 만드는 사람이 아니라, 이미 계산된 후보를 비판적으로 읽고 보수적으로 줄이는 쪽에 가깝다. 쥬의 역할도 “정답을 맞히기”보다, 내가 시장을 볼 때 불필요하게 흔들리지 않도록 근거와 반대 근거를 한곳에 모으는 쪽이다.</p><h2 id="한-덩어리로-보지-않는-세-시장"><a href="#한-덩어리로-보지-않는-세-시장" class="headerlink" title="한 덩어리로 보지 않는 세 시장"></a>한 덩어리로 보지 않는 세 시장</h2><p>쥬는 한국 주식, 미국 주식, 코인 시장을 하나의 규칙으로 뭉개지 않는다. 통화, 거래 시간, 세금, 호가 단위, 데이터의 성격이 다르기 때문이다.</p><table><thead><tr><th>시장</th><th>쥬가 주로 읽는 것</th><th>따로 다루는 이유</th></tr></thead><tbody><tr><td>한국 주식</td><td>가격·거래량, 리서치 의견, 공시와 시장 분위기</td><td>원화 기준 장 시간과 국내 시장 맥락이 중요하다.</td></tr><tr><td>미국 주식</td><td>달러 기준 가격과 거래소·세션 정보</td><td>한국 장과 시간이 다르고, 환전·정산·세금의 규칙도 다르다.</td></tr><tr><td>Binance 현물·선물</td><td>가격·거래량, 펀딩비, 미결제약정 같은 파생 신호</td><td>24시간 시장이라 하루의 끝과 위험 관리 기준도 따로 필요하다.</td></tr></tbody></table><p>이 분리는 보기 좋게 탭을 나눈 정도가 아니다. 한국 주식의 기준을 코인 선물에 그대로 쓰거나, 미국 주식의 거래 시간을 국내장처럼 해석하는 실수를 코드 구조에서부터 피하려는 선택이다.</p><p><img src="/img/posts/20260809-hermes-v3-implemented-now/hermes-jue-system-map.svg" alt="세 시장의 자료가 같은 관찰 원칙으로 모이되 각자의 규칙을 유지하는 흐름"></p><h2 id="통과하지-못한-신호는-shadow에-남긴다"><a href="#통과하지-못한-신호는-shadow에-남긴다" class="headerlink" title="통과하지 못한 신호는 shadow에 남긴다"></a>통과하지 못한 신호는 <code>shadow</code>에 남긴다</h2><p>여기서 가장 중요한 기능은 화려한 매수 버튼이 아니라 <strong>게이트</strong>다.</p><p>신호가 실제 자본에 가까워지려면, 과거 구간을 여러 조각으로 나누어 재생했을 때 표본이 충분해야 하고, 거래 비용을 빼고도 기대값이 양수여야 하며, 손익비와 일관성 같은 조건도 만족해야 한다. 과거 데이터를 고를 때 미리 알 수 없었던 정보를 섞지 않도록 기간 사이에 완충 구간을 두고, 실험을 너무 많이 돌려 우연히 좋은 결과 하나만 고르는 일도 기록한다.</p><p>그래서 지금 보이는 후보 중에는 점수가 높아도 <code>shadow</code>인 것이 있다. 이것은 고장이 아니라, <strong>아직 자본을 붙일 근거가 부족하다</strong>는 뜻이다.</p><p>지난번 코인 선물 전략 다섯 가지도 이 원칙으로 모두 관찰 단계에 남겼다. 마지막 하루의 데이터 증거가 맞지 않는 문제나 수익성 문턱이 남아 있었기 때문이다. 좋은 숫자 하나를 골라 통과시키는 대신, 불편한 근거가 하나라도 남으면 멈추는 쪽을 택했다.</p><h2 id="이번에-생긴-것은-‘매매-화면’보다-‘운영-화면’"><a href="#이번에-생긴-것은-‘매매-화면’보다-‘운영-화면’" class="headerlink" title="이번에 생긴 것은 ‘매매 화면’보다 ‘운영 화면’"></a>이번에 생긴 것은 ‘매매 화면’보다 ‘운영 화면’</h2><p>이번 며칠 사이 가장 눈에 보이는 변화는 <code>HERMES.app</code>이다. 맥에서 켜 두는 작은 관제 앱인데, 처음에는 화면 설계와 가짜 데이터로만 확인하던 것을 이제 로컬 백엔드의 실제 운영 기록을 읽는 방식으로 연결했다.</p><p>앱에는 다음 일곱 화면이 있다.</p><table><thead><tr><th>화면</th><th>쉬운 설명</th></tr></thead><tbody><tr><td>Command</td><td>지금 어떤 프로세스가 돌고 있는지 보고, 로그를 읽고, 필요하면 멈추는 곳</td></tr><tr><td>Blocks</td><td>주문과 포지션이 생겼을 때 어떤 상태로 쌓이는지 보는 원장 화면</td></tr><tr><td>Alpha</td><td>시장별 후보와 그 후보가 <code>shadow</code>인지 통과 상태인지 보는 곳</td></tr><tr><td>Assets</td><td>자산의 변화와 계좌별 요약을 보는 곳</td></tr><tr><td>Review</td><td>하루 동안 무슨 판단과 예외가 있었는지 다시 읽는 일지</td></tr><tr><td>Edge</td><td>백테스트 통과 여부와 이후 관찰 결과를 비교하는 성적표</td></tr><tr><td>Cost</td><td>LLM 사용량과 거래 비용을 따로 보는 비용 화면</td></tr></tbody></table><p>중요한 점은, 이 앱에 <strong>수동으로 매수·매도하는 화면은 일부러 없다는 것</strong>이다. 앱은 리모컨과 계기판에 가깝다. 시장을 읽는 프로세스와 손절을 지키는 가드 루프는 앱을 꺼도 따로 살아 있어야 하고, 앱에서 데몬을 멈추거나 비상 정지를 하려면 두 번 확인하는 절차를 거치게 만들었다.</p><p>또 하나의 작은 원칙도 지켰다. 화면이 가짜 자료를 읽는 중이면 그 사실을 배너로 표시하고, 아직 주문·성과 원장이 없는 <code>shadow</code> 상태라면 빨간 오류처럼 꾸미지 않고 “아직 원장이 없음”이라는 이유를 보여 준다. 멋있어 보이는 빈 대시보드보다, 지금 무엇이 없고 왜 없는지를 알 수 있는 대시보드가 더 쓸모 있기 때문이다.</p><h2 id="뒤에서-돌아가는-안전장치들"><a href="#뒤에서-돌아가는-안전장치들" class="headerlink" title="뒤에서 돌아가는 안전장치들"></a>뒤에서 돌아가는 안전장치들</h2><p>관제 화면 밖에도 몇 가지 기반 작업이 쌓였다.</p><ul><li>각 시장의 현재가를 따로 받아 가드 루프가 보호선을 확인할 수 있게 했다.</li><li>주문이 생겼을 때 같은 요청을 두 번 보내지 않도록, 식별자와 변경 이력을 원장 형태로 남길 준비를 했다.</li><li>실제 돈을 쓰지 않는 모의 왕복 경로를 만들어 주문·체결·정산이 연결되는 방식을 점검할 수 있게 했다.</li><li>국내·미국·코인 관찰 프로세스를 분리하고, 운영 알림은 Telegram에서 받기만 하도록 단방향으로 만들었다. 메시지로 주문을 내리는 명령 기능은 넣지 않았다.</li><li>미국 주식 쪽은 거래소 구분과 연장 세션을 별도 점검 대상으로 잡았다. ‘미국 주식도 된다’고 먼저 말하기보다 시간대와 주문 규칙을 맞추는 중이다.</li></ul><p>이런 변화는 겉으로는 느리게 보일 수 있다. 하지만 쥬의 목적이 수익률 숫자를 급하게 만드는 것이 아니라, 내가 시장을 대하는 과정에서 감정과 기억의 빈틈을 줄이는 것이라면 이 순서가 맞다고 생각한다.</p><h2 id="아직-하지-않은-것"><a href="#아직-하지-않은-것" class="headerlink" title="아직 하지 않은 것"></a>아직 하지 않은 것</h2><p>이 글에서 가장 분명하게 남겨야 할 경계도 있다.</p><ul><li>현재 신호는 검증과 관찰을 중심으로 돌고 있으며, 실주문을 열었다는 뜻이 아니다.</li><li>주문·성과 원장은 <code>shadow</code> 운전에서는 비어 있을 수 있다. 빈 화면을 실적이 없다는 말과 섞지 않는다.</li><li>백테스트 통과 여부와 실제 성과는 다른 문제다. 과거에서 통과한 신호도 이후의 관찰 결과를 계속 따로 채점해야 한다.</li><li>Telegram 알림과 앱의 제어 기능은 운영을 돕는 장치지, 투자 판단을 대신하는 권한이 아니다.</li></ul><p>결국 지금의 HERMES 쥬는 “돈을 알아서 벌어 주는 무언가”보다, <strong>자료를 빠뜨리지 않고 읽고, 근거가 모자라면 멈추며, 나중에 왜 그렇게 했는지 다시 볼 수 있게 하는 작은 운용실</strong>에 더 가깝다.</p><p>이번 구현에서 가장 마음에 드는 것도 그래서다. 화면이 일곱 개가 되었지만, 어느 화면도 ‘지금 사라’고 재촉하지 않는다. 쥬는 일단 내가 판단을 잃지 않도록 옆자리를 지키는 쪽으로 만들어지고 있다.</p><blockquote><p>이 글은 개인 프로젝트의 개발 기록이며 투자 권유가 아니다. 언급한 시장·전략·기능은 매수·매도 추천이 아니며, 백테스트와 관찰 기록은 미래 성과를 보장하지 않는다.</p></blockquote>]]>
      </content:encoded>
    </item>
    <item>
      <title>오늘의 HERMES v3: 쥬는 잘 나온 종목보다 마지막 하루를 먼저 고쳤다</title>
      <link>https://poul.kr/2026/08/07/20260807-hermes-v3-backtest-last-day/</link>
      <description>2026년 8월 7일 기준 HERMES v3의 백테스트와 안전장치 진행을 정리한다. 통계 문턱을 넘은 전략도 마지막 하루의 증거가 맞지 않으면 관찰 단계에 머문다.</description>
      <author>PouL</author>
      <category domain="https://poul.kr/categories/Project/">Project</category>
      <category domain="https://poul.kr/tags/Worklog/">Worklog</category>
      <category domain="https://poul.kr/tags/HERMES/">HERMES</category>
      <category domain="https://poul.kr/tags/%ED%88%AC%EC%9E%90%EC%9E%90%EB%8F%99%ED%99%94/">투자자동화</category>
      <category domain="https://poul.kr/tags/Jue/">Jue</category>
      <category domain="https://poul.kr/tags/%EB%B0%B1%ED%85%8C%EC%8A%A4%ED%8A%B8/">백테스트</category>
      <category domain="https://poul.kr/tags/%EB%8D%B0%EC%9D%B4%ED%84%B0%ED%92%88%EC%A7%88/">데이터품질</category>
      <pubDate>Fri, 07 Aug 2026 13:25:00 GMT</pubDate>
      <content:encoded>
        <![CDATA[<p>오늘 HERMES v3에서 가장 눈에 띈 결과는 “어떤 종목이 제일 잘 나왔나”가 아니었다.</p><blockquote><p><strong>마지막 하루가 맞지 않으면, 좋아 보이는 백테스트도 아직 믿지 않는다.</strong></p></blockquote><p>이 글은 <code>2026-08-07 22:13 KST</code>의 코드 스냅샷과 <code>22:11 KST</code>까지의 운영 기록을 기준으로 썼다. 계좌, 보유 종목, 실제 주문 정보는 넣지 않았다.</p><p><img src="/img/posts/20260807-hermes-v3-backtest-last-day/jue-last-complete-session.png" alt="마지막 완성 세션을 맞추는 쥬와 잠긴 주문 문을 확인하는 부엉이"></p><span id="more"></span><h2 id="백테스트가-종목-추천표가-아닌-이유"><a href="#백테스트가-종목-추천표가-아닌-이유" class="headerlink" title="백테스트가 종목 추천표가 아닌 이유"></a>백테스트가 종목 추천표가 아닌 이유</h2><p>이번에 끝난 코인 선물 백테스트는 5개 전략을 같은 과거 구간에 돌려 본 작업이다. 추세가 눌렸을 때를 보는 전략, 거래량을 동반한 돌파를 보는 전략, 과열·과매도를 되돌아보는 전략처럼 서로 다른 방법을 함께 검사했다.</p><p>그런데 이 실험 원장은 “A 종목이 몇 퍼센트 올랐다” 같은 순위표를 남기지 않는다. 전략별로 표본 수, 비용을 뺀 결과, 여러 기간에 나눠 다시 돌렸을 때의 일관성, 과거에 사라진 종목까지 포함됐는지를 남긴다.</p><p>그래서 오늘 글에도 특정 종목 이름을 억지로 넣지 않았다. 수천 개 종목과 페어를 함께 검증한 뒤, 잘 나온 몇 개만 고르면 그럴듯한 이야기는 만들 수 있다. 하지만 그 순간부터 백테스트는 검증이 아니라 사후 자랑이 된다.</p><p>한국 주식 쪽도 같은 원칙이다. 최근 재생은 한국 시장 4,397개 종목을 포함한 과거 구간을 사용했지만, 현재 원장은 종목별 추천 목록을 공개 결과로 만들지 않는다. <strong>쥬가 아직 “이 종목을 사라”고 말하지 않는 이유</strong>다.</p><h2 id="오늘-끝난-13시간-54분짜리-테스트"><a href="#오늘-끝난-13시간-54분짜리-테스트" class="headerlink" title="오늘 끝난 13시간 54분짜리 테스트"></a>오늘 끝난 13시간 54분짜리 테스트</h2><p>코인 선물 쪽에서는 다섯 전략을 한꺼번에 다시 돌리는 작업이 끝났다. 단일 코어를 오래 쓰는 작업이라 <code>13시간 54분</code>이 걸렸고, 결과는 5개 모두 <code>SHADOW</code>, 즉 관찰 단계였다.</p><table><thead><tr><th>전략</th><th>이번 결과</th><th>쥬가 내린 결론</th></tr></thead><tbody><tr><td><code>trend_pullback</code></td><td>수익성·표본·기간별 검증 같은 통계 조건은 통과했다.</td><td>마지막 상장폐지 증거가 재생 구간과 하루 어긋나서 멈췄다.</td></tr><tr><td><code>breakout_volume</code></td><td>거래량을 동반한 돌파를 검사했다.</td><td>상장폐지 증거와 수익성 조건이 모두 더 필요했다.</td></tr><tr><td><code>mean_reversion_band</code></td><td>과열·과매도 구간의 되돌림을 검사했다.</td><td>상장폐지 증거가 맞지 않아 관찰에 남았다.</td></tr><tr><td><code>momentum_rank</code></td><td>같은 시점의 상대적인 모멘텀을 비교했다.</td><td>상장폐지 증거와 수익성 조건이 더 필요했다.</td></tr><tr><td><code>volatility_contraction</code></td><td>변동성이 줄었다가 추세가 이어지는 경우를 검사했다.</td><td>상장폐지 증거와 수익성 조건이 더 필요했다.</td></tr></tbody></table><p>여기서 <code>trend_pullback</code>이 특히 아쉬웠다. 통계만 보면 다음 문으로 갈 수 있었지만, 과거에 사라진 선물 종목을 포함했다는 증거의 <strong>마지막 날짜</strong>와 실제 재생이 본 마지막 날짜가 하루 달랐다.</p><p>증거 쪽은 8월 5일까지 있다고 말하는데, 재생 쪽은 24시간 시장의 8월 5일 봉이 8월 6일 0시에 완성된다는 사실을 놓쳐 8월 4일까지만 읽었다. 둘 중 하나가 틀린 상태에서 “통과” 도장을 찍으면 안 된다. 그래서 쥬는 5개 모두 관찰 단계에 남겼다.</p><p><img src="/img/posts/20260807-hermes-v3-backtest-last-day/backtest-evidence-gate.svg" alt="백테스트에서 통계와 데이터 증거를 모두 확인한 뒤에만 다음 단계로 가는 흐름"></p><h2 id="그래서-오늘은-마지막-하루를-고쳤다"><a href="#그래서-오늘은-마지막-하루를-고쳤다" class="headerlink" title="그래서 오늘은 마지막 하루를 고쳤다"></a>그래서 오늘은 마지막 하루를 고쳤다</h2><p>문제는 거창한 전략이 아니라 날짜 해석이었다.</p><p>주식 시장은 장 마감 시간이 정해져 있어서 “8월 5일까지”라고 적으면 대체로 그날 장이 끝난 뒤를 뜻한다. 하지만 코인처럼 하루 종일 움직이는 시장에서는 8월 5일 일봉이 8월 6일 0시에야 완성된다. 프로그램이 날짜의 끝을 무조건 <code>23:59:59</code>로 바꾸면, 바로 그 마지막 봉 하나가 빠질 수 있다.</p><p>오늘은 이 기준을 한곳으로 모았다. 이제 데이터 설치, 백테스트 재생, 명령줄 날짜 해석이 모두 같은 “마지막으로 완성된 세션” 정의를 쓴다. 결과가 좋아서 규칙을 바꾼 게 아니라, <strong>결과를 믿기 위한 시계부터 맞춘 것</strong>이다.</p><p>다음 재실행에서도 결과가 그대로면 그때는 한 단계 더 신뢰할 근거가 생긴다. 반대로 마지막 하루를 넣자마자 결과가 바뀐다면, 지금 멈춘 선택이 옳았다는 뜻이다. 어느 쪽이든 “좋았던 결과를 지키기”보다 낫다.</p><h2 id="주문에-가까워진-것이-아니라-주문을-더-어렵게-만들었다"><a href="#주문에-가까워진-것이-아니라-주문을-더-어렵게-만들었다" class="headerlink" title="주문에 가까워진 것이 아니라, 주문을 더 어렵게 만들었다"></a>주문에 가까워진 것이 아니라, 주문을 더 어렵게 만들었다</h2><p>오늘 코드에는 주문을 안전하게 다루기 위한 뼈대도 추가됐다. 다만 이건 주문 기능을 열었다는 소식이 아니다. 반대에 가깝다.</p><ul><li>시장별 최대 비중과 단일 종목 한도를 코드에서 더 느슨하게 만들 수 없게 했다.</li><li>동시에 들 수 있는 종목 수도 시장별 10개, 전체 15개를 넘기지 못하게 했다.</li><li>같은 의도의 주문은 프로그램이 다시 켜져도 같은 이름으로 인식해 두 번 보내지 않도록 했다.</li><li>주문 상태는 수정해 덮어쓰지 않고, 변화가 일어난 순서대로 원장에 쌓도록 만들었다.</li></ul><p>그래도 실제 거래소나 증권사에 주문을 보내는 연결은 아직 없다. 현재 게이트웨이는 일부러 “연결되지 않음”을 반환하고, 주문 원장은 미래에 연결할 때 같은 주문을 중복해서 내지 않기 위한 준비물이다.</p><p>오늘 운영 기록에도 코인 관찰 쪽의 실제 판단 호출 6번, 한국 주식 관찰 쪽의 실제 판단 호출 4번이 남았다. 이것은 시장을 읽고 메모를 남긴 횟수일 뿐, 주문은 아니다. 장이 닫힌 뒤에는 한국·미국 주식 흐름이 정상적으로 건너뛰어졌고, 코인 쪽도 새로 판단할 이유가 없으면 멈췄다.</p><h2 id="오늘의-결론"><a href="#오늘의-결론" class="headerlink" title="오늘의 결론"></a>오늘의 결론</h2><p>오늘 쥬는 백테스트에서 “이길 것 같은 종목”을 고르지 않았다. 대신 다음 질문을 먼저 통과시켰다.</p><ol><li>마지막 날까지 실제로 완성된 데이터를 읽었나?</li><li>과거에 사라진 종목을 빼고 좋은 성적만 본 것은 아닌가?</li><li>여러 기간에 나눠도 같은 결과가 나왔나?</li><li>그 모든 검증을 통과해도, 주문을 안전하게 기록하고 중복을 막을 수 있나?</li></ol><p>지금 답은 아직 “계속 확인 중”이다. 그래서 종목 이름을 앞세운 추천글 대신, 마지막 하루가 맞지 않으면 멈추는 시스템의 이야기를 남긴다.</p><blockquote><p>이 글은 개발 기록이며 투자 권유가 아니다. 백테스트 결과는 과거 데이터의 검증 기록일 뿐이며, 언급한 전략과 시장은 매수·매도 추천이 아니다.</p></blockquote>]]>
      </content:encoded>
    </item>
    <item>
      <title>오늘의 HERMES v3: 쥬는 리포트를 읽고, 주문 문은 더 단단히 잠갔다</title>
      <link>https://poul.kr/2026/08/06/20260806-hermes-v3-research-notes/</link>
      <description>2026년 8월 6일 저녁 기준 HERMES v3의 관찰·리서치 상태를 정리한다. 쥬는 리포트를 읽고 판단을 기록하지만, 주문 기능은 아직 없다.</description>
      <author>PouL</author>
      <category domain="https://poul.kr/categories/Project/">Project</category>
      <category domain="https://poul.kr/tags/Worklog/">Worklog</category>
      <category domain="https://poul.kr/tags/HERMES/">HERMES</category>
      <category domain="https://poul.kr/tags/%ED%88%AC%EC%9E%90%EC%9E%90%EB%8F%99%ED%99%94/">투자자동화</category>
      <category domain="https://poul.kr/tags/Jue/">Jue</category>
      <category domain="https://poul.kr/tags/%EB%B0%B1%ED%85%8C%EC%8A%A4%ED%8A%B8/">백테스트</category>
      <category domain="https://poul.kr/tags/%EB%A6%AC%EC%84%9C%EC%B9%98/">리서치</category>
      <pubDate>Thu, 06 Aug 2026 12:55:00 GMT</pubDate>
      <content:encoded>
        <![CDATA[<p>오늘의 HERMES v3는 조금 더 조용한 방향으로 진척됐다.</p><blockquote><p><strong>쥬는 리포트를 읽고, 시장을 다시 훑고, 필요할 때 생각을 기록한다. 그래도 주문 문은 아직 잠겨 있다.</strong></p></blockquote><p>이 글은 <code>2026-08-06 20:32 KST</code>의 코드 스냅샷과 <code>21:48 KST</code>까지 확인한 관찰 기록을 기준으로 썼다. 계좌, 보유 종목, 실제 주문 정보는 넣지 않았다.</p><p><img src="/img/posts/20260806-hermes-v3-research-notes/jue-research-gate.png" alt="리서치 메모를 읽는 쥬와 주문 문을 지키는 부엉이"></p><span id="more"></span><h2 id="오늘은-정말-생각을-적었다"><a href="#오늘은-정말-생각을-적었다" class="headerlink" title="오늘은 정말 생각을 적었다"></a>오늘은 정말 생각을 적었다</h2><p>여기서 말하는 <code>live</code>는 실제 돈을 움직인다는 뜻이 아니다. 모델을 실제로 호출해 시장 메모를 만들었다는 뜻이다.</p><p>오늘 기록에는 코인 관찰 쪽의 실제 판단 호출 6번, 한국 주식 관찰 쪽의 실제 판단 호출 3번이 남아 있다. 그 뒤의 흐름 중 일부는 윗단계 게이트에서 멈췄다. 억지로 이전 화면을 재활용하거나, 빈 데이터로 다음 판단을 이어 가지 않았다는 뜻이다.</p><p>이게 오늘의 핵심이다. 쥬는 “말할 수 있는 날”에도 말하고, 말할 근거가 없으면 그냥 멈춘다. 잘 멈추는 쪽이 지금 단계에서는 더 중요하다.</p><p><img src="/img/posts/20260806-hermes-v3-research-notes/research-to-gate.svg" alt="리포트에서 관찰 메모까지, 그리고 잠긴 주문 문으로 이어지는 흐름"></p><h2 id="오늘-쥬가-다시-읽은-리서치-메모"><a href="#오늘-쥬가-다시-읽은-리서치-메모" class="headerlink" title="오늘 쥬가 다시 읽은 리서치 메모"></a>오늘 쥬가 다시 읽은 리서치 메모</h2><p>리서치 저장소에는 8월 5일자로 들어온 한국 주식 리포트가 여럿 있다. 아래 이름은 <strong>쥬가 매수 대상으로 고른 종목이 아니라</strong>, 오늘의 데이터가 어떤 이야기를 담고 있는지 보여 주는 예시다.</p><table><thead><tr><th>종목</th><th>리서치 메모에서 보인 이야기</th><th>쥬가 하는 일</th></tr></thead><tbody><tr><td>대우건설</td><td>서로 다른 6개 증권사 메모가 실적, 마진, 수주 전망을 각자 다른 표현으로 다뤘다.</td><td>같은 종목을 여러 사람이 왜 이야기했는지 묶어 본다.</td></tr><tr><td>삼성증권</td><td>전 사업 부문의 실적과 컨퍼런스콜 내용이 언급됐고, 한편으로는 비용 부담도 같이 적혔다.</td><td>좋은 문장만 골라 믿지 않고, 엇갈린 대목도 함께 남긴다.</td></tr><tr><td>LG생활건강</td><td>실적을 더 예측하기 쉬워졌다는 관점의 메모가 한 건 들어왔다.</td><td>한 장의 의견을 결론으로 바꾸지 않고, 다음 자료를 기다린다.</td></tr></tbody></table><p>대우건설의 경우에는 여러 리포트가 같은 날 들어와서 특히 눈에 띄었다. 하지만 여러 곳에서 언급됐다는 사실은 “더 사야 한다”는 뜻이 아니다. 똑같은 실적 발표를 놓고도 무엇을 중요하게 보는지는 제각각이기 때문이다.</p><p>삼성증권도 비슷하다. 잘 나온 부문을 보는 기록과 비용을 걱정하는 기록이 한 저장소 안에 같이 있다. 쥬가 해야 할 일은 멋진 목표가 숫자를 하나 고르는 게 아니라, <strong>어느 문장이 어떤 시점의 어떤 리포트에서 왔는지 잃지 않는 일</strong>이다.</p><h2 id="리서치를-믿기-전에-리서치가-어떻게-읽혔는지부터-본다"><a href="#리서치를-믿기-전에-리서치가-어떻게-읽혔는지부터-본다" class="headerlink" title="리서치를 믿기 전에, 리서치가 어떻게 읽혔는지부터 본다"></a>리서치를 믿기 전에, 리서치가 어떻게 읽혔는지부터 본다</h2><p>HERMES v3에는 수천 건의 증권사 리포트가 쌓여 있다. 지금은 이 리포트들에서 등급, 목표가, 핵심 문장 같은 사실을 꺼내어 구조화하는 작업을 하고 있다.</p><p>그런데 새 추출 결과가 나왔다고 기존 기록을 바로 덮어쓰지는 않는다. 원래 기록과 새로 읽은 기록을 나란히 놓고, 어디가 같고 어디가 다른지 먼저 확인한다. 사람이라면 “이번엔 잘 읽었겠지” 하고 넘어갈 부분을, 시스템은 일부러 불편하게 남겨 두는 셈이다.</p><p>오늘 추가된 작업도 이 원칙을 따라갔다.</p><ul><li>과거 성적을 예쁘게 보이게 만들 수 있는 상장폐지 데이터의 빈틈을 더 확인했다.</li><li>코인 선물 백테스트에서는 펀딩비를 수익과 비용 양쪽에서 같은 기준으로 계산하도록 다듬었다.</li><li>미국 주식 쪽에서도 종목이 사라진 이유와 시점을 나중에 되짚을 수 있게 기록하는 층을 보강했다.</li></ul><p>전략을 더 화려하게 만드는 일보다, “이 데이터가 그날 실제로 알 수 있었던 데이터였나”를 따지는 일이 앞에 왔다. 오늘 쥬가 한 일은 종목을 고르는 일보다 <strong>판단할 자격을 만드는 일</strong>에 가까웠다.</p><h2 id="오늘의-흐름은-여기까지"><a href="#오늘의-흐름은-여기까지" class="headerlink" title="오늘의 흐름은 여기까지"></a>오늘의 흐름은 여기까지</h2><p>정리하면 이렇다.</p><ol><li>시장과 리포트를 읽는다.</li><li>실제 모델 호출로 관찰 메모를 만든다.</li><li>데이터나 게이트가 불충분하면 멈춘다.</li><li>통과했더라도 주문으로 연결하지 않고 기록으로 끝낸다.</li></ol><p>아직 HERMES v3에는 증권사나 거래소에 매수·매도를 보내는 실행 기능이 없다. 그래서 위의 종목 이름도 추천이나 포트폴리오 공개가 아니다. 쥬는 지금 <strong>종목 이름을 읽는 관찰자</strong>이고, 주문 버튼은 아직 부엉이 옆 자물쇠 뒤에 있다.</p><p>다음에는 오늘처럼 쌓인 관찰 메모가 시간이 지나도 같은 기준으로 설명되는지, 그리고 리서치의 서로 다른 목소리를 얼마나 정직하게 보존하는지를 더 지켜볼 생각이다.</p><blockquote><p>이 글은 개발 기록이며 투자 권유가 아니다. 언급한 리포트와 종목은 시스템에 들어온 자료의 예시일 뿐이며, 매수·매도 판단은 별도로 해야 한다.</p></blockquote>]]>
      </content:encoded>
    </item>
    <item>
      <title>HERMES v3 지금은? 쥬는 세 시장을 보고 있지만, 아직 손은 묶여 있다</title>
      <link>https://poul.kr/2026/08/05/20260805-hermes-v3-shadow-now/</link>
      <description>HERMES v3의 2026년 8월 5일 기준 상태를 쉽게 정리한다. 한국·미국·코인 시장을 관찰하고 기록하지만, 주문 기능은 아직 만들지 않았다.</description>
      <author>PouL</author>
      <category domain="https://poul.kr/categories/Project/">Project</category>
      <category domain="https://poul.kr/tags/Worklog/">Worklog</category>
      <category domain="https://poul.kr/tags/HERMES/">HERMES</category>
      <category domain="https://poul.kr/tags/%ED%88%AC%EC%9E%90%EC%9E%90%EB%8F%99%ED%99%94/">투자자동화</category>
      <category domain="https://poul.kr/tags/Jue/">Jue</category>
      <category domain="https://poul.kr/tags/Claude/">Claude</category>
      <category domain="https://poul.kr/tags/%EB%B0%B1%ED%85%8C%EC%8A%A4%ED%8A%B8/">백테스트</category>
      <pubDate>Wed, 05 Aug 2026 13:00:00 GMT</pubDate>
      <content:encoded>
        <![CDATA[<p>HERMES v3가 지금 어디까지 왔는지, 아주 쉽게 적어 보면 이렇다.</p><blockquote><p><strong>쥬는 이제 한국 주식, 미국 주식, 코인 시장을 계속 보고 기록할 수 있다. 하지만 아직 무엇도 사거나 팔 수는 없다.</strong></p></blockquote><p>겉으로 보면 “계속 보고 있다”와 “자동매매한다”가 비슷해 보이지만, 지금은 전혀 다른 단계다. 쥬는 관찰자이자 기록자다. 손에는 아직 주문 버튼이 없다.</p><p>이 글은 <code>2026-08-05 21:44 KST</code>의 HERMES v3 코드 스냅샷을 기준으로 썼다. 계좌, 보유 종목, 실제 주문 정보는 넣지 않았다.</p><p><img src="/img/posts/20260805-hermes-v3-shadow-now/jue-three-markets-observer.png" alt="세 시장을 바라보며 관찰 노트를 쓰는 쥬와 잠긴 문 옆의 부엉이"></p><span id="more"></span><h2 id="지금-쥬가-할-수-있는-일"><a href="#지금-쥬가-할-수-있는-일" class="headerlink" title="지금 쥬가 할 수 있는 일"></a>지금 쥬가 할 수 있는 일</h2><p>쥬에게는 이제 시장을 훑는 세 개의 창이 있다.</p><ul><li>한국 주식 시장</li><li>미국 주식 시장</li><li>코인 시장</li></ul><p>시장이 열려 있을 때 데이터를 읽고, 종목을 훑고, 특별히 다시 생각해 볼 이유가 있는지를 가른다. 이유가 있으면 판단 내용을 장부에 남긴다. 이유가 없으면 억지로 한마디 만들지 않고 “이번에는 할 일 없음”으로 넘긴다.</p><p>코인 쪽은 실제 AI 판단 호출까지 연결하는 전환을 시작했고, 한국·미국 쪽은 아직 드라이런 관찰을 이어 가고 있다. 여기서 <strong>실제 판단 호출</strong>은 시장을 읽고 의견을 적는다는 뜻일 뿐이다. 거래소나 증권사에 주문을 보내는 기능은 없다.</p><p><img src="/img/posts/20260805-hermes-v3-shadow-now/v3-shadow-now-map.svg" alt="세 시장을 관찰하고 판단을 기록하지만 주문 문은 잠겨 있는 현재 흐름"></p><h2 id="‘shadow’는-가짜가-아니라-연습장이다"><a href="#‘shadow’는-가짜가-아니라-연습장이다" class="headerlink" title="‘shadow’는 가짜가 아니라 연습장이다"></a>‘shadow’는 가짜가 아니라 연습장이다</h2><p>지금 v3가 가장 자주 쓰는 말은 <code>shadow</code>다. 쉽게 말하면 <strong>실전처럼 읽고 기록하지만, 실제 돈은 움직이지 않는 모드</strong>다.</p><p>이 모드가 필요한 이유는 간단하다. 시스템이 이상한 날에도 조용히 멈추는지, 데이터가 늦었을 때 옛날 화면을 보고 판단하지 않는지, 모델을 부를 이유가 없을 때 괜히 말을 많이 하지 않는지를 먼저 봐야 한다.</p><p>예를 들어 코인 관찰기는 일정한 간격으로 시장을 다시 훑는다. 그런데 새 스캔이 실패한 날에는 직전 화면을 들고 다음 판단을 이어 가지 않도록 막아 뒀다. 시장을 보는 프로그램에서 “어제의 화면으로 오늘 결론 내리기”는 생각보다 위험한 실수라서다.</p><h2 id="백테스트에서는-좋은-척할-길을-더-닫았다"><a href="#백테스트에서는-좋은-척할-길을-더-닫았다" class="headerlink" title="백테스트에서는 좋은 척할 길을 더 닫았다"></a>백테스트에서는 좋은 척할 길을 더 닫았다</h2><p>과거 데이터를 돌려 본 결과도 조금 나왔다. 통계 기준을 넘긴 후보가 세 개 있었지만, 쥬는 그걸로 매수를 시작하지 않았다.</p><p>이유는 상장폐지된 코인까지 과거 데이터에 제대로 들어갔는지 확인하는 영수증이 마지막 한 단계 남아 있었기 때문이다. 살아남은 종목만 보면 과거 성적은 쉽게 예뻐진다. 그래서 과거에 사라진 코인 150개를 추가로 확인했고, 코인 일봉 유니버스는 479개에서 <strong>629개</strong>로 늘었다.</p><p>지금의 결론은 아주 단순하다.</p><blockquote><p><strong>통계가 좋아 보여도, 데이터가 공정했다는 증명이 끝나기 전에는 계속 관찰만 한다.</strong></p></blockquote><p>이건 느린 게 아니라, 과거의 좋은 성적을 실제 실력으로 착각하지 않기 위한 브레이크다.</p><h2 id="리서치도-거의-다-정리했다"><a href="#리서치도-거의-다-정리했다" class="headerlink" title="리서치도 거의 다 정리했다"></a>리서치도 거의 다 정리했다</h2><p>증권사 리포트에서 필요한 사실을 뽑아 두는 작업도 한 차례 크게 끝났다.</p><ul><li>정해 둔 문서 6,271건 가운데 <strong>6,242건</strong>을 정리했다.</li><li>나머지 29건은 형식이 맞지 않아 억지로 고치거나 다시 돌리지 않고, “이번에는 읽지 못했다”고 남겼다.</li><li>새 결과가 기존 기록을 덮어쓰지 않도록 두 결과를 나란히 보관한다.</li></ul><p>여기서도 원칙은 같다. 모르는 숫자를 그럴듯하게 채우는 것보다, 모른다는 기록을 남기는 편이 낫다.</p><h2 id="아직-하지-않는-일"><a href="#아직-하지-않는-일" class="headerlink" title="아직 하지 않는 일"></a>아직 하지 않는 일</h2><p>그래서 현재 HERMES v3에 없는 것은 명확하다.</p><table><thead><tr><th>아직 없는 것</th><th>이유</th></tr></thead><tbody><tr><td>실제 매수·매도 주문</td><td>주문·위험관리 단계 자체를 아직 만들지 않았다.</td></tr><tr><td>자동으로 돈을 굴리는 기능</td><td>백테스트와 데이터 증명이 끝나기 전에는 권한을 주지 않는다.</td></tr><tr><td>백테스트 결과만 보고 규칙을 바꾸는 일</td><td>어떤 규칙을 시험할지 먼저 적어 두고, 나중에 슬쩍 고치지 못하게 막았다.</td></tr><tr><td>데이터가 비었을 때의 낙관</td><td>데이터가 없으면 “괜찮다”가 아니라 “판단 불가”로 남긴다.</td></tr></tbody></table><p>한 문장으로 말하면, 쥬는 <strong>생각하고 기록하는 단계</strong>까지 왔고, <strong>행동하는 단계</strong>는 아직 일부러 열지 않았다.</p><h2 id="오늘의-쥬는-관제실의-기록자다"><a href="#오늘의-쥬는-관제실의-기록자다" class="headerlink" title="오늘의 쥬는 관제실의 기록자다"></a>오늘의 쥬는 관제실의 기록자다</h2><p>예전에는 쥬가 무엇을 살지 말하는 캐릭터에 더 가까웠다면, 지금은 관제실에서 세 시장의 신호를 받아 적는 기록자에 가깝다. 옆의 부엉이는 “좋아 보인다고 바로 열지 말자”고 자물쇠를 확인하는 역할이다.</p><p>다음 큰 일은 세 시장의 관찰 기록을 충분히 쌓고, 상장폐지 데이터까지 포함한 백테스트 문을 다시 통과시키는 것이다. 그때도 통과한 신호가 없으면, 쥬는 계속 관찰자로 남는다.</p><p>그게 지금 v3에서 가장 중요한 변화다. <strong>매매를 빨리 시작하는 시스템이 아니라, 아직 시작하면 안 되는 이유를 설명할 수 있는 시스템</strong>으로 조금씩 바뀌고 있다.</p><blockquote><p>이 글은 개발 기록이며 투자 권유가 아니다. HERMES v3는 아직 주문 기능이 없고, 실제 투자 판단은 별도로 해야 한다.</p></blockquote>]]>
      </content:encoded>
    </item>
    <item>
      <title>HERMES v3: 잘 되는 전략을 찾기 전에, 잘못된 결과를 막는 중</title>
      <link>https://poul.kr/2026/08/03/20260803-hermes-v3-testing-gates/</link>
      <description>HERMES v3의 현재 구현 기록. 신호를 주문으로 연결하기 전에 룩어헤드, 비용, 다중검정, 결측 데이터를 막는 백테스트 게이트를 어디까지 만들었는지 정리한다.</description>
      <author>PouL</author>
      <category domain="https://poul.kr/categories/Project/">Project</category>
      <category domain="https://poul.kr/tags/Worklog/">Worklog</category>
      <category domain="https://poul.kr/tags/HERMES/">HERMES</category>
      <category domain="https://poul.kr/tags/%ED%88%AC%EC%9E%90%EC%9E%90%EB%8F%99%ED%99%94/">투자자동화</category>
      <category domain="https://poul.kr/tags/Jue/">Jue</category>
      <category domain="https://poul.kr/tags/Claude/">Claude</category>
      <category domain="https://poul.kr/tags/%EB%B0%B1%ED%85%8C%EC%8A%A4%ED%8A%B8/">백테스트</category>
      <pubDate>Mon, 03 Aug 2026 12:45:00 GMT</pubDate>
      <content:encoded>
        <![CDATA[<p>어제는 쥬가 시장의 날씨를 읽기 시작했다는 이야기를 썼다. 오늘은 그 다음 이야기다.</p><p>신호가 다섯 개 생기고, 시장 상태를 나누고, 전수 스캔까지 빨라졌다고 해서 바로 매매를 재개하면 안 된다. 과거 그래프에서 그럴듯해 보인다는 것과 실제 돈을 걸어도 견딜 수 있다는 것은 완전히 다른 문제다.</p><p>그래서 지금 HERMES v3는 잘 되는 전략을 찾는 시간보다, <strong>잘못된 결과가 좋아 보이는 경로를 먼저 막는 시간</strong>을 보내고 있다.</p><p>이 글은 <code>2026-08-03 21:10 KST</code>의 코드 스냅샷을 기준으로 썼다. 계좌, 실제 보유 종목, 주문 정보는 넣지 않았다.</p><p><img src="/img/posts/20260803-hermes-v3-testing-gates/jue-testing-gate-workshop.png" alt="신호 다섯 개를 시험 장치에 넣고 닫힌 시장 게이트를 점검하는 쥬와 부엉이"></p><span id="more"></span><h2 id="오늘의-핵심-쥬는-예측자가-아니라-반증-담당자가-됐다"><a href="#오늘의-핵심-쥬는-예측자가-아니라-반증-담당자가-됐다" class="headerlink" title="오늘의 핵심: 쥬는 예측자가 아니라 반증 담당자가 됐다"></a>오늘의 핵심: 쥬는 예측자가 아니라 반증 담당자가 됐다</h2><p>자동매매를 만들다 보면 “이 규칙이 과거에 얼마나 벌었나”를 빨리 보고 싶어진다. 그런데 그 전에 확인할 것이 있다.</p><ul><li>그 당시에는 정말 알 수 있었던 정보만 썼는가</li><li>신호가 나온 날 종가로 사는 식의 편한 가정을 몰래 넣지 않았는가</li><li>수수료, 세금, 체결 손실을 빼도 결과가 남는가</li><li>여러 규칙을 돌려 보고 가장 좋은 것만 골라 자랑하지는 않았는가</li><li>데이터가 없는 종목을 조용히 정상 종목처럼 처리하지는 않았는가</li></ul><p>이번 구현은 이 질문들에 시스템이 직접 답하거나, 아직 답할 수 없다고 남기도록 만드는 쪽이다. 좋은 결론보다 나쁜 결론을 먼저 믿지 못하게 하는 작업이다.</p><h2 id="1-백테스트에는-‘다음-장-시작’만-있다"><a href="#1-백테스트에는-‘다음-장-시작’만-있다" class="headerlink" title="1. 백테스트에는 ‘다음 장 시작’만 있다"></a>1. 백테스트에는 ‘다음 장 시작’만 있다</h2><p>이번에 만든 백테스트 흐름은 신호가 만들어진 바로 그 가격에 체결되는 길을 열지 않는다.</p><p>하루가 끝난 뒤에 신호를 계산하고, 실제로는 <strong>다음 거래 세션의 시가</strong>에 진입하는 것으로만 재생한다. 사람이 장 마감 뒤 차트를 보고 “그날 종가에 샀다”고 말하는 식의 편한 가정을 막기 위해서다.</p><p>또 과거를 한 줄로 길게 읽고 성적을 내는 대신, 학습 구간과 검증 구간 사이에 비워 두는 구간을 둔다. 이름은 purge와 embargo인데, 쉽게 말하면 바로 옆 구간의 정보가 서로 묻어 들어가지 않게 거리를 두는 안전띠다.</p><p><img src="/img/posts/20260803-hermes-v3-testing-gates/v3-testing-gate-flow.svg" alt="신호가 생긴 뒤 다음 세션에서만 재생되고, 비용과 검증 문을 지나도 주문은 아직 잠겨 있는 흐름"></p><p>이 문을 통과하려면 적어도 다음 조건을 만족해야 한다.</p><ul><li>최종 검증 구간의 표본이 100개 이상일 것</li><li>비용을 뺀 뒤에도 기대값이 양수일 것</li><li>Profit Factor가 1.2보다 클 것</li><li>학습과 검증 사이의 안전 구간을 각각 둘 것</li><li>몇 가지 조합을 시험했는지 함께 남길 것</li></ul><p>한 가지라도 모자라면 신호는 <code>shadow</code>, 즉 관찰만 하는 상태다. 통과 신호가 하나도 없을 수 있다는 것도 실패가 아니라 측정 결과로 취급한다. 지금은 아직 실제 신호 전체를 과거 구간에 돌려 성과 숫자를 내지 않았다.</p><h2 id="2-‘신호-다섯-개’는-이제-각자-시험-문장을-갖는다"><a href="#2-‘신호-다섯-개’는-이제-각자-시험-문장을-갖는다" class="headerlink" title="2. ‘신호 다섯 개’는 이제 각자 시험 문장을 갖는다"></a>2. ‘신호 다섯 개’는 이제 각자 시험 문장을 갖는다</h2><p>어제 소개한 다섯 신호는 이제 이름만 있는 규칙이 아니다. 각각 어떤 조건에서 발생하고, 얼마 동안 들고 보며, 어떤 비용을 포함해 시험하는지 사전등록된 가설과 연결했다.</p><p>사전등록은 시험을 다 돌린 뒤 잘 나온 결과에 맞춰 설명을 바꾸지 못하게 하는 장치다. 신호 규칙의 지문을 가설에 같이 남겨 두었기 때문에, 임계값을 하나만 바꿔도 같은 실험이라고 주장할 수 없다.</p><p>다중검정도 한 단계 보강했다. 보유 기간만 달리하면 사실상 같은 종목 묶음을 여러 번 보는 일이 생긴다. 이번에는 보유 기간뿐 아니라 그날 발동한 신호 중 전부를 볼지, 강한 절반만 볼지도 미리 격자로 고정했다. 여러 번 시험한 만큼 결과를 더 엄격하게 읽기 위한 준비다.</p><p>중요한 점은 여전히 같다. <strong>등록과 재생기가 준비됐다는 뜻이지, 좋은 성과가 나왔다는 뜻은 아니다.</strong></p><h2 id="3-비용은-예쁘게-추정하지-않고-모르는-곳을-남긴다"><a href="#3-비용은-예쁘게-추정하지-않고-모르는-곳을-남긴다" class="headerlink" title="3. 비용은 예쁘게 추정하지 않고, 모르는 곳을 남긴다"></a>3. 비용은 예쁘게 추정하지 않고, 모르는 곳을 남긴다</h2><p>수익률은 비용을 빼기 전에는 거의 이야기할 가치가 없다. 이번에는 한국 주식의 연도별 증권거래세, 미국 주식 수수료와 매도 수수료, Binance 수수료와 펀딩을 비용 모델에 넣었다.</p><p>슬리피지도 가능한 곳에서만 보수적으로 잡았다. 과거 주문 로그 전체를 무조건 믿지 않고, 실제로 체결된 보호 청산 기록을 중심으로 비용을 추정했다. 특히 한국 주식은 적은 표본에서 p90을 쓰는 쪽으로 기울였다.</p><p>반대로 아직 모르는 것도 분명하다. 미국 주식 슬리피지는 실측 표본이 없어 가정치다. 선물 체결 수수료도 더 정확한 기록 경로가 필요하다. 이런 구멍이 남아 있는 동안에는 그럴듯한 성과 숫자를 앞에 내세우지 않기로 했다.</p><h2 id="4-데이터가-없으면-‘반대-근거-없음’이라고-말하지-않는다"><a href="#4-데이터가-없으면-‘반대-근거-없음’이라고-말하지-않는다" class="headerlink" title="4. 데이터가 없으면 ‘반대 근거 없음’이라고 말하지 않는다"></a>4. 데이터가 없으면 ‘반대 근거 없음’이라고 말하지 않는다</h2><p>오늘 개인적으로 가장 마음에 드는 수정은 <code>no_bars</code>다.</p><p>거래정지나 상장폐지처럼 가격 바가 하나도 없는 보유 종목은 예전 흐름에서 규칙이 발동하지 않은 것처럼 보일 여지가 있었다. 하지만 바가 없다는 것은 “좋은 신호도 나쁜 신호도 없었다”가 아니라 <strong>평가 자체가 불가능했다</strong>는 뜻이다.</p><p>이제 스캔 결과는 그런 종목에 대해 “바 없음 - 평가 자체가 불가능했다”고 남긴다. 판단하지 못한 이유도 반대 근거의 하나로 취급한다. 쥬가 침묵한 것을 낙관으로 번역하지 않게 된 셈이다.</p><p>국내 시장 입력도 필요한 창만 읽도록 바꿨다. 928MB짜리 전체 창고를 매번 통째로 올리던 방식에서, 최근 수급과 펀더멘털, 90일 리서치 창만 먼저 꺼내 읽는다. 고정 시각 기준 입력 적재는 세 번 측정에서 <code>35.51/32.62/19.65초</code>에서 <code>0.71/1.06/0.95초</code>로 바뀌었지만, 이것은 매매 성과가 아니라 같은 데이터를 읽는 준비 시간이 줄었다는 기록일 뿐이다.</p><h2 id="5-리서치도-새-값을-덮어쓰지-않고-나란히-둔다"><a href="#5-리서치도-새-값을-덮어쓰지-않고-나란히-둔다" class="headerlink" title="5. 리서치도 새 값을 덮어쓰지 않고 나란히 둔다"></a>5. 리서치도 새 값을 덮어쓰지 않고 나란히 둔다</h2><p>리서치 문서의 팩트 추출도 2단계를 준비했다. 첫 추출 결과를 지우고 새 모델 결과로 덮어쓰는 대신, 같은 문서에 기존 값과 새 추출 값을 따로 보관한다. 서로 다르면 비교표만 만들고 자동으로 “새 것이 맞다”고 고르지 않는다.</p><p>전량 실행 대상도 <code>6,271건</code>으로 고정해 두었다. 새 문서가 들어왔다고 실행 범위가 조용히 늘어나지 않도록 한 것이다. 문서당 최대 한 번만 호출하고, 중간에 끊긴 건은 다시 호출하지 않고 중단 상태로 닫는다.</p><p>아직 이 6,271건 전량 실행은 하지 않았다. 5건짜리 분리 환경에서만 재개와 저장 규칙을 검증했고, 운영 리서치 DB에는 쓰지 않았다는 사실까지 확인했다. 새 모델이 원본을 덮어쓰며 과거 판단을 바꾸는 일은 아직 없다.</p><h2 id="지금-위치를-한-장으로-정리하면"><a href="#지금-위치를-한-장으로-정리하면" class="headerlink" title="지금 위치를 한 장으로 정리하면"></a>지금 위치를 한 장으로 정리하면</h2><table><thead><tr><th>구간</th><th>현재 상태</th><th>아직 닫혀 있는 것</th></tr></thead><tbody><tr><td>시장 스캔</td><td>3개 시장 전수 스캔, 신호 5종과 레짐 계산 구현</td><td>신호가 주문 자격을 얻는 일</td></tr><tr><td>백테스트</td><td>다음 세션 체결, 안전 구간, 비용·다중검정 게이트 구현</td><td>실제 신호 전체의 성과 평가</td></tr><tr><td>파생 데이터</td><td>펀딩·미결제약정·베이시스 피처를 Binance 스캔에 연결</td><td>현물 짝이 없는 심볼의 베이시스 커버리지 보강</td></tr><tr><td>리서치 2단</td><td>버전 분리, 불일치 기록, 재개 원장 구현</td><td>6,271건 전량 실행과 알파 채택</td></tr><tr><td>주문</td><td>없음</td><td>백테스트 게이트 통과 전까지 계속 없음</td></tr></tbody></table><p>그러니까 현재의 HERMES v3는 꽤 많은 것을 계산할 수 있지만, 아직 어떤 종목도 사라고 말할 권한은 없다. 그 권한을 늦게 주는 것이 이번 구조의 목적에 가깝다.</p><h2 id="오늘의-쥬는-철문-앞에서-멈춘다"><a href="#오늘의-쥬는-철문-앞에서-멈춘다" class="headerlink" title="오늘의 쥬는 철문 앞에서 멈춘다"></a>오늘의 쥬는 철문 앞에서 멈춘다</h2><p>그림 속 쥬가 신호 타일을 유리 상자에 넣고 있는 이유도 같다. 신호가 생겼다는 사실만으로 시장 쪽 철문을 열 수는 없다. 부엉이가 옆에서 체크리스트를 들고 있는 동안에는 더더욱 그렇다.</p><p>다음은 시장별로 다섯 신호를 실제 워크포워드 재생에 넣고, 비용을 뺀 결과와 시도 수를 함께 읽는 일이다. 그 결과가 비어 있거나 기준에 못 미치면 쥬는 계속 관찰자로 남는다.</p><p>조금 느려 보이지만, 이번 v3에서 가장 중요하게 두는 것은 “무엇을 샀나”보다 <strong>왜 아직 사면 안 되는가를 설명할 수 있는가</strong>다.</p><p>게시 전 고정 스냅샷의 구현 기록에서 전체 테스트 <code>1,637 passed</code>, 의존성 경계 검사 <code>5 kept / 0 broken</code>, Ruff 정적 검사와 포맷 검사를 통과한 상태를 확인했다. 이 검증은 코드의 규칙을 확인하는 것이며, 미래 수익을 보장하지 않는다.</p><blockquote><p>이 글은 개발 기록이며 투자 권유가 아니다. HERMES v3는 아직 주문을 실행하지 않으며, 실제 투자 판단은 별도로 해야 한다.</p></blockquote>]]>
      </content:encoded>
    </item>
    <item>
      <title>HERMES v3 2차수: 쥬는 아직 매매하지 않고, 시장의 날씨를 읽는 중</title>
      <link>https://poul.kr/2026/08/02/20260802-hermes-v3-second-cycle/</link>
      <description>HERMES v3의 두 번째 구현 차수 기록. 신호 5종, 가격·매크로·리서치 레짐, 3개 시장 17,540심볼 스캔까지 어디까지 왔는지와 아직 열지 않은 주문 버튼을 정리한다.</description>
      <author>PouL</author>
      <category domain="https://poul.kr/categories/Project/">Project</category>
      <category domain="https://poul.kr/tags/Worklog/">Worklog</category>
      <category domain="https://poul.kr/tags/HERMES/">HERMES</category>
      <category domain="https://poul.kr/tags/%ED%88%AC%EC%9E%90%EC%9E%90%EB%8F%99%ED%99%94/">투자자동화</category>
      <category domain="https://poul.kr/tags/Jue/">Jue</category>
      <category domain="https://poul.kr/tags/Claude/">Claude</category>
      <category domain="https://poul.kr/tags/%EB%A6%AC%ED%8C%A9%ED%86%A0%EB%A7%81/">리팩토링</category>
      <pubDate>Sun, 02 Aug 2026 12:10:00 GMT</pubDate>
      <content:encoded>
        <![CDATA[<p>HERMES v3를 다시 세운 뒤, 두 번째 큰 구현 차수에 들어왔다.</p><p>지난 글에서 “데이터부터 다시 쌓는다”고 적었는데, 이제는 그 위에 <strong>시장을 읽는 규칙</strong>을 올리기 시작했다. 그래도 쥬는 아직 매매하지 않는다. 지금 하고 있는 일은 매수 버튼을 누르게 만드는 일이 아니라, 그 버튼을 누르면 안 되는 날을 더 잘 구분하는 일에 가깝다.</p><p>이번 글은 <code>2026-08-02 20:50 KST</code>에 고정한 HERMES v3 코드 스냅샷을 기준으로 쓴다. 실시간 계좌·보유 종목·주문 정보는 넣지 않았다.</p><p><img src="/img/posts/20260802-hermes-v3-second-cycle/jue-and-owl-night-shift.png" alt="새벽 작업실에서 신호 타일을 정리하는 쥬와 부엉이"></p><span id="more"></span><h2 id="이번-차수는-무엇을-만드는-중인가"><a href="#이번-차수는-무엇을-만드는-중인가" class="headerlink" title="이번 차수는 무엇을 만드는 중인가"></a>이번 차수는 무엇을 만드는 중인가</h2><p>쉽게 말하면, 쥬가 종목 하나만 보고 “오를 것 같다”고 말하지 않도록 만드는 차수다.</p><p>종목의 추세나 거래량만 읽으면 시장 전체가 흔들리는 날에도 같은 목소리를 내기 쉽다. 그래서 이번에는 세 층을 따로 만들고 있다.</p><ol><li>종목 자체에서 나오는 기술 피처와 신호</li><li>시장 전체의 가격·변동성·폭을 읽는 가격 레짐</li><li>금리·달러·변동성·리서치 발간 흐름을 읽는 매크로·서사 레짐</li></ol><p>여기서 <code>레짐</code>은 거창한 예측기가 아니다. 지금을 “상승 추세”, “하락 추세”, “횡보”, “변동성이 큰 시기”처럼 한 번 접어 부르는 시장 상태다. 나중에 신호를 평가할 때도, 같은 돌파 신호가 어느 날에는 의미 있고 어느 날에는 조심해야 하는지 설명하는 배경이 된다.</p><p><img src="/img/posts/20260802-hermes-v3-second-cycle/v3-phase2-weather-map.svg" alt="가격과 매크로와 리서치가 각각 시장의 날씨를 읽는 구조"></p><h2 id="1-종목-신호는-다섯-가지-하지만-전부-그림자다"><a href="#1-종목-신호는-다섯-가지-하지만-전부-그림자다" class="headerlink" title="1. 종목 신호는 다섯 가지, 하지만 전부 그림자다"></a>1. 종목 신호는 다섯 가지, 하지만 전부 그림자다</h2><p>이번에 만든 기본 신호는 다섯 가지다.</p><ul><li>추세가 이어지는 중 잠깐 눌린 자리를 보는 <code>trend_pullback</code></li><li>거래량을 동반해 경계를 넘는 <code>breakout_volume</code></li><li>밴드 바깥으로 과하게 밀렸는지를 보는 <code>mean_reversion_band</code></li><li>같은 시장 안에서 상대적으로 강한 흐름을 보는 <code>momentum_rank</code></li><li>변동성이 조여진 뒤 움직임을 준비하는 <code>volatility_contraction</code></li></ul><p>이름만 보면 당장 거래할 것 같지만, 지금은 아니다. 다섯 신호 모두 <strong>shadow 전용</strong>이다. 신호가 나도 시스템의 진입 자격은 여전히 <code>no_experiment</code>, 즉 아직 실험조차 끝나지 않은 상태로 남는다.</p><p>이 규칙을 둔 이유는 단순하다. 신호를 만들었다는 사실과, 신호가 비용을 빼고도 쓸 만하다는 사실은 전혀 다르기 때문이다. 후자는 다음 Phase 3의 워크포워드 백테스트와 비용 게이트에서 확인할 일이다.</p><p>또 하나는 기권이다. 필요한 값이 비었을 때는 애매하게 중립 점수를 주지 않고, “판단 불가”라는 사유를 남긴다. 예를 들어 충분한 장기 이동평균이 없는 신규 상장 종목은 신호를 억지로 내지 않는다. 아무 일도 없어서 신호가 없던 것과, 자료가 모자라서 말하지 못한 것은 다른 문장이다.</p><h2 id="2-가격-레짐은-‘지수만-오르는-날’을-추세라고-부르지-않는다"><a href="#2-가격-레짐은-‘지수만-오르는-날’을-추세라고-부르지-않는다" class="headerlink" title="2. 가격 레짐은 ‘지수만 오르는 날’을 추세라고 부르지 않는다"></a>2. 가격 레짐은 ‘지수만 오르는 날’을 추세라고 부르지 않는다</h2><p>가격 레짐은 세 가지를 같이 본다.</p><ul><li>지수 프록시의 빠른 이동평균과 느린 이동평균 관계</li><li>지난 1년 안에서 현재 변동성이 어느 위치인지</li><li>유니버스 안에서 50일 이동평균 위에 있는 종목 비율, 즉 시장의 폭</li></ul><p>흥미로운 규칙은 폭이다. 지수는 오르는데 실제로 오른 종목이 절반도 안 되면, 이 시스템은 그날을 자신 있게 상승 추세라고 부르지 않는다. 몇 개의 대형주만 지수를 끌어올리는 장과, 시장 전체가 같이 가는 장은 다르게 봐야 한다는 판단이다.</p><p>변동성이 지난 1년의 상위 20%에 들어오면 방향보다 변동성 상태를 먼저 본다. 반대로 필요한 값이 하나라도 없으면 <code>횡보</code>로 대충 접지 않고, 상태 자체를 계산하지 못했다고 남긴다. “횡보라서 조심”과 “모르니 조심”은 다른 이유니까.</p><h2 id="3-매크로와-리서치는-LLM이-아니라-먼저-숫자로-남긴다"><a href="#3-매크로와-리서치는-LLM이-아니라-먼저-숫자로-남긴다" class="headerlink" title="3. 매크로와 리서치는 LLM이 아니라, 먼저 숫자로 남긴다"></a>3. 매크로와 리서치는 LLM이 아니라, 먼저 숫자로 남긴다</h2><p>매크로 레짐은 미국 10년물, 장단기 금리차, 국고채 3년물, 달러인덱스, VIX, 유가, 원·달러 같은 7개 시리즈를 읽는다. 값 하나만 던지는 대신 지난 1년 백분위와 최근 변화량도 같이 붙인다.</p><p>여기서 중요한 건 이월 기록이다. 어떤 매크로 값은 매일 새로 나오지 않는다. 최신값을 이월해서 쓰되, 며칠 전 관측치인지도 같이 남긴다. 그래야 수집이 멈춘 값을 최신으로 착각하지 않는다.</p><p>리서치 쪽도 비슷하다. 증권사 보고서 본문을 즉석에서 AI에게 읽히는 대신, 우선 발간량과 의견 흐름을 센다. 기존에 모은 6,364건 가운데 62%는 특정 종목이 아니라 시장·섹터·매크로 이야기였다. 이 문서들은 개별 종목 목표주가를 억지로 뽑기보다, 시장에서 어떤 주제에 관심이 몰리는지 보는 데 쓰는 편이 자연스럽다.</p><p>다만 리서치 데이터의 실제 기간은 약 6개월뿐이다. 그래서 그 이전 시점에는 레짐 값을 만들지 않고 비워 둔다. 데이터가 없던 날을 조용한 날로 해석하면, 시작 직후의 관심 급증이 가짜 신호가 되기 때문이다.</p><h2 id="4-지금은-조금-빨라졌고-더-조심스러워졌다"><a href="#4-지금은-조금-빨라졌고-더-조심스러워졌다" class="headerlink" title="4. 지금은 조금 빨라졌고, 더 조심스러워졌다"></a>4. 지금은 조금 빨라졌고, 더 조심스러워졌다</h2><p>이번 차수의 실제 측정도 하나 남겨 둔다.</p><p>3개 시장을 합쳐 17,540개 심볼, 약 1,030만 행을 훑는 T0 전수 스캔은 신호 5종까지 포함해 <strong>33.12초</strong>가 걸렸다. 기준은 60초다. 처음에는 203초가 걸렸는데, 데이터 구조와 다양성 계산을 손봐서 줄였다.</p><p>속도는 자랑거리가 아니라 운영 조건이다. 매일 전체 시장을 한 번 훑는 작업이 너무 오래 걸리면, 아무리 좋은 규칙도 실제로는 늦은 어제의 판단이 된다.</p><p>그렇다고 빨라졌다고 바로 주문으로 연결하지는 않는다. 지금의 흐름은 아래처럼 중간 문이 하나 더 있다.</p><p><img src="/img/posts/20260802-hermes-v3-second-cycle/v3-phase2-gates.svg" alt="데이터에서 신호까지는 열렸지만 백테스트와 주문 문은 아직 잠긴 흐름"></p><h2 id="아직-만들지-않은-것"><a href="#아직-만들지-않은-것" class="headerlink" title="아직 만들지 않은 것"></a>아직 만들지 않은 것</h2><p>이번 글에서 가장 중요한 문장은 이것이다.</p><blockquote><p><strong>신호와 시장 상태가 생겼지만, 아직 성과가 증명된 전략은 없다.</strong></p></blockquote><p>다음 큰 작업은 같은 파이프라인을 과거 시간 위에서 다시 돌리는 이벤트 기반 백테스트다. 수수료와 세금, 생존 편향, 수정계수, 데이터가 실제로 존재했던 시점까지 모두 넣고도 기대값이 남는지 봐야 한다.</p><p>그래서 아직은 하지 않은 것들도 명확하다.</p><ul><li>신호 임계값을 과거 성과로 맞춰 보는 튜닝</li><li>성과가 좋아 보인다는 이유로 진입 권한을 주는 일</li><li>주문 API 호출</li><li>리서치가 부족한 구간을 그럴듯한 값으로 메우는 일</li></ul><p>이런 빈칸을 남기는 일이 느려 보일 수는 있다. 그래도 v2에서 느꼈던 복잡함은 대부분 “없는 사실을 있는 것처럼 이어 붙이는 순간” 커졌다. 이번에는 모르면 모른다고 남기고, 기권이면 기권이라고 적는 쪽을 선택하고 있다.</p><h2 id="오늘의-쥬는-매매자가-아니라-야간-관측자다"><a href="#오늘의-쥬는-매매자가-아니라-야간-관측자다" class="headerlink" title="오늘의 쥬는 매매자가 아니라 야간 관측자다"></a>오늘의 쥬는 매매자가 아니라 야간 관측자다</h2><p>그래서 오늘의 쥬는 차트를 보고 매수 버튼을 찾는 캐릭터라기보다, 새벽 작업실에서 신호 조각을 정리하는 관측자에 가깝다. 옆의 부엉이는 빨리 결론 내리지 말라는 감시자 정도로 두면 될 것 같다.</p><p>모델을 Claude로 바꾼다고 수익이 생기거나 구조가 저절로 정리되는 건 아니다. 그래도 이번 2차수에서는, 복잡한 시스템을 더 복잡하게 만들기보다 각 판단이 어디서 왔고 언제 기권했는지 설명할 수 있는 쪽으로 조금씩 가고 있다.</p><p>게시 전 이 스냅샷에서 전체 테스트, 의존성 경계 검사, Ruff 정적 검사와 포맷 검사를 실행했고 모두 통과했다. 테스트는 코드 규칙을 확인할 뿐, 미래 수익을 보장하지 않는다.</p><blockquote><p>이 글은 개발 기록이며 투자 권유가 아니다. HERMES v3는 아직 백테스트와 실행 게이트를 통과하지 않았고, 실제 투자 판단은 별도로 해야 한다.</p></blockquote>]]>
      </content:encoded>
    </item>
    <item>
      <title>HERMES v3 진행상황: 이번에는 데이터부터 다시 쌓는 중</title>
      <link>https://poul.kr/2026/08/01/20260801-hermes-v3-progress/</link>
      <description>Claude와 함께 HERMES v3를 다시 짓기 시작한 첫날의 진행상황. 데이터 저장소, 리서치 정제, DART 기업행동, 미국주식 유니버스까지 실제로 어디까지 왔는지 정리한다.</description>
      <author>PouL</author>
      <category domain="https://poul.kr/categories/Project/">Project</category>
      <category domain="https://poul.kr/tags/Worklog/">Worklog</category>
      <category domain="https://poul.kr/tags/HERMES/">HERMES</category>
      <category domain="https://poul.kr/tags/%ED%88%AC%EC%9E%90%EC%9E%90%EB%8F%99%ED%99%94/">투자자동화</category>
      <category domain="https://poul.kr/tags/Claude/">Claude</category>
      <category domain="https://poul.kr/tags/%EB%A6%AC%ED%8C%A9%ED%86%A0%EB%A7%81/">리팩토링</category>
      <pubDate>Sat, 01 Aug 2026 13:20:00 GMT</pubDate>
      <content:encoded>
        <![CDATA[<p>HERMES v3를 다시 짓기 시작한 지 얼마 안 됐는데, 생각보다 바닥 공사가 꽤 멀리 왔다.</p><p>아직 매매를 다시 시작한 건 아니다. 오히려 그 반대다. 이번에는 주문이나 쥬의 말투보다 먼저, 나중에 결과가 마음에 안 들어도 원인을 다시 찾아갈 수 있는 데이터와 규칙부터 깔고 있다.</p><p>이 글은 <code>2026-08-01</code> 밤, 현재 작업 트리와 테스트 결과를 보고 적는 중간 보고서다. 계좌·인증값·실제 보유 종목·주문 정보는 적지 않는다.</p><p><img src="/img/posts/20260801-hermes-v3-progress/v3-status-room.svg" alt="HERMES v3 상태판"></p><span id="more"></span><h2 id="지금-어디까지-왔나"><a href="#지금-어디까지-왔나" class="headerlink" title="지금 어디까지 왔나"></a>지금 어디까지 왔나</h2><p>한 줄로 줄이면 이렇다.</p><blockquote><p><strong>v3는 매매 시스템이 아니라, 매매 시스템이 될 자격을 검증할 데이터 공장을 먼저 만들고 있다.</strong></p></blockquote><p>Phase 0의 구조 정리와 Phase 1a의 파이프라인 골격은 끝났다. 지금은 Phase 1, 그러니까 데이터 평면을 실제 값으로 채우는 구간이다. 바 데이터, 리서치 문서, 기업행동, 미국 주식 유니버스를 각각 따로 다루되, 나중에 하나의 백테스트에서 같은 시간 기준으로 만날 수 있게 하는 작업이다.</p><p>현재 Python 코드만 보면 운영 코드 52개 파일, 테스트 19개 파일로 구성돼 있다. 숫자 자체가 중요한 건 아니지만, 예전처럼 한 덩어리 안에서 기능을 계속 덧붙이는 대신 역할별 경계를 먼저 세우고 있다는 흔적은 된다.</p><h2 id="1-먼저-정리한-것은-“언제-알았는가”다"><a href="#1-먼저-정리한-것은-“언제-알았는가”다" class="headerlink" title="1. 먼저 정리한 것은 “언제 알았는가”다"></a>1. 먼저 정리한 것은 “언제 알았는가”다</h2><p>자동매매 쪽에서 제일 무서운 건 나중에 알게 된 정보를 과거 판단에 슬쩍 섞어 넣는 일이다. 결과는 좋아 보이는데 실제 당시에는 알 수 없었던 정보를 쓴 백테스트, 흔히 말하는 룩어헤드가 그렇게 생긴다.</p><p>그래서 v3의 데이터는 단순히 날짜만 저장하지 않는다.</p><ul><li>가격 바는 원주가와 수정계수를 분리한다.</li><li>리서치 문서는 발행일보다 <strong>우리 시스템이 실제로 볼 수 있었던 시각</strong>을 기준으로 삼는다.</li><li>기업행동은 발표 시각, 확인 가능 시각, 실제 효력일을 따로 둔다.</li><li>저장소 쓰기는 한 경로만 통과하게 하고, 단계별 결과는 성공·건너뜀·저하 상태를 남긴다.</li></ul><p>겉으로 보면 꽤 귀찮은 규칙이다. 하지만 이 귀찮음이 없으면 나중에 “왜 이 전략이 과거에서는 좋았지?”라는 질문에 답할 수 없다.</p><p><img src="/img/posts/20260801-hermes-v3-progress/v3-data-plane.svg" alt="시간을 거슬러 올라가지 않기 위한 데이터 흐름"></p><h2 id="2-가격-데이터는-실제로-쌓이기-시작했다"><a href="#2-가격-데이터는-실제로-쌓이기-시작했다" class="headerlink" title="2. 가격 데이터는 실제로 쌓이기 시작했다"></a>2. 가격 데이터는 실제로 쌓이기 시작했다</h2><p>가장 먼저 규모가 나온 곳은 Binance 쪽이다.</p><ul><li>3년 일봉·4시간봉·1시간봉 백필 완료</li><li>479개 심볼</li><li><strong>10,810,642행</strong></li><li>수집 후 품질 검사와 기존 데이터 교차 검증까지 통과</li></ul><p>매크로와 환율도 10개 시계열, 7,443개 관측치까지 따로 쌓았다. 이 값들도 그냥 차트 장식이 아니라, 나중에 시장 국면을 나누고 수익을 원화 기준으로 읽을 때 사용할 기반이다.</p><p>국내 주식은 욕심내서 빨리 받으려다 KRX 쪽에서 차단을 한 번 맞았다. 이건 숨길 일이 아니라 이번 구조에서 가장 중요한 학습이었다. 지금은 호출 간격 하한을 코드로 강제했고, 차단이나 레이트 제한이 오면 계속 밀어붙이지 않고 바로 멈추도록 바꿨다. 국내 데이터는 일부 세션만 확보된 상태이며, 재개 전까지는 무리해서 채우지 않는다.</p><p>빠르게 많이 받는 것보다, 다음날 다시 돌려도 데이터를 망가뜨리지 않는 쪽을 선택한 셈이다.</p><h2 id="3-리서치는-옮기면서-오염도-같이-걷어냈다"><a href="#3-리서치는-옮기면서-오염도-같이-걷어냈다" class="headerlink" title="3. 리서치는 옮기면서 오염도 같이 걷어냈다"></a>3. 리서치는 옮기면서 오염도 같이 걷어냈다</h2><p>v2에 있던 증권사 리서치 문서 6,270건과 문서-종목 연결 17,846건도 v3 평면으로 옮겼다. 단순 복사는 아니었다.</p><p>가장 큰 문제는 목표주가가 없는 문서를 <code>0</code>으로 저장하던 습관이었다. 실제로 3,749건, 거의 60%가 0이었다. 채권이나 산업 리포트는 애초에 목표주가가 없을 뿐인데, 이걸 숫자 0으로 취급하면 시스템은 “목표주가가 0원”이라고 오해한다.</p><p>v3에서는 모르는 값을 <code>NULL</code>로 두고, 0이 다시 들어오지 못하게 막았다. 리포트가 발행된 날과 우리가 수집해 읽을 수 있었던 날도 분리했다. 예전에 두 달 늦게 수집된 리포트가 있었는데, 발행일만 믿으면 그 두 달을 과거에 미리 알고 있었던 셈이 되기 때문이다.</p><p>그리고 모든 리포트를 곧바로 LLM에 넣는 방식도 멈췄다. 전량 6,270건으로 먼저 재보니 종목 리포트가 아닌 문서가 61%였고, 정규식으로 확실히 처리할 수 있는 문서까지 먼저 걷어내면 LLM 2단계로 넘어갈 것은 560건이었다. 월 기준 추정 토큰은 <strong>1,881만에서 168만으로 91.1%</strong> 줄었다.</p><p>모델을 더 많이 부르는 것보다, 모델에게 정말 판단이 필요한 문서만 넘기는 편이 더 낫다는 아주 단순한 결론이다.</p><h2 id="4-기업행동과-미국-주식도-비어-있던-자리를-채우는-중"><a href="#4-기업행동과-미국-주식도-비어-있던-자리를-채우는-중" class="headerlink" title="4. 기업행동과 미국 주식도 비어 있던 자리를 채우는 중"></a>4. 기업행동과 미국 주식도 비어 있던 자리를 채우는 중</h2><p>액면분할, 유상증자 같은 기업행동은 과거 가격을 읽을 때 빠지면 안 되는 정보다. v2에는 스키마만 있고 실제로 채우는 경로가 거의 없었다. v3에서는 DART 공시에서 사건을 수집하고, 거래소의 수정주가와 원주가 비율로 실제 조정계수를 확인하는 구조를 따로 만들었다.</p><p>다만 여기에도 아직 남은 일이 있다. DART 목록만으로는 유상증자의 배정 방식이나 정확한 효력일을 다 알 수 없어서, 상세 공시 보강과 KRX 재개 뒤의 수정계수 적재가 필요하다. 이 항목은 안 채워진 상태에서 백테스트를 통과 처리하면 안 된다.</p><p>미국 주식은 계획보다 규모가 커졌다. KIS 공식 종목 마스터를 실제로 받아 보니 백필 대상이 처음 예상한 약 5,800개가 아니라 <strong>12,665개</strong>였다. NASDAQ·NYSE·AMEX의 주식과 ETF를 합친 값이다.</p><p>그래서 미국 일봉 어댑터와 재개 가능한 백필 러너를 만들었다. 원주가를 받도록 명시해 분할 뒤에 과거 가격이 조용히 바뀌는 문제도 피한다. 주식을 ETF보다 먼저 받도록 순서를 정했고, 전체 3년 백필은 아직 시작 전이다. 대상이 두 배 넘게 커진 만큼, 표본 검증과 호출 한도 확인을 거쳐야 한다.</p><p><img src="/img/posts/20260801-hermes-v3-progress/v3-no-orders-yet.svg" alt="쌓인 기반과 아직 닫혀 있는 주문 버튼"></p><h2 id="그래서-지금-쥬는-무엇을-할-수-있나"><a href="#그래서-지금-쥬는-무엇을-할-수-있나" class="headerlink" title="그래서 지금 쥬는 무엇을 할 수 있나"></a>그래서 지금 쥬는 무엇을 할 수 있나</h2><p>아직은 사람처럼 종목을 보고 주문하는 쥬가 아니다.</p><p>지금의 v3는 데이터를 받아 저장하고, 이상한 행은 격리하고, 어느 데이터가 언제 들어왔는지 기록하고, 나중에 쓸 리서치 사실을 덜 오염된 형태로 정리하는 쪽에 가깝다.</p><p>아직 남은 큰 관문은 명확하다.</p><ol><li>국내·미국 데이터의 백필과 완결성 검증</li><li>로컬 알파 엔진과 시장 국면 분류</li><li>같은 파이프라인을 재생하는 이벤트 기반 백테스트</li><li>비용을 뺀 뒤에도 기대값이 남는지 확인하는 게이트</li><li>그 뒤에야 판단 계층과 주문 계층</li></ol><p>특히 실제 주문은 Phase 5 전까지 호출하지 않도록 막아 두었다. 지금 데이터가 많아 보인다고 바로 매매를 재개하면, v2에서 느꼈던 “왜 이런 결과가 나왔는지 모르겠다”로 금방 돌아갈 것 같다.</p><h2 id="이번에는-나쁜-소식도-구조-안에-남긴다"><a href="#이번에는-나쁜-소식도-구조-안에-남긴다" class="headerlink" title="이번에는 나쁜 소식도 구조 안에 남긴다"></a>이번에는 나쁜 소식도 구조 안에 남긴다</h2><p>이번 진행에서 마음에 드는 부분은 잘된 숫자만 쌓지 않는다는 점이다.</p><p>KRX 차단, Binance와 미국 유니버스의 생존 편향, 리서치의 짧은 과거 범위, 아직 비어 있는 기업행동 계수는 전부 계획서와 검증 대상에 남아 있다. 나중에 백테스트 결과가 좋아도 이 한계들을 무시하면 안 된다.</p><p>Claude로 다시 시작한 리팩토링의 결과가 더 좋을지는 아직 모른다. 다만 지금까지의 방향은 분명하다. 모델이 시스템을 대신 똑똑하게 만들어 주길 기다리기보다, 사람이 다시 이해할 수 있는 경계와 실패 기록을 먼저 만들어 두고 있다.</p><p>오늘은 “v3가 완성됐다”고 쓸 날은 아니다.</p><p>대신 <strong>이번에는 뼈대만 그려 둔 상태가 아니라, 실제 데이터를 얹고 실패한 경로까지 기록하기 시작했다</strong>고는 쓸 수 있겠다.</p><h2 id="현재-검증"><a href="#현재-검증" class="headerlink" title="현재 검증"></a>현재 검증</h2><p>게시 전 현재 코드 기준으로 전체 테스트, 의존성 경계 검사, Ruff 정적 검사와 포맷 검사를 실행했다. 모두 통과했다. 외부 데이터 전체 백필이나 실제 주문 실행은 이 검증에 포함하지 않았다.</p><blockquote><p>이 글은 개발 기록이며 투자 권유가 아니다. 시스템은 아직 백테스트와 실행 게이트를 통과하지 않았고, 실제 투자 판단은 별도로 해야 한다.</p></blockquote>]]>
      </content:encoded>
    </item>
    <item>
      <title>ChatGPT를 해지하고, HERMES v3를 다시 세운다</title>
      <link>https://poul.kr/2026/08/01/20260801-hermes-v3-claude-restart/</link>
      <description>
        <![CDATA[<p><img src="/img/posts/20260801-hermes-v3-claude-restart/v3-restart-desk.svg" alt="낡은 제어실을 정리하고 새 청사진 앞에 앉은 쥬"></p>
<p>오늘 ChatGPT 구독을 해지했다.]]>
      </description>
      <author>PouL</author>
      <category domain="https://poul.kr/categories/Project/">Project</category>
      <category domain="https://poul.kr/tags/HERMES/">HERMES</category>
      <category domain="https://poul.kr/tags/%ED%88%AC%EC%9E%90%EC%9E%90%EB%8F%99%ED%99%94/">투자자동화</category>
      <category domain="https://poul.kr/tags/Claude/">Claude</category>
      <category domain="https://poul.kr/tags/%EB%A6%AC%ED%8C%A9%ED%86%A0%EB%A7%81/">리팩토링</category>
      <pubDate>Sat, 01 Aug 2026 12:15:00 GMT</pubDate>
      <content:encoded>
        <![CDATA[<p><img src="/img/posts/20260801-hermes-v3-claude-restart/v3-restart-desk.svg" alt="낡은 제어실을 정리하고 새 청사진 앞에 앉은 쥬"></p><p>오늘 ChatGPT 구독을 해지했다. 그동안 GPT와 코덱스로 HERMES를 꽤 멀리까지 끌고 왔다. 화면도 만들고, 쥬의 말투도 붙이고, KIS와 바이낸스를 연결하고, 실패할 때마다 규칙을 덧댔다.</p><p>그런데 어느 순간부터는 고치는 속도보다 구조를 이해하는 속도가 더 느려졌다. 기능 하나를 만질 때마다 다른 곳의 예외와 오래된 실험이 같이 따라오고, “이게 왜 여기 있지”라는 질문이 먼저 나오는 상태. 열심히 만든 것이 틀렸다는 뜻은 아니지만, 계속 덧붙이는 방식으로는 내가 원하는 종류의 시스템이 되기 어렵다는 뜻은 분명했다.</p><p>그래서 이번에는 Claude를 새로 구독하고, 새 작업 환경에서 <strong>HERMES v3</strong>를 다시 시작한다. 이 글은 “어느 모델이 더 똑똑한가”에 대한 결론이 아니다. 오히려 모델이 바뀌어도 흔들리지 않아야 할 경계와 규칙을 먼저 세우는 기록이다.</p><blockquote><p>기준 시점: 2026년 8월 1일. v3 저장소의 Phase 0 구현과 테스트 결과를 바탕으로 썼다. 아직 v3는 실거래를 시작한 시스템이 아니라, 재작성의 기반을 검증하는 단계다.</p></blockquote><h2 id="왜-새로-시작하나"><a href="#왜-새로-시작하나" class="headerlink" title="왜 새로 시작하나"></a>왜 새로 시작하나</h2><p>v2는 많은 것을 할 수 있었다. 대신 너무 많은 것이 한곳에 쌓였다. Python 코드만 36만 줄이 넘고, 실행 진입점은 21개, 독립적으로 도는 러너는 14개였다. 한 달 동안 LLM을 17,715번 호출해 약 1억 6,900만 토큰을 썼다.</p><p>문제는 비용만이 아니었다. 종목 분석의 상당 부분이 LLM 호출에 기대고 있으면, 같은 조건을 다시 돌려도 같은 판단을 보장하기 어렵다. 재현하기 어렵다면 백테스트로 검증하기도 어렵고, 검증하지 못하면 “좋아 보이는 판단”과 “돈을 걸어도 되는 판단”을 나눌 수 없다.</p><p>실제 기록도 이 불편한 결론을 피하지 못했다. 표본이 쌓인 전략군에서 뚜렷한 양의 기대값을 증명하지 못했고, 만들어 둔 검증 장치도 실제 진입 경로에서 우회된 적이 있었다. 프롬프트를 더 길게 쓰거나 모델을 한 번 더 바꾸는 일로 해결할 문제가 아니다.</p><p><img src="/img/posts/20260801-hermes-v3-claude-restart/v3-boundaries.svg" alt="v2의 얽힌 흐름을 v3의 명시적 경계와 게이트로 다시 나누는 그림"></p><h2 id="v3에서-먼저-바꾸는-것"><a href="#v3에서-먼저-바꾸는-것" class="headerlink" title="v3에서 먼저 바꾸는 것"></a>v3에서 먼저 바꾸는 것</h2><p>v3의 첫 원칙은 단순하다. <strong>재현 가능해야 개선할 수 있다.</strong></p><p>종목을 넓게 훑는 일은 가능한 한 로컬의 결정론적인 분석 엔진이 맡는다. 같은 데이터와 같은 시점이면 같은 결과가 나와야 한다. LLM은 모든 종목을 매번 읽는 엔진이 아니라, 이벤트가 생겼을 때 포트폴리오 전체를 해석하는 판단 계층으로 줄인다.</p><p>여기서 Claude는 기본 판단 프로바이더가 된다. 다만 코드의 경계는 특정 모델에 묶지 않는다. 입력과 출력의 계약은 모델 바깥에 두고, Claude가 구조화된 결과를 내는지와 예산 안에서 동작하는지를 먼저 확인하는 식이다. 다음에 모델을 바꾸더라도 투자 규칙과 데이터 계층까지 다시 갈아엎지 않기 위해서다.</p><table><thead><tr><th>v2에서 불편했던 것</th><th>v3에서 바꾸는 방식</th></tr></thead><tbody><tr><td>종목 분석이 LLM 호출에 크게 의존</td><td>로컬 알파 엔진이 분석을 만들고, LLM은 필요한 판단만 담당</td></tr><tr><td>검증 장치가 있어도 진입 경로에서 우회 가능</td><td><code>enter</code>는 워크포워드 검증을 통과한 신호만 만들 수 있게 설계</td></tr><tr><td>여러 러너가 각자 타이머를 가짐</td><td>KIS와 Binance를 세 개의 명시적 스테이지 DAG로 정리</td></tr><tr><td>DB 연결 규칙이 모듈마다 다름</td><td>단일 SQLite 연결 팩토리로 WAL과 잠금 대기 규칙을 강제</td></tr></tbody></table><h2 id="Claude와-함께-시작한-첫날은-기능-추가가-아니었다"><a href="#Claude와-함께-시작한-첫날은-기능-추가가-아니었다" class="headerlink" title="Claude와 함께 시작한 첫날은 기능 추가가 아니었다"></a>Claude와 함께 시작한 첫날은 기능 추가가 아니었다</h2><p>첫날에 만든 것은 멋진 화면도, 새 매매 로직도 아니다. 계획과 계약, 그리고 그 계약을 어기기 어렵게 만드는 작은 기반이다.</p><p>우선 v2를 실제 데이터로 다시 감사했다. 무엇을 버리고 무엇을 가져갈지 정하려면 “아마 복잡할 것이다”가 아니라, 어떤 경로가 비용을 쓰고 어떤 기록이 성과 측정에 남아 있는지부터 알아야 한다. 그 뒤 Phase 0 계획, 데이터·알파·판단·실행의 경계, 그리고 쥬 페르소나의 역할을 문서로 분리했다.</p><p>구현으로는 SQLite 연결을 한 군데로 모았다. 새 데이터베이스는 WAL 모드와 잠금 대기 시간, 외래키 설정을 같은 규칙으로 열고, 다른 모듈이 직접 연결을 만들면 검사 단계에서 막힌다. 눈에 띄는 기능은 아니지만, 런타임이 길어질수록 이런 작은 규칙이 시스템의 성격을 결정한다.</p><p><img src="/img/posts/20260801-hermes-v3-claude-restart/v3-phase-zero.svg" alt="새 시스템을 세우기 전에 감사, 데이터 연결, 테스트 순서로 바닥을 다지는 Phase 0"></p><p>이 첫 기반은 단위 테스트 11개와 코드 검사, 포맷 검사, 모듈 의존성 검사까지 통과했다. 아직 “잘 굴러간다”는 말은 할 수 없지만, 적어도 어디까지가 공용 기반이고 무엇을 침범하면 안 되는지는 실행 도구가 확인한다.</p><h2 id="이번에는-무엇을-기대하나"><a href="#이번에는-무엇을-기대하나" class="headerlink" title="이번에는 무엇을 기대하나"></a>이번에는 무엇을 기대하나</h2><p>Claude를 구독했다고 수익률이 갑자기 좋아질 거라고 기대하지는 않는다. HERMES v3가 제대로 가는지 판단할 기준도 거기에 두지 않을 생각이다.</p><ol><li>같은 입력을 넣었을 때 같은 분석이 나오는가.</li><li>검증을 통과하지 못한 신호가 실거래로 새지 않는가.</li><li>비용과 실패 사유를 나중에 다시 설명할 수 있는가.</li><li>모델이나 UI를 바꿔도 데이터와 실행 안전 규칙은 그대로 남는가.</li></ol><p>이 네 가지가 먼저다. 통과한 전략이 하나도 없다는 결과도, 실자본을 계속 태우는 것보다 낫다. 이번 리팩토링은 뭔가를 더 많이 시키는 작업이 아니라, 모르는 것을 모른다고 적고, 확인한 것만 다음 단계로 넘기는 연습에 가깝다.</p><p>ChatGPT를 해지하고 Claude로 옮긴 일은 겉으로 보면 구독 서비스 하나를 바꾼 것뿐이다. 하지만 내게는 HERMES를 다시 이해할 수 있는 크기로 되돌리는 시작점이다. 모델은 새로울 수 있어도, 이번에는 구조가 먼저다.</p><blockquote><p>이 글은 개인 프로젝트의 개발 기록이며 투자 권유가 아니다. HERMES v3의 검증 결과와 실제 동작은 이후 구현과 측정에 따라 달라질 수 있다.</p></blockquote>]]>
      </content:encoded>
    </item>
    <item>
      <title>시장은 위를 봤지만, 쥬는 비중을 키우지 않았다</title>
      <link>https://poul.kr/2026/07/31/20260731-kis-jue-market-and-exits/</link>
      <description>
        <![CDATA[<p><img src="/img/posts/20260731-kis-jue-market-and-exits/jue-control-room.svg" alt="상승 신호가 켜진 시장 앞에서도 작은 관리 카드만 남긴 쥬"></p>
<p>이번 주 국장은 방향만]]>
      </description>
      <author>PouL</author>
      <category domain="https://poul.kr/categories/%ED%88%AC%EC%9E%90-%EA%B8%B0%EB%A1%9D/">투자 기록</category>
      <category domain="https://poul.kr/tags/KIS/">KIS</category>
      <category domain="https://poul.kr/tags/HERMES-Jue/">HERMES Jue</category>
      <category domain="https://poul.kr/tags/%ED%8F%AC%ED%8A%B8%ED%8F%B4%EB%A6%AC%EC%98%A4/">포트폴리오</category>
      <category domain="https://poul.kr/tags/%ED%88%AC%EC%9E%90-%EA%B8%B0%EB%A1%9D/">투자 기록</category>
      <pubDate>Fri, 31 Jul 2026 12:10:00 GMT</pubDate>
      <content:encoded>
        <![CDATA[<p><img src="/img/posts/20260731-kis-jue-market-and-exits/jue-control-room.svg" alt="상승 신호가 켜진 시장 앞에서도 작은 관리 카드만 남긴 쥬"></p><p>이번 주 국장은 방향만 놓고 보면 꽤 강했다. 쥬가 7월 31일 장 마감 뒤 남긴 시장 펄스도 <code>risk_on_with_pressure</code>, 점수는 75점이었다. 외국인과 기관 수급, 프로그램 매수, 반도체와 전기장비 쪽의 넓어진 선도 흐름은 분명히 위를 가리켰다.</p><p>그런데 KIS 쥬의 최근 주문 원장을 보면 그림은 반대다. 새 종목을 쌓기보다 이미 열려 있던 블록을 닫고, 딱 세 개의 관리 카드만 계속 바라보고 있다. 장이 좋다고 느껴질수록 더 사는 대신, 지금 가진 판단이 정말 검증됐는지 먼저 묻는 쪽이다.</p><blockquote><p>기준 시점: 시장 판단은 2026년 7월 31일 20:30 KST에 저장된 쥬 시장 펄스, 거래 기록은 7월 29일~31일 KIS 쥬 블록 원장 기준이다. 금액, 수량, 평단, 손익, 주문 식별값은 공개하지 않는다. KIS 잔고 캐시는 7월 24일 기준이라, 오래된 비중표를 다시 싣지 않았다.</p></blockquote><h2 id="오늘-시장을-쥬는-이렇게-읽었다"><a href="#오늘-시장을-쥬는-이렇게-읽었다" class="headerlink" title="오늘 시장을 쥬는 이렇게 읽었다"></a>오늘 시장을 쥬는 이렇게 읽었다</h2><p><code>risk_on_with_pressure</code>는 좋은 장이라는 말과 조심할 이유가 동시에 있다는 뜻이다. 쥬의 기록에서 코스피와 코스닥은 강한 방향 신호를 냈고, 외국인과 기관은 현물과 선물에서 매수 우위로 잡혔다. 코스피 프로그램도 매수 쪽이었다. 반도체와 반도체장비, 전기장비, 전기제품, 기계가 앞쪽에 섰다.</p><p>하지만 같은 기록에는 두 개의 경고도 붙었다. 원달러 환율은 위쪽 압력을 보였고, 코스피200 선물은 현물보다 약한 백워데이션 상태였다. 지수도 업종별로 속도 차이가 컸다. 그래서 쥬는 이걸 “모두가 편한 상승장”이 아니라, <strong>방향은 좋지만 추격은 비싼 장</strong>으로 읽었다.</p><p><img src="/img/posts/20260731-kis-jue-market-and-exits/jue-decision-gate.svg" alt="시장 신호와 실제 실행을 분리하는 쥬의 결정 게이트"></p><h2 id="최근-거래는-매수보다-종료가-많았다"><a href="#최근-거래는-매수보다-종료가-많았다" class="headerlink" title="최근 거래는 매수보다 종료가 많았다"></a>최근 거래는 매수보다 종료가 많았다</h2><p>7월 29일부터 31일까지의 원장에는 여러 보호적 종료가 남아 있다. KG케미칼, 보령, 동방은 정해 둔 중단 조건에 닿아 닫혔고, 한솔홀딩스와 녹십자는 보호 요청에 따라 종료됐다. 기업은행은 진입 조건을 한 번 충족해 작은 블록이 열렸지만, 같은 날 중단 조건에 걸려 다시 정리됐다.</p><p>다음 날에는 피노가 중단 규칙으로, 삼성전자가 보호 요청으로 정리됐다. 레인보우로보틱스는 기존 보유를 관리 블록에 연결한 뒤에도 예외를 두지 않았다. 31일에는 수익을 반납하는 흐름을 막는 보호 규칙이 작동했고, 체결 결과까지 대조한 뒤 블록을 닫았다.</p><p>이걸 “상승장을 놓쳤다”고 적고 싶지는 않다. 쥬가 하는 일은 장의 한 방향을 맞히는 것보다, <strong>들고 있는 이유가 깨졌을 때 다음 결정을 미루지 않는 것</strong>에 가깝다. 특히 기존 보유를 관리 카드로 편입한 경우에는, 편입했다는 이유로 더 오래 버티게 하지 않는 것이 중요하다.</p><table><thead><tr><th>기간</th><th>원장에 남은 변화</th><th>사람이 읽는 뜻</th></tr></thead><tbody><tr><td>7월 29일</td><td>중단 조건과 보호 요청에 따른 여러 종료</td><td>작은 블록도 예외 없이 정해 둔 조건을 적용</td></tr><tr><td>7월 30일</td><td>피노 중단 종료, 삼성전자 보호 종료</td><td>큰 보유라고 해서 자동으로 더 오래 끌지 않음</td></tr><tr><td>7월 31일</td><td>레인보우로보틱스 수익 반납 보호 종료</td><td>수익권이었던 블록도 되돌림 규칙을 통과해야 유지</td></tr></tbody></table><h2 id="지금-쥬가-실제로-들고-있는-관리-카드"><a href="#지금-쥬가-실제로-들고-있는-관리-카드" class="headerlink" title="지금 쥬가 실제로 들고 있는 관리 카드"></a>지금 쥬가 실제로 들고 있는 관리 카드</h2><p>지금 원장에서 열린 블록은 세 개다. 롯데칠성과 하이트진로는 중기 검증 블록으로, 둘 다 <code>watch</code> 상태다. 새 비중을 얹는 대신 기존 가설과 가격 구조가 계속 살아 있는지만 본다. KODEX KOFR금리액티브(합성)는 현금성 코어 ETF로 남아 있다. 주가의 방향을 맞히기보다 다음 판단까지 급하게 손을 뻗지 않게 해 주는 완충 카드다.</p><table><thead><tr><th>역할</th><th>관리 대상</th><th>현재 행동</th><th>쥬가 확인하는 것</th></tr></thead><tbody><tr><td>중기 검증</td><td>롯데칠성</td><td><code>watch</code></td><td>거래와 가격 구조가 처음 가설을 계속 지지하는지</td></tr><tr><td>중기 검증</td><td>하이트진로</td><td><code>watch</code></td><td>눌림 뒤 조건이 다시 갖춰지는지</td></tr><tr><td>완충 코어</td><td>KODEX KOFR금리액티브(합성)</td><td><code>watch</code></td><td>현금성 ETF의 괴리와 유동성에 이상이 없는지</td></tr></tbody></table><p>대기 진입 카드도 하나 남아 있지만, 최근에는 새 진입 신호가 충분하지 않아 실제 주문으로 넘어가지 않았다. 이 글을 쓰는 시점의 미체결 주문은 0건이다. 시장이 바쁘게 움직여도, “후보가 있다”와 “지금 사도 된다”는 여전히 다른 문장이다.</p><h2 id="그래서-왜-25-까지만-쓰나"><a href="#그래서-왜-25-까지만-쓰나" class="headerlink" title="그래서 왜 25%까지만 쓰나"></a>그래서 왜 25%까지만 쓰나</h2><p>KIS 쥬는 실제 주문이 가능한 상태로 돌아가고 있다. 그렇다고 아무 제한 없이 비중을 늘리는 상태는 아니다. 현재 전략 버전은 닫힌 거래 표본과 성과 카드가 충분하지 않아 <code>learning</code> 단계로 분류돼 있다. 그래서 새 위험을 추가하는 실행은 꺼져 있고, 전체 예산도 최대 25%까지만 쓰도록 막혀 있다.</p><p>쥬의 말로 바꾸면 이렇다. “시장 분위기가 좋아 보여도, 내가 이 방식으로 잘하고 있다는 증거가 아직 부족하다.” 현재 전략 버전에서 열린 세 블록이 닫히고, 적어도 10개의 닫힌 표본이 쌓이기 전에는 더 큰 베팅으로 넘어가지 않는다.</p><p><img src="/img/posts/20260731-kis-jue-market-and-exits/jue-small-probe.svg" alt="상승 신호와 검증 부족 사이에서 작은 카드만 남기는 쥬"></p><p>이 제한은 답답하게 보일 수 있다. 하지만 쥬를 붙여 놓은 목적은 매일 무언가를 사는 일이 아니다. 시장이 좋아도 조급함을 자동 주문으로 바꾸지 않고, 시장이 흔들려도 손실을 감정으로 연장하지 않는 것. 이번 주의 주문 기록은 그쪽에 조금 더 가깝다.</p><p>다음에 볼 것은 지수가 더 오르는지가 아니라, 남은 세 블록이 각자 적어 둔 조건을 지키는지와 쥬가 그 결과를 얼마나 정직하게 기록하는지다.</p><blockquote><p>이 글은 개인 계좌의 관리 기록이며 투자 권유가 아니다. 시장 가격과 포트폴리오 상태는 이후 언제든 달라질 수 있다.</p></blockquote>]]>
      </content:encoded>
    </item>
    <item>
      <title>금요일, 쥬는 지수보다 블록을 먼저 봤다</title>
      <link>https://poul.kr/2026/07/25/20260725-kis-jue-friday-close/</link>
      <description>
        <![CDATA[<p><img src="/img/posts/20260725-kis-jue-friday-close/jue-friday-close-desk.png" alt="급한 장에서도 관리 블록을 차분히 정리하는 쥬"></p>
<p>금요일 장이 끝난 뒤 화면은 꽤 거]]>
      </description>
      <author>PouL</author>
      <category domain="https://poul.kr/categories/%ED%88%AC%EC%9E%90-%EA%B8%B0%EB%A1%9D/">투자 기록</category>
      <category domain="https://poul.kr/tags/KIS/">KIS</category>
      <category domain="https://poul.kr/tags/HERMES-Jue/">HERMES Jue</category>
      <category domain="https://poul.kr/tags/%ED%8F%AC%ED%8A%B8%ED%8F%B4%EB%A6%AC%EC%98%A4/">포트폴리오</category>
      <category domain="https://poul.kr/tags/%ED%88%AC%EC%9E%90-%EA%B8%B0%EB%A1%9D/">투자 기록</category>
      <pubDate>Sat, 25 Jul 2026 00:30:00 GMT</pubDate>
      <content:encoded>
        <![CDATA[<p><img src="/img/posts/20260725-kis-jue-friday-close/jue-friday-close-desk.png" alt="급한 장에서도 관리 블록을 차분히 정리하는 쥬"></p><p>금요일 장이 끝난 뒤 화면은 꽤 거칠었다. 코스피와 코스닥이 같이 밀리고, 선물도 더 약했다. 외국인·기관 수급은 매도 쪽으로 기울었고 프로그램 매도도 붙었다. 이런 날에는 “그래서 전부 팔아야 하나”와 “그래도 이 종목은 들고 가야 하나”가 한꺼번에 올라온다.</p><p>내가 쥬를 붙여 놓은 이유도 바로 이런 순간 때문이다. 쥬는 시장을 한 줄로 읽되, 계좌를 한 줄로 처리하지 않는다. 시장 분위기는 <code>risk-off</code>로 기록했지만, 실제 실행은 각 보유 블록의 역할과 보호 조건을 다시 보는 쪽으로 갔다. 이번 글은 이번 주 금요일 장 마감과 그 뒤의 계좌 동기화 기록을 바탕으로, 쥬가 무엇을 정리했고 무엇을 그대로 관리했는지 남겨 둔 메모다.</p><blockquote><p>기준 시점: 시장 판단은 2026년 7월 24일(금) 정규장 종료 뒤에 남은 KIS 쥬 시장 펄스 기록, 포트폴리오 표는 2026년 7월 25일 09:15 KST에 다시 확인한 KIS primary 캐시 기준이다. 금액·수량·평단·손익·계좌 식별값·주문 식별값은 공개하지 않는다. 현금은 해당 캐시에 잡힌 현금 항목이며, 표의 비중은 계좌 전체 기준 반올림값이다.</p></blockquote><h2 id="금요일-국장을-쥬는-어떻게-읽었나"><a href="#금요일-국장을-쥬는-어떻게-읽었나" class="headerlink" title="금요일 국장을 쥬는 어떻게 읽었나"></a>금요일 국장을 쥬는 어떻게 읽었나</h2><p>쥬의 금요일 시장 펄스는 <code>risk-off</code>, 점수는 가장 보수적인 쪽이었다. 여기서 <code>risk-off</code>는 “내일부터 무조건 하락”이라는 예언이 아니다. <strong>지금은 새 위험을 서둘러 늘릴 만큼 시장의 바람이 좋지 않다</strong>는 운영 신호에 가깝다.</p><ul><li>코스피는 <code>-5.72%</code>, 코스닥은 <code>-5.32%</code>로 같이 밀렸다.</li><li>코스피200과 코스피200 선물도 각각 <code>-6.28%</code>, <code>-6.09%</code>로 약했다.</li><li>코스피·코스닥·선물에서 외국인·기관 매도 흐름이 함께 잡혔다.</li><li>코스피 프로그램도 매도 쪽으로 기록됐다.</li></ul><p><img src="/img/posts/20260725-kis-jue-friday-close/market-close-radar.svg" alt="금요일 장 마감에 쥬가 읽은 시장 신호"></p><p>이런 조합은 “한 섹터만 쉬는 날”보다는 지수 전반의 압력이 컸다는 뜻에 가깝다. 그래서 쥬는 새 후보를 늘리는 쪽으로 가지 않았다. 실제 금요일 <code>jue_simple</code> 관리자 실행 기록도 새 진입 액션 없이 끝났다. 새 매수를 하지 않았다는 말은 아무것도 하지 않았다는 뜻은 아니다. 이미 들고 있는 블록의 보호 조건과 계좌 대조를 계속 돌린 결과다.</p><h2 id="실제로-바뀐-블록들"><a href="#실제로-바뀐-블록들" class="headerlink" title="실제로 바뀐 블록들"></a>실제로 바뀐 블록들</h2><p>여기서 말하는 <strong>블록</strong>은 종목을 하나 들고 있다는 표기가 아니다. 왜 관리하는지, 어떤 시간대로 볼지, 무엇이 깨지면 멈출지를 같이 적어 둔 관리 카드다. 금요일에는 새로 위험을 키우는 블록보다, 이미 있는 카드를 정리하거나 연결하는 일이 많았다.</p><p><img src="/img/posts/20260725-kis-jue-friday-close/friday-block-notes.svg?v=2" alt="금요일에 남은 블록 변화 기록"></p><h3 id="미국-지수-ETF-두-개는-보호적-종료로-정리했다"><a href="#미국-지수-ETF-두-개는-보호적-종료로-정리했다" class="headerlink" title="미국 지수 ETF 두 개는 보호적 종료로 정리했다"></a>미국 지수 ETF 두 개는 보호적 종료로 정리했다</h3><p><code>TIGER 미국S&amp;P500</code>과 <code>KODEX 미국S&amp;P500</code>은 각각 보호적 종료 절차를 거쳐 체결 결과까지 대조한 뒤 닫혔다. 이건 미국 시장을 맞히기 위한 새 판단이 아니라, 기존 코어 ETF 블록에 적어 둔 보호 규칙이 작동한 결과다.</p><p>종료 뒤 빈 비중을 곧바로 다른 종목으로 채우지 않은 점도 중요하다. 장이 흔들릴 때는 “현금이 생겼다”를 “새 기회가 생겼다”로 성급하게 번역하기 쉽다. 이번에는 그 번역을 하지 않았다.</p><h3 id="레인보우로보틱스는-편입-직후-다시-보호적으로-종료됐다"><a href="#레인보우로보틱스는-편입-직후-다시-보호적으로-종료됐다" class="headerlink" title="레인보우로보틱스는 편입 직후 다시 보호적으로 종료됐다"></a>레인보우로보틱스는 편입 직후 다시 보호적으로 종료됐다</h3><p>레인보우로보틱스는 원래 계좌에 있던 보유를 관리 블록으로 편입(adopt)한 사례다. 즉 그날 새로 산 종목이 아니다. 기존 보유를 쥬가 책임 있게 다루려면 연구 근거와 관리 규칙을 연결해야 해서 카드로 옮긴 것이다.</p><p>그 뒤 같은 날 보호 조건이 걸리면서 종료까지 이어졌다. 이 과정은 “방금 편입했으니 조금 더 버텨 보자”가 아니라, <strong>편입과 종료 모두 같은 규칙 안에서 처리한다</strong>는 쪽에 가깝다.</p><h3 id="피노는-새-매수가-아니라-기존-보유의-관리-전환이다"><a href="#피노는-새-매수가-아니라-기존-보유의-관리-전환이다" class="headerlink" title="피노는 새 매수가 아니라 기존 보유의 관리 전환이다"></a>피노는 새 매수가 아니라 기존 보유의 관리 전환이다</h3><p>피노도 기존 보유를 중기 관리 블록으로 편입했다. 현재 비중이 작지 않기 때문에, 단순히 목록에서 빼고 모른 척할 수 없는 종목이다. 쥬가 남긴 메모는 반등 하나만으로 중기 하락 흐름이 바뀌었다고 보지 말고, 추가 위험을 늘리지 않은 채 보수적인 가격 구조로 관리하자는 쪽이다.</p><p>쉽게 말하면 “좋아 보여서 샀다”가 아니라, <strong>이미 있는 보유를 어떤 조건에서 계속 들고 있고 어떤 조건에서 생각을 접을지 적어 둔 상태</strong>다.</p><h2 id="지금-포트폴리오는-이렇게-보인다"><a href="#지금-포트폴리오는-이렇게-보인다" class="headerlink" title="지금 포트폴리오는 이렇게 보인다"></a>지금 포트폴리오는 이렇게 보인다</h2><p>현재 KIS primary 캐시에서는 현금과 10개 보유가 함께 잡힌다. 표의 상태는 모두 쥬 블록 원장과 대조했다. <code>paused</code>는 삭제가 아니라, 현재는 적극적으로 늘리거나 줄이는 자동 판단을 멈춘 관리 카드라는 뜻이다.</p><p><img src="/img/posts/20260725-kis-jue-friday-close/portfolio-shape.svg" alt="현금, 삼성전자, 피노, 그리고 작은 관리 블록으로 나뉜 현재 포트폴리오"></p><table><thead><tr><th>역할</th><th>종목</th><th align="right">계좌 전체 비중</th><th>쥬의 현재 상태</th><th>사람이 읽는 메모</th></tr></thead><tbody><tr><td>현금 대기</td><td>현금</td><td align="right">29.7%</td><td>대기 자산</td><td>보호 종료 뒤 빈자리를 억지로 채우지 않는 완충 여유</td></tr><tr><td>중기 관리</td><td>삼성전자</td><td align="right">54.5%</td><td>활성 블록</td><td>메모리 ASP·HBM 수요 회복 가설을 중기 구조로 관리. 한 종목 집중은 숨기지 않고 계속 점검</td></tr><tr><td>중기 관리</td><td>피노</td><td align="right">11.3%</td><td>활성 블록 · 기존 보유 편입</td><td>반등만으로 추세 전환을 단정하지 않고, 추가 위험을 늘리지 않는 보수적 관리</td></tr><tr><td>개별 검증</td><td>녹십자</td><td align="right">1.2%</td><td>활성 블록</td><td>작은 가설을 호가·연구 근거와 함께 계속 확인</td></tr><tr><td>완충 ETF</td><td>KODEX KOFR금리액티브(합성)</td><td align="right">1.1%</td><td>일시정지 블록</td><td>급한 진입을 막는 금리형 완충 카드. 지금은 자동 확대를 멈춘 상태</td></tr><tr><td>개별 검증</td><td>롯데칠성</td><td align="right">1.0%</td><td>활성 블록</td><td>추격보다 가격 구조와 거래 조건을 먼저 보는 검증 보유</td></tr><tr><td>개별 검증</td><td>하이트진로</td><td align="right">0.5%</td><td>활성 블록</td><td>눌림과 거래 흐름이 함께 맞는지 보는 작은 중기 카드</td></tr><tr><td>개별 검증</td><td>한솔홀딩스</td><td align="right">0.3%</td><td>활성 블록</td><td>작은 비중에서 가격·거래 조건을 점검</td></tr><tr><td>개별 검증</td><td>KG케미칼</td><td align="right">0.2%</td><td>활성 블록</td><td>저평가 후보 가설은 유지하되, 추격하지 않는 조건부 관리</td></tr><tr><td>개별 검증</td><td>동방</td><td align="right">0.2%</td><td>활성 블록</td><td>물류 노출을 크게 키우지 않고 가격 조건을 확인</td></tr><tr><td>개별 검증</td><td>보령</td><td align="right">0.1%</td><td>활성 블록</td><td>작은 표본으로만 유지하며 근거를 다시 확인</td></tr></tbody></table><p>반올림 때문에 합계는 정확히 100%와 조금 다를 수 있다. 표를 보면 이번 계좌의 특징은 두 가지다. 하나는 삼성전자 비중이 절반을 넘는다는 사실, 다른 하나는 보호 종료 이후에도 현금이 거의 30% 남아 있다는 사실이다.</p><p>이 둘을 같이 봐야 한다. 현금이 있다고 해서 무조건 공격적이지 않은 계좌가 되는 것은 아니고, 삼성전자 비중이 크다고 해서 그 자리를 무시할 수도 없다. 쥬의 현재 역할은 “하락장이니 전부 없애자”가 아니라, 큰 중기 가설과 작은 검증 가설을 구분하고, 각 가설에 붙은 중단 조건이 실제로 지켜지는지 확인하는 데 있다.</p><h2 id="금요일의-결론은-‘매도-신호’가-아니라-‘관리-신호’다"><a href="#금요일의-결론은-‘매도-신호’가-아니라-‘관리-신호’다" class="headerlink" title="금요일의 결론은 ‘매도 신호’가 아니라 ‘관리 신호’다"></a>금요일의 결론은 ‘매도 신호’가 아니라 ‘관리 신호’다</h2><p>이번 금요일 기록을 한 문장으로 줄이면 이렇다.</p><ol><li>국장 전체는 새 위험을 편하게 늘릴 수 있는 분위기가 아니었다.</li><li>그래서 쥬는 새 진입을 만들지 않았고, 기존 보호 규칙이 걸린 ETF와 레인보우로보틱스를 정리했다.</li><li>피노는 새 매수가 아니라 기존 보유를 관리 가능한 블록으로 연결한 일이었다.</li><li>남은 포트폴리오는 현금 29.7%와 큰 중기 보유, 그리고 작은 검증 블록으로 나뉘어 있다.</li></ol><p>쥬의 금요일 일일 검토는 확정된 에피소드에 체결·비용 근거가 충분하지 않아 실현 성과를 평가하지 않는다고 남겼다. 이 부분도 중요하다. 보호 청산이 있었다고 바로 “잘 팔았다”고 쓰지 않는 것. 아직 확인할 수 없는 것을 이겼다거나 졌다고 부르지 않는 것.</p><p>이번 주말에는 차트보다 이 문장이 더 남는다. 시장이 크게 흔들려도, 쥬가 할 일은 공포를 대신 느끼는 게 아니라 내가 미리 적어 둔 관리 카드를 한 장씩 다시 읽는 일이다.</p><blockquote><p>이 글은 개인 계좌의 관리 기록이며 투자 권유가 아니다. 시장·포트폴리오·블록 상태는 이후 언제든 달라질 수 있다.</p></blockquote>]]>
      </content:encoded>
    </item>
    <item>
      <title>쥬는 국장을 좋게 봤지만, 바로 사지는 않았다</title>
      <link>https://poul.kr/2026/07/23/20260723-kis-jue-market-read/</link>
      <description>
        <![CDATA[<p><img src="/img/posts/20260723-kis-jue-market-read/jue-kis-market-read.png" alt="시장 분위기는 좋지만 후보 카드는 유리 덮개 아래에 둔 쥬"></p>
<p>지난 이틀, 쥬가 읽은 국장]]>
      </description>
      <author>PouL</author>
      <category domain="https://poul.kr/categories/%ED%88%AC%EC%9E%90-%EA%B8%B0%EB%A1%9D/">투자 기록</category>
      <category domain="https://poul.kr/tags/KIS/">KIS</category>
      <category domain="https://poul.kr/tags/HERMES-Jue/">HERMES Jue</category>
      <category domain="https://poul.kr/tags/%ED%8F%AC%ED%8A%B8%ED%8F%B4%EB%A6%AC%EC%98%A4/">포트폴리오</category>
      <category domain="https://poul.kr/tags/%ED%88%AC%EC%9E%90-%EA%B8%B0%EB%A1%9D/">투자 기록</category>
      <pubDate>Thu, 23 Jul 2026 11:45:00 GMT</pubDate>
      <content:encoded>
        <![CDATA[<p><img src="/img/posts/20260723-kis-jue-market-read/jue-kis-market-read.png" alt="시장 분위기는 좋지만 후보 카드는 유리 덮개 아래에 둔 쥬"></p><p>지난 이틀, 쥬가 읽은 국장 분위기는 한마디로 하면 <code>risk-on</code>이었다. 시장이 완전히 겁먹은 날이라기보다, 지수와 섹터가 다시 움직이고 위험 자산 쪽으로 시선이 조금 돌아온 날에 가깝다.</p><p>그런데 재미있는 건, 쥬가 이 판단을 곧바로 “그럼 사자”로 번역하지 않았다는 점이다. 시장이 좋아 보인다는 말과, 지금 이 계좌에서 새 포지션을 열어도 된다는 말은 다르다. 이 글은 그 차이를 남기기 위한 기록이다.</p><blockquote><p>기준 시점: 2026년 7월 22일~23일 쥬의 KIS 판단 기록과 7월 23일 20:45 KST 계좌 캐시. 표는 계좌 전체에서 차지하는 비중이며, 금액·수량·평단·손익·주문 식별값은 공개하지 않는다. 반올림으로 합계가 약간 달라질 수 있다.</p></blockquote><h2 id="이틀-동안-쥬가-본-국장"><a href="#이틀-동안-쥬가-본-국장" class="headerlink" title="이틀 동안 쥬가 본 국장"></a>이틀 동안 쥬가 본 국장</h2><h3 id="7월-22일-코스피는-올랐지만-한-방향-장은-아니었다"><a href="#7월-22일-코스피는-올랐지만-한-방향-장은-아니었다" class="headerlink" title="7월 22일: 코스피는 올랐지만, 한 방향 장은 아니었다"></a>7월 22일: 코스피는 올랐지만, 한 방향 장은 아니었다</h3><p>쥬의 시장 펄스는 이날도 <code>risk-on</code>으로 남겼다. 코스피와 코스피200은 강했지만 코스닥과 선물은 같은 방향으로 움직이지 않았다. 그래서 “전부 좋다”가 아니라, <strong>기계·해운·에너지 장비 같은 몇몇 섹터로 돈이 돌고 있는 순환장</strong>으로 읽었다.</p><p>이날 판단 기록에는 IPARK현대산업개발이 새 후보로 등장한다. 실적 개선 기대와 가격 구조가 같이 보인다는 이유였다. 다만 이건 쥬의 <strong>제안</strong>이었다. 실제 KIS 활성 블록이나 체결 기록으로 이어지지는 않았다. 후보 카드가 책상 위에 올라왔을 뿐, 포트폴리오 안으로 들어온 것은 아니다.</p><h3 id="7월-23일-분위기는-더-넓어졌지만-쥬는-관망했다"><a href="#7월-23일-분위기는-더-넓어졌지만-쥬는-관망했다" class="headerlink" title="7월 23일: 분위기는 더 넓어졌지만, 쥬는 관망했다"></a>7월 23일: 분위기는 더 넓어졌지만, 쥬는 관망했다</h3><p>23일에는 코스피·코스닥·코스피200·선물이 함께 강했고, 외국인·기관 수급과 프로그램 매수도 긍정적으로 잡혔다. 에너지 장비, IT 서비스, 전기장비, 건설, 무역, 석유·가스, 기계까지 선도 섹터의 폭도 넓어졌다. 쥬의 펄스는 여전히 <code>risk-on</code>, 별도의 위험 경고도 없었다.</p><p>그렇다고 새 블록은 만들지 않았다. 그날 쥬에게는 후보 자료와 호가가 함께 갖춰진 조합이 없었다. 잔고에는 있지만 아직 관리 블록으로 편입되지 않은 종목도 가격 구조와 중단 기준이 완성되지 않아 <code>adopt</code>를 미뤘다. <strong>시장 분위기는 좋았지만, 쥬가 신뢰할 만한 실행 근거는 부족했던 날</strong>이다.</p><p><img src="/img/posts/20260723-kis-jue-market-read/kis-jue-two-day-flow.svg" alt="시장 판단에서 실행 근거와 실제 관리 블록으로 이어지는 흐름"></p><h2 id="실제로-새로-생긴-블록은-무엇이었나"><a href="#실제로-새로-생긴-블록은-무엇이었나" class="headerlink" title="실제로 새로 생긴 블록은 무엇이었나"></a>실제로 새로 생긴 블록은 무엇이었나</h2><p>어제 실제로 만들어진 것은 삼성전자의 관리 블록이다. 이것은 새로 사들인 종목이 아니다. 계좌에 이미 있던 보유를 쥬가 중기 관리 대상으로 **편입(adopt)**한 것이다.</p><p>쥬가 남긴 근거는 메모리 가격(ASP)과 HBM 수요 회복 가설, 그리고 가격이 지지 구간을 지키는지였다. 쉽게 말하면 “반도체 분위기가 좋아 보인다”로 끝낸 것이 아니라, 기존 보유에 대해 왜 계속 들고 갈지와 어디서 생각을 바꿀지를 한 장의 관리 카드로 만든 셈이다.</p><p>현재 활성 블록 11개는 모두 목표 기준과 중단 기준을 함께 갖고 있다. 여기서 블록이란 종목 이름만 적어 둔 목록이 아니라, <strong>왜 들고 있는지, 언제 기다릴지, 어떤 조건에서 생각을 접을지</strong>까지 연결한 단위다.</p><h2 id="지금-계좌는-이렇게-보인다"><a href="#지금-계좌는-이렇게-보인다" class="headerlink" title="지금 계좌는 이렇게 보인다"></a>지금 계좌는 이렇게 보인다</h2><table><thead><tr><th>역할</th><th>종목</th><th align="right">계좌 전체 비중</th><th>쥬의 현재 상태</th><th>사람이 읽는 메모</th></tr></thead><tbody><tr><td>현금 대기</td><td>현금</td><td align="right">10.2%</td><td>대기 자산</td><td>근거가 부족한 날 억지로 쓰지 않는 여유</td></tr><tr><td>중기 관리</td><td>삼성전자</td><td align="right">54.3%</td><td>활성 블록 · 기존 보유 편입</td><td>메모리·HBM 회복 가설을 중기 구조로 관리</td></tr><tr><td>잔고 대조</td><td>레인보우로보틱스</td><td align="right">18.6%</td><td>활성 블록 없음</td><td>계좌에는 보이지만 현재 관리 카드가 연결되지 않은 보유</td></tr><tr><td>잔고 대조</td><td>피노</td><td align="right">10.8%</td><td>활성 블록 없음</td><td>연구와 가격 구조를 다시 갖출 때까지 자동 판단에서 분리</td></tr><tr><td>개별 검증</td><td>녹십자</td><td align="right">1.1%</td><td>활성 블록</td><td>작은 가설을 거래 조건과 함께 점검</td></tr><tr><td>개별 검증</td><td>롯데칠성</td><td align="right">0.9%</td><td>활성 블록</td><td>목표 구간을 먼저 소화하면 따라가지 않는 대기형 관리</td></tr><tr><td>코어 ETF</td><td>TIGER 미국S&amp;P500</td><td align="right">1.0%</td><td>활성 블록</td><td>개별 기업과 다른 축을 만드는 지수 노출</td></tr><tr><td>완충 자산</td><td>KODEX KOFR금리액티브(합성)</td><td align="right">1.0%</td><td>활성 블록</td><td>다음 판단까지 급한 매수를 막는 완충 블록</td></tr><tr><td>코어 ETF</td><td>KODEX 미국S&amp;P500</td><td align="right">0.9%</td><td>활성 블록</td><td>지수 구성과 추적 구조를 보는 코어 보유</td></tr><tr><td>개별 검증</td><td>하이트진로</td><td align="right">0.4%</td><td>활성 블록</td><td>눌림과 거래대금 조건을 확인</td></tr><tr><td>개별 검증</td><td>한솔홀딩스</td><td align="right">0.3%</td><td>활성 블록</td><td>거래대금과 가격 구조가 함께 유지되는지 점검</td></tr><tr><td>개별 검증</td><td>KG케미칼</td><td align="right">0.2%</td><td>활성 블록</td><td>추격 대신 가격 조건이 맞을 때만 재평가</td></tr><tr><td>개별 검증</td><td>동방</td><td align="right">0.2%</td><td>활성 블록</td><td>같은 방향 노출이 늘지 않는지 확인</td></tr><tr><td>개별 검증</td><td>보령</td><td align="right">0.1%</td><td>활성 블록</td><td>작은 표본으로만 유지</td></tr></tbody></table><p>표에서 가장 중요한 줄은 레인보우로보틱스와 피노다. KIS 잔고에는 둘 다 있지만, 이번 스냅샷 기준으로는 현재 열려 있는 쥬 관리 블록에 연결돼 있지 않다. 그래서 쥬는 이 두 종목을 없는 셈 치지 않는다. 계좌의 중기 위험에는 포함해 보되, 연구 근거와 손절·목표 구조가 완성되기 전에는 자동으로 늘리거나 줄이지 않는다.</p><p>이 구분은 조금 답답해 보일 수 있다. 하지만 “잔고에 있으니 알아서 관리하겠지”보다 낫다. 자동화가 다루기 전에, 무엇을 알고 있고 무엇을 아직 모르는지 먼저 밝혀 두는 편이 안전하다.</p><h2 id="오늘의-결론은-‘상승장’이-아니다"><a href="#오늘의-결론은-‘상승장’이-아니다" class="headerlink" title="오늘의 결론은 ‘상승장’이 아니다"></a>오늘의 결론은 ‘상승장’이 아니다</h2><p>쥬가 지난 이틀 동안 남긴 결론은 “국장이 좋으니 포지션을 늘리자”가 아니었다.</p><ol><li>시장은 위험 자산 쪽으로 열려 있었고, 섹터 순환도 보였다.</li><li>삼성전자는 기존 보유를 관리 가능한 중기 블록으로 편입했다.</li><li>IPARK현대산업개발은 후보로 제안됐지만 실제 블록이나 체결로 이어지지 않았다.</li><li>23일에는 새 후보의 근거가 부족해 관망했고, 미편입 보유도 억지로 블록에 넣지 않았다.</li></ol><p>내가 쥬에게 기대하는 것도 여기다. 좋은 장을 맞히는 것보다, 좋은 장처럼 보일 때에도 왜 이 종목을 지금 관리해야 하는지 설명하고, 그 설명이 부족하면 그냥 기다리는 것. 이 계좌는 아직 완성된 답이 아니라, 그런 기다림과 기록을 연습하는 중이다.</p><blockquote><p>이 글은 개인 계좌의 관리 기록이며 투자 권유가 아니다. 시장 가격과 포트폴리오 상태는 이후 언제든 달라질 수 있다.</p></blockquote>]]>
      </content:encoded>
    </item>
    <item>
      <title>댓글을 달고, 쥬의 빈 칸을 찾았다</title>
      <link>https://poul.kr/2026/07/17/20260717-comments-and-jue/</link>
      <description>블로그에는 댓글 창을 달고, 쥬에는 관리 밖 보유분을 숨기지 않게 만드는 작업을 한 날의 기록.</description>
      <author>PouL</author>
      <category domain="https://poul.kr/categories/Chat/">Chat</category>
      <category domain="https://poul.kr/tags/Codex/">Codex</category>
      <category domain="https://poul.kr/tags/Worklog/">Worklog</category>
      <category domain="https://poul.kr/tags/Blog/">Blog</category>
      <category domain="https://poul.kr/tags/HERMES/">HERMES</category>
      <category domain="https://poul.kr/tags/KIS/">KIS</category>
      <category domain="https://poul.kr/tags/Binance/">Binance</category>
      <category domain="https://poul.kr/tags/Jue/">Jue</category>
      <pubDate>Fri, 17 Jul 2026 12:47:44 GMT</pubDate>
      <content:encoded>
        <![CDATA[<p>오늘은 서로 전혀 달라 보이는 두 군데에, 비슷한 종류의 빈칸을 만들었다.</p><p>하나는 이 블로그 아래의 댓글 창이다. 이제 누가 글을 읽고 남긴 말이 있다면, 그 말을 글 옆에 남길 수 있다.</p><p>다른 하나는 쥬 안의 빈칸이다. 쥬는 내가 주식과 코인을 볼 때 받는 스트레스를 조금 줄여 보려고 만드는 투자 동료다. 그런데 계좌에 실제로 있는 보유분이 쥬의 관리 블록에는 아직 들어오지 않은 경우가 있었다. 화면에 안 보인다고 해서 없어지는 것은 아닌데, 시스템은 그 애매한 상태를 꽤 쉽게 지나칠 수 있다.</p><p>둘 다 결국은 “모르는 것을 모른다고 남기는 자리”를 만드는 일에 가까웠다.</p><span id="more"></span><p><img src="/img/posts/20260717-comments-and-jue/cover.svg" alt="댓글과 쥬의 빈칸을 같은 화면에 놓은 그림"></p><h2 id="블로그-밑에-말-걸-수-있는-자리를-만들었다"><a href="#블로그-밑에-말-걸-수-있는-자리를-만들었다" class="headerlink" title="블로그 밑에 말 걸 수 있는 자리를 만들었다"></a>블로그 밑에 말 걸 수 있는 자리를 만들었다</h2><p>그동안 poul.kr은 글을 올리면 끝인 정적 블로그였다. 읽은 사람이 무슨 생각을 했는지 알 방법은 조회수 정도뿐이었다.</p><p>그래서 댓글은 블로그에 억지로 데이터베이스를 붙이는 식이 아니라, 댓글만 맡는 작은 서버를 따로 두는 형태로 붙였다. 글을 읽는 사람은 로그인 없이 닉네임만 적으면 된다. 대신 사람인지 확인하는 절차를 한 번 거치고, 같은 곳에서 짧은 시간 안에 연달아 남기는 댓글은 제한한다.</p><p>가입 화면을 통해 새 계정을 만드는 길은 닫아뒀다. 댓글은 로그인 서비스가 아니라 글 아래에서 가볍게 대화할 통로면 충분하다고 생각했기 때문이다. 댓글은 승인 대기 없이 먼저 보이고, 이상한 글이 보이면 내가 나중에 지우는 쪽으로 두었다.</p><p>이게 대단한 기능은 아니다. 그래도 블로그가 “내가 쓴 기록을 쌓아 두는 곳”에서 “누군가가 한 줄을 덧붙일 수도 있는 곳”으로 아주 조금 달라졌다.</p><h2 id="쥬가-모르는-보유분을-그냥-지나치지-않게"><a href="#쥬가-모르는-보유분을-그냥-지나치지-않게" class="headerlink" title="쥬가 모르는 보유분을 그냥 지나치지 않게"></a>쥬가 모르는 보유분을 그냥 지나치지 않게</h2><p>오늘 쥬 쪽에서 가장 중요하게 본 것은, 쥬가 직접 만든 관리 블록 밖에 있는 보유분이다.</p><p>예를 들어 계좌에는 분명 종목이 있는데, 쥬의 현재 관리 목록에는 없는 경우가 있다. 예전부터 들고 있던 종목일 수도 있고, 다른 흐름에서 들어온 보유분일 수도 있다. 이걸 쥬가 마음대로 새 매수로 해석하거나, 반대로 화면에서 못 본 척하면 둘 다 위험하다.</p><p>그래서 이제는 실제 계좌 수량과 쥬의 관리 블록을 대조해서, 남는 보유분이 있으면 먼저 <strong>주의가 필요한 항목</strong>으로 남긴다.</p><p>바로 주문을 넣지는 않는다. 먼저 그 종목만 따로 다시 조사하고, 충분한 근거가 모인 뒤에도 “이 수량을 이 역할로 관리하겠다”는 명시적인 채택 판단이 있어야 한다. 그 전에는 임의의 손절선을 만들거나, 자동으로 정리하지 않는다.</p><p>자료가 부족하거나 판단이 빠지면 그 상태도 사라지지 않는다. 위험 확인 대기 상태로 남기고, 잠시 뒤 다시 살핀다. 오늘 작업에서 마음에 드는 부분은 바로 여기다. 모르는 보유분을 억지로 아는 척하지 않는 것.</p><p><img src="/img/posts/20260717-comments-and-jue/jue-adoption-flow.svg" alt="관리 밖 보유분이 조사와 명시적 채택을 거쳐야만 관리 블록이 되는 흐름"></p><h2 id="리서치와-실행-사이에-남겨-둔-문장들"><a href="#리서치와-실행-사이에-남겨-둔-문장들" class="headerlink" title="리서치와 실행 사이에 남겨 둔 문장들"></a>리서치와 실행 사이에 남겨 둔 문장들</h2><p>쥬의 흐름도 조금 더 분명하게 나누는 중이다.</p><p>자료를 모으는 단계, 그 자료를 읽고 판단안을 만드는 단계, 실제로 실행 가능한지 다시 막아 보는 단계, 그리고 나중에 복기하는 단계다. 말로 쓰면 당연해 보이는데, 프로젝트가 커질수록 이 네 단계가 한 덩어리로 엉키기 쉽다.</p><p>이번에는 국내 주식 쪽의 리서치 순서도 다시 손봤다. 새 보유분처럼 빨리 확인해야 하는 것이 생기면 일반적인 리포트 대기열보다 먼저 살피고, 오래된 자료는 배경 기록으로 남기되 새 판단의 직접 근거로는 쓰지 않게 했다.</p><p>코인 쪽도 같은 방향으로 정리 중이다. 리서치 노트, 현재 관리 블록, 위험 제한, 실행 가능 여부를 한 화면에서 분리해서 보려는 작업이다. 화면이 화려해지는 것보다, 지금 무엇이 조사 중이고 무엇이 실제로 실행 가능한지 혼동하지 않는 것이 먼저다.</p><p>쥬가 어떤 판단안을 내더라도 마지막에는 현금, 수량, 중복 주문, 장 시간, 계좌 대조, 실행 권한, 중지 스위치 같은 안전장치를 다시 지나야 한다. 나는 쥬가 “사라”고 말하는 존재가 되기보다, <strong>왜 아직 하지 않는지</strong>를 설명하는 존재에 조금 더 가까워지면 좋겠다.</p><h2 id="댓글-창과-쥬가-비슷해-보인-이유"><a href="#댓글-창과-쥬가-비슷해-보인-이유" class="headerlink" title="댓글 창과 쥬가 비슷해 보인 이유"></a>댓글 창과 쥬가 비슷해 보인 이유</h2><p>오늘 만든 댓글 창도, 쥬의 보유분 처리도 결과만 보면 전혀 관계가 없다.</p><p>하나는 사람에게 말을 받는 기능이고, 다른 하나는 계좌와 판단 기록을 정리하는 기능이다.</p><p>그런데 둘 다 내가 혼자 결론을 닫지 않게 만드는 장치라는 점에서는 비슷했다. 블로그에는 “이 글을 읽고 나는 이렇게 생각했다”는 한 줄이 들어올 수 있고, 쥬에는 “이 보유분은 아직 제대로 이해하지 못했다”는 상태가 남는다.</p><p>요즘은 뭔가를 더 빨리 만들수록, 그 사이에 이런 빈칸을 남겨 두는 일이 더 중요하게 느껴진다. 코덱스로 큰 변경을 한꺼번에 밀어 넣을 수는 있다. 하지만 화면에 보이지 않는 보유분이나 설명되지 않은 판단까지 자동으로 정리되는 것은 아니다.</p><p>댓글은 아직 비어 있고, 쥬의 개선도 아직 작업 중이다. 그래도 오늘은 빈칸을 감추는 대신, 다음에 다시 볼 수 있는 자리로 바꿔 둔 날이었다.</p><blockquote><p>이 글은 개인 프로젝트의 작업 기록이며 투자 권유가 아니다. 쥬의 판단과 계좌 상태는 계속 바뀔 수 있고, 실제 투자 결정은 내가 직접 확인한다.</p></blockquote>]]>
      </content:encoded>
    </item>
    <item>
      <title>하락장에 쥬는 한 종목을 정리했다</title>
      <link>https://poul.kr/2026/07/16/20260716-kis-jue-downturn-review/</link>
      <description>
        <![CDATA[<p><img src="/img/posts/20260716-kis-jue-downturn-review/jue-kis-downturn-desk.png" alt="하락장에도 포트폴리오 카드를 살피는 쥬"></p>
<p>어제는 쥬가 관리하는 KIS 계좌를]]>
      </description>
      <author>PouL</author>
      <category domain="https://poul.kr/categories/%ED%88%AC%EC%9E%90-%EA%B8%B0%EB%A1%9D/">투자 기록</category>
      <category domain="https://poul.kr/tags/KIS/">KIS</category>
      <category domain="https://poul.kr/tags/HERMES-Jue/">HERMES Jue</category>
      <category domain="https://poul.kr/tags/%ED%8F%AC%ED%8A%B8%ED%8F%B4%EB%A6%AC%EC%98%A4/">포트폴리오</category>
      <category domain="https://poul.kr/tags/%ED%88%AC%EC%9E%90-%EA%B8%B0%EB%A1%9D/">투자 기록</category>
      <pubDate>Thu, 16 Jul 2026 12:49:00 GMT</pubDate>
      <content:encoded>
        <![CDATA[<p><img src="/img/posts/20260716-kis-jue-downturn-review/jue-kis-downturn-desk.png" alt="하락장에도 포트폴리오 카드를 살피는 쥬"></p><p>어제는 쥬가 관리하는 KIS 계좌를 14개의 블록으로 정리해 봤다. 오늘은 장 분위기가 한 번 더 무거워졌다. 이런 날에는 화면을 계속 보면서 마음이 같이 흔들리는 것보다, 미리 적어 둔 규칙이 정말 작동하는지를 보는 편이 낫다.</p><p>오늘의 결과는 생각보다 단순했다. <strong>14개였던 관리 블록 중 레인보우로보틱스 한 종목이 보호적 종료 규칙에 따라 정리됐고, 나머지 13개는 유지됐다.</strong> 새로운 종목을 급하게 넣는 대신, 두 후보는 여전히 <code>wait</code> 상태로 남았다.</p><p><img src="/img/posts/20260716-kis-jue-downturn-review/jue-protective-exit.svg" alt="14개 관리 블록에서 13개 유지와 1개 보호적 종료로 바뀐 흐름"></p><blockquote><p>기준 시점: 2026년 7월 16일 장 마감 뒤 쥬 실행 기록과 15:45 KST 호가 스냅샷. 금액, 수량, 평단, 실현·평가 손익, 주문 식별값은 공개하지 않는다. 아래 비중은 현금을 포함한 계좌 전체 기준이며, 반올림한 값이다.</p></blockquote><h2 id="오늘-실제로-일어난-일"><a href="#오늘-실제로-일어난-일" class="headerlink" title="오늘 실제로 일어난 일"></a>오늘 실제로 일어난 일</h2><p>장중 레인보우로보틱스는 미리 설정해 둔 보호 조건을 건드렸다. 쥬는 이를 감지해 보호적 종료를 잠갔고, 체결 전 점검을 통과한 뒤 주문 결과까지 계좌 상태와 대조했다. 이 과정이 끝난 시점이 오늘 11시 27분쯤이다.</p><p>중요한 건 이 종목을 맞혔는지 틀렸는지가 아니다. 어제 포트폴리오에서 가장 컸던 블록이었기 때문에, 기분으로 “조금만 더 보자”고 미루기 쉬운 자리였다. 하지만 쥬가 붙인 역할은 중기 보유였고, 그 역할에는 계속 들고 갈 조건뿐 아니라 <strong>내려놓을 조건</strong>도 포함돼 있었다.</p><p>오늘 남은 13개를 어제 종가 스냅샷과 비교하면 6개는 하락, 1개는 보합, 6개는 상승이었다. 하락장이라고 모든 종목이 같은 방향으로 움직인 것은 아니었지만, 미국 지수 ETF 세 종목은 모두 약세였다. 시장 분위기가 차가워졌다는 말은 이런 식으로 읽는 편이 더 정확하다.</p><p>종료 뒤 최신 쥬 배분 기록은 **현금 81.4%, 코어 ETF 9.4%, 중기·개별 블록 9.2%**다. 현금 비중이 크게 보이는 이유는 새 매수 때문이 아니라, 가장 컸던 관리 블록을 규칙대로 정리한 결과다. 빈자리를 바로 채우지 않고 다음 판단까지 현금으로 남겨 둔 상태다.</p><h2 id="지금-남은-포트폴리오"><a href="#지금-남은-포트폴리오" class="headerlink" title="지금 남은 포트폴리오"></a>지금 남은 포트폴리오</h2><table><thead><tr><th>역할</th><th>종목</th><th align="right">계좌 전체 비중</th><th>오늘의 관리 메모</th></tr></thead><tbody><tr><td>현금 대기</td><td>현금</td><td align="right">81.4%</td><td>조건 확인 전에는 빈자리를 억지로 채우지 않음</td></tr><tr><td>개별 검증</td><td>녹십자</td><td align="right">2.8%</td><td>호가와 거래 조건을 보며 작은 가설을 유지</td></tr><tr><td>코어 ETF</td><td>TIGER 미국S&amp;P500</td><td align="right">2.6%</td><td>개별 기업과 다른 축의 지수 노출</td></tr><tr><td>완충 자산</td><td>KODEX KOFR금리액티브(합성)</td><td align="right">2.6%</td><td>무리한 진입을 막는 금리형 완충 블록</td></tr><tr><td>코어 ETF</td><td>KODEX 미국S&amp;P500</td><td align="right">2.3%</td><td>구성과 추적 구조를 점검하는 코어 보유</td></tr><tr><td>개별 검증</td><td>롯데칠성</td><td align="right">2.3%</td><td>목표 구간을 먼저 소화하면 따라가지 않는 대기형 관리</td></tr><tr><td>코어 ETF</td><td>KODEX 미국나스닥100</td><td align="right">2.0%</td><td>성장주 지수 노출을 별도 블록으로 관리</td></tr><tr><td>개별 검증</td><td>하이트진로</td><td align="right">1.0%</td><td>눌림과 거래대금 조건을 확인하는 검증 블록</td></tr><tr><td>개별 검증</td><td>삼일기업공사</td><td align="right">0.8%</td><td>유동성과 체결 가능성을 먼저 확인</td></tr><tr><td>개별 검증</td><td>한솔홀딩스</td><td align="right">0.7%</td><td>거래대금과 가격 구조가 함께 유지되는지 점검</td></tr><tr><td>개별 검증</td><td>KG케미칼</td><td align="right">0.5%</td><td>추격 대신 가격 조건이 맞을 때만 재평가</td></tr><tr><td>개별 검증</td><td>KCTC</td><td align="right">0.4%</td><td>중복 노출을 피하며 조건부로 관리</td></tr><tr><td>개별 검증</td><td>동방</td><td align="right">0.4%</td><td>물류 관련 노출이 한쪽으로 쏠리지 않는지 확인</td></tr><tr><td>개별 검증</td><td>보령</td><td align="right">0.2%</td><td>작은 표본으로 유지, 추가 진입은 보수적으로 판단</td></tr></tbody></table><p>반올림 때문에 합계가 정확히 100%가 되지는 않을 수 있다. 그림은 더 분명해졌다. 레인보우로보틱스가 빠지면서 한 종목에 크게 쏠려 있던 모습은 사라졌고, 계좌의 대부분은 다음 판단을 위한 현금 대기로 돌아갔다. 현금을 뺀 보유액 안에서는 미국 지수 ETF와 KOFR 블록이 절반을 조금 넘고, 나머지는 작은 개별 검증 블록으로 나뉜다.</p><h2 id="오늘-쥬가-하지-않은-일"><a href="#오늘-쥬가-하지-않은-일" class="headerlink" title="오늘 쥬가 하지 않은 일"></a>오늘 쥬가 하지 않은 일</h2><p>하락장에서 더 중요한 건 “무엇을 샀나”보다 “무엇을 하지 않았나”일 때가 있다.</p><ol><li><strong>물린 종목을 이유 없이 늘리지 않았다.</strong> 기존 블록은 손절 조건 위에 있는지부터 확인했다.</li><li><strong>새 후보를 바로 주문하지 않았다.</strong> 오늘도 두 후보는 가격과 거래 확인이 남아 <code>wait</code>로 보냈다.</li><li><strong>큰 블록의 종료를 다음 매수 이유로 바꾸지 않았다.</strong> 비중이 비었다고 해서 빈자리를 즉시 채우지는 않는다.</li><li><strong>계좌 전체를 다시 봤다.</strong> 한 종목이 빠진 뒤에는 남은 13개가 어떤 조합이 됐는지부터 다시 계산한다.</li></ol><p>이게 쥬를 붙인 이유에 더 가깝다. 수익이 나는 날에는 누구나 원칙이 있는 것처럼 보이지만, 하락하는 날에는 계속 보고 싶은 마음과 그만해야 하는 마음이 뒤섞인다. 쥬는 그 사이에서 “조건이 깨졌으니 종료”라는 아주 단순한 문장을 대신 실행한다.</p><p>물론 이 기록이 완성된 시스템이라는 뜻은 아니다. 오늘 종료가 좋았는지도 며칠 뒤면 다시 평가해야 한다. 다만 적어도 오늘은, 하락장을 이유로 기준을 바꾸지 않았고, 주문 결과까지 다시 대조해 기록으로 남겼다. 다음 글에서 볼 것은 새 종목이 아니라 이 13개 블록이 각자 정한 조건을 지키는지일 것 같다.</p><blockquote><p>이 글은 개인 계좌의 관리 기록이며 투자 권유가 아니다. 시장 가격과 포트폴리오 상태는 이후 언제든 달라질 수 있다.</p></blockquote>]]>
      </content:encoded>
    </item>
    <item>
      <title>100달러를 내고, 다시 코덱스를 켰다</title>
      <link>https://poul.kr/2026/07/15/20260715-paid-pro-codex-rhythm/</link>
      <description>200달러짜리 마지막 스퍼트 뒤, 100달러짜리 Pro를 실제로 결제하고 다시 시작한 Codex 사용 기록.</description>
      <author>PouL</author>
      <category domain="https://poul.kr/categories/Chat/">Chat</category>
      <category domain="https://poul.kr/tags/Chat/">Chat</category>
      <category domain="https://poul.kr/tags/Codex/">Codex</category>
      <category domain="https://poul.kr/tags/Worklog/">Worklog</category>
      <category domain="https://poul.kr/tags/HERMES/">HERMES</category>
      <category domain="https://poul.kr/tags/Jue/">Jue</category>
      <category domain="https://poul.kr/tags/GPT-5-6/">GPT-5.6</category>
      <category domain="https://poul.kr/tags/Pro/">Pro</category>
      <pubDate>Wed, 15 Jul 2026 13:51:14 GMT</pubDate>
      <content:encoded>
        <![CDATA[<p>결국 100달러짜리 Pro를 진짜 돈 주고 다시 구독했다. 이제 코덱스는 막판 스퍼트용 체험판이 아니라, 매달 비용을 내고 같이 일할 도구가 됐다.</p><span id="more"></span><h2 id="잡담"><a href="#잡담" class="headerlink" title="잡담"></a>잡담</h2><p>며칠 전까지만 해도 200달러짜리 Pro가 끝나기 하루 전이라서,<br>Sol ultra 빠름을 여러 개 동시에 돌리며 쥬를 파파파팍 고치고 있었다.</p><p>그때는 약간 축제 같은 기분이었다.</p><p>시간은 얼마 안 남았고,<br>모델은 강하고,<br>하고 싶은 일은 많고,<br>그래서 최대한 많은 일을 한꺼번에 밀어넣는 상태.</p><p>그러다 결국 100달러짜리 Pro를 결제했다.</p><p>이제는 진짜다.</p><p>“있는 동안 많이 써보자”가 아니라,<br>“매달 100달러를 낼 만큼 내가 이걸 어떻게 쓸 건가”를 생각해야 하는 시점이 됐다.</p><p>조금 웃기다.</p><p>구독이 끝난다고 아쉬워서 마지막 밤에 그렇게 정신없이 썼는데,<br>며칠 뒤에는 다시 돈을 내고 앉아서 코덱스를 켰다.</p><p>그만큼 내 작업 방식 안에 들어왔다는 뜻이겠지.</p><p><img src="/img/posts/20260715-paid-pro-codex-rhythm/cover.svg" alt="100달러짜리 개발 리듬의 영수증"></p><h2 id="로그-기준-기간"><a href="#로그-기준-기간" class="headerlink" title="로그 기준 기간"></a>로그 기준 기간</h2><p>이번 글은 아래 기록을 기준으로 쓴다.</p><ul><li>KST 기준 <code>2026-07-13 21:27</code> 이후</li><li>지금 글을 쓰는 <code>2026-07-15 22:51</code>까지</li><li>코덱스 작업 목록, HERMES의 최근 커밋과 현재 작업 상태를 함께 확인</li></ul><p>실제 계좌, 주문 내역, 인증 관련 세부값, 내부 절대주소와 원본 로그는 적지 않는다.<br>이번 글도 무엇을 만들었는지보다,<br>코덱스를 어떤 방식으로 쓰기 시작했는지를 남기는 기록이다.</p><h2 id="마지막-날의-폭주-다음에-온-것"><a href="#마지막-날의-폭주-다음에-온-것" class="headerlink" title="마지막 날의 폭주 다음에 온 것"></a>마지막 날의 폭주 다음에 온 것</h2><p>지난번 글은 “프로 끝나기 하루 전”의 이야기였다.</p><p>Sol ultra를 여러 갈래로 나눠 돌리면서,<br>쥬의 모델 정책,<br>세션 유지,<br>리서치 구조,<br>대시보드까지 한꺼번에 손봤다.</p><p>마지막 날에는 속도가 제일 중요해 보였다.</p><p>그런데 결제를 하고 나니 생각이 조금 바뀐다.</p><p>이제는 오늘 몇 개를 처리했는가보다,<br>다음 달에도 계속 쓸 수 있는 방식인가가 더 중요하다.</p><p>강한 모델을 부르면 당장 꽤 많은 일이 움직인다.<br>긴 파일을 읽고,<br>여러 변경을 묶고,<br>테스트가 빠진 곳을 찾고,<br>문서를 정리하고,<br>다른 작업과 충돌할 위험도 짚는다.</p><p>하지만 그 결과가 다음 날 내가 이해하지 못하는 코드 더미가 되면,<br>결국 비용은 카드값 말고도 또 생긴다.</p><p>그래서 이제부터 코덱스는 단발성 부스터가 아니라,<br>내가 만드는 프로젝트의 리듬을 잡아주는 쪽으로 써보려고 한다.</p><p><img src="/img/posts/20260715-paid-pro-codex-rhythm/rhythm.svg" alt="막판 스퍼트에서 월간 리듬으로"></p><h2 id="최근에는-뭘-같이-하고-있나"><a href="#최근에는-뭘-같이-하고-있나" class="headerlink" title="최근에는 뭘 같이 하고 있나"></a>최근에는 뭘 같이 하고 있나</h2><p>지금 코덱스를 여는 이유가 쥬 하나만은 아니다.</p><p>그래도 가장 큰 자리를 차지하는 건 HERMES 쥬다.</p><p>쥬는 내가 주식과 코인을 볼 때 받는 스트레스를 줄이려고 만드는 투자 동료다.<br>내 대신 무조건 사라고 말하는 기계가 아니라,<br>자료를 읽고,<br>판단의 근거를 남기고,<br>내가 급해질 때 한 번 더 멈춰 세워주는 쪽에 가깝다.</p><p>7월 13일에는 이 쥬의 거래 런타임을 하나의 흐름으로 더 단단하게 만드는 큰 변경이 커밋됐다.<br>종목을 찾는 일,<br>판단을 정리하는 일,<br>거래 전후의 기록,<br>위험을 제한하는 일처럼 흩어져 있던 역할을 다시 나누고 연결하는 작업이었다.</p><p>그 뒤 현재 작업 상태에도 변화가 이어지고 있다.<br>관리 밖에 있던 보유 자산을 어떻게 다룰지,<br>리서치 결과를 실제 판단에 어떻게 전달할지,<br>코인과 국내 주식의 실행 흐름을 어떻게 맞출지 같은 일들이다.</p><p>아직 진행 중인 변경도 많다.<br>현재 작업 상태만 봐도 수십 개 파일이 다시 움직이고 있고,<br>수천 줄 규모의 추가 작업이 쌓여 있다.</p><p>이럴 때 코덱스가 제일 도움이 된다.</p><p>무엇을 더 만들지 바로 제안하는 것보다,<br>이미 커진 시스템에서 지금 건드려야 할 경계가 어디인지 찾아주는 데서 말이다.</p><p>쥬 외에도 게임 쪽 작업을 같이 보고 있다.<br>게임플레이를 진단하고,<br>화면 UI를 감사하고,<br>입력 잠금을 손보고,<br>에셋을 만드는 흐름도 다시 살핀다.</p><p>그러니까 지금의 코덱스는 “쥬 개발 도우미”라기보다,<br>내가 여러 프로젝트를 오갈 때마다 옆에서 맥락을 다시 잡아주는 작업 파트너에 조금 더 가깝다.</p><p><img src="/img/posts/20260715-paid-pro-codex-rhythm/lanes.svg" alt="내가 코덱스를 쓰는 세 개의 작업 레인"></p><h2 id="돈을-내고-쓰니-생기는-기준"><a href="#돈을-내고-쓰니-생기는-기준" class="headerlink" title="돈을 내고 쓰니 생기는 기준"></a>돈을 내고 쓰니 생기는 기준</h2><p>100달러를 결제하고 나니 오히려 하지 말아야 할 것도 보인다.</p><p>첫 번째는 아무 일에나 가장 강한 모델을 부르는 것이다.</p><p>지난번 막판에는 “지금 아니면 언제 써보나” 하는 마음이 있었다.<br>하지만 매달 비용을 내는 상황에서는,<br>복잡한 설계나 리뷰에는 깊은 추론을 쓰고,<br>반복 작업이나 가벼운 정리에는 더 가벼운 방식으로 나누는 편이 맞다.</p><p>HERMES 안에서도 그런 방향으로 바뀌고 있다.<br>중요한 판단,<br>자료를 해석하는 일,<br>반복적인 보조 작업,<br>오래 걸리는 복기 작업에 같은 모델과 같은 힘을 무조건 쓰지 않도록 역할을 나누는 중이다.</p><p>두 번째는 코덱스가 만든 결과를 곧바로 “완성”으로 취급하지 않는 것이다.</p><p>코덱스가 큰 변경을 빠르게 만들면,<br>사람은 그 속도에 끌려가서 검토를 건너뛰기 쉽다.</p><p>그래서 이제는 흐름을 조금 정해두려고 한다.</p><p>문제를 먼저 읽고,<br>작업을 나누고,<br>구현하고,<br>다른 시선으로 다시 검토하고,<br>테스트와 문서로 남긴다.</p><p>코덱스는 이 모든 단계에서 힘을 보태지만,<br>최종적으로 무엇을 남길지는 내가 골라야 한다.</p><p>세 번째는 모든 기록을 한 대화 안에 몰아넣지 않는 것이다.</p><p>긴 대화를 이어가는 건 분명 좋다.<br>쥬가 왜 이렇게 생겼는지,<br>어제의 선택이 오늘의 코드와 어떻게 이어지는지 기억하는 데 도움이 된다.</p><p>하지만 기억이 길어진다고 구조가 자동으로 좋아지는 것은 아니다.</p><p>프로젝트의 중요한 결정은 문서로 남기고,<br>변경은 커밋으로 남기고,<br>테스트는 다시 돌릴 수 있게 남겨야 한다.<br>그래야 다음 달의 나도,<br>다른 모델도,<br>다시 이어서 일할 수 있다.</p><p><img src="/img/posts/20260715-paid-pro-codex-rhythm/receipt-rule.svg" alt="구독료가 남겨야 하는 것"></p><h2 id="쥬에게도-조금-달라지는-점"><a href="#쥬에게도-조금-달라지는-점" class="headerlink" title="쥬에게도 조금 달라지는 점"></a>쥬에게도 조금 달라지는 점</h2><p>쥬는 여전히 돈 버는 기계가 되면 안 된다.</p><p>이 기준은 지난번에도 적었고,<br>지금도 그대로다.</p><p>오히려 Pro를 결제하고 코덱스를 더 자주 쓰게 되면,<br>쥬를 너무 빨리 너무 크게 만들 위험도 커진다.</p><p>모델이 코드를 잘 쓴다고 해서,<br>쥬에게 더 많은 판단 권한을 주는 것은 전혀 다른 문제다.</p><p>그래서 요즘 작업은 쥬가 더 공격적으로 거래하게 만드는 일보다,<br>왜 멈췄는지 설명하고,<br>어떤 자료가 부족한지 드러내고,<br>위험한 때는 새로 진입하지 않게 막고,<br>과거 결과를 다음 판단에 안전하게 반영하는 쪽에 더 가까워지고 있다.</p><p>쥬의 페르소나도 조금 더 친근하고 사람답게 다듬는 중이다.<br>다만 말투를 꾸미는 것 때문에 판단에 필요한 내용이 묻히면 안 된다.</p><p>내가 원하는 쥬는 멋진 말만 하는 캐릭터가 아니라,<br>내가 흔들릴 때 지금은 무엇을 알고 무엇을 모르는지 차분히 정리해주는 동료다.</p><h2 id="결제하고-나서의-다짐"><a href="#결제하고-나서의-다짐" class="headerlink" title="결제하고 나서의 다짐"></a>결제하고 나서의 다짐</h2><p>100달러가 아깝지 않으려면,<br>코덱스를 많이 쓰는 것만으로는 부족하다.</p><p>내가 다시 쓸 수 있는 결과가 남아야 한다.</p><p>이해 가능한 코드,<br>설명 가능한 구조,<br>검토된 변경,<br>다시 돌릴 수 있는 테스트,<br>다음 작업으로 이어지는 기록.</p><p>이런 게 쌓이면 100달러는 단순히 대화 횟수를 사는 돈이 아니라,<br>내가 혼자 만들 수 있는 범위를 조금 넓혀주는 비용이 될 것 같다.</p><p>물론 다음 결제일이 오면 또 “이걸 계속 내야 하나” 하고 고민할 수도 있다.</p><p>그래도 지금은 해보려고 한다.</p><p>마지막 날의 파파파팍이 끝났으니,<br>이제는 조금 더 길게,<br>조금 더 차분하게,<br>그래도 계속 코덱스를 켜보자.</p>]]>
      </content:encoded>
    </item>
    <item>
      <title>프로 끝나기 하루 전, 쥬를 파파파팍 고치는 밤</title>
      <link>https://poul.kr/2026/07/13/20260713-pro-d1-jue-sprint/</link>
      <description>200달러짜리 GPT Pro 종료를 하루 앞두고 GPT 5.6 Sol ultra 빠름을 병렬로 돌리며 HERMES 쥬를 개선하는 마지막 스퍼트 기록.</description>
      <author>PouL</author>
      <category domain="https://poul.kr/categories/Chat/">Chat</category>
      <category domain="https://poul.kr/tags/Chat/">Chat</category>
      <category domain="https://poul.kr/tags/Codex/">Codex</category>
      <category domain="https://poul.kr/tags/Worklog/">Worklog</category>
      <category domain="https://poul.kr/tags/HERMES/">HERMES</category>
      <category domain="https://poul.kr/tags/Jue/">Jue</category>
      <category domain="https://poul.kr/tags/GPT-5-6/">GPT-5.6</category>
      <category domain="https://poul.kr/tags/Pro/">Pro</category>
      <pubDate>Mon, 13 Jul 2026 12:27:09 GMT</pubDate>
      <content:encoded>
        <![CDATA[<p>내일이면 200달러짜리 GPT Pro가 끝난다. 그래서 지금 5.6 Sol ultra 빠름을 동시에 파파파팍 돌리며 쥬를 고치는 중이다.</p><span id="more"></span><h2 id="잡담"><a href="#잡담" class="headerlink" title="잡담"></a>잡담</h2><p>내일이면 GPT Pro가 끝난다.</p><p>월 200달러짜리.</p><p>처음에는 비싸다고 생각했고,<br>막상 쓰기 시작하니 이렇게까지 많이 쓸 줄은 몰랐고,<br>끝난다고 하니 갑자기 하루가 너무 아깝다.</p><p>ㅠㅠ</p><p>그래서 오늘은 조금 이상한 상태다.</p><p>한쪽에서는 HERMES 쥬의 모델 정책을 정리하고,<br>한쪽에서는 쥬가 이전 대화를 이어가는 방식을 살피고,<br>한쪽에서는 리서치와 매매 구조를 개선하고,<br>또 다른 쪽에서는 대시보드의 움직임을 다시 만들고 있다.</p><p>모델은 GPT 5.6 Sol.<br>추론은 ultra.<br>속도는 빠름.<br>작업은 여러 개를 동시에.</p><p>정말 말 그대로 파파파팍이다.</p><p><img src="/img/posts/20260713-pro-d1-jue-sprint/cover.jpg" alt="프로 종료 D-1의 HERMES 관제실"></p><h2 id="로그-기준-기간"><a href="#로그-기준-기간" class="headerlink" title="로그 기준 기간"></a>로그 기준 기간</h2><p>이번 글은 아래 기록을 기준으로 쓴다.</p><ul><li>KST 기준 <code>2026-07-11 15:16</code> 이후</li><li>지금 글을 쓰는 <code>2026-07-13 21:27</code>까지</li><li>코덱스 작업 목록, HERMES 변경 상태, 최근 설계 문서와 커밋을 함께 확인</li><li>실제 계좌, 주문 내역, 인증 관련 세부값, 내부 절대주소와 원본 로그는 제외</li></ul><p>이번 글은 작업 완료 보고서가 아니다.</p><p>지금 HERMES에는 아직 정리되지 않은 변경이 아주 많이 남아 있다.<br>현재 작업 상태에 잡힌 항목만 300개가 넘고,<br>추적 중인 파일의 누적 차이도 5만 줄을 훌쩍 넘는다.</p><p>물론 이것이 전부 오늘 하루에 생긴 것은 아니다.<br>앞선 작업이 누적된 상태에서 오늘의 스퍼트가 그 위에 올라간 것이다.</p><p>그래서 오히려 이번 마지막 하루의 목표는<br>“기능을 가능한 많이 만들기”가 아니라<br>“강한 모델이 있을 때 복잡한 덩어리를 이해 가능한 구조로 바꾸기”에 가깝다.</p><h2 id="지금-왜-이렇게-동시에-돌리고-있나"><a href="#지금-왜-이렇게-동시에-돌리고-있나" class="headerlink" title="지금 왜 이렇게 동시에 돌리고 있나"></a>지금 왜 이렇게 동시에 돌리고 있나</h2><p>프로가 아까운 이유는 단순히 좋은 답변을 한 번 더 받을 수 있어서가 아니다.</p><p>내가 가장 크게 체감한 건 긴 작업을 밀어붙이는 힘과 동시성이다.</p><p>한 작업에서는 설계를 읽고,<br>다른 작업에서는 코드를 고치고,<br>또 다른 작업에서는 그 변경이 원래 목적과 맞는지 검토한다.<br>그 사이에 나는 결과를 비교하고 다음 방향을 정한다.</p><p>예전에는 내가 한 문제를 붙잡고 처음부터 끝까지 차례대로 봤다.<br>지금은 서로 충돌하지 않는 일들을 여러 갈래로 나누고,<br>각 갈래에 5.6 Sol ultra를 붙여서 동시에 밀고 있다.</p><p>Sol은 지금 내가 쓸 수 있는 모델 중 가장 어려운 일을 맡기는 쪽이고,<br>ultra는 그 모델이 한 번 더 깊게 생각하도록 두는 방식이다.<br>여기에 빠른 처리까지 붙이니,<br>평소라면 며칠 동안 오가며 정리할 작업이 한 저녁에 한꺼번에 움직인다.</p><p>조금 무섭기도 하다.</p><p>좋은 방향이면 엄청 빠르게 좋아지지만,<br>방향을 잘못 잡으면 복잡함도 엄청 빠르게 늘기 때문이다.</p><p><img src="/img/posts/20260713-pro-d1-jue-sprint/parallel-sprint.jpg" alt="네 갈래로 동시에 달리는 코덱스 작업"></p><h2 id="첫-번째-쥬-안에서-모델의-역할을-나눴다"><a href="#첫-번째-쥬-안에서-모델의-역할을-나눴다" class="headerlink" title="첫 번째, 쥬 안에서 모델의 역할을 나눴다"></a>첫 번째, 쥬 안에서 모델의 역할을 나눴다</h2><p>지난 글을 쓸 때만 해도 HERMES 코드에는 <code>gpt-5.5</code> 기본값이 많이 남아 있었다.</p><p>지금 작업 중인 구조에서는 GPT 5.6 계열을 역할에 따라 나누는 정책이 생겼다.</p><p>중요한 판단과 최종 결정을 맡는 곳은 Sol,<br>자료를 읽고 생각을 정리하는 곳은 Terra,<br>반복적이고 가벼운 작업은 Luna,<br>시간을 두고 깊게 복기하는 작업은 다시 Sol을 쓰는 식이다.</p><p>재미있는 점은 내가 개발할 때는 Sol ultra를 여기저기 동시에 돌리고 있지만,<br>정작 쥬 안에서는 모든 일을 Sol에게 맡기지 않도록 고치고 있다는 것이다.</p><p>프로가 끝나면 더더욱 중요해진다.</p><p>가장 비싸고 강한 모델을 모든 곳에 붙이는 건 설계가 아니다.<br>정말 어려운 판단에만 강한 모델을 쓰고,<br>나머지는 목적에 맞는 모델을 고르는 편이 오래 갈 수 있다.</p><p>오늘의 낭비처럼 보이는 스퍼트가,<br>내일 이후의 낭비를 줄이는 구조를 만드는 셈이다.</p><h2 id="두-번째-쥬가-매번-처음부터-시작하지-않게-한다"><a href="#두-번째-쥬가-매번-처음부터-시작하지-않게-한다" class="headerlink" title="두 번째, 쥬가 매번 처음부터 시작하지 않게 한다"></a>두 번째, 쥬가 매번 처음부터 시작하지 않게 한다</h2><p>최근에는 모델이 이전 작업의 맥락을 어떻게 이어가는지도 다시 보고 있다.</p><p>쥬가 매번 호출될 때마다 새 사람처럼 처음부터 자료를 읽으면,<br>비용도 들고 시간도 들고 말투와 판단의 흐름도 끊긴다.</p><p>그래서 같은 날의 작업 맥락을 이어 쓰고,<br>중간에 다시 시작하더라도 이전 흐름을 되살리고,<br>동시에 같은 기억을 두 작업이 건드릴 때 충돌하지 않도록 잠금 장치를 두는 쪽으로 바뀌고 있다.</p><p>이건 단순한 속도 최적화가 아니다.</p><p>내가 쥬에게 바라는 건 질문할 때마다 새 답변을 내놓는 챗봇보다,<br>어제 왜 망설였고 오늘 무엇이 달라졌는지 이어서 말할 수 있는 동료다.</p><p>세션을 이어간다는 기술적인 작업이<br>결국 쥬의 성격을 이어가는 작업이기도 하다.</p><h2 id="세-번째-리서치에서-주문까지의-길을-다시-정리한다"><a href="#세-번째-리서치에서-주문까지의-길을-다시-정리한다" class="headerlink" title="세 번째, 리서치에서 주문까지의 길을 다시 정리한다"></a>세 번째, 리서치에서 주문까지의 길을 다시 정리한다</h2><p>7월 12일에는 쥬 위키를 중심으로 매매와 운영을 연결하는 큰 작업 하나가 커밋됐다.</p><p>원본 자료를 그냥 모델에게 잔뜩 넣는 대신,<br>어디서 얻은 자료인지 남기고,<br>쥬 위키가 그 의미를 정리하고,<br>실제 판단에는 필요한 증거만 가져가는 구조다.</p><p>그 뒤로도 여러 갈래가 계속 움직이고 있다.</p><p>국내 주식에서는 나중에 알게 된 정보를 과거 시점의 판단에 몰래 섞지 않도록<br>그 당시 알 수 있었던 자료만 보는 연구 구조를 만들고 있다.</p><p>코인과 주식 모두에서는<br>주문 직전에 권한과 조건을 다시 확인하고,<br>실제 체결 가격과 비용을 빠뜨리지 않고,<br>수익이 났다는 말보다 어떤 근거로 어떤 위험을 감수했는지 남기는 쪽으로 고치고 있다.</p><p>그리고 쥬 스스로 리서치하고,<br>결과를 복기하고,<br>다음 판단에 반영하는 흐름도 다시 단순하게 만들고 있다.</p><p>중간 검증 기록에는 5천 개가 넘는 테스트를 통과한 흔적도 있다.<br>하지만 그 뒤로 코드가 다시 많이 바뀌었기 때문에,<br>지금 상태를 두고 모두 끝났다고 말할 수는 없다.</p><p>오늘은 스퍼트 중이고,<br>최종 검증은 별도의 일이다.</p><h2 id="네-번째-내가-이해할-수-있는-화면으로-바꾼다"><a href="#네-번째-내가-이해할-수-있는-화면으로-바꾼다" class="headerlink" title="네 번째, 내가 이해할 수 있는 화면으로 바꾼다"></a>네 번째, 내가 이해할 수 있는 화면으로 바꾼다</h2><p>쥬가 아무리 잘 돌아가도 내가 상태를 이해하지 못하면 또 스트레스가 된다.</p><p>그래서 대시보드도 다시 만지고 있다.</p><p>여러 숫자를 빽빽하게 늘어놓는 화면이 아니라,<br>지금 쥬가 무엇을 보고 있는지,<br>어떤 작업이 움직이고 있는지,<br>무엇 때문에 멈췄는지 한눈에 들어오는 관제실 같은 화면을 만들고 있다.</p><p>애니메이션도 그냥 예뻐 보이기 위한 장식으로 붙이는 것이 아니다.<br>작업이 어디서 시작해 어디로 이동하는지,<br>정상적으로 살아 있는지,<br>경고가 생겼다면 어느 층의 문제인지 보여주는 움직임이어야 한다.</p><p>화면의 움직임을 줄여야 하는 사람을 위한 설정,<br>작은 모바일 화면,<br>밝은 화면과 어두운 화면도 함께 챙기고 있다.</p><p>내가 쥬를 관리하는 화면이 아니라,<br>쥬와 같이 상황을 이해하는 화면이 됐으면 한다.</p><h2 id="그래도-안전선은-빨라지면-안-된다"><a href="#그래도-안전선은-빨라지면-안-된다" class="headerlink" title="그래도 안전선은 빨라지면 안 된다"></a>그래도 안전선은 빨라지면 안 된다</h2><p>오늘 코덱스 작업은 빠르다.<br>여러 개가 동시에 움직이고,<br>강한 모델이 긴 코드를 읽고,<br>한 번에 큰 변경을 제안한다.</p><p>하지만 실제 거래의 안전선까지 이 속도에 취하면 안 된다.</p><p>최대 손실,<br>새 주문을 막는 조건,<br>자료가 오래됐을 때 멈추는 규칙,<br>기존 포지션을 줄이거나 빠져나오는 권한,<br>이런 것은 모델의 자신감과 별개로 코드가 지켜야 한다.</p><p>쥬가 더 똑똑해졌다는 이유로 안전문을 열어주는 게 아니라,<br>왜 그 문이 닫혀 있는지 더 잘 설명하게 만드는 것이 맞다.</p><p>오늘처럼 내가 시간에 쫓길 때는 더 그렇다.</p><p>프로 종료를 앞둔 조급함은 내 사정이지,<br>시장과 주문이 급해져야 할 이유는 아니다.</p><p><img src="/img/posts/20260713-pro-d1-jue-sprint/safety-line.jpg" alt="속도와 분리된 쥬의 안전선"></p><h2 id="마지막-하루에-남기고-싶은-것"><a href="#마지막-하루에-남기고-싶은-것" class="headerlink" title="마지막 하루에 남기고 싶은 것"></a>마지막 하루에 남기고 싶은 것</h2><p>솔직히 지금 마음은 조금 욕심이 난다.</p><p>이것도 시켜보고 싶고,<br>저것도 검토하고 싶고,<br>Sol ultra가 이렇게 빨리 일을 해주는데 잠깐이라도 쉬면 손해 보는 느낌이 든다.</p><p>그런데 내일 이후에도 남는 건 사용량이 아니다.</p><p>정리된 코드,<br>왜 이렇게 만들었는지 적힌 문서,<br>다시 돌려볼 수 있는 테스트,<br>쥬가 이어서 읽을 수 있는 기억,<br>그리고 내가 이해할 수 있는 구조가 남는다.</p><p>반대로 오늘 모델을 많이 돌렸어도<br>검토하지 않은 변경과 설명할 수 없는 구조만 쌓이면,<br>프로가 끝난 뒤 내가 감당해야 할 짐만 늘어난다.</p><p>그래서 마지막 스퍼트의 진짜 목표는<br>시간 안에 모든 걸 끝내는 것이 아니다.</p><p>강한 모델이 있는 동안 가장 어려운 매듭을 풀고,<br>그 뒤에는 조금 느린 속도로도 계속 이어갈 수 있는 상태를 만드는 것이다.</p><h2 id="내일-아침"><a href="#내일-아침" class="headerlink" title="내일 아침"></a>내일 아침</h2><p>내일이면 200달러짜리 프로는 끝난다.</p><p>아마 지금처럼 Sol ultra 빠름을 여러 개 동시에 파파파팍 돌리기는 어려워질 것이다.</p><p>조금 아쉽다.<br>아니, 많이 아쉽다.</p><p>ㅠㅠ</p><p>그래도 오늘 정리한 역할별 모델 정책과,<br>이어지는 세션과,<br>근거를 남기는 위키와,<br>모델 바깥의 안전장치와,<br>내가 읽을 수 있는 화면은 남는다.</p><p>쥬를 만드는 목적도 그대로다.</p><p>시장을 이기는 초능력을 갖는 것이 아니라,<br>내가 투자 때문에 받는 스트레스를 줄이고,<br>혼자 흔들릴 때 한 번 더 차분하게 생각할 수 있는 동료를 만드는 것.</p><p>프로는 끝나도 쥬는 남는다.</p><p>오늘 밤은 일단,<br>조금만 더 파파파팍 해보자.</p><p><img src="/img/posts/20260713-pro-d1-jue-sprint/after-pro.jpg" alt="프로 종료 뒤에도 남아 있는 쥬"></p>]]>
      </content:encoded>
    </item>
    <item>
      <title>GPT 5.6 이후, 쥬에게 다시 기대하는 것</title>
      <link>https://poul.kr/2026/07/11/20260711-gpt56-jue-expectation/</link>
      <description>GPT 5.6이 나온 뒤, 최근 HERMES와 쥬 작업 기록을 보며 더 똑똑한 모델에게 기대하는 것을 정리한다.</description>
      <author>PouL</author>
      <category domain="https://poul.kr/categories/Chat/">Chat</category>
      <category domain="https://poul.kr/tags/Chat/">Chat</category>
      <category domain="https://poul.kr/tags/Codex/">Codex</category>
      <category domain="https://poul.kr/tags/Worklog/">Worklog</category>
      <category domain="https://poul.kr/tags/HERMES/">HERMES</category>
      <category domain="https://poul.kr/tags/Jue/">Jue</category>
      <category domain="https://poul.kr/tags/GPT-5-6/">GPT-5.6</category>
      <pubDate>Sat, 11 Jul 2026 06:16:30 GMT</pubDate>
      <content:encoded>
        <![CDATA[<p>GPT 5.6이 나왔다. 이번에는 쥬가 갑자기 돈을 잘 벌 것이라는 기대보다, 내가 다시 쥬를 이해할 수 있겠다는 기대가 먼저 든다.</p><span id="more"></span><h2 id="잡담"><a href="#잡담" class="headerlink" title="잡담"></a>잡담</h2><p>며칠 전 글에서 쥬를 다시 생각해봤다.</p><p>쥬를 만든 목적은 돈 버는 기계를 갖는 것이 아니었다.<br>주식이나 코인을 볼 때 내가 받는 스트레스를 줄이고,<br>혼자 흔들릴 때 한 번 더 차분하게 생각할 수 있도록 내 페르소나를 덧붙인 투자 파트너를 만들고 싶었다.</p><p>그런데 쥬를 계속 개발할수록 이상하게 내가 쥬를 이해하기 어려워졌다.<br>기능은 늘고,<br>검증은 늘고,<br>경고도 늘고,<br>한 문제를 고치면 그 문제를 관리하기 위한 구조가 또 생겼다.</p><p>그 상태에서 GPT 5.6이 나왔다.</p><p>공식 발표를 읽어보면 코딩과 지식 작업이 더 좋아졌고,<br>오래 걸리는 복잡한 일을 계속 이어가는 능력도 강조한다.<br>예전 같았으면 “이제 쥬가 더 좋은 매매 판단을 하겠구나”부터 생각했을 것 같다.</p><p>그런데 이번에는 기대하는 지점이 조금 다르다.</p><p>더 똑똑한 모델이 쥬에게 필요한 이유는 매수와 매도를 신기하게 맞히기 위해서가 아니다.<br>내가 만들어놓고도 복잡해진 이 구조를 다시 읽고,<br>무엇이 중요한지 구분하고,<br>쥬가 왜 그런 말을 했는지 내가 이해할 수 있게 만드는 데 더 큰 도움이 되지 않을까 싶다.</p><p><img src="/img/posts/20260711-gpt56-jue-expectation/cover.svg" alt="GPT 5.6 x Jue"></p><h2 id="로그-기준-기간"><a href="#로그-기준-기간" class="headerlink" title="로그 기준 기간"></a>로그 기준 기간</h2><p>이번 글은 아래 기록을 기준으로 쓴다.</p><ul><li>KST 기준 <code>2026-07-05 10:49</code> 이후</li><li>지금 글을 쓰는 <code>2026-07-11 15:16</code>까지</li><li>코덱스 작업 기록, HERMES 변경 기록과 설계 문서, 현재 코드 상태를 함께 확인</li><li>GPT 5.6에 관한 내용은 <a href="https://openai.com/index/gpt-5-6/">OpenAI 공식 발표</a>를 참고</li></ul><p>실제 계좌, 주문 내역, 인증 관련 세부값, 내부 절대주소와 원본 로그는 이번에도 적지 않는다.<br>블로그에는 무슨 일을 했고 왜 했는지만 남긴다.</p><h2 id="지난-글-이후-쥬에서-한-일"><a href="#지난-글-이후-쥬에서-한-일" class="headerlink" title="지난 글 이후 쥬에서 한 일"></a>지난 글 이후 쥬에서 한 일</h2><p>지난 글에서는 쥬의 목적을 다시 생각했다면,<br>그 뒤의 작업은 복잡해진 HERMES를 실제로 정리하는 쪽으로 이어졌다.</p><p>먼저 프로젝트 안에서 반드시 지켜야 하는 규칙을 검사하는 장치를 만들었다.<br>설정이 제멋대로 늘어나거나,<br>실행 중인 프로그램들이 서로 다른 정보를 보고 있거나,<br>모델에게 보내는 내용이 약속된 형태를 벗어나면 그냥 넘어가지 않게 했다.</p><p>여러 프로그램을 켜고 끄는 기준도 한곳으로 모았다.<br>예전에는 실행 상태를 확인하는 코드가 여기저기 흩어져 있어서,<br>같은 프로그램을 두고도 화면마다 다르게 판단할 여지가 있었다.<br>이제는 어떤 프로그램이 왜 떠 있어야 하는지 공통 목록을 기준으로 보게 만드는 작업이 진행됐다.</p><p>코인 거래 쪽은 실제로 왜 판단과 주문이 막히는지 여러 번 추적했다.<br>단순히 “거래가 없다”에서 끝내지 않고,<br>시세 자료가 들어오는 단계,<br>시장 상황을 해석하는 단계,<br>전략 후보를 모으는 단계,<br>최종 안전 검사를 통과하는 단계를 나눠서 살폈다.</p><p>운영 상태판도 계속 손봤다.<br>처음에는 경고가 너무 많아서 무엇이 정말 위험한지 알아보기 어려웠다.<br>최근 검증 기록에서는 수천 개의 테스트를 통과했고,<br>운영 경고도 마지막 두 종류까지 줄어들었다.<br>아직 완전한 초록색은 아니지만,<br>적어도 노란색이 왜 노란색인지 설명할 수 있는 상태에 가까워졌다.</p><p><img src="/img/posts/20260711-gpt56-jue-expectation/work-map.svg" alt="Recent work map"></p><h2 id="이번에는-모델보다-구조를-먼저-본다"><a href="#이번에는-모델보다-구조를-먼저-본다" class="headerlink" title="이번에는 모델보다 구조를 먼저 본다"></a>이번에는 모델보다 구조를 먼저 본다</h2><p>GPT 5.6이 나왔다고 해서 HERMES가 바로 GPT 5.6 시스템이 된 것은 아니다.</p><p>현재 코드를 확인해보면 여러 기본 설정에는 아직 <code>gpt-5.5</code>가 남아 있다.<br>새 모델을 실제 쥬에 붙이려면,<br>어떤 작업에 어떤 모델을 쓸지 다시 정하고,<br>기존 결과와 비교하고,<br>비용과 속도를 확인하고,<br>안전장치가 그대로 작동하는지 검증해야 한다.</p><p>이게 오히려 마음에 든다.</p><p>새 모델이 나왔다고 모든 판단을 한 번에 넘기는 것보다,<br>쥬가 하는 일을 나눠보고 필요한 곳부터 옮기는 편이 지금의 목적과 맞다.</p><p>복잡한 코드를 읽고 정리하는 일,<br>긴 작업의 맥락을 놓치지 않는 일,<br>흩어진 기록을 지식으로 압축하는 일에는 더 강한 지능을 써볼 수 있다.</p><p>반면 실제 주문 가능 여부,<br>최대 손실 제한,<br>자료가 오래됐을 때 거래를 막는 규칙,<br>이상 상태에서 멈추는 장치는 모델의 기분에 맡기면 안 된다.<br>그런 건 여전히 단순하고 확실한 코드가 책임져야 한다.</p><p><img src="/img/posts/20260711-gpt56-jue-expectation/model-shift.svg" alt="Model transition"></p><h2 id="GPT-5-6에게-기대하는-진짜-일"><a href="#GPT-5-6에게-기대하는-진짜-일" class="headerlink" title="GPT 5.6에게 기대하는 진짜 일"></a>GPT 5.6에게 기대하는 진짜 일</h2><p>내가 GPT 5.6에게 가장 기대하는 건 “정답을 더 잘 맞히는 쥬”보다 “상황을 더 잘 이해하는 쥬”다.</p><p>HERMES 안에는 시세와 뉴스 같은 외부 자료가 있고,<br>전략이 남긴 판단 기록이 있고,<br>실제로 어떤 일이 일어났는지 적는 운영 기록이 있고,<br>쥬가 과거 경험에서 정리한 위키가 있다.</p><p>지금까지는 이 자료를 모델에게 많이 보여주면 더 똑똑해질 것이라고 생각한 면이 있었다.<br>하지만 자료가 많다는 것과 이해가 깊다는 것은 다르다.<br>너무 많은 내용을 한꺼번에 넣으면 중요한 사실이 묻히고,<br>비용과 시간은 늘고,<br>왜 그런 결론이 나왔는지 나도 따라가기 어려워진다.</p><p>최근에는 이 흐름을 바꾸는 설계를 하고 있다.</p><p>원본 기록은 원본대로 보존하고,<br>쥬 위키가 그 기록에서 의미를 정리하고,<br>매니저 역할의 쥬는 압축된 지식과 지금 필요한 증거만 읽는다.<br>지식이 부족하거나 믿기 어려우면 억지로 판단하지 않고 위험을 낮추거나 수리 작업으로 넘긴다.</p><p>GPT 5.6의 향상된 지능은 바로 이런 곳에 쓰였으면 한다.<br>자료를 더 많이 삼키는 데 쓰는 것이 아니라,<br>서로 다른 기록 사이의 맥락을 놓치지 않고,<br>중복과 모순을 찾아내고,<br>내가 읽을 수 있는 말로 다시 설명하는 데 쓰는 것.</p><p><img src="/img/posts/20260711-gpt56-jue-expectation/jue-stack.svg" alt="Jue knowledge stack"></p><h2 id="쥬가-더-똑똑해진다는-것"><a href="#쥬가-더-똑똑해진다는-것" class="headerlink" title="쥬가 더 똑똑해진다는 것"></a>쥬가 더 똑똑해진다는 것</h2><p>쥬가 더 똑똑해진다는 건 매매 횟수가 늘어나는 것이 아닐 수 있다.</p><p>내가 불안해서 자꾸 시장을 확인할 때,<br>지금 바뀐 사실과 바뀌지 않은 사실을 나눠주는 것.</p><p>쥬가 거래하지 않았을 때,<br>그 이유가 겁이 많아서인지,<br>자료가 부족해서인지,<br>전략 조건이 아니었는지,<br>안전장치가 막았는지 쉽게 설명해주는 것.</p><p>시스템이 꼬였을 때도 기능을 하나 더 붙이는 대신,<br>어디서부터 복잡해졌는지 찾아내고 필요 없는 층을 걷어내는 것.</p><p>내 페르소나를 흉내 내는 말투만 갖는 것이 아니라,<br>내가 투자 앞에서 어떤 때 흔들리는지 기억하고,<br>그럴 때 더 자극적인 결론이 아니라 차분한 맥락을 돌려주는 것.</p><p>이런 쥬라면 모델의 지능 향상이 수익률 숫자보다 먼저 체감될 것 같다.</p><p><img src="/img/posts/20260711-gpt56-jue-expectation/expectation.svg" alt="Expectation without magic"></p><h2 id="아직-기대-단계다"><a href="#아직-기대-단계다" class="headerlink" title="아직 기대 단계다"></a>아직 기대 단계다</h2><p>물론 새 모델이 나왔다고 꼬인 구조가 저절로 풀리지는 않는다.</p><p>오히려 모델이 더 강해지면 더 많은 코드를 더 빠르게 만들 수 있고,<br>방향을 잘못 잡았을 때 더 큰 복잡성을 더 빠르게 쌓을 수도 있다.</p><p>그래서 지금 필요한 건 새 모델에 대한 흥분과 함께,<br>쥬가 어떤 역할을 해야 하는지 계속 확인하는 일이다.</p><p>최근 작업에서 쥬의 지식 구조를 다시 나누고,<br>운영 경고를 줄이고,<br>실행 프로그램의 기준을 하나로 모으고,<br>주문 앞의 안전장치를 모델 바깥에 남겨둔 이유도 여기에 있다.</p><p>GPT 5.6은 이 구조를 완성해주는 마법이 아니다.<br>대신 지금까지 만든 것을 더 긴 호흡으로 읽고,<br>내가 놓친 연결을 찾고,<br>복잡한 부분을 다시 단순하게 만들 수 있는 좋은 도구가 하나 더 생긴 셈이다.</p><p>이번에는 그걸 기대해본다.</p><p>쥬에게 바라는 건 수익률 몇 퍼센트를 약속하는 예언자가 아니다.<br>내가 시장을 볼 때 덜 흔들리도록,<br>사실과 감정을 나눠주고,<br>필요할 때 멈추고,<br>왜 그런 판단을 했는지 이해할 수 있게 말해주는 존재다.</p><p>GPT 5.6 이후의 쥬가 조금 더 그런 모습에 가까워졌으면 좋겠다.</p>]]>
      </content:encoded>
    </item>
  </channel>
</rss>
