자크-베라 검정으로 수익률 정규성 확인하기: 공식, 임계값, 표본 크기 함정
자크-베라(Jarque-Bera) 검정은 "이 수익률을 정규분포로 다뤄도 되는가"를 판정하는 가장 단순한 통계 검정입니다. 필요한 재료는 표본 개수, 왜도, 첨도 세 가지뿐입니다. VaR, 손절 폭, 레버리지 계산이 정규분포를 깔고 있는 경우가 많으니, 그 가정을 쓰기 전에 한 번 돌려 볼 만한 검정입니다. 이 글은 공식, 임계값, 숫자 예시와 해석할 때의 함정을 정리합니다. 본문 숫자는 계산 구조를 보여주는 가정 예시입니다.
1. 공식
정규분포는 좌우 대칭이라 왜도가 0이고, 꼬리 두께 기준인 초과 첨도도 0입니다. 자크-베라 검정은 표본의 왜도와 초과 첨도가 0에서 얼마나 떨어져 있는지를 하나의 숫자로 합칩니다.
JB = n ÷ 6 × ( S² + K² ÷ 4 )
· n = 관측치 개수
· S = 왜도 (정규분포면 0)
· K = 초과 첨도 = 첨도 − 3 (정규분포면 0)
정규분포라는 가정(귀무가설)이 맞으면 JB는 자유도 2인 카이제곱 분포를 따릅니다.
· 5% 유의수준 임계값: 5.99
· 1% 유의수준 임계값: 9.21
· p값 = e^(−JB ÷ 2) (자유도 2 카이제곱의 꼬리 확률)
JB가 5.99보다 크면 "5% 기준으로 정규분포가 아니다"라고 판정합니다. 공식에서 두 가지가 바로 보입니다. 첫째, JB는 n에 비례합니다. 같은 모양의 분포라도 데이터가 많으면 JB가 커집니다. 둘째, 첨도 항은 4로 나누지만 제곱이라, 코인처럼 초과 첨도가 큰 데이터에서는 첨도 항이 JB 대부분을 차지합니다.
2. 1년치 일봉 수익률 예시
· S² = 0.25
· K² ÷ 4 = 16 ÷ 4 = 4.00
· JB = 365 ÷ 6 × (0.25 + 4.00) = 60.83 × 4.25 = 258.5
· p값 ≈ 7 × 10⁻⁵⁷
임계값 9.21의 28배입니다. 정규분포 가정은 기각됩니다. 그리고 JB 4.25 중 4.00(약 94%)이 첨도에서 나왔습니다.
코인 일봉 수익률은 이런 결과가 흔합니다. 왼쪽으로 기운 비대칭보다 두꺼운 꼬리가 정규 가정을 깨는 주된 이유라는 뜻이고, 그래서 "평균 ± 몇 표준편차" 식의 손실 추정은 꼬리 쪽에서 가장 크게 틀립니다.
3. 같은 분포, 다른 결론 — 표본 크기 함정
JB가 n에 비례한다는 점은 양쪽으로 함정이 됩니다.
· n = 30: JB = 5 × (0.25 + 0.5625) = 4.06 → p = 0.131 → 기각 못 함
· n = 365: JB = 60.83 × 0.8125 = 49.4 → p ≈ 2 × 10⁻¹¹ → 기각
모양은 똑같은데 30일 데이터로는 "정규분포로 봐도 된다", 1년 데이터로는 "아니다"가 나옵니다.
짧은 표본에서 기각되지 않았다는 것은 "정규분포다"가 아니라 "구분할 만큼 데이터가 없다"는 뜻입니다. 반대로 1분봉처럼 n이 수십만 개면 아주 작은 차이도 기각되므로, 기각 여부보다 왜도·첨도의 크기를 봐야 합니다. 어느 정도 데이터가 있어야 차이가 잡히는지는 거꾸로 계산할 수 있습니다.
· 왜도 −0.3, 초과 첨도 1.0: 1관측당 0.0567 → 약 106개
· 왜도 −0.3, 초과 첨도 0.5: 1관측당 0.0254 → 약 236개
꼬리가 조금만 두꺼워도 몇 달 치 일봉이면 잡히지만, 거래 횟수 기준 전략 성과는 수십 건으로는 거의 기각되지 않습니다.
전략 거래 결과로 검정할 때 이 문제가 특히 큽니다. 거래 30~50건은 정규성 판단에도, 승률 판단에도 부족한 경우가 많습니다. 표본 크기 문제 전반은 거래 표본 크기에서 같은 구조로 다룹니다.
4. 극단값 하루가 결론을 뒤집는다
왜도는 세제곱, 첨도는 네제곱을 쓰기 때문에 JB는 가장 큰 관측치 한두 개에 크게 좌우됩니다.
· 왜도 0, 초과 첨도 −2.0
· JB = 20 ÷ 6 × (0 + 4 ÷ 4) = 3.33 → p = 0.189 → 기각 못 함
표본 A + −8%인 날 하루 (21일)
· 왜도 −2.63, 초과 첨도 +7.92
· JB = 21 ÷ 6 × (6.92 + 15.68) = 3.5 × 22.6 = 79.1 → p ≈ 7 × 10⁻¹⁸ → 강하게 기각
하루가 추가됐을 뿐인데 판정이 정반대로 바뀝니다. 조용한 기간만 담긴 표본으로 "정규분포라 괜찮다"고 결론 내리면, 아직 표본에 안 들어온 급락을 무시한 셈이 됩니다. 그래서 정규성 검정은 급락 구간을 포함한 기간, 그리고 여러 기간으로 나눠 반복합니다.
5. 검정이 알려주지 않는 것
① 어떤 분포인지는 모릅니다. 기각은 "정규분포가 아니다"까지만 말합니다. 꼬리가 두꺼운 건지, 한쪽으로 기운 건지는 S와 K를 직접 봐야 합니다.
② 소표본에서는 근사가 부정확합니다. 카이제곱 근사는 n이 클 때 맞는 이야기라, n이 수십 개면 실제 기각률이 5%와 다를 수 있습니다. 작은 표본이면 몬테카를로로 임계값을 다시 구하는 방법이 있습니다.
③ 시간 순서를 보지 않습니다. 수익률을 섞어도 JB는 같습니다. 큰 움직임이 몰려 오는 변동성 군집이나 자기상관은 따로 확인해야 합니다. 변동성이 군집하면 전체 기간을 한데 모은 분포는 그것만으로 꼬리가 두꺼워 보입니다.
④ 여러 번 돌리면 우연히 통과합니다. 코인 50개를 검정하면 정규분포인 것이 있어도 2~3개는 5% 기준으로 기각되고, 그 반대도 생깁니다. 여러 검정을 한꺼번에 할 때의 문제는 다중 검정 함정을 참고하세요.
6. 실무에서 쓰는 순서
① 일별(또는 사용하는 시간 단위) 수익률로 n, 왜도, 초과 첨도, JB를 같이 계산합니다. 파이썬에서는 scipy.stats.jarque_bera가 통계량과 p값을 돌려줍니다. 도구마다 첨도 정의가 다를 수 있으니 초과 첨도인지 먼저 확인합니다.
② 기각되면 정규 가정 VaR를 그대로 쓰지 않습니다. 과거 수익률을 그대로 쓰는 역사적 시뮬레이션, t분포 같은 두꺼운 꼬리 모형, 또는 몬테카를로 시뮬레이션으로 손실 분포를 다시 봅니다. 차이가 얼마나 나는지는 VaR와 CVaR에서 숫자로 비교합니다.
③ 기각되지 않았는데 n이 작다면, "정규분포 확인"이 아니라 "판단 보류"로 기록합니다.
④ 백테스트 성과의 신뢰구간을 정규분포로 잡았다면, 거래 수익률 JB도 같이 계산합니다. 기각되면 블록 부트스트랩 신뢰구간처럼 분포 가정이 없는 방법이 더 안전합니다.
· n = 500, 왜도 −0.4, 초과 첨도 3.0
· JB = 83.3 × (0.16 + 2.25) = 200.8 → 기각
· 첨도 기여 2.25 ÷ 2.41 = 93%
→ 결론: 비대칭보다 꼬리가 문제. 손절·레버리지는 표준편차 배수가 아니라 과거 최악 구간과 두꺼운 꼬리 모형으로 점검.
정리
자크-베라 검정은 JB = n ÷ 6 × (S² + K² ÷ 4)로 계산하고, 5.99(5%)·9.21(1%)을 넘으면 정규분포 가정을 기각합니다. 코인 수익률은 대개 첨도 항 때문에 크게 기각됩니다. 다만 JB는 표본 크기에 비례하고 극단값 하루에 크게 흔들리므로, 짧은 표본의 "기각 못 함"은 정규분포의 증거가 아니고, 아주 긴 표본의 "기각"은 차이의 크기를 말해 주지 않습니다. 기각 여부와 함께 왜도·첨도 값 자체, 그리고 급락 구간 포함 여부를 같이 기록하는 것이 실제로 쓸모 있는 방식입니다.
주의
본문의 수익률, 왜도·첨도 값, 표본 크기는 계산 구조를 보여주기 위한 가정 예시이며 특정 코인의 실제 측정값이 아닙니다. 실제 값은 종목, 기간, 시간 단위, 데이터 출처에 따라 다릅니다. 이 글은 교육 정보이며 특정 자산의 매매 권유가 아닙니다. 코인 선물 거래는 원금 손실 위험이 크고, 투자 판단과 그 결과는 본인 책임입니다.
NOONOO TRADING 무료 채팅방에서 실시간 트레이딩을 같이 보세요.
봇에서 시작하기📈 OKX 신규 가입 시 거래 수수료 할인
OKX 수수료 할인 가입 →