파이썬을 활용한 주가 회귀분석 예

파이썬을 활용하여 주가 회귀분석을 한 예를 정리해보고자 한다. 구글 주가 데이터를 가져와 3일봉(3일전 데이터), 2일봉(2일전), 1일봉을 활용해 주가를 예측하는 예이다. 상관관계가 없는 데이터간 회귀분석을 하는 것이 적당하지 않을 지 몰라고 데이터 분석을 위한 pandas와 주가 데이터 등을 쉽게 가져올 수 있는 quandl (https://www.quandl.com/)이라는 라이브러리를 이용한 단순한 예로만 이해하면 된다.

import numpy as np #벡터와 행렬 계산을 위한 함수 라이브러리
import pandas as pd #데이터 분석을 위한 라이브러리
import quandl, math #주가 데이터를 가져오기 위한 라이브러리
from sklearn import cross_validation #학습과 테스트를 위한 데이터 분리
from sklearn.linear_model import LinearRegression #회귀분석 라이브러리

#구글 주가 데이터를 가져와 Quandl데이터 셋 구성
#Quandl 데이터셋에는 일단위 시가, 종가, 고가, 저가, 거래량 등이 포함되어 있음
df = quandl.get('WIKI/GOOGL')

df['Close3'] = df['Close'].shift(3)
df['Close2'] = df['Close'].shift(2)
df['Close1'] = df['Close'].shift(1)
df.dropna(inplace=True)

X = np.array(df[['Close3', 'Close2', 'Close1']]) #회귀분석 라이브러리 활용을 위한 데이터셋 구성
y = np.array(df['Close']) #타겟  구성

X_train, X_test, y_train, y_test = cross_validation.train_test_split(X, y, test_size=0.2) #데이터 분리

clf = LinearRegression() #회귀 분석 객체 생성
clf.fit(X_train, y_train) #회귀 분석 학습

#만약 Close3: 812 ~Close1: 799일 경우 종가 예측 방법
clf.predict([[812, 813, 807]])

실제 회귀 분석을 해보면 구글 주식의 경우 회귀 계수 (파라미터)가 아래와 같다

array([3.31584798e-04, -4.98201976e-02,
1.03048347e+00])

참고로 구글의 종가(Close)에는 근접한 일봉(Close1 > Close2 > Close3)일수록 영향을 많이 받는 것을 알 수 있다

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Google photo

Google의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중