AI와 함께 만드는 삶

PM으로 일하며 AI와 함께 무언가를 만들어가는 삶을 기록합니다.

프로젝트 기록/주식 자동매매 개발기

며칠 기다렸다 사면 더 좋을까 — 매수 타이밍 검증과 새 전략 BB8 추가기 (8편)

makewithai 2026. 8. 5. 12:00

"그렇게 사면 손해 아니야?" — 지인의 질문

전략을 다 확정하고 페이퍼 트레이딩까지 돌리고 있는데, 주식을 10년 넘게 해온 지인에게서 이런 질문을 받았다. "매수일이 매달 1일이면, 이미 고른 종목을 그냥 그날 사버린다는 거잖아. 나도 적립식 투자를 하지만 그래도 떨어진 날 사려고 하는 편인데."

정곡을 찌르는 질문이었다. 지금 확정된 방식은 이렇다 — 매달 첫 거래일 저녁에 종가 기준으로 종목을 고르고, 다음 거래일 시가에 무조건 산다. 재량은 전혀 없다. 종목은 저PBR이라는 기준으로 골랐지만, 그날 그 종목을 살지 말지, 혹은 다른 날 살지는 아예 고려 대상이 아니었다.

이미 겪어본 문제였다

사실 이 프로젝트의 원래 설계(v0.2)는 스토캐스틱·이동평균·하이킨아시 3개 지표로 정확히 이 "타이밍"을 잡으려는 시스템이었다. 그런데 몇 달에 걸쳐 검증한 결과, 그냥 "월말 신호 → 다음날 시가에 기계적으로 매수"가 타이밍을 재려는 모든 시도를 이겼다. 리밸런싱 주기를 주간으로 당겨본 것도, 손절선을 넣어본 것도, 전부 수익만 깎았다.

그래서 "떨어진 날 사자"는 아이디어도 새로운 게 아니라 이미 실패한 것과 같은 계열처럼 보였다. 하지만 이번 건 형태가 좀 달랐다 — 종목 선정은 그대로 두고, 매수 체결일만 조정하는 훨씬 좁은 제안이었다. 이 정도면 다시 확인해볼 가치가 있었다.

규칙을 만들어서 검증했다

"떨어진 날 사고 싶다"는 직관을, 미래 정보를 쓰지 않는 형태로 이렇게 규칙화했다.

월말 신호 이후, 그 종가보다 낮은 시가가 뜨는 첫 거래일에 산다. 정해진 대기 기간 안에 그런 날이 안 나오면, 마지막 날에 무조건 산다.

대기 기간을 2일, 5일, 10일로 각각 바꿔가며 백테스트했다. 데이터는 지금까지 이 시리즈에서 계속 써온 것과 같은 일봉 기준, 2018년부터 현재까지다.

대기 창CAGR최대낙폭샤프하락일 매수 / 강제 매수
없음 (다음날 시가 무조건, 기존 확정안) +12.0% -56.4% 0.60 -
2거래일 +12.0% -56.2% 0.60 44 / 55
5거래일 +11.4% -56.8% 0.58 67 / 32
10거래일 +10.4% -56.6% 0.54 71 / 28

기다릴수록 나빠졌다

결과는 명확했다. 대기 기간을 늘릴수록 성적이 계속 나빠졌다. 10일까지 기다리면 71%는 결국 하락일을 찾아서 사지만, 그 사이 상승장에서는 계속 밀리기만 했다. 리스크(최대낙폭)가 줄어드는 것도 아니었다 — 오히려 소폭 더 나빠졌다.

2거래일 창은 기존 확정안과 사실상 차이가 없었다. 하루 이틀 정도의 지연은 노이즈 범위 안이라는 뜻이다.

