NOONOO TRADING봇에서 시작하기

디플레이티드 샤프 비율 — 백테스트 여러 개 중 1등의 샤프를 깎아서 보는 법

파라미터를 바꿔 가며 백테스트를 100번 돌리고 샤프 비율이 가장 높은 하나를 고르면, 그 숫자는 실력과 운이 섞인 값입니다. 전략이 전부 쓸모없어도 100개 중 1등은 꽤 그럴듯한 샤프를 냅니다. 디플레이티드 샤프 비율(Deflated Sharpe Ratio, DSR)은 시도 횟수만큼 기준선을 올려서, 그 1등이 운의 범위를 넘었는지를 확률로 답합니다.

왜 샤프 비율을 깎아야 하나

샤프 비율은 변동성 대비 수익을 하나의 숫자로 보여 줍니다. 문제는 이 숫자가 추정치라는 점입니다. 같은 전략이라도 어떤 1년을 잘라 보느냐에 따라 샤프는 위아래로 흔들립니다. 하나의 전략만 검증했다면 그 흔들림만 감안하면 됩니다.

그런데 실제 개발 과정은 대부분 이렇지 않습니다. 이동평균 기간을 10, 20, 50으로 바꾸고, 손절폭을 1%, 2%, 3%로 바꾸고, 코인을 바꿔 가며 수십~수백 번을 돌립니다. 그리고 결과가 가장 좋은 것을 남깁니다. 이렇게 고른 1등의 샤프는 체계적으로 위로 치우칩니다. 이 현상은 다중검정의 함정과 같은 뿌리이고, 결과적으로 과최적화된 전략이 실전에서 무너지는 대표적인 경로입니다.

DSR은 이 치우침을 두 단계로 보정합니다. 첫째, 샤프 추정치 자체의 불확실성을 반영한 확률적 샤프 비율(PSR)을 계산합니다. 둘째, 그 PSR의 기준선을 0이 아니라 "시도 횟수만큼 돌렸을 때 운만으로 나올 최고 샤프"로 올립니다.

1단계 — 확률적 샤프 비율(PSR)

PSR은 "관측한 샤프가 기준 샤프 SR*보다 진짜로 높을 확률"입니다. 식은 다음과 같습니다.

PSR 공식

PSR = Φ( (SR − SR*) × √(T − 1) ÷ √(1 − γ₃·SR + (γ₄ − 1)/4 · SR²) )

SR  = 관측한 샤프 (기간 단위, 예: 일간)
SR* = 비교할 기준 샤프
T   = 관측 개수 (예: 일수)
γ₃ = 수익률 왜도, γ₄ = 수익률 첨도 (정규분포는 0, 3)
Φ  = 표준정규 누적분포

주의할 점은 SR과 T의 단위를 맞추는 것입니다. 일간 수익률로 계산한 일간 샤프와 일수를 넣어야 합니다. 연환산 샤프를 그대로 넣으면 결과가 크게 틀립니다.

PSR 계산 예시 (가정)

일간 샤프 SR = 0.10 (코인 365일 기준 연환산 약 1.91)
관측 기간 T = 365일
기준 SR* = 0, 수익률은 정규분포로 가정 (γ₃ = 0, γ₄ = 3)

분자 = 0.10 × √364 = 0.10 × 19.079 = 1.908
분모 = √(1 + 2/4 × 0.01) = √1.005 = 1.0025
z = 1.908 ÷ 1.0025 = 1.903

PSR = Φ(1.903) = 97.1%

─────────────
전략이 이것 하나뿐이었다면 "샤프가 0보다 크다"는 데 꽤 확신할 수 있다

2단계 — 운만으로 기대되는 최고 샤프

이제 같은 결과를 "100개를 돌려서 1등을 고른 것"이라고 가정해 봅니다. 진짜 샤프가 전부 0인 전략 100개를 1년씩 백테스트하면, 각 결과의 샤프는 0 근처에서 흩어집니다. 일간 샤프 추정치의 표준편차는 대략 1/√T = 1/√365 = 0.0523입니다. 100개 중 최댓값은 0보다 한참 위에 있습니다.

그 기대값의 근사식은 다음과 같습니다. γ는 오일러-마스케로니 상수(약 0.5772)입니다.

시도 N회일 때 기대 최고 샤프

E[max SR] ≈ √V × ( (1 − γ)·Φ⁻¹(1 − 1/N) + γ·Φ⁻¹(1 − 1/(N·e)) )

V = 시도한 전략들의 샤프 추정치 분산

