← 빌드 일지
프로젝트2026-04-27·5분 읽기

정정 — 어제 일지의 숫자가 다른 베이스라인 위에 있었다

어제 발표한 V4.3.1 백테 일지에 데이터 출처 오류가 있었습니다. 'V4.3.1 7일 +$0.601'이라고 적힌 숫자는 실제로는 V4.4 (ADX 필터가 이미 적용된) 결과였습니다. Build in Public이 의미하는 게 이런 정정도 함께 공개하는 것이라 생각해서 적습니다.

무엇이 잘못됐는가

어제 일지에서 V4.3.1 7일 백테 결과를 "108건 거래, WR 64.8%, PnL +$0.601, PF 1.20"으로 적었습니다. 이 숫자는 실제로는 V4.4 (ADX 25+ 필터 적용된 버전) 의 결과였습니다.

원인: 백테 엔진 (BACKTEST_V4_3.py)에 ADX_MIN = 25 조건이 이미 들어가 있었습니다. 우리는 그 위에서 V4.3.1이라는 이름표를 달고 결과를 받았습니다. ADX 필터에 의해 51건이 진입 차단된 상태로 108건만 남은 것을 "V4.3.1의 자연스러운 결과"로 해석했습니다.

진짜 V4.3.1 (ADX 필터 OFF)

윈도우거래 수WRNet PnLPF
7일15961.0%+$0.7851.18
30일41641.8%-$3.6260.65

V4.4 (ADX 필터 ON, 어제 V4.3.1로 잘못 부른 숫자)

윈도우거래 수WRNet PnLPF
7일10864.8%+$0.6011.20
30일23946.4%-$1.6490.74

무엇이 영향을 받는가

어제 일지의 결론들은 ADX 필터가 이미 적용된 데이터 위에서 내려진 것이었습니다. 즉:

  1. "7일 +$0.601 vs 30일 -$1.65" 비교 — 이건 ADX 적용된 V4.4의 양쪽 윈도우 비교였습니다. 진짜 V4.3.1은 7일 +$0.785 vs 30일 -$3.626. 7일에서 더 좋고 30일에서 더 나빴습니다.

  2. "Trail 0.8% Sweet Spot" — Grid Search가 ADX 적용된 데이터로 실행됐습니다. 진짜 V4.3.1 (ADX off)에서 sweet spot이 정말 0.80%인지, 아니면 다른 값인지 다시 봐야 합니다.

  3. "HYPER 제거 결정" — HYPER가 6개 백테에서 PnL -$0.145 한 자리도 안 변했다는 발견도 ADX-on 데이터 기반이었습니다. ADX 없이 보면 어떨지 재검증 필요.

  4. "30일 학살, ORCA만 흑자" — 종목별 분석도 ADX 필터 거른 거래만 본 것. ADX 적용 안 된 진짜 V4.3.1 30일 종목별 분포가 다를 수 있습니다.

그래도 살아남는 결론들

전부 무효는 아닙니다. 다음 결론은 데이터 정정 후에도 유효합니다:

  1. "한 번에 변수 1개" 원칙은 옳다 — V4.2 → V4.3 → V4.3.1 진행이 단일 변수씩이었기 때문에 이 데이터 오류를 발견할 수 있었습니다. 만약 V3.8.0처럼 9개 변수를 한꺼번에 바꿨다면 어디서 문제가 났는지 분리 불가능했을 것.

  2. 백테 윈도우는 7일 단독으로 결정 근거가 될 수 없다 — V4.3.1이든 V4.4든, 7일과 30일이 다른 그림을 그리고 있습니다. 표본 크기와 시장 regime 모두 영향.

  3. 종목별 PF가 Trail 파라미터보다 더 큰 결정 요인이다 — V4.4 30일에서도 ORCA만 +$0.236, KAT는 -$1.509. 어떤 Trail 값이든 KAT은 30일 손실 종목.

  4. ADX 필터는 손실 55% 줄였다 (방어 효과 확실) — V4.3.1 30일 -$3.626 → V4.4 30일 -$1.649. 흑자 전환은 못 시켰지만 손실의 절반 이상을 차단. ADX는 필요 조건 (충분 조건 아님).

새로 발견한 것 — ADX 30+ 손실 40.9%

데이터 정정 작업 중에 추가로 발견했습니다.

KAT/AXS 30일 손실 거래 203건의 진입 시점 ADX 분포:

ADX 구간비율의미
ADX < 2551.2%휩쏘 — ADX 25+ 필터로 차단됨
ADX 25~307.9%경계 영역
ADX 30+40.9%추세 강한데 손실

ADX 25+ 필터로 차단되는 51.2%는 위안이 됩니다. 하지만 ADX 30+에서도 40.9%가 손실 입니다. 이게 의미하는 게 뭔가:

ADX는 추세 강도만 측정하고 추세 방향은 측정하지 않습니다. 강한 하락 추세에서도 ADX는 30+가 나옵니다. 우리 봇은 그 강한 하락 추세에 매수로 진입하고 있었던 것.

해결책은 표준 — DI+ vs DI- 비교. 진정한 모멘텀 진입 조건은:

  • ADX > 25 (추세 강함)
  • DI+ > DI- (상승 추세)
  • 둘 다 만족

V4.4 (지금)는 1번만 체크하고 있었습니다. ADX 30+ 손실 40.9%의 정체는 "강한 하락추세에 매수 진입한 거래들". 이게 다음 PoC에서 정조준할 변수입니다.

다음 단계

  1. 진짜 V4.3.1 (ADX off) Grid Search 재실행 — 0.7~1.0% 7일 + 30일, HYPER 포함. 정정된 baseline 위에서 sweet spot/HYPER 결정 재검증.

  2. V4.4.1 PoC — DI+ > DI- 방향성 단독 추가 — V4.4 베이스에 ADX 코드 한 부분만 보강. ADX 30+ 손실 40.9%가 V4.4.1에서 어떻게 변하는지 확인.

  3. ORCA-only Paper Mode 100건 — V4.4 베이스로 즉시 가동. 백테-라이브 괴리 측정. 30일 ORCA +$0.236이 paper에서 비슷한 비율로 나오는지.

세 작업 모두 병렬 진행 중입니다. 결과는 다음 일지에서.

Build in Public이 의미하는 것

어제 일지에 잘못된 숫자를 적은 채로 두는 것도 한 옵션이었습니다. "V4.3.1 7일 +$0.601" 표기가 사실 V4.4 결과였다는 걸 조용히 다음 글에서 슬쩍 정정하는 것도 가능했습니다. 아무도 두 일지를 비교해서 "이상한데?"라고 잡아낼 가능성은 낮습니다.

하지만 그렇게 하면 일지 자체가 의미가 없어집니다. 빌드 인 퍼블릭의 핵심은 결정의 시점에 무엇을 알고 있었고, 나중에 무엇이 틀렸음을 알게 됐는지 같이 공개하는 것입니다. 정정 없는 빌드 인 퍼블릭은 그냥 "잘 된 부분만 보여주는 회고"입니다.

이 글이 그 정정입니다. 어제 일지의 결론 일부는 살아있고, 일부는 재검증이 필요합니다. 다음 PoC 결과로 어느 쪽인지 확인합니다.

Wildeconforce

매일 만들고, 매일 분석하고, 매일 기록합니다.
© 2026 wildeconforce · build-in-public

이 사이트는 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.