예약 주문이 흔든 시스템, 운이 만든 수익
예약 주문 도입과 백테스트 개편 과정에서 만난 버그들, 그럼에도 거둔 4월 트레이딩 성과. 운과 실력 사이를 되짚어본 회고다.
이번 달은 내내 시스템을 뜯어고친 한 달이었다. 예약 주문 도입, 백테스트 시스템 정비, 그리고 성능 개편까지. 한꺼번에 손을 댄 탓에 무지막지한 버그들이 우후죽순 터져 나왔고, 그것들을 잡느라 적지 않은 시간을 썼다.
그럼에도 4월 말일에 손익을 정산해 보니 결과는 기대를 넘어섰다. 다만 그 숫자를 곧이곧대로 받아들이기에는 마음에 걸리는 것들이 많았다.
예약 주문이라는 작은 변수
발단은 작은 깨달음이었다. 프리마켓에 주문을 넣어두면, 그 시간대에 체결이 일어나지 않더라도 마켓 오픈 시점에 자동으로 본 주문으로 전환되고, 그 순간 체결 우선순위가 한 단계 위로 올라간다는 점이 매력적이었다. 이걸 시스템에 도입하면 진입 시점에서 미세한 우위를 챙길 수 있겠다 싶었다.
문제는 이 변경이 시스템 곳곳에 닿아 있었다는 점이다. 단순한 기능 추가가 아니라 포지션 관리 흐름 전체를 흔드는 변경이었다. 도입 이후 치명적인 버그들이 줄줄이 드러났고, 솔직히 손을 댄 걸 살짝 후회했다.
작은 기능처럼 보였지만, 시스템이란 늘 그런 식이지 않을까 싶다. 한 군데를 바꾸면 멀찍이 떨어진 다른 부분이 어김없이 무너진다.
백테스트는 모든 걸 떠받치는 기둥이다
이번에 가장 무겁게 새긴 교훈은 백테스트 시스템의 무게였다.
매수, 매도, 손절 — 모든 의사결정의 근거가 결국 여기서 나온다. 백테스트가 흔들리면 그 위에서 만든 전략과 파라미터, 그리고 그 결과를 향한 신뢰까지 함께 흔들린다. 그래서 백테스트에 손을 대는 일은 한 줄을 고치더라도 그 한 줄이 어디까지 닿을지 끝까지 따져봐야 한다.
이번에 시스템을 정비하면서 다시 느꼈다. 빠르게 뜯어고치고 싶은 마음이 들 때일수록, 의도적으로 천천히, 작게, 검증하면서 가야 한다는 것을.
연산을 다른 PC로 흘려보내기
운영 환경도 손을 보았다. 현재는 집에 있는 PC 한 대를 서버 삼아 시스템 전체를 돌리고 있는데, 백테스트나 스크리닝처럼 연산이 무거운 작업이 돌 때면 마켓 틱 수신이 지연되는 문제가 있었다. 실시간 가격을 놓치는 순간부터 매매 신호도 함께 어긋나기 시작한다.
마침 남는 성능 좋은 PC가 한 대 있어서, CPU 집약적인 작업들을 그쪽으로 오프로드하는 작업에 들어갔다. 처음엔 네트워크 너머로 작업만 던져 보내면 될 거라 만만하게 보았다. 그런데 막상 들어가 보니 그렇지 않았다.
작업이 실패했을 때 어떻게 복구할지, 중간에 끊겼을 때 이미 계산된 지점부터 이어서 처리하려면 상태를 어디에 어떻게 남길지 — 분산된 환경에서는 평소엔 보이지도 않던 질문들이 줄줄이 따라붙는다. 단순한 성능 문제로 시작했지만 결국은 분산 시스템의 신뢰성 문제로 번지는 일이었고, 그래서 여전히 진행 중이다.
해야 할 일과 개선할 부분이 너무 많아 살짝 조바심이 나기도 한다.
운과 실력의 경계
그럼에도 4월의 성과는 기대 이상이었다.
국내 장에서만 22,282,178원의 순수익을 기록했다. 처음 숫자를 봤을 때는 잘 와닿지도 않았다.
4월 국내 시장 트레이딩 결과 — 8승 6패, 승률 57.1%
다만 거래 내역을 들여다보면 이야기가 좀 달라진다. 14건의 거래 중 8승 6패, 승률은 57.1%. 그중 +102.5%, +54.3%처럼 한두 종목이 만들어낸 큰 수익이 다른 손실들을 메우고도 남은 모양새다. 즉 결과는 평균이 아니라 일부 빅 윈에 의해 끌어올려진 분포에 가깝다.
샘플이 한 달치에 불과하다는 점, 그리고 백테스트에 기반한 파라미터 최적화 과정이 통계적 유의성 위에 서 있지 않다는 점. 이 두 가지까지 합쳐 보면, 지금의 수익은 전략의 산물이라기보다 아직 운의 영역에 더 가깝다고 본다.
2026년 4월 한 달간, 한국과 미국 주요 지수의 수익률 비교
차트를 보면 4월 한 달간 코스피는 +27.8%, 코스닥은 +15.5%, 나스닥과 S&P 500 역시 두 자릿수 상승을 기록했다. 시장 자체가 워낙 좋았다. 거기에 적절한 시점에 현금 자금을 투입한 것이 더해져 결과가 부풀려진 것이라고 보는 편이 정직할 것이다.
나스닥에서 본 손실의 진짜 원인
흥미로운 건 미국 시장 결과다. 나스닥이 한 달간 +14% 상승한 좋은 장이었는데도, 같은 기간 나는 -$788.85의 손해를 봤다.
원인을 추적해 보니 앞서 언급한 예약 주문 도입에서 비롯된 일이었다. 포지션 그룹 관리 쪽에 버그가 숨어 있었고, 그것을 인지하지 못한 채 실전에 투입했다. 결과는 중복 매수, 그리고 false breakout에 너무 쉽게 끌려가는 매매로 이어졌다.
좋은 장에서 잃었다는 건 단순한 운의 문제가 아니다. 시스템을 충분히 검증하지 않고 실전에 밀어 넣은 결정의 대가다. 국내에서 운으로 거둔 수익과 해외에서 버그로 만든 손실이 같은 달 안에 공존하는 셈인데, 그 두 결과가 묘하게 같은 사실 한 가지를 가리킨다. 숫자만 보고 시스템을 신뢰해서는 안 된다는 것.
이번 달의 결과는 두 면을 동시에 보여준다. 한쪽에는 운이 만들어준 큰 수익이 있고, 다른 한쪽에는 검증되지 않은 코드가 만든 손실이 있다. 수익은 결과지만, 그것이 실력의 증거인지는 별개의 문제라고 본다.
당분간은 화려한 숫자에 흔들리지 않고, 백테스트와 시스템을 묵묵히 다듬는 시간을 좀 더 가져야 할 것 같다.