N = 100, √V = 0.0523 일 때
 Φ⁻¹(0.99) = 2.326, Φ⁻¹(0.99632) = 2.680
 0.4228 × 2.326 + 0.5772 × 2.680 = 0.984 + 1.547 = 2.531
 E[max SR] = 0.0523 × 2.531 = 0.1325 (연환산 약 2.53)

─────────────
쓸모없는 전략 100개 중 1등이 연 샤프 2.5를 낸다

관측한 일간 샤프 0.10은 운만으로 기대되는 0.1325보다 낮습니다. 다시 말해 100번을 시도했다면, 연 샤프 1.91은 전혀 특별한 숫자가 아닙니다.

DSR = 기준선을 올린 PSR

DSR은 PSR 공식에서 SR*를 0 대신 E[max SR]로 바꾼 값입니다. 같은 결과를 시도 횟수별로 계산하면 다음과 같습니다.

같은 일간 샤프 0.10 · 365일 · 시도 횟수별 (가정)

시도 1회    기준 0          → PSR 97.1%
시도 10회   기준 0.0824 (연 1.58) → DSR 63.1%
시도 50회   기준 0.1192 (연 2.28) → DSR 35.8%
시도 100회  기준 0.1325 (연 2.53) → DSR 26.8%
시도 1000회 기준 0.1704 (연 3.26) → DSR 9.0%

시도 100회 계산
 z = (0.10 − 0.1325) × 19.079 ÷ 1.0025 = −0.618
 Φ(−0.618) = 26.8%

─────────────
숫자는 같고, 몇 번 시도했는지만 다르다

일반적으로 DSR 95% 이상을 통과 기준으로 씁니다. 위 예시는 시도 10회만 돼도 기준에 못 미칩니다. 연 샤프 1.91이 나쁜 숫자여서가 아니라, 1년이라는 짧은 기간과 여러 번의 시도가 겹치면 그 정도 숫자는 운으로 충분히 설명되기 때문입니다.

두꺼운 꼬리는 기준을 더 높인다

코인 수익률은 정규분포가 아닙니다. 급락이 정규분포 가정보다 훨씬 자주 나오는 두꺼운 꼬리를 가집니다. PSR 분모의 왜도·첨도 항이 이 점을 반영합니다. 왜도가 음수이고 첨도가 클수록 분모가 커져서 확률이 내려갑니다.

왜도 −1, 첨도 6 으로 바꾸면 (가정)

분모 = √(1 − (−1)×0.10 + (6−1)/4 × 0.01)
     = √(1 + 0.10 + 0.0125) = √1.1125 = 1.0548

정규 가정 분모 1.0025 → 두꺼운 꼬리 1.0548

PSR (기준 0)  97.1% → 96.5%
DSR (시도 10회) 63.1% → 62.5%

이 예시에서는 차이가 작습니다. 샤프가 작을수록 왜도·첨도 항의 영향이 작기 때문입니다. 다만 손절 없이 작은 이익을 자주 내다가 가끔 크게 잃는 전략은 왜도가 −1보다 훨씬 나쁜 경우가 많고, 그럴 때는 보정 폭이 커집니다. 샤프만 보고 이런 전략을 고르면 꼬리 위험을 통째로 놓칩니다.

최소 검증 기간 — 얼마나 오래 봐야 하나

같은 식을 거꾸로 풀면 "이 샤프를 믿으려면 최소 며칠의 기록이 필요한가"가 나옵니다. 최소 검증 기간(Minimum Track Record Length)입니다.

최소 검증 기간 (가정 · 신뢰 95% · 기준 SR* = 0)

MinTRL = 1 + (1 − γ₃·SR + (γ₄−1)/4·SR²) × (Φ⁻¹(0.95) ÷ (SR − SR*))²

일간 샤프 0.10, 정규분포
 1 + 1.005 × (1.645 ÷ 0.10)² = 약 273일

일간 샤프 0.10, 왜도 −1 · 첨도 6
 1 + 1.1125 × (1.645 ÷ 0.10)² = 약 302일

─────────────
시도 1회 · 기준 0 이라는 가장 너그러운 조건에서도 9~10개월

여러 번 시도했다면 SR* 자리에 E[max SR]이 들어가고, SR − SR*가 작아지거나 음수가 되면서 필요한 기간이 급격히 늘어납니다. 위 예시처럼 관측 샤프가 기대 최고 샤프보다 낮다면, 기간을 아무리 늘려도 그 결과만으로는 통과할 수 없습니다.

