회고EthiBot

걸릴 수 없는 규칙이 매수를 막고 있었다

6거래일 동안 한 주도 못 샀다. 원인은 이미 통과한 조건을 다시 금지하는 한 문장이었다.
📅 2026.08.05⏱ 읽기 약 6
EthiLab알고리즘 시그널 연구소실시간 스윙 트레이딩 시그널을 웹에서 확인하세요바로가기 →

상승장인데 한 주도 못 샀다

7월 말부터 체결이 끊겼다. 5거래일, 6거래일이 지나도 매수가 0건이었다.

시장이 나빠서가 아니었다. 8월 4일 코스피는 +1.62%, 코스닥은 +5.88%로 마감했다. 알테오젠 +9.3%, HLB +11.2%, 리가켐바이오 +15.2%. 그런 날에도 계좌는 비어 있었다.

후보가 없었던 것도 아니다. 조건 필터를 통과한 종목이 매일 올라왔고, 1차 판단에서는 매수 의견도 나왔다. 그런데 마지막 확인 단계에서 전부 기각됐다. 그날 기각 사유를 그대로 옮기면 이렇다.

"코스피와 코스닥 모두 불장인 상황에서, 피크 회피 원칙에 따라 RSI가 60에 근접하고 상승 모멘텀이 강한 종목은 과열을 피하기 위해 매수 보류"

강세장인 걸 알고 있다. 상승 모멘텀이 강한 것도 안다. 그런데 그래서 안 산다고 한다.

걸릴 수 없는 규칙

기각 사유에 나온 "피크 회피 원칙"은 내가 프롬프트에 직접 넣은 문장이었다.

## ⚠️ 매수 금지 (피크 회피)
- RSI(14) ≥ 60 또는 현재가 > BB Upper 중 단 하나라도 해당 시 반드시 SKIP.
- 거래량 증가·추세 강도·국면과 무관하게 적용. 확신이 높아도 SKIP.

과열 상투에 물리지 말라는 취지였다. 문제는 이 규칙이 닿을 수 없는 곳에 있었다는 것이다.

후보 종목을 고르는 단계에서 이미 RSI < 60 조건과 볼린저밴드 상단 미돌파 조건을 통과한 종목만 다음 단계로 넘어간다. 즉 판단을 요청받는 시점에 그 종목들은 정의상 두 조건을 모두 만족한 상태다. RSI가 60을 넘은 종목은 애초에 목록에 없다.

논리적으로 발동할 수 없는 금지 규칙이었다. 그런데 기각은 계속 일어났다.

규칙은 경계선이 아니라 방향으로 읽힌다

다시 기각 사유를 보면 표현이 미묘하다.

RSI가 60에 근접하고

60을 넘은 게 아니라 "근접"했다. 규칙은 ≥ 60이라고 명시했는데, 판단은 그보다 앞에서 멈췄다.

여기서 알게 된 것이 있다. 금지 규칙을 명시하면 그 숫자는 경계선이 아니라 위험 방향의 신호로 작동한다. "60 이상은 위험하다"고 쓰면 57도, 58도 위험해 보인다. 이미 걸러진 조건을 한 번 더 강조한 대가로, 판정선이 조용히 앞으로 당겨졌다.

중복은 무해한 잉여가 아니었다. 같은 조건을 두 번 말하면 두 번째가 첫 번째를 무력화한다.

어제 넣은 개선을 한 문장이 지우고 있었다

더 나쁜 건 그 아래 줄이었다.

거래량 증가·추세 강도·국면과 무관하게 적용. 확신이 높아도 SKIP.

바로 전날, 판단 근거를 늘리려고 지수 상세·수급·시가총액 상위 종목 흐름을 프롬프트에 새로 넣었다. 시장이 강한지 약한지 알아야 판단이 정확해질 거라고 봤다.

그런데 같은 프롬프트 안에 "국면과 무관하게 적용하라"는 문장이 있었다. 애써 넣은 시장 데이터를 쓰지 말라고 지시하고 있었던 셈이다.

프롬프트를 고칠 때 나는 추가할 섹션만 봤다. 그 섹션이 기존 문장과 어떻게 부딪치는지는 보지 않았다. 프롬프트는 문서가 아니라 하나의 지시문 전체로 읽힌다.

금지 대신 사실을 알려주기

금지 규칙을 지우는 대신 이렇게 바꿨다.

## 참고: 이미 통과한 필터
- 아래 후보는 전부 RSI(14) < 60, BB Upper 미돌파를 시스템 게이트에서 이미 통과했다. 그 판정은 끝났다.
- 따라서 "RSI가 60에 근접" · "밴드 상단에 가깝다"를 SKIP 사유로 쓰지 마라. 국면이 강세여도 마찬가지다.
- 다만 장중 급등 · 거래량 이상 급증 등 게이트가 보지 않는 과열은 네가 판단하라.

세 줄의 역할이 다르다. 첫 줄은 이미 끝난 판정을 알려준다. 둘째 줄은 그걸 다시 사유로 쓰지 말라고 못 박는다. 셋째 줄은 시스템이 보지 못하는 영역을 남겨둔다. 과열 판단을 통째로 없애는 게 아니라, 중복된 부분만 걷어내고 고유한 부분은 남기는 것이 목적이었다.

바꾼 날 아침

교체하고 처음 맞은 장에서 9시 9분에 첫 체결이 나왔다. 6거래일 만이었다. 오전에만 다섯 종목을 담았고, 매수 사유는 이렇게 적혀 있었다.

"RSI는 52.91로 과열되지 않았으며, BB Upper에 근접해 있지만 돌파하지 않아 추가 상승 여력이 있습니다"

전날까지 "밴드 상단에 가깝다"는 기각 사유였다. 같은 상태를 정확히 반대로 읽은 것이다. 판단 능력이 늘어난 게 아니라, 판단을 막던 문장이 사라졌을 뿐이다.

💡 프롬프트에 규칙을 하나 더 얹기 전에 물어볼 것이 있다. 이 조건은 이미 다른 곳에서 보장되고 있지 않은가. 보장되고 있다면 다시 쓰지 않는 편이 낫다. 반복은 강조가 아니라 왜곡이 된다.

같은 날 오후, 매도 쪽에서도 똑같은 구조를 발견했다. 종목별로 계산한 목표 수익률이 있는데, 전체에 일괄 적용되는 다른 조건이 그보다 먼저 걸려서 목표에 닿기 전에 팔리고 있었다. 하루에 같은 형태의 문제를 두 번 만난 셈이다. 개별 판단 위에 전역 규칙을 얹으면, 전역 쪽이 늘 먼저 이긴다.

시그널 전략 상세는 EthiLab에서 확인할 수 있습니다.