Post

예약 주문이 흔든 시스템, 운이 만든 수익

예약 주문 도입과 백테스트 개편 과정에서 만난 버그들, 그럼에도 거둔 4월 트레이딩 성과. 운과 실력 사이를 되짚어본 회고다.

예약 주문이 흔든 시스템, 운이 만든 수익

이번 달은 내내 시스템을 뜯어고친 한 달이었다. 예약 주문 도입, 백테스트 시스템 정비, 그리고 성능 개편까지. 한꺼번에 손을 댄 탓에 무지막지한 버그들이 우후죽순 터져 나왔고, 그것들을 잡느라 적지 않은 시간을 썼다.

그럼에도 4월 말일에 손익을 정산해 보니 결과는 기대를 넘어섰다. 다만 그 숫자를 곧이곧대로 받아들이기에는 마음에 걸리는 것들이 많았다.

예약 주문이라는 작은 변수

발단은 작은 깨달음이었다. 프리마켓에 주문을 넣어두면, 그 시간대에 체결이 일어나지 않더라도 마켓 오픈 시점에 자동으로 본 주문으로 전환되고, 그 순간 체결 우선순위가 한 단계 위로 올라간다는 점이 매력적이었다. 이걸 시스템에 도입하면 진입 시점에서 미세한 우위를 챙길 수 있겠다 싶었다.

문제는 이 변경이 시스템 곳곳에 닿아 있었다는 점이다. 단순한 기능 추가가 아니라 포지션 관리 흐름 전체를 흔드는 변경이었다. 도입 이후 치명적인 버그들이 줄줄이 드러났고, 솔직히 손을 댄 걸 살짝 후회했다.

작은 기능처럼 보였지만, 시스템이란 늘 그런 식이지 않을까 싶다. 한 군데를 바꾸면 멀찍이 떨어진 다른 부분이 어김없이 무너진다.

백테스트는 모든 걸 떠받치는 기둥이다

이번에 가장 무겁게 새긴 교훈은 백테스트 시스템의 무게였다.

매수, 매도, 손절 — 모든 의사결정의 근거가 결국 여기서 나온다. 백테스트가 흔들리면 그 위에서 만든 전략과 파라미터, 그리고 그 결과를 향한 신뢰까지 함께 흔들린다. 그래서 백테스트에 손을 대는 일은 한 줄을 고치더라도 그 한 줄이 어디까지 닿을지 끝까지 따져봐야 한다.

이번에 시스템을 정비하면서 다시 느꼈다. 빠르게 뜯어고치고 싶은 마음이 들 때일수록, 의도적으로 천천히, 작게, 검증하면서 가야 한다는 것을.

연산을 다른 PC로 흘려보내기

운영 환경도 손을 보았다. 현재는 집에 있는 PC 한 대를 서버 삼아 시스템 전체를 돌리고 있는데, 백테스트나 스크리닝처럼 연산이 무거운 작업이 돌 때면 마켓 틱 수신이 지연되는 문제가 있었다. 실시간 가격을 놓치는 순간부터 매매 신호도 함께 어긋나기 시작한다.

마침 남는 성능 좋은 PC가 한 대 있어서, CPU 집약적인 작업들을 그쪽으로 오프로드하는 작업에 들어갔다. 처음엔 네트워크 너머로 작업만 던져 보내면 될 거라 만만하게 보았다. 그런데 막상 들어가 보니 그렇지 않았다.

작업이 실패했을 때 어떻게 복구할지, 중간에 끊겼을 때 이미 계산된 지점부터 이어서 처리하려면 상태를 어디에 어떻게 남길지 — 분산된 환경에서는 평소엔 보이지도 않던 질문들이 줄줄이 따라붙는다. 단순한 성능 문제로 시작했지만 결국은 분산 시스템의 신뢰성 문제로 번지는 일이었고, 그래서 여전히 진행 중이다.

해야 할 일과 개선할 부분이 너무 많아 살짝 조바심이 나기도 한다.

운과 실력의 경계

그럼에도 4월의 성과는 기대 이상이었다.

국내 장에서만 22,282,178원의 순수익을 기록했다. 처음 숫자를 봤을 때는 잘 와닿지도 않았다.

4월 국내 트레이딩 성과 4월 국내 시장 트레이딩 결과 — 8승 6패, 승률 57.1%

다만 거래 내역을 들여다보면 이야기가 좀 달라진다. 14건의 거래 중 8승 6패, 승률은 57.1%. 그중 +102.5%, +54.3%처럼 한두 종목이 만들어낸 큰 수익이 다른 손실들을 메우고도 남은 모양새다. 즉 결과는 평균이 아니라 일부 빅 윈에 의해 끌어올려진 분포에 가깝다.

샘플이 한 달치에 불과하다는 점, 그리고 백테스트에 기반한 파라미터 최적화 과정이 통계적 유의성 위에 서 있지 않다는 점. 이 두 가지까지 합쳐 보면, 지금의 수익은 전략의 산물이라기보다 아직 운의 영역에 더 가깝다고 본다.

코스피·코스닥·S&P 500·나스닥 4월 수익률 비교 2026년 4월 한 달간, 한국과 미국 주요 지수의 수익률 비교

차트를 보면 4월 한 달간 코스피는 +27.8%, 코스닥은 +15.5%, 나스닥과 S&P 500 역시 두 자릿수 상승을 기록했다. 시장 자체가 워낙 좋았다. 거기에 적절한 시점에 현금 자금을 투입한 것이 더해져 결과가 부풀려진 것이라고 보는 편이 정직할 것이다.

나스닥에서 본 손실의 진짜 원인

흥미로운 건 미국 시장 결과다. 나스닥이 한 달간 +14% 상승한 좋은 장이었는데도, 같은 기간 나는 -$788.85의 손해를 봤다.

원인을 추적해 보니 앞서 언급한 예약 주문 도입에서 비롯된 일이었다. 포지션 그룹 관리 쪽에 버그가 숨어 있었고, 그것을 인지하지 못한 채 실전에 투입했다. 결과는 중복 매수, 그리고 false breakout에 너무 쉽게 끌려가는 매매로 이어졌다.

좋은 장에서 잃었다는 건 단순한 운의 문제가 아니다. 시스템을 충분히 검증하지 않고 실전에 밀어 넣은 결정의 대가다. 국내에서 운으로 거둔 수익과 해외에서 버그로 만든 손실이 같은 달 안에 공존하는 셈인데, 그 두 결과가 묘하게 같은 사실 한 가지를 가리킨다. 숫자만 보고 시스템을 신뢰해서는 안 된다는 것.


이번 달의 결과는 두 면을 동시에 보여준다. 한쪽에는 운이 만들어준 큰 수익이 있고, 다른 한쪽에는 검증되지 않은 코드가 만든 손실이 있다. 수익은 결과지만, 그것이 실력의 증거인지는 별개의 문제라고 본다.

당분간은 화려한 숫자에 흔들리지 않고, 백테스트와 시스템을 묵묵히 다듬는 시간을 좀 더 가져야 할 것 같다.

This post is licensed under CC BY 4.0 by the author.