← All Collections
🎯 7 parts

Backtesting Without Fooling Yourself

A step-by-step path from what your backtest really optimizes to proving an edge survives overfitting, multiple testing, and live execution. Read top to bottom — each part builds on the last.

  1. 01
    목적함수 설계: 최적화하는 지표가 전략을 은밀하게 고른다
    Jul 2, 2026 #algotrading

    목적함수 설계: 최적화하는 지표가 전략을 은밀하게 고른다

    "최선"의 전략을 찾으려면 먼저 "최선"이 무엇인지부터 정의해야 합니다 — 그리고 그 스칼라가 은밀하게 승자를 결정합니다. 알려진 엣지를 가진 합성 데이터(600개 시드, T=2000, 80개 임계값)에서, 나이브한 거래당 샤프는 복권을 승자로 옹립합니다: 56%의 시드에서 노출도 5% 미만인 승자를 고르고 57%에서는 퇴화합니다 — 가장 극단적인 시드에서는 8건의 거래가 인샘플 샤프 21.09를 기록했다가 아웃오브샘플에서 0.13으로 무너집니다. 정직한 수리법은 거의 시시할 정도입니다: 전체 타임라인에서 측정하면 결코 퇴화하지 않습니다(아웃오브샘플 1.71). 거래 수(conf_k) 축소와 노출 하한선으로 거래당 지표를 사후 보강할 수 있지만, 완전히 수리해도 전체 타임라인 샤프와 같아질 뿐입니다(1.70 대 1.71) — 결코 그것을 넘어서지 못합니다. 굿하트의 법칙, 백테스트 안에서, 통제된 실측값과 함께.

  2. 02
    워크포워드 최적화: 유일하게 정직한 전략 테스트
    Mar 15, 2026 #algotrading

    워크포워드 최적화: 유일하게 정직한 전략 테스트

    단일 훈련/테스트 분할이 과적합을 방지하지 못하는 이유, 워크포워드 최적화가 파라미터 견고성을 체계적으로 검증하는 방법, 그리고 21개 파라미터에서 PnL@ML +3342%인 전략이 WFO 없이는 시한폭탄인 이유.

  3. 03
    플래토 분석: 견고한 최적해와 과적합을 구별하는 방법
    Mar 12, 2026 #algotrading

    플래토 분석: 견고한 최적해와 과적합을 구별하는 방법

    최적의 전략 파라미터를 찾는 것이 작업의 절반에 불과한 이유. 안정적인 플래토와 취약한 피크를 시각적·정량적으로 구별하는 방법, 그리고 Optuna 등고선 플롯이 최적화된 전략을 프로덕션에 투입하기 전 필수 단계인 이유.

  4. 04
    몬테카를로 부트스트랩: 10줄의 코드로 백테스트 신뢰구간을 얻는 방법
    Mar 6, 2026 #algotrading

    몬테카를로 부트스트랩: 10줄의 코드로 백테스트 신뢰구간을 얻는 방법

    백테스트의 단일 점추정이 왜 위험한 착각인지. 몬테카를로 부트스트랩이 2초의 계산으로 PnL과 MaxDD의 95% 신뢰구간을 제공하는 방법, 그리고 이것이 전략을 프로덕션에 배포하기 전에 필수적인 단계인 이유.

  5. 05
    백테스트 과적합 확률: 당신의 서치는 동전 던지기를 이겼는가?
    Jul 2, 2026 #algotrading

    백테스트 과적합 확률: 당신의 서치는 동전 던지기를 이겼는가?

    디플레이티드 샤프 비율은 승리한 전략의 값을 매기고, PBO는 그것을 골라낸 서치의 값을 매깁니다. 조합적 대칭 교차검증은 1000x200 성과 행렬에 대해 C(16,8) = 12,870번의 훈련/테스트 분할을 실행하고 묻습니다: 인샘플 승자가 아웃오브샘플에서 하위 절반에 떨어지는가? 거의 모두가 놓치는 함정 — PBO의 null은 1이 아니라 0.5입니다. 제로 엣지 전략 200개에서 최고 인샘플 연율화 샤프 1.98은 아웃오브샘플에서 0.06으로 무너지고 PBO = 0.476: 동전 던지기, 완전한 과적합입니다. 진짜 엣지(연율화 샤프 2.38)를 심으면 PBO는 0.001로 떨어지고, 인샘플 3.73은 아웃오브샘플 2.34로 살아남습니다. 순수한 랜덤 워크 위의 이동평균 그리드 역시 아웃오브샘플 스킬이 전혀 없습니다 — 60개 행렬에 걸쳐 평균낸 PBO 0.463은 통계적으로 null과 구별되지 않습니다 — 그리고 하나의 대표 행렬에서는 그 신기루가 생생합니다: 최고 인샘플 샤프 2.33이 아웃오브샘플 중앙값 -0.22로 무너지고, PBO 0.573, 손실 확률 63%.

  6. 06
    디플레이티드 샤프 비율: 백테스트 '승자' 중 다중 검정에서 살아남는 것은 몇 개인가?
    Jul 2, 2026 #algotrading

    디플레이티드 샤프 비율: 백테스트 '승자' 중 다중 검정에서 살아남는 것은 몇 개인가?

    파라미터 서치는 운을 제조하는 기계입니다. 순수한 노이즈에서 — 진짜 엣지가 전혀 없는 전략 1,000개 — 최고 연간 샤프는 평균 1.63이고, 나이브 유의성 검정은 100%의 확률로 발견을 선언합니다. 통제된 실측값을 구축하여 디플레이티드 샤프 비율, Harvey-Liu 헤어컷, White의 Reality Check가 정직함을 회복시킨다는 것을 보입니다: 거짓 발견은 1.000에서 0.001-0.057로 떨어지고, 노이즈 천장 위의 진짜 엣지는 검정력 ~1로 유지됩니다 — 그리고 상관된 그리드라는 하나의 진짜 함정에서는 raw DSR이 과잉 디플레이션을 일으키며, 판정은 하나가 아니라 유효 시행 수 추정치 전체 밴드에 걸쳐 읽어야 합니다.

  7. 07
    백테스트-라이브 일치성: 왜 당신의 봇은 백테스트와 다르게 거래하는가
    Mar 7, 2026 #algotrading

    백테스트-라이브 일치성: 왜 당신의 봇은 백테스트와 다르게 거래하는가

    백테스팅과 라이브 트레이딩 간의 괴리에 대한 완전한 분류 체계: 슬리피지와 부분 체결부터 코드베이스 비동기화까지. 일치성을 달성하기 위한 아키텍처 패턴, 공유 코어 모듈의 Python 예제, 프로덕션 모니터링 체크리스트.