회고EthiBot

조건 하나를 빼고 쟀더니 정답이 정반대로 나왔다

매수 판단 단계를 빼는 게 낫다는 결과가 나왔다. 실제 운용의 제약 하나를 빠뜨리고 잰 값이었다. 그 제약을 넣자 빼는 안이 가장 나빴다.
📅 2026.10.06⏱ 읽기 약 5분
EthiLab오늘 시장과 종목의 위치돈이 몰린 테마와 종목의 위치를 웹에서 확인하세요바로가기 →

판단 단계를 빼자는 결론이 나왔다

봇의 매수는 두 단계로 걸러진다. 먼저 지표 점수로 후보에 순위를 매기고, 그다음 언어 모델이 각 후보를 "산다 / 거른다"로 판단한다.

이 두 번째 단계가 값을 하는지 확인하고 싶었다. 한 달치 과거 후보 전부를 놓고 이렇게 비교했다.

  • 후보 중 아무거나 골랐을 때의 평균 수익률: +0.501%
  • 모델이 "산다"고 고른 것의 평균 수익률: −0.118%

무작위로 1만 번 골라 본 분포에 모델의 성적을 놓으니 0.0 백분위였다. 아무거나 고르는 것보다도 사실상 가장 나빴다. 결론은 쉬워 보였다. 이 판단 단계는 값을 더하는 게 아니라 빼고 있으니 없애는 편이 낫다.

실제 운용에는 제약이 하나 더 있었다

위 비교는 조건에 맞는 후보를 전부 산다고 가정한 계산이다. 실제 봇은 그렇게 하지 못한다. 동시에 들고 있을 수 있는 종목 수에 한도가 있어서, 매일 순위 상위부터 채우고 나면 나머지는 사고 싶어도 못 산다.

이 제약을 넣고 네 가지 방식을 같은 조건(당일 청산, 같은 익절·손절, 세후)으로 다시 돌렸다.

방식건수1건당 평균
현행 (모델이 "산다" + 확신도 기준 통과)58−0.144%
모델이 "산다"면 전부 (확신도 기준 없음)66−0.228%
다른 모델로 교체65−0.174%
판단 단계 제거 (순위대로 그냥 산다)66−0.363%

빼는 안이 가장 나빴고 현행이 가장 나았다. 같은 데이터인데 순위가 뒤집혔다.

왜 뒤집혔나

제약이 있으면 매일 순위 상위 몇 개만 사게 된다. 그런데 그 상위 후보들의 성적이 나빴다. 후보 전체의 평균은 좋았지만, 실제로 손이 닿는 맨 위 몇 개는 그렇지 않았다.

판단 단계는 바로 그 상위 후보 중 일부를 걸러내고 있었다. 전체를 놓고 보면 좋은 후보를 버리는 단계처럼 보였지만, 실제로 살 수 있는 자리에서는 나쁜 후보를 덜어내는 단계였다. 제약을 빼고 잰 첫 비교는 봇이 실제로 하지 않는 매매를 채점한 것이다.

💡 "현행이 나쁘다"와 "대안이 낫다"는 다른 명제다. 첫 번째를 확인했다고 두 번째로 건너뛰면 개선이 아니라 개악이 된다. 대안도 같은 조건에서 따로 재야 한다.

이 결과도 단정하지 않는다

뒤집힌 결과를 들고 "판단 단계가 확실히 값을 한다"고 말하고 싶지만 그렇게 말할 수도 없다. 네 방식은 각각 58~66건이고, 95% 신뢰구간이 전부 겹친다. 말할 수 있는 것은 여기까지다.

  • 대안이 낫다는 증거는 없다.
  • 방향은 오히려 반대다.

그래서 내린 결정은 "현행을 유지한다"였지 "현행이 최선이다"가 아니었다. 바꿀 근거가 없으니 바꾸지 않았을 뿐이다.

남은 것

시뮬레이션은 실제로 할 수 있는 행동만 채점해야 한다. 동시 보유 한도, 당일 청산, 순위대로 채우는 순서 같은 운용 제약이 빠지면, 그 결과는 다른 봇의 성적표다.

전체 평균이 좋은 집단이라도 내가 손댈 수 있는 부분은 나쁠 수 있다. 평균을 볼 때는 실제로 고르는 범위가 어디인지 먼저 본다.

고치려다 안 고쳐서 살았다. 첫 결과대로 판단 단계를 걷어냈다면 1건당 0.2%p씩 더 잃는 쪽으로 바꿨을 것이다.

오늘 시장과 종목의 위치는 EthiLab에서 볼 수 있습니다.

이 시리즈의 다른 글