정리하면 이렇다. "떨어진 날 사고 싶다"는 직관 자체가 틀린 게 아니라, 한 달에 한 번뿐인 결정에서, 며칠을 더 들여다본다고 해서 얻는 게 없다. 오히려 기다릴수록 상승장을 놓치고 쫓아가서 사는 리스크만 커졌다. 이 프로젝트에서 반복적으로 확인되는 패턴 — 재량을 더할수록 좋아지는 게 아니라 나빠진다 — 이 여기서도 한 번 더 확인된 셈이다.

매수 대기 기간별 CAGR과 최대낙폭 비교, 대기 기간이 늘수록 CAGR이 하락하는 추세

새 슬리브 하나를 추가했다

전략 얘기가 나온 김에, 최근에 페이퍼 트레이딩에 추가한 것도 소개한다. 이 시리즈에서는 지금까지 저PBR 전략(PBR10) 얘기만 했는데, 사실 STRATEGY.md에는 다른 결론도 하나 있었다 — "모멘텀(추세장)과 BB반등(횡보장)은 서로 보완 관계"라는 것.

BB반등은 볼린저밴드 하단까지 눌렸다가 다시 반등하는 종목을 잡는 전략이다. 저PBR이 "싼 걸 사서 오래 들고 있는" 방식이라면, BB반등은 "일시적으로 눌린 종목을 짧게 잡았다 파는" 방식에 가깝다. 월 1회가 아니라 매일 신호를 평가하고, 최대 8종목까지 담는다.

단독으로는 EW40(기준선)을 못 넘지만, 저PBR과 성격이 다르기 때문에 나란히 굴려보면 서로 다른 장세에서 다른 대응이 가능하다는 게 STRATEGY.md의 가설이었다. 이걸 실전 후보로 검증해보려고, 저PBR과 같은 200만원 규모로 BB8이라는 이름의 새 슬리브를 페이퍼에 추가했다 (7월 31일 시작).

추가하자마자 버그도 하나 잡았다. 저PBR에는 있던 "슬롯 예산의 2배 이내인 고가주는 1주 매수 허용" 예외가 BB8에는 빠져 있어서, 첫 사이클에 삼성SDI·SK 같은 종목이 "금액 부족"으로 잘못 취소된 걸 발견하고 수정했다.

아직은 판단하기 이르다

실제로 시작한 건 7월 31일이라 데이터가 며칠뿐이다. 대신 궁금해서, 같은 규칙을 한 달 앞선 7월 1일부터 시작했다고 가정하고 소급 계산을 해봤다. (이건 실제로 관찰한 값이 아니라 가상의 시나리오라는 걸 분명히 해둔다 — 실제 페이퍼는 7/31에 빈 계좌로 시작했고, 소급 계산은 7/1부터 이미 매매 중이었다고 가정한 것이라 계좌 구성 자체가 다르다.)

시작8/4 기준누적
소급 계산 (7/1 시작 가정) 200만원 190.2만원 -4.89%
실제 페이퍼 (7/31 진짜 시작) 200만원 200.6만원 +0.30%

소급 계산은 마이너스다. 좋은 소식은 아니지만 숨길 이유도 없다 — 이 시리즈는 처음부터 "잘 나온 것만 보여주지 않기"로 해왔고, 초기 몇 주치 데이터로는 어차피 아무것도 판단할 수 없다. 저PBR도 몇 달치가 쌓이고 나서야 성격이 보이기 시작했다. BB8도 마찬가지일 것이다.

다음 편 예고

전략 얘기는 이 정도로 계속 이어가고, 다음엔 조금 다른 이야기를 해보려 한다 — 자동매매를 완전 자동 실주문까지 넘기고 싶다는 요청이 있었고, 그 과정에서 "AI에게 규칙을 지키게 하려면 규칙 자체를 문서로 못박아야 한다"는 걸 다시 한번 실감했다. 그 협상 과정을 다음 편에서 다룬다.


이 글은 투자 권유가 아니며, 개인적인 AI·자동매매 시스템 개발 과정의 기록입니다.