Bitcoin과 Ethereum은 공적분인가요?
공적분 분석은 두 단계로 진행해요. 먼저 한 시계열을 다른 시계열에 회귀시켜 공적분 벡터를 구하고, 그다음 회귀의 잔차에 대해 ADF 검정을 수행합니다. 이전 예제에서는 공적분 벡터가 \(\small (1,-1)\)이라고 암묵적으로 가정했기 때문에 첫 번째 단계를 수행할 필요가 없었어요. 즉, 단위 변환을 한 뒤 두 시계열의 차이를 사용했죠. 이번에는 두 단계를 모두 수행합니다.
한 암호화폐인 비트코인(BTC)의 값을 다른 암호화폐인 이더리움(ETH)에 회귀시킬 거예요. 회귀계수를 \(\small b\)라고 하면 공적분 벡터는 \(\small (1,-b)\)가 됩니다. 그런 다음 BTC \(\small - b \) ETH에 대해 ADF 검정을 수행하세요. 비트코인과 이더리움의 가격은 각각 DataFrame BTC와 ETH에 미리 로드되어 있습니다.
이 연습은 강의의 일부입니다
Python으로 배우는 시계열 분석
연습 안내
- 회귀를 위해 statsmodels 모듈과
adfuller함수를 임포트하세요. sm.add_constant()를 사용해ETHDataFrame에 상수를 추가하세요.sm.OLS(y,x).fit()으로BTC를ETH에 회귀시키고, 여기서 y는 종속변수, x는 독립변수이며, 결과를result에 저장하세요.- 절편은
result.params[0], 기울기는result.params[1]에 있습니다.
- 절편은
- BTC \(\small - b \) ETH에 대해 ADF 검정을 실행하세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
# Import the statsmodels module for regression and the adfuller function
import statsmodels.api as sm
from statsmodels.tsa.stattools import adfuller
# Regress BTC on ETH
ETH = sm.___(ETH)
result = sm.OLS(___,___).fit()
# Compute ADF
b = result.params[1]
adf_stats = adfuller(___['Price'] - b*___['Price'])
print("The p-value for the ADF test is ", adf_stats[1])