NOONOO TRADING봇에서 시작하기

ADF 단위근 검정: 평균회귀 여부를 판정하는 방법

ADF(Augmented Dickey-Fuller) 검정은 시계열이 "단위근", 즉 되돌아올 기준점 없이 제멋대로 걷는 계열인지 확인하는 검정입니다. 페어 트레이딩의 스프레드나 펀딩비처럼 "평균으로 돌아온다"는 전제로 짜는 전략은 이 전제가 실제로 성립하는지 먼저 확인해야 합니다. 본문 숫자는 계산 구조를 보여주는 가정 예시입니다.

1. 무엇을 검정하는가

가격 y가 어제 값에 얼마나 묶여 있는지를 다음 회귀로 봅니다.

기본 회귀식
Δy(t) = α + γ × y(t−1) + 오차

· Δy(t) = 오늘 값 − 어제 값
· γ = 0 이면 어제 값이 높아도 내일 변화에 영향이 없음 → 단위근(랜덤워크)
· γ < 0 이면 어제 값이 높을수록 내일 하락 쪽으로 당겨짐 → 평균회귀

귀무가설: γ = 0 (단위근 있음). 기각해야 "평균회귀가 있다"고 말할 수 있습니다.

실제 ADF는 Δy의 과거값 몇 개를 오른쪽에 추가해 오차의 자기상관을 흡수합니다. 추가 개수는 정보기준(AIC 등)으로 자동 선택하는 것이 일반적입니다. 이 부분은 융-박스 검정으로 잔차에 남은 자기상관을 확인하는 것과 연결됩니다.

2. 검정 통계량과 임계값

통계량은 γ 추정치를 표준오차로 나눈 t값입니다. 다만 단위근 아래에서는 일반 t분포가 아니라 디키-풀러 분포를 따르므로, 임계값이 더 왼쪽(더 음수)에 있습니다.

상수항 포함, 표본이 충분히 클 때의 임계값
· 1%: −3.43
· 5%: −2.86
· 10%: −2.57

일반 t검정의 5% 기준 −1.65~−1.96보다 훨씬 엄격합니다. 통계량이 임계값보다 더 작아야(더 음수여야) 기각됩니다.

3. 사례로 보는 판정

사례 A (로그 가격): n = 250, γ 추정 = −0.004, 표준오차 = 0.003
· t = −0.004 ÷ 0.003 = −1.33
· 5% 임계값 −2.86보다 큼 → 단위근 기각 못 함

사례 B (스프레드): n = 250, γ 추정 = −0.05, 표준오차 = 0.012
· t = −0.05 ÷ 0.012 = −4.17
· 1% 임계값 −3.43보다 작음 → 단위근 기각, 평균회귀 근거

사례 A는 가격 자체가 보통 보이는 모습입니다. 가격 수준은 대개 단위근을 기각하지 못하고, 일간 수익률(차분값)은 기각합니다. 수익률에 ADF를 돌리면 γ가 −1에 가까워 t가 −15 안팎으로 나오지만, 이것은 "수익률이 평균 주변에서 움직인다"는 당연한 사실이지 매매 근거가 아닙니다. 검정 대상은 반드시 평균회귀 전략이 실제로 거래하는 계열(스프레드, 비율, 펀딩비 등)이어야 합니다.

4. 반감기로 거래 가능성 확인

기각됐다고 거래할 수 있는 것은 아닙니다. 평균으로 돌아오는 속도가 너무 느리면 포지션을 오래 들고 가야 합니다. γ로 반감기를 계산합니다.

반감기 = −ln(2) ÷ ln(1 + γ)

· γ = −0.05: ln(0.95) = −0.0513 → 0.6931 ÷ 0.0513 = 약 13.5 기간
· γ = −0.02: ln(0.98) = −0.0202 → 0.6931 ÷ 0.0202 = 약 34.3 기간
· γ = −0.004: ln(0.996) = −0.0040 → 0.6931 ÷ 0.0040 = 약 173 기간