실무에서 쓰는 순서

  1. 시도 횟수를 전부 기록한다. 결과가 나빠서 버린 파라미터 조합도 셉니다. 버린 시도를 빼면 N이 작아져 DSR이 부풀려집니다. 기록이 없으면 DSR은 계산할 수 없습니다.
  2. 상관된 시도는 묶어서 센다. 이동평균 20일과 21일은 사실상 같은 전략입니다. 서로 비슷한 시도를 각각 세면 N이 과대평가되고, 반대로 전부 하나로 치면 과소평가됩니다. 결과 상관이 높은 묶음을 하나로 보는 방식이 현실적입니다.
  3. V는 실제 시도 결과에서 구한다. 위 예시는 이해를 돕기 위해 1/T로 근사했습니다. 실제로는 시도한 전략들의 샤프를 모아 그 분산을 씁니다.
  4. DSR은 마지막 검증을 대체하지 않는다. DSR은 "선택의 운"을 보정할 뿐, 미래 구간에서의 성과를 보여 주지 않습니다. 고른 전략은 홀드아웃 구간이나 워크포워드 분석으로 한 번 더 확인합니다. 거래 단위 성적의 불확실성은 블록 부트스트랩으로 따로 볼 수 있습니다.

흔한 오해

  1. "샤프 2가 넘으면 좋은 전략이다." 몇 번 시도해서 나온 2인지, 몇 년 기록인지가 빠진 샤프는 판단 근거가 되지 않습니다. 위 예시에서 시도 100회의 운 기준선이 연 2.53이었습니다.
  2. "백테스트 기간을 늘리면 해결된다." 기간이 길어지면 샤프 추정치의 흔들림(√V)이 줄어 기준선이 내려가는 것은 맞습니다. 하지만 시도 횟수 N은 그대로 남아 있습니다. 기간과 시도 횟수를 함께 봐야 합니다.
  3. "DSR이 낮으면 전략이 틀렸다." DSR이 낮다는 것은 "이 증거로는 운과 구분이 안 된다"는 뜻이지, 전략이 손실을 낸다는 뜻이 아닙니다. 판정을 보류하고 더 긴 기록이나 새 구간이 필요하다는 신호입니다.

정리

① 여러 개 중 고른 1등의 샤프는 위로 치우친다
② PSR = 관측 샤프가 기준보다 진짜 높을 확률
③ SR과 T는 같은 단위(예: 일간 샤프 · 일수)로 넣는다
④ 쓸모없는 전략 100개 중 1등도 연 샤프 약 2.5를 낸다 (예시)
⑤ DSR = 기준을 "운으로 기대되는 최고 샤프"로 올린 PSR
⑥ 같은 연 1.91: 시도 1회 97.1% → 100회 26.8% (예시)
⑦ 음의 왜도·높은 첨도는 확률을 더 낮춘다
⑧ 최소 검증 기간: 가장 너그러운 조건에서도 약 273~302일 (예시)
⑨ 버린 시도까지 전부 세야 DSR이 의미가 있다
⑩ DSR 통과 후에도 홀드아웃 · 워크포워드 검증은 따로 한다

한 줄로 줄이면 이렇습니다. 샤프 비율은 숫자 하나가 아니라 "몇 번 시도해서 얼마 동안 본 숫자인가"까지 함께 읽어야 합니다.

주의

본문의 일간 샤프 0.10, 연환산 1.91, 관측 기간 365일, 시도 횟수 10·50·100·1000회, 왜도 −1·첨도 6, PSR 97.1%·96.5%, DSR 63.1%·35.8%·26.8%·9.0%·62.5%, 최소 검증 기간 273일·302일 등 모든 숫자는 계산 방식을 설명하기 위한 가정 예시이며 특정 전략·특정 계좌의 실제 측정값이 아닙니다. 기대 최고 샤프는 근사식이고, 샤프 추정치 분산을 1/T로 단순화했습니다. 실제 적용 시에는 시도 결과에서 구한 분산과 상관을 반영한 유효 시도 횟수를 써야 하며, 수수료와 슬리피지도 별도로 반영해야 합니다. DSR은 통계적 검증 도구이며 수익을 보장하지 않습니다. 이 글은 교육 정보이며 특정 종목의 매수·매도 권유나 특정 수익을 보장하는 내용이 아닙니다. 레버리지 거래는 원금 손실 위험이 있고, 매매 판단과 그 결과는 본인 책임입니다.

NOONOO TRADING 무료 채팅방에서 실시간 트레이딩을 같이 보세요.

봇에서 시작하기

📈 OKX 신규 가입 시 거래 수수료 할인

OKX 수수료 할인 가입 →