IT/금융

KOSPI 상위 50개 주식과 삼성전자의 상관관계 분석

chn1002 2024. 4. 25. 09:12

금융 시장의 트렌드를 분석하고 투자 기회를 포착하는 하나의 방법은 주요 주식 간의 상관관계를 파악하는 것입니다. 본 포스트에서는 Python과 FinanceDataReader를 활용하여 삼성전자와 KOSPI 상장 주식 중 상위 50개의 상관관계를 분석하는 방법을 설명합니다.

필요한 도구

이 분석을 수행하기 위해 필요한 Python 라이브러리는 다음과 같습니다:

  • FinanceDataReader: 금융 데이터를 쉽게 다운로드할 수 있게 도와주는 라이브러리입니다.
  • Pandas: 데이터를 효율적으로 처리하고 분석하는 데 사용됩니다.
  • MatplotlibSeaborn: 데이터를 시각화하는 데 사용됩니다.

설치 방법

먼저, 필요한 라이브러리를 설치해야 합니다. 아래의 명령어를 통해 설치할 수 있습니다:

pip install finance-datareader pandas matplotlib seaborn

 

데이터 로딩과 전처리

다음으로, KOSPI에서 상장된 주식 중 상위 50개의 주식을 포함하여 '삼성전자'의 주가 데이터를 불러옵니다. 이 과정에서 데이터가 없는 날짜는 이전 값으로 채우는 방식을 사용하여 데이터를 전처리합니다.

import FinanceDataReader as fdr
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

# 한글 폰트 설정
plt.rcParams['font.family'] = 'Malgun Gothic'
plt.rcParams['axes.unicode_minus'] = False

# KOSPI 종목 코드 불러오기
kospi_stocks = fdr.StockListing('KOSPI')

# 종목별 주가 데이터 불러오기
stock_prices = pd.DataFrame()

# '삼성전자'와 다른 상위 49개 종목 포함
codes = ['005930'] + kospi_stocks['Code'].tolist()[:49]
names = ['삼성전자'] + kospi_stocks['Name'].tolist()[:49]

for code, name in zip(codes, names):
    try:
        stock_data = fdr.DataReader(code, '2020-01-01')['Close']
        stock_prices[name] = stock_data
    except Exception as e:
        print(f"Error loading data for {name} ({code}): {e}")

# 누락된 데이터 처리
stock_prices.fillna(method='ffill', inplace=True)

 

상관관계 분석 및 시각화

모든 주식의 일별 종가 데이터를 바탕으로 상관관계 행렬을 계산하고, 이를 시각화하여 각 주식 간의 상관관계를 파악합니다.

# 삼성전자와 다른 주식들 간의 상관 계수 계산
correlation_matrix = stock_prices.corr()

# 상관 계수 히트맵 그리기
plt.figure(figsize=(12, 10))
sns.heatmap(correlation_matrix, annot=True, cmap='coolwarm', linewidths=.5)
plt.title('상관 관계 행렬')
plt.show()

 

 

  • 높은 상관관계:
    • 현대자동차 (0.71): 삼성전자와 현대자동차는 높은 양의 상관관계를 보여줍니다. 이는 두 회사의 주가가 비슷한 방향으로 움직이는 경향이 있음을 의미합니다.
    • SK이앤에스 (0.68): 삼성전자와 SK이앤에스 역시 높은 양의 상관관계를 보여줍니다.
    • KT (0.59): 삼성전자와 KT는 다소 낮은 양의 상관관계를 보여줍니다.
  • 낮은 상관관계 또는 음의 상관관계:
    • LG전자 (0.32): 삼성전자와 LG전자는 상대적으로 낮은 양의 상관관계를 보여줍니다.
    • 나스닥 (-0.04): 삼성전자와 나스닥은 약한 음의 상관관계를 보여줍니다. 즉, 삼성전자 주가가 상승할 때 나스닥 지수는 하락하는 경향이 있음을 의미합니다.
    • S&P 500 (-0.01): 삼성전자와 S&P 500 지수는 거의 상관관계가 없습니다.
    • 코스피 (0.40): 삼성전자와 코스피는 다소 낮은 양의 상관관계를 보여줍니다.