NOONOO TRADING무료 채팅방 입장

전략이 죽었나, 그냥 슬럼프인가 — 알파 감쇠(Strategy Decay) 판별법

백테스트가 좋았고 실전에서도 몇 달 잘 돌던 전략이 어느 순간 안 맞기 시작합니다. 여기서 두 가지 선택지가 있습니다. 계속 돌린다, 혹은 끈다. 둘 다 틀릴 수 있습니다. 멀쩡한 전략을 부진 구간에서 끄면 회복 구간을 통째로 놓치고, 이미 죽은 전략을 붙들고 있으면 계좌가 계속 깎입니다. 이 글은 "부진"과 "수명 종료"를 감이 아니라 숫자로 구분하는 절차를 다룹니다.

문제의 정의 — 부진은 정상 작동의 일부다

수익이 나는 전략도 지는 구간이 있습니다. 이건 고장이 아니라 설계의 일부입니다. 그래서 "요즘 안 맞는다"는 관찰만으로는 아무것도 결정할 수 없습니다. 필요한 것은 지금 성적이 원래 전략의 정상 변동 범위 안인지 밖인지를 재는 자입니다.

그 자를 만들려면 두 숫자가 먼저 있어야 합니다. 거래당 기대값과 거래당 표준편차입니다. 기대값 계산은 기대값과 R배수에 있습니다. 이 둘이 없으면 이후 모든 판정은 불가능합니다. 감쇠 판별의 절반은 실전 시작 전에 기준선을 적어 두는 일입니다.

표본이 작으면 죽음을 감지할 수 없다

기대값 +0.25R, 거래당 표준편차 1.2R짜리 전략이 있다고 하겠습니다. 이 전략이 멀쩡할 때 표본 평균이 어디까지 떨어질 수 있는지 먼저 봐야 합니다.

표본 크기별 95% 정상 범위

기대값 μ = +0.25R · 표준편차 σ = 1.2R
표준오차 SE = σ ÷ √n

n = 50거래
SE = 1.2 ÷ 7.07 = 0.1697R
범위 = 0.25 ± 1.96 × 0.1697
  = −0.083R ~ +0.583R

n = 100거래
SE = 1.2 ÷ 10 = 0.120R
범위 = +0.015R ~ +0.485R

n = 200거래
SE = 1.2 ÷ 14.14 = 0.0849R
범위 = +0.084R ~ +0.416R

읽는 법이 중요합니다. 50거래 표본에서 평균이 −0.08R이어도 전략은 아무 문제가 없을 수 있습니다. 정상 범위 안이기 때문입니다. 반대로 200거래에서 평균이 0.05R이면 그건 범위 밖입니다. 같은 −0.08R이라는 숫자가 표본 크기에 따라 "정상"과 "이상"으로 갈립니다.

여기서 나오는 실무 규칙 하나. 30~50거래 성적으로 전략의 생사를 판정하지 않습니다. 그 표본으로는 무엇도 구분되지 않습니다. 몇 판이 필요한지에 대한 계산은 거래 표본 크기에 따로 있습니다.

검정 두 개는 서로 다른 질문이다

최근 100거래 성적이 평균 −0.05R, 표준편차 1.3R로 나왔다고 하겠습니다. 여기서 물을 수 있는 질문이 두 개인데, 답이 다르게 나옵니다.

질문 1 — "예전 기대값 0.25R이 유지되나?"

t = (−0.05 − 0.25) ÷ (1.3 ÷ √100)
  = −0.30 ÷ 0.13 = −2.31
양측 p ≈ 0.023
→ 5% 수준에서 기각
  "예전 그 전략이 아니다"는 근거 있음

질문 2 — "지금 기대값이 0보다 작나?"

t = (−0.05 − 0) ÷ 0.13 = −0.38
양측 p ≈ 0.70
기각 못 함
  "지금 손실 전략이다"는 근거 없음

정리하면 이 상태는 "예전만큼은 아니지만, 손실 전략이라고 말할 수도 없는" 구간입니다. 이게 실전에서 가장 흔한 모습이고, 판단이 갈라지는 지점입니다. 여기서 할 수 있는 합리적 대응은 끄는 것이 아니라 노출을 줄이고 표본을 더 쌓는 것입니다. 수량 조절 자체는 포지션 사이징 절차로 하고, 전략 판정과 섞지 않습니다.

CUSUM — 언제부터 어긋났는지 짚는다

