데이터분석/분석-지도학습

공적분 모형 #삼성전자우와 삼성전자 주식의 공적분 판단 #페어트레이딩

씩씩한 IT블로그 2021. 1. 4. 17:21
반응형

 

공적분 모형

두 비정상성 시계열을 선형조합 했을 때 시계열의 적분 차수가 낮아지거나 정상상태가 되는 경우

* 적분차수 : 정상성이 되기까지 차분해야 하는 횟수

 

Y1의 적분차수가 1이고, Y2의 적분차수가 2이다.

이때 Y1과 Y2를 결합한 모형의 적분차수가 2(=max(y1 적분차수,y2적분차수)) 미만이 되면 Y1과 Y2는 공적분 상태라고 한다.

 

공적분 판별

VECM(Vector Error Correction Model)모형을 이용한다

위의 식을 통해 계산하고 이때 가설검정은 아래와 같이 해석한다

귀무가설 : 공적분 특성 없다

대립가설 : 공적분 특성 있다.

 

따라서 p-value가 유의수준보다 크면 공적분 특성이 있다고 판단한다.

 

삼성전자우와 삼성전자 주식의 공적분 판단실습

 

(1) 데이터로딩

# 데이터 로딩
import pandas_datareader.data as web
import datetime

start = datetime.datetime(2014, 1, 1)
end = datetime.datetime(2018, 12, 31)
raw1 = web.DataReader("005930.KS", 'yahoo', start, end)
raw2 = web.DataReader("005935.KS", 'yahoo', start, end)

 

(2) 데이터 시각화


# 데이터 시각화
## 시계열 움직임
raw = pd.concat([raw1.Close, raw2.Close], axis=1).dropna()
raw.columns = ["SE", "SE_PS"]
raw.plot(figsize=(10,5))
plt.show()

 

(3) ols회귀분석 

## 모델링
Y = raw.SE
X = raw.SE_PS
X = sm.add_constant(X)
fit = sm.OLS(Y, X).fit()
display(fit.summary())

 

(4) ols회귀분석 시각화

## 회귀분석 시각화
import seaborn as sns
plt.figure(figsize=(10,7))
sns.regplot(x="SE_PS", y="SE", data=raw)
plt.tight_layout()
plt.show()

강한 상관관계가 있으므로 공적분 관계에 있음을 예측할 수 있다.

 

(5) 잔차시각화

# 잔차 시각화
Y_integ = raw.SE - fit.params[1]*raw.SE_PS
plt.figure(figsize=(10,7))
Y_integ.plot()
plt.show()

 

(6) adf테스트를 통한 잔차의 정상성 테스트

# adf테스트를 통한 잔차의 정상성 확인
target = fit.resid
display(pd.Series(sm.tsa.stattools.adfuller(target)[0:4], 
                  index=['Test Statistics', 'p-value', 'Used Lag', 'Used Observations']))

p-value가 매우 낮으므로 adf테스트의 대립가설을 채택, 정상성이 있다고 판단할 수 있다.

 

(7) VECM을 이용한 공적분 테스트

# VECM 공적분 테스트 (귀무가설 : 공적분 특성없다, 대립가설 : 공적분 특성 있다)
coint_result = sm.tsa.coint(raw.SE, raw.SE_PS)
pd.DataFrame([coint_result[0], coint_result[1]], index=['statistics', 'p-value'], columns=['output'])

p-value가 0.05이하이므로 대립가설 채택. 공적분이 있음으로 판단할 수 있다.

 

결론 : 따라서 삼성전자우와 삼성전자 주식은 공적분관계에 있다.

 

 

페어트레이딩

비슷하게 진행되는 주식에서(공적분 관계의 주식에서) 단기적으로 저평가된 한 종목을 매수하고, 단기적으로 고평가된 한 종목을 매도해서 차익을 내는것

<example>

지금까지 삼성전자와 삼성전자우는 공적분 관계에 있는것을 확인했다. 따라서 아래의 예시처럼 일시적으로 삼성전자우가 낮을때 매수를 하고 삼성전자가 높을때 매도를 한다. 이를 페어트레이딩이라고 한다.

 

근데 수익은 어떻게나지?? 매수한건 언제팔지??

삼성전자우 매수하고 가격 떨어지면, 삼성전자보다 단기적으로 고평가받을때 매도해도 손해아닌가??

???

 

*출처 : 패스트캠퍼스 "파이썬을 활용한 시계열 데이터분석 A-Z"

반응형