Northmark
forex-strategy
7 분 분량

제 거래 시스템은 승률 73.5%인데 손실을 봅니다: 16년 백테스트 감사

실제 FX 시스템에 대한 16년 감사: 승률 73.5%, -4,670핍. 스프레드 지오메트리 버그, 손익분기 승률 함정, 그리고 파라미터 표면이 순수한 노이즈임을 증명하는 순위 상관 검정.

팩트체크 완료 · 최종 확인 2026년 7월 20일
Need specific ticker symbols? Let me know!

Also, check out my website: https://volatilitystreet.com/
Photo by Tyler Prahm on Unsplash

저는 16 년 이상의 히스토리를 보유한 제가 구축한 실시간 FX 시스템을 며칠 동안 감사했습니다. 그 결과는 제가 예상하지 못했던 방식으로 부정적이었으며, 이를 발견한 진단 방법은 거래뿐만 아니라 모든 파라미터 검색에 적용될 만큼 일반적이어서 기록할 가치가 있습니다.

아래의 모든 수치는 실제 측정된 실행 결과에서 나온 것입니다. 어떠한 것도 예시를 위한 것이 아닙니다.

설정

17 가지 구성, 4 시간봉 진입, 1 시간봉으로 종료 시뮬레이션, 기간은 2010 년 5 월 28 일부터 2026 년 7 월 8 일까지, 총 7,641 건의 거래. 중요한 점은 라이브 데이터 피드 대신 수정되지 않은 프로덕션 함수에 역사적 CSV 데이터를 입력했다는 것입니다. 따라서 테스트된 코드 경로는 실제 운영 환경에서 실행되는 코드 경로와 동일합니다.

버그 1: 시뮬레이션이 비용을 잘못된 곳에 차감함

플랫폼의 OHLC 바는 매도 (BID) 가격입니다. 백테스트는 바 종가에 진입 주문을 넣고, 테이크프로핏과 스탑로스를 종가 ± n·ATR 위치에 설정한 뒤, 매도 고가와 저가 대비 접촉 여부를 확인하고 최종 손익 (P&L) 에서 스프레드를 차감하는 방식으로 진행되었습니다.

실제 매매에서는 롱 포지션이 매수 (ASK) 가격에 체결되고, 브래킷 주문은 해당 매수 가격을 기준으로 설정되며, 청산은 매도 (BID) 가격에 이루어집니다. 따라서 실제 환경에서는 목표가에 도달하려면 스프레드만큼 가격이 추가로 이동해야 하며, 스탑로스에는 스프레드만큼 더 빨리 도달하게 됩니다.

결과에서 비용을 차감하는 것은 비용을 트리거에 부과하는 것과 동일하지 않습니다. 전자는 수익 규모만 변경하지만, 후자는 어떤 거래가 승리가 되는지 자체를 바꿉니다.

측정 결과: 승률 기준 2~5% 포인트의 차이가 항상 불리하게 작용했습니다.

이 원칙은 트레이딩을 넘어 일반화할 수 있습니다. 시뮬레이션에서 비용을 사후 조정으로 적용하고 이를 발생시키는 메커니즘을 모델링하지 않으면, 단순히 총계뿐만 아니라 이벤트 카운트 자체가 틀리게 됩니다.

버그 2: 승률은 설계상의 선택이지 증거가 아님

목표가는 0.5–0.8×ATR, 손절매는 1.5–2.0×ATR 로 설정되었습니다. 이는 수익:위험 비율이 0.25–0.4 임을 의미하며, 산술적으로 손익분기점 승률이 다음과 같이 고정됩니다:

손익분기점 승률 = SL / (TP + SL) = 75–82%

아웃오브샘플 (walk-forward 테스트 구간만 사용) 결과: 총 4,947 건 거래, 승률 73.5%, -4,669.9 pip, 거래당 평균 -0.944 pip.

승률 73.5% 에도 불구하고 손실이 발생한 것은 모순이 아닙니다. 작은 목표가는 자주 달성되기 마련입니다. 그것이 작은 목표가의 특성입니다. 높은 승률은 승리 규모보다 4 배 큰 손실을 감수함으로써 얻어진 것이며, 이는 결코 우월성 (edge) 을 증명하는 근거가 될 수 없었습니다.

훔쳐갈 만한 진단법

무엇을 재최적화하기 전에, 저는 모수 표면이 전혀 학습 가능한지 여부부터 질문했습니다.

각 워드포워드 폴드에 대해: 훈련 구간과 테스트 구간에서 전체 모수 그리드를 평가한 후, 두 결과 간의 스피어만 순위 상관관계 (Spearman rank correlation) 를 계산합니다.

