← 블로그로 돌아가기
퀀트 개념

백테스트에서 실거래로: 우리가 실제로 돌리는 체크리스트

2026-08-15·PRUVIQ Research·5 분 소요

수익이 난 백테스트는 결정이 아니다. 지원서다. 실제 돈이 걸리기 전에 누군가는 그 지원서를 심사해야 한다 — 그런데 심사자가 파라미터를 튜닝한 바로 그 사람이고, 사전에 적어 둔 고정 기준마저 없다면, 그 심사는 보여주는 것마다 전부 통과시킨다.

PRUVIQ는 자기 프리셋에 대해 이 문제를 고정 배터리로 푼다: Verified 배지를 단 모든 프리셋은 다년 전체 백테스트 창에서 흑자(PF ≥ 1.05)여야 하고, out-of-sample에서 버텨야 하며, 라이브 엔진에서 3창 walk-forward까지 살아남아야 했다. 이 글은 그 배터리를 독자가 자기 전략에 돌릴 수 있는 체크리스트로 펼친다 — 그리고 어떤 단계를 제품이 대신 돌려 주고, 어떤 단계는 오직 독자만 할 수 있는지 정직하게 구분한다.

0단계: 비용부터, 아니면 나머지는 무의미

비용 없는 백테스트 위에서는 아래의 모든 점검이 무의미하다 — 대부분의 엣지를 죽이는 것이 바로 비용이기 때문이다. PRUVIQ 시뮬레이터의 모든 실행은 수수료·슬리피지·정산 이벤트 펀딩을 자동으로 부과한다 — 요율과 모델은 방법론 페이지에 문서화되어 있고, 펀딩 모델은 별도의 글로 다뤘다. 대부분의 백테스트가 바로 그 부분을 틀리기 때문이다. 당신의 백테스트가 현실적인 비용을 부과하지 않는다면, 이 목록의 어떤 항목을 돌리기 전에 그것부터 고쳐야 한다.

1단계: 기준선 — 전체 창에서, 여유를 두고 흑자

입장 요건은 좋았던 구간이 아니라 전체 창이다: 측정 범위의 모든 캔들 — 현재 2023년 말까지 거슬러 올라간다 — 에서 PF ≥ 1.05. 기준이 의도적으로 1.0보다 위에 있다 — 1.0은 손익분기점이고, 비용을 내고 겨우 비긴 전략에는 실거래가 시뮬레이션보다 나쁜 온갖 방식들에 대한 여유가 없다.

PRUVIQ가 하는 것: 모든 프리셋 카드는 수수료를 포함한 전체 창 결과를 보여주고, 손실이 난 프리셋도 지우는 대신 Killed 라벨로 공개한다. 독자가 하는 것: 실행하기 전에 자기 기준을 적어 둔다. 결과를 본 뒤에 고른 기준은 기준이 아니라 합리화다.

2단계: out-of-sample — 한 번도 건드리지 않은 홀드아웃

데이터를 나누고, 모든 튜닝 결정에서 홀드아웃을 격리한다. 배터리는 창의 최근 30%를 홀드아웃으로 떼는데, 그 기준은 의도적으로 비대칭이다: out-of-sample PF는 1.05를 넘어야 하고 in-sample은 1.0을 넘으면 된다 — 못 본 데이터 쪽이 더 엄격한 기준을 받는다. in-sample 성과는 부분적으로 튜닝의 산물이라 증명하는 바가 더 적기 때문이다.

PRUVIQ가 하는 것: 시뮬레이터 결과 패널에 검증 실행(Run Validation) 버튼이 있다 — 프리셋이든 직접 조립한 전략이든 — 지금 그 설정 그대로를 홀드아웃 분할(기본 30%)로 다시 돌려, in-sample과 out-of-sample 지표를 나란히 보여주고, 둘 사이의 성능 저하로부터 과적합 위험 등급을 보고한다. 독자가 하는 것: 홀드아웃을 보기 전에 파라미터를 동결한다. 도구는 데이터를 나눌 수 있지만, 당신이 이미 몇 번을 훔쳐봤는지는 알 수 없다. 정직한 홀드아웃은 기능이 아니라 규율이다.

3단계: walk-forward — 모든 창이 스스로 서야 한다

집계 숫자 하나는 한 국면에서 다 벌고 나머지 내내 피를 흘린 전략을 숨길 수 있다. 배터리는 전체 데이터 범위를 달력 기준 3개 창으로 자르고 창이 홀로 서기를 요구한다: 창마다 PF ≥ 1.0, 그리고 거래 최소 30건. 실패한 창은 실패다. 판정하기에 너무 얇은 창 역시 실패다 — «점검할 데이터가 부족함»은 결코 통과로 치지 않는다.

