주식프로그램/프로그램 개발

자동매매 프로그램 롤백 후 실매매 결과|71승 0패의 착시와 미청산 손실

팡규 2026. 8. 18. 22:14
반응형
자동매매 개발 기록

자동매매 프로그램을 계속 개조하다 보면 기능이 많아진 만큼 전략도 좋아졌다고 느끼기 쉽습니다. 저 역시 서버 인증, 일봉·분봉, 시장·업종, 뉴스·공시, 호가, MFE·MAE, 주문 게이트웨이와 여러 안전장치까지 기능을 계속 확장했습니다.

그런데 실제 거래 기록을 다시 분석하면서 다른 문제가 보였습니다. 수익 종목은 잘 청산됐지만 손실 종목은 매도되지 않은 채 계좌에 남아 미실현손실이 누적되고 있었습니다. 결국 저는 복잡해진 버전을 계속 고치는 대신, 핵심 매매 구조가 남아 있던 4월판으로 롤백했습니다.

롤백 전 청산 가중 수익률
+1.28%
롤백 후 청산 가중 수익률
+1.277%
신규전략 미청산 평가손실
-91,028원
롤백 후 5일 추정 순손익
+10,861원
핵심만 먼저 정리하면
롤백 전후의 청산 거래 가중 실현수익률은 약 +1.28%로 거의 같았습니다. 하지만 롤백 전에는 손실 종목이 청산되지 않고 보유종목으로 남아 평가손실이 누적됐습니다. 반면 롤백 후에는 아직 5거래일이라는 짧은 기간이지만, 매수와 매도가 다시 정상적으로 회전하면서 실제 수익 실현이 활발해졌습니다.

롤백 전, 숫자만 보면 71승 0패였다

롤백 전 거래 데이터|2026-05-15 ~ 2026-06-23
TradeReport105건
청산 / 미청산71건 / 34건
청산 기록71승 0패
청산 평균 수익률+1.43%
청산 가중 수익률+1.28%
청산 추정 실현손익+19,012원

여기까지만 보면 전략이 상당히 좋아 보입니다. 71번 청산해서 한 번도 손실이 없었고, 가중 실현수익률도 +1.28%였습니다. 저도 처음에는 이 숫자를 긍정적으로 봤습니다.

문제는 청산되지 않은 종목을 같이 보기 시작하면서 나타났습니다.

71승 0패의 착시|손실은 사라진 것이 아니었다

수익 종목

목표에 도달하면 청산되어 승리 기록에 포함

+
손실 종목

매도되지 않고 보유종목으로 남아 승패 통계에서 제외

=
71승 0패

겉으로는 완벽하지만 실제 계좌에는 손실이 남는 구조

승률 100%가 반드시 좋은 전략을 뜻하지는 않았습니다.
이익 종목만 청산되고 손실 종목은 계속 보유 상태로 남는다면, 승률은 높게 유지되면서도 계좌의 미실현손실은 계속 커질 수 있습니다.
청산된 거래
청산 승패71승 0패
가중 실현수익률+1.28%
추정 실현손익+19,012원
남아 있던 신규전략 종목|2026-08-05 기준
미청산 종목9종목
평가손실-91,028원
평가수익률-35.98%
청산수익 +19,012원과 미청산손실 -91,028원을 단순 합산하면 전략 참고손익은 -72,016원입니다. 거래 노출금액 기준 단순 참고수익률은 약 -4.15%였습니다. 이 값은 공식 계좌수익률이 아니라, 실현손익만 보고 전략을 평가했을 때 생기는 착시를 확인하기 위한 참고값입니다.

당시 전체 보유종목은 22종목이었고 모두 평가손실 상태였습니다. 전체 평가손실은 -191,993원, -42.48%였습니다.

기존 장기보유 손실
-100,965원
신규전략 손실
-91,028원

실현수익률, 미실현수익률, 계좌 누적수익률은 따로 봐야 했다

실현수익률
실제 매도까지 끝난 거래의 수익률입니다. 롤백 전 청산 거래의 가중 실현수익률 약 +1.28%가 여기에 해당합니다.
미실현수익률
아직 매도하지 않고 보유 중인 종목의 평가손익입니다. 롤백 전 문제는 이 손실이 계좌에 계속 남았다는 점이었습니다.
계좌 누적수익률
기존 장기보유 종목과 신규전략, 실현·미실현손익 등이 함께 반영된 전체 계좌 상태입니다.
청산 가중 수익률 +1.28%를 전체 계좌수익률이라고 표현하면 안 됩니다. 아직 보유 중인 종목의 손익과 기존 장기보유 손실이 별도로 존재하기 때문입니다.
롤백 전 전체 계좌 누적 총손익률
기준롤백 전
누적 총손익률약 -60.12%
2026-08-18 기준 전체 계좌
기준8월 18일
누적 총손익률약 -59.84%

