못 사는 시스템에서 안 사는 시스템으로 바꾸는 과정
요약
자동매매 프로그램에서 중요한 것은 단순히 매수 신호를 많이 잡는 것이 아니다.
이번 주말 개선 작업 이후 첫 거래일을 운영하면서 확인한 핵심은 “못 사는 것”과 “안 사는 것”은 다르다는 점이다.
500만 원 시드 구조에서는 고가 우량주가 1주 가격 때문에 구조적으로 제외되는 문제가 있었다. 하지만 1,000만 원 시드 구조에서는 같은 종목도 포트폴리오 안에서 평가할 수 있다.
그럼에도 조건이 맞지 않으면 사지 않아야 한다.
이번 업데이트의 목적은 더 공격적으로 매수하는 것이 아니라, 시드가 커져도 같은 원칙으로 판단하는 구조를 만드는 것이었다.
못 사는 것과 안 사는 것
자동매매 프로그램을 운영하면서 가장 먼저 드러난 문제는 고가 우량주였다.
500만 원 시드에서 종목당 예산은 약 100만 원이다. 이 구조에서는 1주 가격이 100만 원을 넘는 종목은 구조적으로 매수하기 어렵다.
SK하이닉스처럼 강한 흐름을 보이는 종목이 있어도, 주가 자체가 높으면 프로그램은 1주도 매수하지 못한다. 이것은 전략적 판단이라기보다 자금 구조의 한계다.
처음에는 단순히 고가주 허용 상한을 높이면 해결될 것처럼 보였다.
하지만 500만 원 계좌에서 130만 원짜리 주식 1주를 매수하면 한 종목 비중이 25%를 넘는다. 200만 원짜리 종목이라면 계좌의 40%가 한 종목에 묶인다.
강세장이라고 상한을 높이는 것은 수익 기회를 넓히는 동시에 손실 집중도도 함께 키운다.
그래서 이번 개선의 방향은 고가주 예외 허용이 아니었다.
총자산이 늘어나면 종목당 예산과 최대 매수 가능 금액이 자동으로 재계산되도록 구조를 바꿨다.
즉, 특정 종목을 위해 규칙을 바꾼 것이 아니라, 시드 규모가 바뀌어도 같은 원칙이 작동하게 만든 것이다.
시드 증액의 의미
이번에 500만 원을 추가 투입한 것은 단순히 더 크게 베팅하기 위한 결정이 아니다.
기존 500만 원 구조에서는 좋은 종목이 있어도 가격 때문에 매수하지 못하는 왜곡이 있었다. 1,000만 원 구조에서는 고가 우량주도 포트폴리오 안에서 정상적으로 평가할 수 있다.
그러나 매수 조건은 완화하지 않았다.
RS 조건, MA20 이격 조건, 손절 조건, 보유기간 조건은 그대로 유지했다. 특정 종목 예외도 만들지 않았다.
이것이 중요하다.
돈이 늘었다고 매수 기준이 느슨해지면 자동매매 프로그램은 위험해진다. 반대로 돈이 늘어나도 같은 기준으로 판단하면 시스템은 확장 가능해진다.
이번 업데이트 이후 첫 거래일에 신규 매수는 발생하지 않았다. BUY 신호는 있었지만 RS 기준을 통과한 종목이 없었다. SK하이닉스도 가격 조건 측면에서는 구조적 개선 대상이었지만, MA20 이격 조건으로 차단되었다.
이 결과는 실패가 아니었다.
오히려 프로그램이 계획대로 작동했다는 증거였다.
500만 원 구조에서는 고가주를 못 샀다.
1,000만 원 구조에서는 살 수 있지만 조건이 맞지 않아 안 샀다.
이 차이가 이번 개선의 핵심이다.
현금 보유도 전략이다
자동매매를 운영하다 보면 매수 0건이 불안하게 느껴질 수 있다.
하지만 좋은 시스템은 항상 매수하는 시스템이 아니다. 조건이 맞지 않을 때 사지 않는 시스템이다.
이번 거래일에는 신규 매수 후보가 있었지만 RS 기준을 통과하지 못했다. 프로그램은 빈 슬롯을 채우기 위해 무리하게 매수하지 않았다.
이것은 중요한 운영 원칙이다.
현금 보유는 실패가 아니다.
조건이 맞지 않는 구간에서는 현금 보유도 전략이다.
특히 시드가 커질수록 이 원칙은 더 중요해진다. 작은 계좌에서는 한 번의 실수가 제한적일 수 있지만, 시드가 커질수록 같은 실수의 금액도 커진다.
자동매매 프로그램이 확장 가능하려면 수익 기회보다 먼저 손실 구조가 통제되어야 한다.
손실한도도 비율로 생각해야 한다
이번 개선에서 손실한도도 고정 금액이 아니라 총자산 비율 기준으로 바꿨다.
기존에는 일일 손실한도가 200,000원 고정이었다. 그러나 500만 원 계좌에서 20만 원은 4%이고, 1,000만 원 계좌에서 20만 원은 2%다.
같은 금액이라도 시드 규모에 따라 리스크 의미가 다르다.
그래서 손실한도를 총자산의 2% 기준으로 바꿨다. 이렇게 하면 시드가 늘어나도 리스크 기준은 일정하게 유지된다.
자동매매 프로그램에서 중요한 것은 숫자를 고정하는 것이 아니라, 원칙을 고정하는 것이다.
보유기간 초과 매도도 다시 봐야 한다
기존에는 보유기간을 넘긴 종목을 다음날 시가에 매도하도록 처리했다.
하지만 실제 운영에서는 손실이 장중에 계속 확대되는 경우가 있다. 이런 경우에는 다음날까지 기다리는 것이 오히려 손실을 키울 수 있다.
그래서 보유기간 초과 종목에 대해 당일 조기 매도 분기를 추가했다.
수익권이면 트레일링을 유지한다.
손실이 -1.5% 이하이고 14:30 이후에도 약세라면 당일 즉시 매도한다.
그 외에는 기존처럼 익일 시가 매도를 유지한다.
이 로직은 아직 충분한 실전 검증이 필요하다. 그러나 단순한 날짜 기준 매도에서 손실 흐름을 함께 보는 구조로 개선했다는 점에서 의미가 있다.
이번 개선에서 배운 점
이번 업데이트를 통해 얻은 인사이트는 명확하다.
첫째, 자동매매에서 “못 사는 것”과 “안 사는 것”은 다르다.
둘째, 시드 증액은 공격성을 높이는 수단이 아니라 구조적 왜곡을 줄이는 수단이 될 수 있다.
셋째, 특정 종목을 위해 규칙을 바꾸면 시스템이 약해진다.
넷째, 조건이 맞지 않으면 현금을 보유하는 것이 정상적인 전략이다.
다섯째, 시드가 커질수록 고정 금액이 아니라 비율 기준으로 판단해야 한다.
여섯째, Claude Code나 Codex 같은 개발 도구를 사용할 때도 역할을 나누는 것이 중요하다. 구조 변경과 구현은 개발 AI가 맡고, 문서 업로드와 형식 맞춤은 Codex처럼 제한된 역할로 운용하는 것이 효율적이다.
결론
이번 작업은 자동매매 프로그램의 첫 운영이 아니다.
지난 주말 문제점을 개선하고, 업데이트된 프로그램으로 첫 거래일을 점검한 기록이다.
그리고 이번 점검에서 확인한 가장 중요한 변화는 이것이다.
이전에는 좋은 종목을 가격 때문에 못 사는 구조가 있었다.
이제는 살 수 있지만 조건이 맞지 않으면 안 사는 구조로 바뀌고 있다.
자동매매 프로그램의 수준은 매수 횟수로 결정되지 않는다.
조건이 맞지 않을 때 멈출 수 있는가.
시드가 커져도 같은 원칙으로 판단할 수 있는가.
수익보다 먼저 손실 구조를 통제할 수 있는가.
이번 업데이트는 그 방향으로 진행된 한 번의 구조 개선이었다.
→ 관련 운영 일지: 국내주식 자동매매 프로그램 — 주말 개선 작업 이후 첫 거래일 운영 기록 → 프로젝트 허브: AI 자동매매 실험
※ 본 콘텐츠는 개인의 실험 기록이며 투자 권유가 아닙니다.
투자의 판단과 책임은 본인에게 있습니다.