NOONOO TRADING봇에서 시작하기

융-박스 검정으로 자기상관 확인하기: 공식, 임계값, 시차 선택

융-박스(Ljung-Box) 검정은 "이 수익률 계열에 시간 순서상의 패턴이 있는가"를 여러 시차에 걸쳐 한 번에 판정하는 검정입니다. 자기상관을 시차 하나씩 따로 보면 우연히 튀는 값에 속기 쉬운데, 융-박스는 여러 시차의 자기상관을 하나의 숫자 Q로 합쳐 카이제곱 임계값과 비교합니다. 본문 숫자는 계산 구조를 보여주는 가정 예시입니다.

1. 공식

시차 k의 자기상관을 ρk라 하면, 시차 1부터 m까지를 한꺼번에 검정하는 통계량은 다음과 같습니다.

융-박스 통계량
Q = n × (n + 2) × Σ [ ρk² ÷ (n − k) ] (k = 1 ~ m)

· n = 관측치 개수
· m = 함께 묶어 보는 시차 개수
· 귀무가설(자기상관 없음)이 맞으면 Q는 자유도 m인 카이제곱 분포를 따릅니다.

5% 임계값: 자유도 1 → 3.84, 5 → 11.07, 10 → 18.31
1% 임계값: 자유도 1 → 6.63, 5 → 15.09, 10 → 23.21

Q가 임계값보다 크면 "해당 시차 범위 안에 자기상관이 있다"고 판정합니다. 자기상관은 제곱해서 더하므로 양(+)과 음(−)이 서로 상쇄되지 않습니다. 시차 1은 +0.1, 시차 2는 −0.1이어도 Q는 둘 다 기여합니다.

2. 시차 하나만 본 경우

일별 수익률 250개로 시차 1만 보는 경우입니다. 개별 자기상관의 대략적인 유의 범위는 ±1.96 ÷ √250 = ±0.124입니다.

사례 A: n = 250, ρ1 = 0.10
· Q = 250 × 252 × 0.01 ÷ 249 = 630 ÷ 249 = 2.53
· 임계값 3.84보다 작음 → 기각 못 함

사례 B: n = 250, ρ1 = 0.15
· Q = 63,000 × 0.0225 ÷ 249 = 1,417.5 ÷ 249 = 5.69
· 임계값 3.84보다 큼 → 5% 기준 기각 (p ≈ 0.017)

ρ1이 0.10에서 0.15로 올랐을 뿐인데 결론이 바뀝니다. 0.124라는 경계가 두 값 사이에 있기 때문이고, 시차가 하나일 때 융-박스는 사실상 이 경계 검사와 같은 정보를 줍니다. 융-박스가 실제로 쓸모 있는 것은 시차가 여러 개일 때입니다.

3. 여러 시차를 묶는 경우

사례 C: n = 250, m = 5
· ρ1 ~ ρ5 = 0.10, 0.05, −0.04, 0.06, 0.03
· ρk² ÷ (n − k): 4.02×10⁻⁵, 1.01×10⁻⁵, 0.65×10⁻⁵, 1.46×10⁻⁵, 0.37×10⁻⁵ → 합 7.50×10⁻⁵
· Q = 63,000 × 7.50×10⁻⁵ = 4.73
· 자유도 5의 임계값 11.07보다 작음 → 기각 못 함

시차마다 작은 자기상관이 조금씩 있어도, 합쳐 봤을 때 우연 수준이면 통과합니다. 반대로 개별 시차는 모두 ±0.124 안에 있는데 합치면 기각되는 경우도 있습니다. 이것이 시차를 하나씩 보는 것과 묶어서 보는 것의 차이입니다.

4. 시차 개수 m이 결과를 바꾼다

m이 클수록 자유도도 같이 커져서 임계값이 높아집니다. 실제 자기상관이 시차 1에만 있다면, 시차를 많이 넣을수록 신호가 희석됩니다.

사례 B 다시 보기: ρ1 = 0.15, 나머지 시차의 자기상관은 0에 가깝다고 가정
· m = 1: Q ≈ 5.69, 임계값 3.84 → 기각
· m = 10: Q ≈ 5.69(나머지 항은 거의 0), 임계값 18.31 → 기각 못 함

시차 선택에 정답은 없지만 관행은 있습니다. n의 자연로그(ln 250 ≈ 5.5, 약 5~6)를 쓰거나, 일봉이면 10, 주간 패턴을 보고 싶으면 5·7의 배수처럼 데이터 주기에 맞춰 잡습니다. 중요한 것은 결과를 본 뒤에 m을 바꾸지 않는 것입니다. 여러 m을 돌려서 기각되는 것만 보고하면 다중 검정 함정과 같은 문제가 생기므로, 사전에 m을 정해 두고 기록합니다.

