SW/주가 예측

python, 통계 : 공분산 개념, 예제

얇은생각 2019. 6. 26. 07:30
반응형

공분산이란?


공분산은 2개 변수의 상관 정도를 나타내는 값입니다.

보통 Cov(x,y) 로 표기를 합니다.

2개 변수의 방향성을 파악할 때, 보통 사용합니다. 


공분산 값이 0보다 크다면, x가 커지면, y도 커집니다.

반대로 0보다 작다면, x가 커지면, y는 작아집니다.

0에 가깝다면, 선형 관계가 없다고 할 수 있습니다.



panas를 이용해 만도의 종가와 모비스 종가의 공분산 값을 구해보겠습니다. 



import pandas as pd
import pandas_datareader.data as web
import datetime
import matplotlib.pyplot as plt
from pandas.plotting import scatter_matrix


# file_name 다운로드한 주가 데이터를 저장할 파일 이름
# company_code 종목 코드
# year1/month1/date1 데이터를 다운로드할 시작일
# year2/month2/date2 데이터를 다운로드할 마감일
def download_stock_data(file_name, company_code, year1, month1, date1, year2, month2, date2):
start = datetime.datetime(year1, month1, date1)
end = datetime.datetime(year2, month2, date2)
df = web.DataReader("%s.KS" % (company_code), "yahoo", start, end)
df.to_pickle(file_name)
return df


def load_stock_data(file_name):
df = pd.read_pickle(file_name)
return df


download_stock_data('mobis.data', '012330', 2018, 1, 1, 2018, 12, 31)
df_mobis = load_stock_data('mobis.data')

download_stock_data('mando.data', '204320', 2018, 1, 1, 2018, 12, 31)
df_mando = load_stock_data('mando.data')

print( df_mobis['Close'].cov(df_mando['Close']))
# 173262238.5819335



공분산 값이 매우 큰 양수가 나왔습니다. 공분산은 크기가 중요한 것은 아닙니다. 즉, 방향성을 나타내는 부호가 중요한 것입니다. 따라서, 양수이므로, 모비스와 만도의 종가는 같은 방향성을 가지고 있다는 것을 알 수 있습니다.



즉, 우리나라 자동차 부품 대표 회사인 모비스와 만도의 주가는 같은 방향으로 증감을 하는 경향이 있는 것입니다. 



다양한 주식 종목들을 비교해보는 것도 재미있을 것 같습니다.

반응형