평균 비교는 "최근 100거래"처럼 창을 정해야 합니다. 창을 어디로 잡느냐에 따라 결론이 바뀌는 게 불편합니다. 누적편차(CUSUM)는 창을 안 정해도 됩니다. 매 거래마다 실현 R에서 기준 기대값을 뺀 값을 계속 더해 나갑니다.

CUSUM 계산

S(n) = Σ ( r(i) − 0.25 )

전략이 정상이면 S는 0 주변을 떠도는 랜덤워크
이론상 흩어짐 = σ × √n

n = 100거래 시점
기대 흩어짐 = 1.2 × 10 = ±12R

실제 S(100) = −28R
→ −28 ÷ 12 = −2.33σ

판정 문턱(예시)
|S| ÷ (σ√n) > 2.0 → 재검토
               > 3.0 → 중단

CUSUM의 실질적인 쓸모는 기울기가 꺾인 지점을 눈으로 찾을 수 있다는 것입니다. 그래프가 300거래까지 우상향하다가 그 뒤로 계속 우하향한다면, 300거래 무렵에 무언가 바뀌었다는 뜻입니다. 그 시점에 무슨 일이 있었는지(수수료 변경, 상장/폐지, 변동성 국면 전환, 내 규칙 손댄 날) 찾아보는 게 다음 단계입니다. 그래서 매매일지에 규칙 변경일이 기록돼 있어야 합니다. 없으면 원인 추적이 그냥 막힙니다.

gross는 멀쩡한데 net만 죽는 경우

전략이 죽은 게 아니라 집행 비용이 올라서 성적이 무너지는 경우가 꽤 흔합니다. 이 둘은 대응이 완전히 다르므로 반드시 분리해야 합니다.

비용이 먹어치우는 구조

초기
평균 gross 손익 = +0.34% / 거래
왕복 비용(수수료+슬리피지) = 0.10%
net = 0.34 − 0.10 = +0.24%

이후 (체결 악화)
평균 gross 손익 = +0.34% (변화 없음)
실효 왕복 비용 = 0.22%
net = 0.34 − 0.22 = +0.12%

─────────────
신호(gross)는 그대로인데
net 기대값만 절반으로 감소

이 상황에서 전략 로직을 뜯어고치는 건 헛수고입니다. 고쳐야 할 것은 진입 방식·거래 빈도·주문 유형입니다. 반대로 gross 기대값 자체가 +0.34%에서 +0.12%로 내려갔다면 그건 진짜 알파 감쇠입니다.

그래서 기록할 때 gross와 net을 따로 남겨야 합니다. net만 적어 두면 나중에 이 구분을 할 수 없습니다. 비용 가정을 어떻게 넣어야 하는지는 백테스트 조건 쪽에 정리돼 있습니다.

낙폭만으로 끄면 거의 다 끄게 된다

"백테스트 최대 낙폭을 넘었으니 죽었다"는 흔한 기준인데, 이건 거의 항상 너무 빠른 판정입니다. 백테스트 최대 낙폭은 그 과거 한 줄에서 우연히 나온 최악값일 뿐이라 실전 최악값은 그보다 큰 것이 기본입니다.

낙폭 판정 기준선 만들기

백테스트 최대 낙폭 = −18%
거래 순서를 무작위로 섞어 재배열(1,000회)
→ 낙폭 분포의 95분위 = −27%
→ 99분위 = −34%

현재 낙폭 −21%
백테스트 최대는 넘었지만 95분위 안
정상 범위 (중단 근거 아님)

현재 낙폭 −31%
95분위 초과 · 99분위 미만
경보 (노출 축소 + 정밀 점검)

낙폭 자체를 읽는 법은 드로다운에, 연속으로 지는 게 얼마나 흔한 일인지는 연속 손실 확률에 있습니다. 8연패가 나왔다는 사실만으로는 아무 정보도 없다는 것을 먼저 확인하는 편이 좋습니다.

죽었다면, 왜 죽었는지 분류한다

감쇠가 확인됐다면 원인이 어디에 있었는지 나눠야 합니다. 원인마다 다음 행동이 다릅니다.

원인 4분류

애초에 없던 엣지
  백테스트가 과최적화였다.
  → 그 전략은 버린다. 파라미터 재조정 금지.

비용 상승
  gross 유지, net만 하락.
  → 집행을 고친다. 로직은 그대로.

시장 국면 전환
  추세용 전략이 횡보장에 들어간 경우 등.
  → 국면이 돌아오면 회복 가능. 노출만 축소.

구조 소멸
  그 비효율을 다 같이 먹어서 사라졌다.
  → 돌아오지 않는다. 종료.

