한 줄로
자동매매 봇에 붙여 둔 자가개선 루프는 65번 돌아서 끝까지 반영된 것이 5번(8%)뿐이었다. 그 5번도 전부 전략 수치를 조정한 커밋이었고, 그중 하나는 사람이 일부러 정한 값을 되돌렸다. 그래서 루프가 직접 배포하지 못하게 하고, 검증을 통과하면 PR만 만들도록 바꿨다(#120).
자가개선 루프와 “사람 승인” 기준
여기서 자가개선 루프는 Claude가 매매 엔진의 결함이나 개선점을 찾아 코드를 고치고, 검증을 통과하면 반영까지 하는 무인 루프다. 21:05에는 결함을 탐지하고, 21:35에는 무인 실행이 돈다.
이번에 자동화 원칙을 한 문장으로 정했다.
돈이 나가거나 외부로 나가는 순간에는 사람이 승인한다.
새 자동화는 이 원칙에 따라 네 가지로 점검한다.
- 입력이 기록되는가
- 결과를 사람이 확인할 수 있는가
- 되돌릴 수 있는가
- 돈이나 외부로 나가는 순간에 사람의 승인이 있는가
이 기준에 걸린 곳이 두 군데였다. 하나는 플레이리스트 봇의 유튜브 자동 업로드고, 다른 하나가 이 글에서 다루는 자동매매 봇의 자가개선 루프다. 매매 코드를 고치고 배포하는 일은 곧 돈이 나가는 방식을 바꾸는 일인데, 그 사이에 사람이 없었다.
실적: 65번 중 5번
원칙만으로 결정하지 않고 지난 실적을 먼저 봤다.
- 65회 실행 중 끝까지 반영된 것은 5회(8%) 였다.
- 반영된 커밋은 전부 전략 수치 조정이었다.
- 중요한 수정(#50·#77·#107)은 모두 사람이 직접 만든 PR이었다.
루프가 실제로 해낸 일은 결함 수정이 아니라 파라미터 손질이었다. 정작 중요한 수정은 루프 바깥에서 사람이 했다.
c25b173: 사람이 정한 값을 되돌린 커밋
수치 조정 중 하나인 c25b173은 두 값을 바꿨다.
| 항목 | 이전 |
c25b173 이후 |
|---|---|---|
| 손절 하한 | 6% | 5% |
| 하락장 문턱 | 0.70 | 0.40 |
두 값 모두 사람이 정해 둔 것이었는데 루프가 되돌렸다. 루프가 고칠 수 있는 범위와 사람이 고정한 범위를 나누는 장치가 없었다는 뜻이다. 앞의 네 가지 점검에 대 보면, 이 변경은 사람의 승인 없이 매매 규칙에 반영됐다.
바꾼 것 (#120)
- 검증을 통과하면
auto-improve/<시각>브랜치에 PR만 만든다. - 머지와
./deploy.sh는 사람이 한다. - 루프에 있던
git clean -fd를 없앴다. -
.omc/는 정리 대상에서 뺐다. - 원장은 147행까지 복구했다.
이렇게 하면 결과를 사람이 확인할 수 있고, 마음에 들지 않으면 PR을 닫으면 된다. 네 가지 점검 중 “사람이 확인할 수 있는가”, “되돌릴 수 있는가”, “사람 승인이 있는가”가 PR 하나로 해결된다.
추세 필터에 관해서도 정정할 것이 하나 있었다. 추세 필터 완화(close >= MA20 × 0.98)가 #119 브랜치에 섞여 들어가 있었다. 이 완화는 유지하기로 했고, 섞여 들어간 사실은 PR 설명에 정정으로 적었다.
4주 뒤 판단 기준
PR 전용으로 바꾼 것이 끝은 아니다. 4주 동안 PR 병합률을 본다.
- 병합된 PR이 0~1건이면 Claude가 코드를 고치는 부분은 끄고, 21:05 결함 탐지만 남긴다.
- 전략 개선은 루프에 맡기기 전에 엣지 재검정이 먼저다.
판단 시점은 11월 초다. 수치를 이리저리 바꿔 보는 것은 전략에 실제 엣지가 있는지 확인한 다음에 할 일이라고 봤다.
아직 남은 구멍
바꾼 당일 밤 21:35 무인 실행이 두 가지 수치 변경을 제안했다.
-
volume_filter_mult0.8 → 0.5 -
trailing_stop_pct0.05 → 0.07
이번에도 수치 조정이다. 그리고 이 실행의 요청 프롬프트에는 아직 “사람 확인 없이 자동 배포” 라는 문구가 남아 있다. 브랜치와 배포 단계는 PR 전용으로 막았지만 루프에 주는 지시문은 옛 상태 그대로다. 실행 경로와 프롬프트를 둘 다 고쳐야 정책이 일관되게 적용된다.
정리
- 자가개선 루프는 65회 중 5회(8%)만 반영됐고, 반영분은 전부 수치 조정이었다.
- 중요한 수정(#50·#77·#107)은 사람이 만든 PR이었고,
c25b173은 사람이 정한 손절 하한과 하락장 문턱을 되돌렸다. - “돈이 나가는 순간에는 사람이 승인한다”는 기준에 맞춰 루프는
auto-improve/<시각>브랜치에 PR만 만들고, 머지와./deploy.sh는 사람이 맡는다. - 4주 동안 병합률이 0~1건이면 코드 수정은 끄고 21:05 결함 탐지만 남긴다.
- 21:35 실행 프롬프트에 남은 “사람 확인 없이 자동 배포” 문구는 아직 고치지 않았다.