롤백 후 실현수익이 발생하고 있지만 전체 계좌수익률이 크게 바뀌지 않은 이유는 기존 장기보유 종목의 손실 비중이 크기 때문입니다.

프로그램을 너무 많이 개조하면서 구조가 복잡해졌다

롤백 전 확장된 기능
  • 서버 인증
  • XING 데이터
  • 일봉·분봉
  • 시장·업종
  • 뉴스·공시
  • 호가
  • 후보 코호트
  • MFE·MAE
  • Shadow Scalping
  • Broker Ledger
  • 주문 게이트웨이
  • Safety Harness
  • 일별 성과검증
  • 대규모 분석 패키지
복잡해지면서 생긴 문제
  • 분석 로직과 안전장치가 지나치게 많아짐
  • DB 상태와 실시간 이벤트가 서로 얽힘
  • 하나의 주문 판단에 너무 많은 조건이 개입
  • 어떤 로직이 실제 성과에 기여하는지 파악하기 어려움
  • 핵심 매매 전략보다 주변 시스템이 더 커짐
롤백 전 stock.db
약 138.7MB
사용자 테이블 26개
롤백 후 stock.db
약 1.63MB
사용자 테이블 4개
롤백은 실패라기보다, 핵심 전략을 다시 찾기 위해 불필요하게 커진 부분을 걷어내는 정리 과정에 가까웠습니다.

4월판의 핵심은 남기고 필요한 기능만 다시 붙였다

그대로 유지한 기본 구조
  • 4월판 초기매수 구조
  • A~E 후보군
  • 기존 손절 구조
  • 초기매수 기본 로직
다시 추가한 핵심 기능
  • 보유종목 일봉 MA5·20·60·120·240 캐시
  • MA20 회복추세
  • 수급점수
  • 지지·저항
  • 5분봉 돌파 및 거래량
  • 5분 EMA20
  • 수급 약화 감지
  • 고점밀림 보호

추가매수 구조

추가매수 최대 횟수
5회
추가매수 쿨다운
10시간
재시작 후 상태
횟수·시간 복원
주요 판단 요소
추세·수급·돌파

추가매수에는 MA20 회복추세, 수급점수, 지지·저항, 5분봉 돌파와 거래량을 적용했습니다. 프로그램을 재시작해도 추가매수 횟수와 마지막 매수 시간이 초기화되지 않도록 DB에서 복원합니다.

매도 구조

매도에는 일봉 지지·저항, 5분 EMA20, 수급 약화와 함께 종목 상황에 따라 약 0.4~2% 고점밀림 보호를 적용했습니다. 이미 확보한 수익을 끝까지 목표가만 기다리다 다시 반납하는 상황을 줄이기 위한 목적입니다.

롤백 후 5거래일 실매매 결과

롤백한 프로그램으로 실제 운용한 날짜는 2026년 8월 11일, 12일, 13일, 14일, 18일로 총 5거래일입니다. 아직 기간이 매우 짧기 때문에 롤백 버전의 우월성을 확정할 수는 없습니다. 현재 결과는 어디까지나 초기 관찰 결과입니다.

초기매수
41건
추가매수
10건
청산 묶음
38건
비용 반영 승패
34승 4패
승률
89.47%
비용 반영 추정 순손익
+10,861원
롤백 후 매매 성과
매매차익+12,845원
비용 반영 추정 순손익+10,861원
청산 가중 수익률+1.277%
평균 거래 수익률약 +1.18%
증권사 실제 실현손익
8월 14일+1,273원 / +1.15%
8월 18일+4,846원 / +2.32%
현재도 미청산 종목이 있기 때문에 +1.277%를 전체 전략수익률이나 전체 계좌수익률로 표현하면 안 됩니다. 이 값은 청산이 완료된 거래의 가중 실현수익률입니다.

롤백 전후 수익률은 비슷했지만 거래 흐름이 달라졌다