①과 ④를 실시간으로 구분하기는 어렵습니다. 다만 ①은 실전 시작 직후부터 성적이 백테스트와 어긋나고, ④는 한동안 잘 되다가 꺾인다는 차이가 있습니다. 그래서 실전 초기 100~200거래의 성적을 백테스트 기대값과 대조하는 절차가 중요합니다. ①을 미리 걸러내는 방법 자체는 과최적화워크포워드 분석에 있습니다.

③은 판정이 특히 까다롭습니다. 국면 전환이라고 믿고 기다렸는데 사실 ④였던 경우가 많기 때문입니다. 여기서 유일하게 정직한 방법은 기다리는 기간과 허용 손실을 미리 정해 두는 것입니다.

사전등록 킬 규칙

감쇠 판정에서 가장 큰 적은 통계가 아니라 자기합리화입니다. 성적이 나빠진 뒤에 기준을 정하면 사람은 반드시 자기에게 유리한 기준을 고릅니다. 그래서 기준은 전략을 켜기 전에 적어 둡니다.

등록 양식 예시

전략명 · 시작일 · 백테스트 구간
기준 기대값 = +0.25R / 표준편차 = 1.2R
기준 프로핏 팩터 = 1.62
재배열 낙폭 95분위 = −27%

축소 조건 (둘 중 하나)
  · 롤링 200거래 CUSUM < −2.0σ
  · 낙폭이 −27% 초과
  → 노출 50%로 축소

중단 조건 (둘 다)
  · 롤링 200거래 기대값 95% 상한이 0 미만
  · CUSUM < −3.0σ
  → 중단 · 최소 관찰기간 후 재평가

재가동 조건
  · 페이퍼로 100거래 이상 재검증
  · 기대값 하한이 0 초과일 때만

재가동 조건까지 같이 적어 두는 게 핵심입니다. 이게 없으면 "느낌상 다시 되는 것 같아서" 켜게 되고, 그 순간 지금까지의 모든 통계 절차가 의미를 잃습니다. 자산곡선 자체를 스위치로 쓰는 접근의 장단점은 자산곡선 매매에 따로 정리돼 있습니다.

흔한 실수 다섯 가지

20~30거래로 판정한다
  → 그 표본은 죽음과 부진을 구분하지 못한다

롤링 창을 여러 개 돌려보고 제일 나쁜 것을 고른다
  → 창을 20개 보면 그중 하나는 반드시 나쁘다

성적이 나빠진 뒤 파라미터를 다시 맞춘다
  → 과최적화를 한 번 더 하는 것과 같다

gross와 net을 안 나눠 기록한다
  → 비용 문제와 알파 감쇠를 영원히 구분 못 한다

끈 뒤에 그 전략을 추적하지 않는다
  → 껐더니 회복했는지조차 알 수 없다

⑤가 은근히 큽니다. 끈 전략도 페이퍼로 계속 기록해 두면, 다음번 판정 문턱을 얼마로 잡아야 하는지에 대한 실제 데이터가 남습니다. 판정 절차 자체를 개선할 재료는 거기서만 나옵니다. 프로핏 팩터를 롤링으로 볼 때 주의할 점은 프로핏 팩터 쪽에 정리돼 있습니다.

정리

감쇠 판별의 전제 = 거래당 기대값 + 표준편차를 미리 적어 둔다
기대값 0.25R·σ 1.2R이면 50거래 평균 −0.08R까지 정상
같은 데이터로 "예전만 못하다"(p≈0.023)와 "지금 적자다"(p≈0.70)가 다른 답을 낸다
CUSUM은 창을 안 정해도 되고, 꺾인 시점을 짚어 준다
−28R ÷ (1.2×√100) = −2.33σ → 재검토 문턱 통과
gross 유지 + net 반토막 = 알파 감쇠가 아니라 집행 비용 문제
백테스트 MDD −18%를 넘었다고 끄지 않는다 (재배열 95분위 −27%가 기준)
원인은 4분류 — 없던 엣지 / 비용 / 국면 / 구조 소멸
축소·중단·재가동 조건을 켜기 전에 등록한다
성적 악화 후 파라미터 재조정은 과최적화의 반복이다

한 줄로 줄이면 이렇습니다. 전략의 생사는 최근 성적이 아니라 "그 성적이 원래 분포 안인가"로 판정합니다. 이 자를 미리 만들어 두지 않으면, 부진할 때는 끄고 싶고 회복하면 켜고 싶은 감정만 남습니다. 숫자를 먼저 적어 두는 일이 판별의 대부분입니다.

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

무료 채팅방 입장 →

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

OKX 수수료 할인 가입 →