일봉 기준 13.5일이면 스윙 보유, 173일이면 사실상 거래 불가입니다.

보유가 길어지면 수수료와 펀딩비가 누적되고, 중간에 구조가 바뀔 위험도 커집니다. 반감기는 보유 기간의 대략적인 상한을 알려주는 숫자로 씁니다.

5. 표본 크기와 검정력

ADF는 검정력이 약한 검정으로 알려져 있습니다. 느린 평균회귀는 표본이 짧으면 랜덤워크와 구분되지 않습니다.

가정: 실제 계열이 AR(1), 계수 0.98 (γ = −0.02, 반감기 34.3 기간)
표준오차 ≈ √((1 − 0.98²) ÷ n) = √(0.0396 ÷ n)

· n = 250: 표준오차 0.0126 → t = −0.02 ÷ 0.0126 = −1.59 → 기각 못 함
· n = 1,000: 표준오차 0.0063 → t = −3.18 → 5% 기각(−2.86), 1%(−3.43)는 못 넘음

같은 계열인데 250개 관측으로는 "단위근"으로, 1,000개로는 "평균회귀"로 판정됩니다. 그래서 기각 못 했다는 것을 "평균회귀가 없다"로 읽으면 안 됩니다. "이 길이의 데이터로는 구분이 안 된다"가 정확한 해석입니다. 표본 길이의 일반 원리는 거래 표본 크기와 같습니다.

6. 다른 검정과의 역할 분담

· ADF: 귀무가설이 단위근. 기각하면 평균회귀 근거.
· 분산비 검정: 기간을 늘릴수록 분산이 비례해 늘어나는지 확인. 랜덤워크 여부를 다른 각도에서 봄.
· 허스트 지수: 0.5보다 작으면 평균회귀 성향, 크면 추세 성향. 검정이 아니라 추정값이라 신뢰구간과 함께 봐야 함.
· 공적분: 두 가격 사이의 스프레드에 ADF류 검정을 적용한 것. 페어 트레이딩의 출발점.

하나의 검정만 통과했다고 확정하지 말고, 서로 다른 방식의 검정이 같은 방향을 가리키는지 봅니다. 또한 기간을 나눠 반복해 한 시기에서만 기각되는 것은 아닌지 확인합니다. 여러 종목과 여러 설정을 돌려 기각되는 것만 고르면 다중 검정 함정에 빠집니다.

7. 실무 순서

① 거래할 계열(스프레드 등)을 먼저 정의하고, 검정 설정(상수항 포함 여부, 추가 시차 선택 방식)을 사전에 정해 기록합니다.
② 파이썬은 statsmodels의 adfuller가 통계량, p값, 임계값을 돌려줍니다.
③ 기각되면 γ로 반감기를 계산해 보유 기간이 현실적인지 확인합니다.
④ 기간을 나눠 같은 검정을 반복하고, 수수료·슬리피지를 반영한 리플레이로 넘어갑니다.

정리

ADF 검정은 Δy = α + γ·y(t−1) + 오차에서 γ = 0(단위근)을 검정합니다. 임계값은 일반 t보다 엄격해 상수항 포함 시 5%에서 −2.86입니다. 기각 못 한 것은 "평균회귀 없음"의 증거가 아니라 "구분 못 함"일 수 있고, 기각되더라도 반감기가 길면 거래할 수 없습니다. 검정 대상은 가격 수준이 아니라 실제로 거래하는 스프레드여야 합니다.

주의

본문의 관측 개수, γ 추정치, 표준오차는 계산 구조를 보여주기 위한 가정 예시이며 특정 코인의 실제 측정값이 아닙니다. 임계값은 표본이 충분히 크고 상수항을 포함한 기본 설정 기준의 근사치이며, 설정과 표본 크기에 따라 달라집니다. 이 글은 교육 정보이며 특정 자산의 매매 권유가 아닙니다. 코인 선물 거래는 원금 손실 위험이 크고, 투자 판단과 그 결과는 본인 책임입니다.

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

봇에서 시작하기

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

OKX 수수료 할인 가입 →