[빌드로그 #04] 패배가 다 같은 패배는 아니었다, 청산 체계와 tie-aware reporting 다시 만들기

Follow-Through Protect를 붙이고 나서 곡선은 분명 더 안정적으로 보이기 시작했다. drawdown도 줄었고, 손절 비율도 내려갔다. 그런데 결과표를 다시 보고 있자니 묘하게 설명이 안 되는 부분이 남아 있었다. 어떤 트레이드는 분명 전략 의도상 “잘 막아낸 종료”에 가까웠는데, 통계상으로는 그냥 패배처럼 섞여 있었다.

여기서부터 질문이 또 바뀌었다. 이번엔 전략을 더 고치는 문제가 아니었다. 우리가 이 결과를 읽는 방식 자체가 아직 거칠었던 것 아닐까? 손실을 줄이는 장치를 붙여놓고도, 결과표가 그 차이를 제대로 드러내지 못한다면 결국 다시 해석이 꼬이게 된다. 이번 기록은 그 “읽는 언어”를 다시 만든 과정이다.

문제는 코드보다 보고 체계가 더 낡아 있었다는 점이었다

전략이 점점 복잡해질수록 청산도 여러 종류로 나뉘기 시작한다. 손절, 초기 실패 정리, 트레일링, Follow-Through 기반 보호, 그리고 시스템적인 종료까지. 그런데 결과표는 여전히 그걸 충분히 구분하지 못했다. 어떤 건 같은 패배로 섞였고, 어떤 건 이름만 다를 뿐 사실상 같은 성격인데도 따로 흩어져 있었다.

가장 거슬렸던 건 이거였다. gross 기준으로는 분명 이익이었는데, fee를 반영한 net 기준으로는 아주 작은 음수로 내려가면서 패배로 기록되는 트레이드들. 특히 Follow-Through Protect 쪽에서 이런 케이스가 꽤 보였다. 전략은 분명 “손실을 덜 나쁘게 마감하는 데” 성공했는데, 보고서에서는 그 맥락이 사라져버리는 셈이었다.

🟠 기존 보고 체계의 문제

승패 분류

WIN / LOSS

청산 사유

이름이 흩어짐

FTP 종료

의도 대비 과소평가

연속손실 해석

맥락이 부족함

이때부터 확실해졌다. 필요한 건 새로운 지표를 더 만드는 일이 아니라, 기존 결과를 더 정확한 언어로 다시 정리하는 일이었다. 즉 전략을 더 고치는 게 아니라, 전략이 이미 만들어낸 결과를 더 올바르게 읽는 방식이 필요했다.

먼저 청산 사유부터 다시 묶었다

가장 먼저 한 건 청산 사유를 다시 정리하는 일이었다. raw reason을 그대로 두면 너무 세분화돼서 흐름이 안 보이고, 너무 뭉뚱그리면 중요한 차이가 사라진다. 그래서 중간 레벨의 그룹이 필요했다. “이 트레이드는 왜 끝났는가”를 전략 해석에 맞는 수준으로 다시 번역하는 셈이다.

결국 청산은 다섯 그룹으로 정리됐다. 손절 계열, 초기 실패/진입 품질 정리 계열, 트레일링 계열, Follow-Through Protect 계열, 그리고 나머지 예외적 종료들. 이 분류를 만들고 나서야 비로소 어떤 종류의 종료가 곡선을 만들고 있는지 한눈에 보이기 시작했다.

핵심은 청산 이유를 더 많이 나누는 게 아니었다.
“전략을 이해하는 데 필요한 수준”으로 다시 묶는 일이었다.

그다음은 tie라는 중간 지대를 만들었다

청산 그룹을 다시 묶고 나니 다음 문제가 보였다. 승리도 패배도 아닌데, 기존 표에서는 어쩔 수 없이 패배처럼 눌려 있던 거래들이다. gross 기준으로는 플러스였지만, fee 때문에 net 기준에서 아주 미세한 음수가 된 케이스들. 특히 보호성 종료에서는 이런 결과가 생각보다 자주 보였다.

이걸 무조건 패배로 두면 전략 해석이 어색해진다. 왜냐하면 이건 방향을 틀린 트레이드라기보다, “대부분의 손실을 막아낸 종료”에 더 가깝기 때문이다. 그래서 이 구간을 따로 떼어 `tie`라는 분류로 보기 시작했다. 완전한 승리도 아니고, 그렇다고 실질적인 패배라고만 하기도 애매한 종료들. 이 중간 지대를 만들고 나서야 결과표가 전략 의도와 조금 더 닮아가기 시작했다.

🟢 새 보고 체계

승패 구조

W / T / L

청산 사유

SL / MFE_R / TL / FTP / OTHER

의미

해석 가능성 상승

연속손실

맥락 반영

여기서 중요한 건, 이 작업이 전략 성과 자체를 바꾸지는 않았다는 점이다. 곡선이 갑자기 더 벌기 시작한 게 아니다. 대신 곡선을 읽는 방식이 훨씬 덜 왜곡되기 시작했다. 이 차이는 생각보다 크다. 전략을 개선하는 다음 단계가 훨씬 더 명확해지기 때문이다.

숫자는 그대로여도, 의미는 달라질 수 있다

보고 체계를 바꾸고 나서 가장 흥미로웠던 점은, 겉으로 보는 숫자보다 그 숫자의 해석이 훨씬 달라졌다는 것이다. 예를 들어 전체 수익, Sharpe, MDD 같은 금융 성과 지표는 그대로인데도, 승률과 손실 구간의 느낌은 전혀 다르게 읽히기 시작했다.

이전에는 하나의 패배처럼 보이던 트레이드들 사이에, 실제로는 거의 본전이거나 “잘 방어된 종료”에 가까운 케이스가 숨어 있었다. 이걸 tie로 분리하고, 청산 이유를 다시 묶고 나니, 손실이 어디에서 생기고 있는지 더 정확하게 드러났다. 전략은 그대로인데, 전략의 성격이 더 또렷하게 보이기 시작한 것이다.

🟢 tie-aware 결과 스냅샷

W / T / L

790 / 93 / 972

승률(무 포함)

47.60%

순승률

42.59%

최대 연속 손실

9

이 결과를 보고 든 생각은 단순했다. 전략을 바꾼 것만큼, 전략을 읽는 체계를 바꾸는 일도 중요하다. 좋은 로직을 만들고도 보고 체계가 그 차이를 못 드러내면, 결국 다시 잘못된 결론으로 돌아가기 쉽기 때문이다.

결국 이 작업은 보고서의 미관을 고친 게 아니었다

겉으로만 보면 이번 작업은 “리포트 형식을 조금 다듬은 일”처럼 보일 수도 있다. 하지만 실제로는 그보다 훨씬 컸다. 손실을 더 정교하게 읽을 수 있어야, 다음 실험도 더 정확하게 설계할 수 있기 때문이다. 어떤 종료가 줄어들어야 하는지, 어떤 보호 로직이 실제로 먹히는지, 어떤 구간에서 전략이 덜 흔들렸는지 모두 보고 체계 위에서 다시 보이기 시작했다.

그래서 이번 기록이 남긴 교훈은 꽤 분명하다.

  1. 좋은 전략은 좋은 결과표를 필요로 한다.
    결과를 제대로 읽지 못하면, 개선도 제대로 이어지지 않는다.
  2. 패배를 한 덩어리로 보면 놓치는 게 많다.
    손실의 성격을 나눠야 구조가 보인다.
  3. 보고 체계는 장식이 아니라 해석 도구다.
    전략이 좋아질수록, 리포트도 같이 정교해져야 한다.

다음 편에서 이어질 것

이제 전략 내부와 보고 체계는 어느 정도 맞춰졌다. 그런데 마지막으로 남은 큰 차이가 하나 있었다. 백테스트에서는 잡히던 장면이 라이브에서는 지나가고, 라이브에서 먼저 청산되면서 놓치는 진입이 생기는 구조적 차이였다. 결국 다음 기록은 전략 성과가 아니라, 백테스트와 라이브가 같은 언어를 쓰도록 맞추는 작업으로 이어지게 된다.

같은 봉 안에서 청산과 반대 엔트리가 겹치는 경우를 어떻게 다뤘는지, 왜 그 차이가 실제 운영에선 더 거슬렸는지, 그리고 결국 라이브 쪽을 어떻게 정리했는지를 다음 빌드로그에서 이어서 적어볼 생각이다.

마무리

전략 개발은 자꾸 새로운 로직을 붙이는 일처럼 느껴진다. 하지만 이번 작업이 보여준 건 조금 다른 방향이었다. 때로는 더 똑똑한 조건을 추가하는 것보다, 이미 나온 결과를 더 정확하게 읽는 체계를 만드는 일이 먼저일 수 있다.

이번 빌드로그에서 청산 체계 재분류와 tie-aware reporting은 단순한 리포트 개선이 아니었다. 전략을 다시 읽는 언어의 업데이트였고, 그 언어가 정리되고 나서야 다음 개선의 방향도 더 또렷해졌다. 곡선은 그대로인데, 그 곡선을 보는 눈이 달라진 셈이다.

KEEP READING ON GEONULAB

실전 기록과 개념 정리를 한 흐름으로 이어서 읽어보세요

빌드로그는 실제 작업 기록에, 퀀트지식은 개념 정리에 집중합니다. 처음 방문했다면 Start Here에서 읽는 순서를 먼저 잡는 걸 추천합니다.

최신 글 흐름은 피드에서도 확인할 수 있습니다.

Email Updates

빌드로그와 퀀트지식 새 글이 올라오면 메일로 보내드립니다.

🤞 GeonuLab 글을 메일로 받아보세요

We don’t spam! Read more in our privacy policy

추후 봇 트레이딩 입문 PDF 소식도 가장 먼저 안내드릴게요.

댓글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다