PRUVIQ가 하는 것: 이 배터리는 라이브 엔진을 상대로 서버에서 돌고, 창별 숫자 — 날짜, PF, 거래 수 — 는 각 verified 전략 페이지의 검증 기록(dossier)로 공개된다. 배지가 증거 없는 주장으로 홀로 다니는 일이 없도록. 정직 공시: 시뮬레이터 UI에 원클릭 walk-forward 버튼은 없다. 독자가 하는 것: 시뮬레이터의 테스트 기간(Test Period) 날짜 컨트롤로 어떤 창이든 직접 재현한다 — 시작일과 종료일을 한 구간으로 잡고, 돌리고, 반복한다. 세 번의 실행은 한-국면 반짝 전략에 대한 값싼 보험이다.

4단계: 순서 — 거래를 섞어 본다

당신의 에쿼티 커브는 당신에게 우연히 떨어진 거래들에서 나온 한 번의 추첨일 뿐이다. 같은 검증 실행 패널이 Monte Carlo 패스도 돌린다 — 기본값으로, 거래 손익을 복원추출로 리샘플하는 부트스트랩 재실행 1,000회 — 그리고 5–95 백분위 구간, 흑자로 끝날 확률, 재실행들 전체의 최악 낙폭을 보고한다. (섞기가 아니라 리샘플이다: 순수한 재배열이면 최종 수익률이 고정되는데, 요점은 결과가 얼마나 달라질 수 있었는지를 보는 것이다.) 패널은 자기 한계도 명시한다: 과거 거래 분포가 반복된다고 가정하며, 실제 시장은 그럴 의무가 없다.

독자가 하는 것: 평균이 아니라 비관적 밴드를 읽는다. 5번째 백분위수가 전략을 포기하게 만들 수준이라면, 실거래에서 분산이 처음 당신에게 불리하게 흐르는 순간 포기하게 된다.

5단계: 표본 크기와 선택 편향

위의 모든 점검을 통과하고도 살아남는 함정이 둘 있다: 너무 적은 거래로 만든 비율 지표, 그리고 여러 번 시도한 것 중 최고를 고르는 것. 둘 다 — low-sample 플래그와 Deflated Sharpe Ratio — 샤프, 소르티노, 최대 낙폭 읽는 법에서 다뤘다. 이 체크리스트는 그 두 렌즈를 낀 채로 돌려야 한다.

6단계: 실패가 무엇을 뜻하는지 — 돌리기 전에 정한다

대부분의 체크리스트가 빠뜨리는 단계다. 우리 배터리는 라이브 API를 상대로 일정에 따라 재실행되는데, 기준 미달은 공개된 증거를 조용히 갱신하지 못한다: 미달 수치는 검증 기록에 기록되지 않고, 실행은 빨간불이 되며, 배터리 실패 시 배지 강등은 그 실패를 들여다본 사람이 내리는 결정이다. 더 엄격한 자동 경로도 따로 있다: 별도의 일일 작업이 모든 카드를 재측정하고, verified 프리셋의 전체 창 PF가 1.05 게이트 아래로 내려가면 배지가 자동으로 떨어진다. 어느 쪽이든, 나쁜 숫자에 초록색 옷을 입히는 일은 결코 없다.

독자가 하는 것: 그것의 개인 버전. 점검을 돌리기 전에, 실패하면 어떻게 할지 — 중단, 처음부터 재튜닝, 보류 — 를 적어 둔다. 실패한 뒤에 정하는 방식이 실패를 각주로 만드는 방식이다.

통과가 뜻하는 것 — 그리고 뜻하지 않는 것

모든 항목의 통과는 재현성 진술이지 예언이 아니다. 우리 자신의 정의가 그것을 직접 말한다: verified는 재현 가능한 결과이지, 실거래 투입 판정이 아니다. 그리고 방법론 페이지의 면책 문구가 이 체크리스트 전체에 적용된다: 과거 성과는 미래 결과를 보장하지 않는다 — 백테스트는 시뮬레이션이지 예측이 아니다. 배지 트랙은 거기서 끝난다: 배터리 통과는 배지와 공개 검증 기록을 얻는 것, 그 이상이 아니다. 별도의 실자금 리서치 트랙에서는 통과한 백테스트가 페이퍼 포워드 테스트의 자격일 뿐, 결코 바로 사이즈 확대가 아니다 — 그 단계는 실제 돈을 걸기 전에 우리가 검증하는 것에 적어 두었다.

이 체크리스트를 몸에 붙이는 가장 빠른 방법은 실제 전략에 한 번 돌려 보는 것이다: 시뮬레이터를 열고, 아무 프리셋이나 — verified든 killed든 — 불러서 검증 실행을 눌러 보라. 헤드라인 숫자와 배터리에서 살아남는 것 사이의 간극이 교훈의 전부다.

공유하기

InstagramLinkedIn

직접 전략을 테스트해보세요

320개 이상 코인에서 트레이딩 전략을 시뮬레이션하세요. 무료.