런 검정: 내 매매의 연승·연패가 우연인지 확인하기
연패가 길게 이어지면 "지금 시장이 나랑 안 맞는다"는 느낌이 들고, 연승이 이어지면 "감이 왔다"는 느낌이 듭니다. 이 느낌이 실제 패턴인지, 무작위 순서에서도 나올 만한 덩어리인지는 감으로 구분하기 어렵습니다. 런 검정(Runs Test, Wald–Wolfowitz 검정)은 승패 순서가 무작위에서 기대되는 만큼 바뀌는지를 계산해 이 질문에 답합니다. 이 글은 계산식, 손으로 푸는 예시, 결과를 매매에 쓸 때의 주의점을 정리합니다. 본문 숫자는 계산 구조를 보여주기 위한 가정 예시입니다.
1. 런(run)이란
런은 같은 결과가 연속된 한 덩어리입니다. 승을 W, 패를 L로 적으면 다음 10거래의 런은 5개입니다.
W W L L L W L W W W
→ [W W] [L L L] [W] [L] [W W W] = 런 5개
· 승 6개, 패 4개
승패 개수가 같아도 순서에 따라 런 수는 달라집니다. 승이 몰려 있으면 런이 적고(W W W W W W L L L L = 런 2개), 승패가 번갈아 나오면 런이 많습니다(W L W L W L W L W W = 런 9개). 런 검정은 "이 승패 개수라면 무작위 순서에서 런이 몇 개쯤 나와야 하는가"를 기준으로 실제 런 수가 너무 적은지, 너무 많은지를 봅니다.
2. 계산식
승 개수를 n₁, 패 개수를 n₂, 전체 거래 수를 N = n₁ + n₂ 라고 하면, 순서가 무작위일 때 런 수 R의 기대값과 분산은 다음과 같습니다.
· 기대 런 수 μ = 2·n₁·n₂ ÷ N + 1
· 분산 σ² = 2·n₁·n₂·(2·n₁·n₂ − N) ÷ (N²·(N − 1))
· 검정 통계량 z = (R − μ) ÷ σ
· |z| > 1.96 이면 5% 유의수준에서 "무작위 순서와 다르다"고 판단
z가 음수로 크면 런이 너무 적다는 뜻, 즉 승은 승끼리 패는 패끼리 몰려 있다는 뜻입니다. z가 양수로 크면 런이 너무 많다는 뜻, 즉 승패가 지나치게 번갈아 나온다는 뜻입니다. 이 공식은 정규분포 근사라서 n₁, n₂가 각각 10개 이상일 때 쓰는 것이 일반적입니다.
3. 손으로 풀어보는 예시
· n₁ = 24, n₂ = 16, N = 40, 승률 60%
· 2·n₁·n₂ = 2 × 24 × 16 = 768
· μ = 768 ÷ 40 + 1 = 19.2 + 1 = 20.2
· σ² = 768 × (768 − 40) ÷ (40² × 39) = 768 × 728 ÷ 62,400 = 559,104 ÷ 62,400 ≈ 8.96
· σ ≈ 2.99
· z = (13 − 20.2) ÷ 2.99 ≈ −2.41 → |z| > 1.96, 승패가 몰려 있음
같은 24승 16패라도 런 수가 달라지면 결론이 달라집니다.
· 런 19개: z = (19 − 20.2) ÷ 2.99 ≈ −0.40 → 무작위와 구분 안 됨
· 런 13개: z ≈ −2.41 → 몰림(연승·연패 덩어리)
· 런 28개: z = (28 − 20.2) ÷ 2.99 ≈ +2.61 → 지나친 번갈아 나옴
4. 조건부 승률로 다시 보기
z 값만으로는 체감이 잘 안 됩니다. 같은 기록을 "직전 거래 결과별 다음 거래 승률"로 바꾸면 의미가 분명해집니다. 위의 런 13개 기록이 승으로 시작해 승으로 끝났다고 하면, 승 런 7개·패 런 6개이고 결과가 바뀌는 지점은 승→패 6번, 패→승 6번입니다.
· 승 다음 거래: 23번(마지막 승 제외) 중 패로 바뀐 것 6번 → 승 유지 17번
· P(승 | 직전 승) = 17 ÷ 23 ≈ 73.9%
· 패 다음 거래: 16번 중 승으로 바뀐 것 6번
· P(승 | 직전 패) = 6 ÷ 16 = 37.5%
· 전체 승률은 60%인데, 직전 결과에 따라 다음 승률이 36%p 차이
무작위 순서라면 두 값 모두 전체 승률 근처에 있어야 합니다. 이렇게 크게 벌어진다면 승패가 시장 상태(추세장·횡보장, 변동성 수준)에 묶여 있을 가능성을 의심할 수 있습니다. 수익률 자체의 연속성은 수익률 자기상관에서, 변동성이 몰리는 현상은 변동성 군집에서 다룹니다.
5. 결과를 어떻게 읽을까
무작위와 구분 안 됨(|z| ≤ 1.96) — 연패는 승률에서 자연스럽게 나오는 덩어리일 가능성이 높습니다. 승률 60%라도 40거래 안에 4연패 이상이 나오는 일은 드물지 않습니다(연패 확률 계산). 이 경우 연패 중에 규칙을 바꾸거나 사이즈를 키우는 것은 근거가 없는 대응입니다. 연패 뒤에 "이제 이길 차례"라고 보는 도박사의 오류, 연승 뒤에 "감이 왔다"고 보는 핫핸드 오류 둘 다 이 상황에서 생깁니다.
몰림(z < −1.96) — 승패가 무리지어 나온다는 신호입니다. 전략이 특정 시장 상태에서만 작동할 수 있습니다. 이때 검토할 수 있는 것이 자산곡선이 이동평균 아래로 내려가면 사이즈를 줄이는 자산곡선 트레이딩 같은 방법입니다. 다만 이것도 검정 결과 하나로 바로 적용하지 말고, 그 규칙을 넣은 상태로 다른 기간에서 다시 검증해야 합니다.
번갈아 나옴(z > +1.96) — 드물지만 있습니다. 한 번 이기면 사이즈를 키웠다가 지는 식의 행동 패턴, 혹은 진입 후 반대 신호로 바로 뒤집는 규칙이 원인일 수 있습니다.
6. 쓰기 전에 알아둘 한계
· 표본이 작으면 근사가 부정확하다 — 10거래 6승 4패라면 μ = 5.8, σ ≈ 1.42 입니다. 런 3개면 z ≈ −1.97로 경계선에 걸리지만, 이 크기에서는 정규 근사를 믿기 어렵습니다. 작은 표본은 승패 순서를 무작위로 섞어 수천 번 런 수를 세는 순열 방식으로 확인하는 편이 낫습니다(거래 표본 크기).
· 여러 번 돌리면 우연히 걸린다 — 전략 20개에 검정을 돌리면 아무 패턴이 없어도 평균 1개는 5% 기준을 넘습니다(다중 검정 함정).
· 승패만 본다 — +0.1% 승과 +10% 승을 같은 W로 셉니다. 손익 크기의 연속성은 따로 확인해야 합니다.
· 원인은 알려주지 않는다 — 몰림이 있다는 것만 말하고, 왜 몰리는지는 시장 상태별로 기록을 나눠 직접 봐야 합니다.
· 무작위로 보이는 덩어리에 속지 않기 — 차트나 기록에서 덩어리를 찾는 습관 자체가 군집 착시를 만듭니다. 검정은 그 착시를 걸러내는 용도로 쓰는 것이 맞습니다.
7. 실무 절차
· 매매 일지에서 수수료 차감 후 손익 기준으로 거래를 시간순 W/L로 바꾼다(본전은 제외하거나 한쪽으로 일관되게 처리)
· n₁, n₂, 실제 런 수 R을 센다
· μ, σ, z를 계산한다. n₁ 또는 n₂가 10 미만이면 순열 방식으로 확인한다
· 조건부 승률 P(승|직전 승), P(승|직전 패)를 같이 적는다
· 몰림이 나오면 시장 상태별로 기록을 나눠 원인을 찾고, 대응 규칙은 다른 기간에서 다시 검증한다
· 신뢰구간을 보고 싶다면 블록 부트스트랩 신뢰구간을 함께 쓴다
정리
런 검정은 승패 순서가 무작위에서 기대되는 만큼 바뀌는지를 봅니다. 24승 16패 40거래에서 기대 런 수는 20.2, 표준편차는 약 2.99이고, 실제 런이 13개면 z ≈ −2.41로 승패가 몰려 있다는 뜻입니다. 같은 기록을 조건부 승률로 바꾸면 승 다음 73.9%, 패 다음 37.5%처럼 차이가 드러납니다. 반대로 |z|가 1.96 이하라면 연승·연패는 우연으로 설명되므로 규칙을 바꿀 근거가 되지 않습니다. 표본이 작거나 여러 전략을 동시에 검사할 때는 결론을 미루는 것이 기본입니다.
주의
본문의 거래 수, 승률, 런 수는 계산 구조를 보여주기 위한 가정 예시이며 특정 개인·계좌·전략의 실제 성과가 아닙니다. 이 글은 교육 정보이며 특정 자산의 매매 권유가 아닙니다. 코인 선물 거래는 원금 손실 위험이 크고, 투자 판단과 그 결과는 본인 책임입니다.
NOONOO TRADING 무료 채팅방에서 실시간 트레이딩을 같이 보세요.
봇에서 시작하기📈 OKX 신규 가입 시 거래 수수료 할인
OKX 수수료 할인 가입 →