본문 바로가기
python/주식

1. Python 주식 일간 변동률 계산 - ( 삼성전자 vs 애플 시각화 비교 )

by 맑은안개 2021. 2. 16.

일간변동률은 주식간의 주가변화를 상대적으로 비교하기 용이한 척도다. 국내 주식과 해외 주식간에 주식변화 추이를 비교하는 경우 통화에 차이가 있기 때문에 단순 종가로는 비교하는 것은 무의미하다. 변동률을 구한 뒤 누적합계를 구하여 비교하면 유의미한 결과를 얻을 수 있다. 

 

본 블로그에서는 샘플DataFrame을 사용하여 일간변동률, 누적합계를 쉽게 이해해보고 뒤에서 삼성전자와 애플의 일간변동율 변화 시각화하여 비교해 보도록 한다. 


일간변동률

  • 주가의 변화를 상대적으로 비교하기 위해 일간변동률을 사용한다. 

  • 식은 아래와 같다.

일간변동률


Python 예제 ( python version 3.9 )

가상의 주식데이터 생성

import pandas as pd

# 가상의 주식 데이터 10일치 생성
close_data = [1000, 1010, 1050, 1100, 1080, 1090, 1130, 1150, 1200, 1220]
t = pd.DataFrame(index=pd.date_range(start='20210101', periods=10), data=close_data, columns=['close'])



t['cs'] = t.dpc.cumsum()

print(t)

일간변동률 계산

t['dpc'] = (t.close - t.close.shift(1)) / t.close.shift(1) * 100

shift함수는 데이터를 주어진 인자 수 만큼 이동시킨다.

누적합계 계산

t['cs'] = t.dpc.cumsum()

Series의 cumsum() 함수를 사용하여 누적합계를 구한다.

결과

결과데이터


삼성전자 vs 애플 변동률 비교

스크래핑, 시각화 라이브러리 import 

import pandas_datareader as web
import plotly.graph_objects as go

Source code

#1
samsung_df = web.get_data_yahoo('005930.KS', start='2020-01-01') 
apple_df = web.get_data_yahoo('AAPL', start='2020-01-01')

samsung_df['dpc'] = ( samsung_df['Close'] - samsung_df['Close'].shift(1) ) / samsung_df['Close'] * 100 #2
samsung_df['cs'] = samsung_df['dpc'].cumsum() #3

apple_df['dpc'] = ( apple_df['Close'] - apple_df['Close'].shift(1) ) / apple_df['Close'] * 100 #2
apple_df['cs'] = apple_df['dpc'].cumsum() #3

#4
fig = go.Figure(
    data = [
        go.Scatter(x=samsung_df.index, y=samsung_df['cs'], name='삼성전자'), 
        go.Scatter(x=apple_df.index, y=apple_df['cs'], name='애플') 
    ]
)

fig.show() #5
  • #1: 야후금융 api를 사용하여 삼성전자, 애플의 주식데이터를 스크래핑 한다.

  • #2: 일간변동률을 구한다.

  • #3: 누적합계를 구한다.

  • #4: Figure 객체에 누적합계 데이타를 붙인다.
  • #5: 그래프를 출력한다.

 

결과

 

반응형