if rho > 0  -> 훈련 순위가 테스트 순위를 예측함; 선택이 의미 있음
if rho ~ 0  -> 표면이 잡음임; 어떤 선택 규칙도 도움이 될 수 없음

두 번째 줄이 바로 가치 있는 부분입니다. 이는 *"내 최적화기가 나쁘다"*는 상황과 *"여기에 아무것도 없다"*는 상황을 구분해 줍니다. 밖에서 보기에는 이 두 상황이 똑같아 보이지만, 실제로는 정반대의 대응을 요구합니다.

119 개 폴드에 걸친 결과는 다음과 같습니다:

  • 중앙값 rho: -0.024
  • 평균 rho: -0.030, 95% 신뢰구간 [-0.090, +0.030] — 0 을 포함함
  • rho > 0 인 폴드: 47.9% — 동전 던지기 수준

정보량이 제로입니다. 이와 일관되게, 평탄화 스무딩 (plateau smoothing) 을 적용한 워드포워드 최적화는 제가 전혀 건드리지 않았던 모수보다 더 나쁜 샘플 외 (out-of-sample) 결과를 산출했으며, 17 개 구성 중 11 개에서 그리드 경계를 선택했습니다. 이는 최적화기가 붙잡을 것이 아무것도 없을 때 나타나는 전형적인 징후입니다.

그런 다음 효과가 어디에 존재하는지 확인했습니다

38 개 종목, 중복되지 않는 보유 기간, 변동성 조정, 자산 클래스별로 풀링하여 1,140 개의 테스트를 6 개로 축약하고 전반기와 후반기로 분할한 결과는 다음과 같습니다.

자산 클래스Sharpe @0bp손익분기점 비용전반기후반기안정성
FX major+0.083bp+0.06-0.09no
FX cross+0.021bp-0.05-0.06no
Index+0.075bp+0.04+0.02yes
Metal+0.1212bp+0.13+0.03yes
Energy+0.1323bp+0.15-0.02no
Crypto+0.42100bp+0.54+0.15yes

제가 예상하지 못했던 두 가지 사실이 있습니다.

손익분기점 거래 비용이 샤프 지수 (Sharpe) 보다 의사 결정에 더 유용합니다. FX major 는 약 3bp 에서, FX cross 는 약 1bp 에서 손익분기점에 도달하는데, 이는 둘 다 실제 스프레드보다 낮은 수치입니다. "여기에 우위가 있는가?"라는 질문은 어떤 전략 코드도 작성하기 전에 이미 결론이 난 셈입니다.

통계적으로 유의미했던 결과는 가짜였습니다. 에너지 (Energy) 섹터는 전체 샘플에서 t = 3.73 을 기록했습니다. 그러나 후반기에는 보합이거나 마이너스를 나타냈습니다. 기간을 분할하지 않았다면 표에서 가장 강력한 발견으로 보였을 것입니다.

암호화폐 (Crypto) 만이 유일하게 생존했으나 급격히 감소했습니다 (0.54 에서 0.15 로). 현실적인 CFD 스프레드를 적용하면 후반기에는 마이너스로 전환됩니다. 이는 현재의 효과가 아니라 과거의 효과일 뿐입니다.

실제 교훈

전략을 구축하기 전에 먼저 반증 장치를 마련하십시오.

긴 일련의 설정들이 "검증된" 것처럼 보였던 이유는 파이프라인의 어떤 구성 요소도 여기에는 아무것도 없다고 말할 임무를 부여받지 않았기 때문입니다. 모든 부분이 무언가를 찾도록 설계되었으므로, 매번 무언가를 찾아낸 것입니다.

위에서 수행한 순위 상관관계 검사는 단 오후 만에 수개월에 걸친 파라미터 작업을 무효화했으며, 제가 가장 확신을 가지고 있던 유력한 후보마저도 배제했습니다. 이것이 바로 해당 검사의 본연의 역할이며, 오랫동안 연구 프로세스에 도입한 비용 대비 효과가 가장 뛰어난 안전장치입니다.


본 문서는 연구 자료일 뿐 투자 조언이 아닙니다. 과거 성과가 미래 결과를 보장하지는 않습니다. CFD 거래는 높은 손실 위험을 수반합니다.


*사진 제공: Tyler Prahm (Unsplash)


Photo by Tyler Prahm on Unsplash

태그
#백테스트 과최적화#워크 포워드 검증#손익분기 승률#시계열 모멘텀#거래 시스템 감사

관련 기사