롤백 전
청산 가중 수익률+1.28%
청산 기록71승 0패
문제손실 종목 미청산 누적
롤백 후|5거래일
청산 가중 수익률+1.277%
청산 기록34승 4패
초기 관찰매수·매도 회전 정상화
1
초기매수
2
필요 시 추가매수
3
수익·손실 청산
4
자금 재회전

현재 제가 가장 긍정적으로 보는 부분은 수익률 숫자 자체보다 매수 → 필요 시 추가매수 → 청산 → 다음 종목 매수로 이어지는 자금 흐름입니다.

롤백 전에는 수익 종목이 청산된 뒤 손실 종목만 계좌에 남는 현상이 반복됐습니다. 롤백 후에는 손실 거래도 실제로 발생하고 있지만, 정해진 기준에서 청산되고 다음 거래로 넘어가고 있습니다.

71승 0패보다 34승 4패가 더 건강할 수도 있다

손실을 통계 밖으로 밀어내서 만든 100% 승률보다, 손실을 실제로 인정하고 정리하면서 자금이 다시 회전하는 구조가 장기적으로는 더 중요할 수 있습니다.

정상적인 매매 전략이라면 손실 거래가 존재할 수 있습니다. 중요한 것은 손실이 발생했느냐가 아니라, 손실을 계속 보유 상태로 남겨두는지, 아니면 정해진 기준에서 정리하고 다음 기회를 찾을 수 있는지라고 생각합니다.

그래서 지금은 71승 0패보다 34승 4패라는 숫자가 오히려 더 현실적인 거래 기록으로 느껴집니다. 물론 현재 운용 기간이 5거래일뿐이므로 이 판단 역시 앞으로 더 긴 기간을 두고 확인해야 합니다.

이번 롤백에서 배운 점

01. 기능이 많다고 수익성이 좋아지는 것은 아니다.
02. 승률만으로 전략을 평가하면 미청산 손실을 놓칠 수 있다.
03. 실현손익과 미실현손익을 반드시 따로 봐야 한다.
04. 프로그램 내부 기록과 증권사 실제 손익을 함께 확인해야 한다.
05. 복잡한 구조보다 내가 이해하고 검증할 수 있는 구조가 중요하다.
06. 롤백은 실패가 아니라 핵심 로직을 다시 찾는 과정이 될 수 있다.

아직 5거래일이다|앞으로 더 중요하게 볼 지표

지금까지의 롤백 후 결과는 나쁘지 않지만 5거래일만으로 전략이 좋아졌다고 결론 내릴 수는 없습니다. 특히 아직 미청산 종목이 있기 때문에 앞으로는 단순 승률보다 아래 항목을 계속 기록할 생각입니다.

지표 1
실현손익
지표 2
미실현손익
지표 3
보유기간
지표 4
자금회전
지표 5
최대손실
지표 6
계좌 누적손익
지표 7
증권사 실현손익
지표 8
미청산 누적 여부
현재까지의 결론
롤백 후 수익률이 갑자기 크게 좋아진 것은 아닙니다. 오히려 청산 가중 실현수익률은 롤백 전후 모두 약 +1.28%로 비슷합니다. 다만 현재까지는 손실 종목이 계속 계좌에 쌓이던 이전 구조와 달리, 매수와 매도가 실제로 회전하면서 수익과 손실이 모두 거래 기록 안에서 처리되고 있다는 점을 가장 중요하게 보고 있습니다.

몇 달 동안 프로그램을 계속 확장하면서 개발 자체는 분명 많이 배웠습니다. 하지만 자동매매에서는 기능의 개수보다 실제 돈이 어떻게 들어오고 나가는지를 명확하게 이해할 수 있는 구조가 더 중요하다는 것도 같이 배웠습니다.

이번 롤백은 과거로 돌아간 것이 아니라, 처음 이 프로그램에서 실제로 작동했던 핵심 전략을 다시 찾기 위해 복잡해진 부분을 정리한 과정이라고 생각합니다. 앞으로 실거래 데이터가 더 쌓이면 롤백 후 결과도 같은 방식으로 계속 비교해볼 예정입니다.

※ 이 글은 개인적으로 개발·운용 중인 자동매매 프로그램의 개발 과정과 실제 거래 기록을 정리한 내용입니다. 특정 종목이나 금융상품의 매수·매도를 권유하거나 수익을 보장하기 위한 글이 아닙니다. 주식 및 자동매매에는 원금손실 가능성이 있으며 투자 판단과 책임은 투자자 본인에게 있습니다.
반응형