5. 표본 크기 효과

Q는 n에 비례해 커집니다. 자기상관의 크기는 같아도 데이터가 많으면 기각됩니다.

ρ1 = 0.10 고정, m = 1
· n = 250: Q = 2.53 → 기각 못 함
· n = 1,000: Q = 1,000 × 1,002 × 0.01 ÷ 999 = 10.03 → 1% 임계값 6.63도 넘음, 기각

5% 기준으로 기각되려면 n ≈ 3.84 ÷ 0.01 = 약 380~385개가 필요합니다.

그래서 기각 여부만 보면 안 됩니다. n이 수십만 개인 분봉 데이터에서는 ρ1 = 0.02처럼 거래로 옮기기엔 너무 작은 자기상관도 기각됩니다. 기각됐을 때는 ρ의 크기와 부호를 같이 보고, 그 크기가 수수료와 슬리피지를 넘을 만큼인지를 따로 계산해야 합니다. 반대로 거래 수십 건 단위의 성과 계열은 n이 작아 거의 기각되지 않으므로, 통과해도 "패턴이 없다"는 증거가 아니라 "판별할 데이터가 부족하다"는 뜻입니다. 표본 크기의 일반 원리는 거래 표본 크기에서 다룹니다.

6. 제곱 수익률로 변동성 군집 확인

수익률 자체의 자기상관은 작아도, 수익률 크기의 자기상관은 큰 경우가 흔합니다. 큰 움직임 뒤에 큰 움직임이 이어지는 변동성 군집입니다. 검정 방법은 같고 입력만 수익률 r 대신 r²(또는 |r|)로 바꿉니다.

사례 D: n = 250, 제곱 수익률의 ρ1 = 0.25, m = 1
· Q = 63,000 × 0.0625 ÷ 249 = 3,937.5 ÷ 249 = 15.81
· 1% 임계값 6.63의 2배 이상 → 강하게 기각 (p < 0.001)

같은 계열에서 수익률 자체의 ρ1이 0.03이면 Q = 63,000 × 0.0009 ÷ 249 = 0.23으로 전혀 기각되지 않습니다.

방향은 예측하기 어려운데 변동성 수준은 예측 가능하다는 패턴이 이렇게 드러납니다. 이 경우 손절 폭과 포지션 크기를 고정 숫자로 두기보다 최근 변동성에 맞춰 조정하는 쪽이 일관됩니다.

7. 실무에서 쓰는 순서

① 사용하는 시간 단위로 수익률을 만들고 m을 먼저 정해 기록합니다.
② 수익률과 제곱 수익률 두 계열에 각각 융-박스를 돌립니다. 파이썬은 statsmodels의 acorr_ljungbox가 Q와 p값을 돌려줍니다.
③ 기각되면 ρ의 부호와 크기를 확인합니다. 양이면 추세 지속, 음이면 되돌림 성향이지만, 크기가 비용보다 작으면 거래로 옮길 수 없습니다.
④ 기간을 나눠 반복합니다. 한 구간에서만 기각된다면 구조적 성질이 아니라 그 시기의 특수성일 수 있습니다. 승패 순서의 패턴은 런 검정으로 따로 봅니다.
⑤ 분포 모양이 문제인지는 자크-베라 검정으로 구분합니다. 융-박스는 순서를, 자크-베라는 분포 모양을 봅니다.

정리

융-박스 검정은 Q = n(n+2) × Σ ρk² ÷ (n−k)로 여러 시차의 자기상관을 합치고, 자유도 m의 카이제곱 임계값(m=5이면 11.07, m=10이면 18.31)과 비교합니다. 시차 개수는 결과 확인 전에 정해야 하고, n이 클수록 작은 자기상관도 기각되므로 기각 여부와 함께 ρ의 크기를 비용과 비교해야 합니다. 수익률 자체는 통과해도 제곱 수익률에서 기각되는 경우가 많으며, 이는 방향이 아니라 변동성의 패턴을 알려줍니다.

주의

본문의 수익률 개수, 자기상관 값, Q 통계량은 계산 구조를 보여주기 위한 가정 예시이며 특정 코인의 실제 측정값이 아닙니다. 실제 값은 종목, 기간, 시간 단위, 데이터 출처에 따라 다릅니다. 이 글은 교육 정보이며 특정 자산의 매매 권유가 아닙니다. 코인 선물 거래는 원금 손실 위험이 크고, 투자 판단과 그 결과는 본인 책임입니다.

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

봇에서 시작하기

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

OKX 수수료 할인 가입 →