본문 바로가기
프로그래밍/파이썬

파이썬을 활용한 주식 데이터 비교 프로그램

by 13ruce 2019. 10. 12.
반응형


파이썬, 정말 매력적인 프로그래밍 언어입니다.
여러 분야에 쓰이는 높은 활용도를 갖고 있음에도 불구하고 간결한 문법이라는 큰 강점을 가지고 있어서 진입 장벽이 낮아 처음 접하는 사람들도 어려움이 없습니다.
저역시 프로그래밍에 대한 어려움을 항상 느끼고 있는 중에 우연치 않게 파이썬을 접하게 되었고, 파이썬 관련 서적 및 자료들을 보면서 틈틈히 공부하기도 했습니다.
이번 포스팅을 통해 공유해보고자 싶은 것은 저번 유튜브 영상으로 잠깐 보여드렸던 세 종목의 주가 및 배당 정보를 비교하는 것에 대한 코딩이야기 입니다.
특히 Jupyter라는 개발도구는 작성한 코드에 대해서 실시간으로 눈으로 볼 수 있어 데이터 분석에 있어서 상당히 편리합니다. 또한 저와 같은 초보자 분들도 사용하시기에 편리할 것입니다.

"개발환경"
  • OS : Mac OS
  • 언어 : Python 3.x
  • 도구 : Jupyter Notebook
  • 사용할 패키지 :
    Pandas - 파이썬 데이터 분석을 위한 필수 라이브러리.
    matplotlib - 데이터 시각화를 위한 필수요소.
    pandas_datareader - 이 모듈을 이용해서 야후 파이낸스의 데이터를 쉽게 가져올 수 있음.

"미국 주식 주가 추이 비교 코드”


우리가 뽑아낼 것은 위의 이미지와 같이 각 종목의 일별 혹은 연도별 등 기간에 따른 주가를 시각화하여 비교하는 것입니다.


In[1]의 과정을 통해 먼저 분석에 필요한 라이브러리들을 임포트 합니다.
다음 In[2]에서 분석할 기간의 범위를 start, end 변수에 담아주도록 합니다.
그 다음으로 분석 대상 심볼의 정보와 분석에 필요한 파라미터를 담습니다.
여기서 위의 세 종목 LQD, LQD_DIV처럼 같은 종목임에도 배당정보를 출력해야할 변수를 따로 둔 것을 볼 수 있는데요.
이는 제가 검색을 해본 결과 DataReader에서 yahoo, yahoo-dividends 등 옵션을 나누어 놓은 것으로 확인되었습니다. 따라서 주가정보에 대한 변수와 배당정보에 대한 변수를 나눌 필요가 있었습니다.
또한 yahoo-dividends 옵션과 yahoo-actions가 같은 내용의 데이터를 가져오는 것으로 확인되었습니다.
이어서 In[3]을 통해 데이터를 잘 불러오는지 확인을 합니다.
그냥 LQD하셔도 중간값을 생략하여 데이터를 출력하지만 스크롤을 내리기 귀찮으니 tail(), head() 등으로 간단하게 보는 것이 좋을 것 같습니다.
이로서 변수 설정 및 데이터 정상출력 여부는 확인되었습니다.

Out[3]에서 각 항목을 보시면 각 날짜별로 최고가, 최저가, 시작가, 종가, 거래량, 조정 종가를 확인할 수 있습니다. (조정 종가는 어떤 개념인지 잘 모르겠군요. 공부하고 공유하겠습니다.)


In[6]에서 'Open' 부분을 변경함에 따라 출력하는 데이터의 모양이 달라집니다.
이는 Out[3]의 항목을 참고하셔서 출력설정을 하시면 된다는 것을 알 수 있지요.
따라서 Out[6]는 기간별 시가 추이를 비교한 값을 출력한 것이고요.
거래량을 보고싶다면 아래에 있는 In[9]와 같이 'Volume'으로 설정해 주시면 됩니다.



"미국 주식 배당금 추이 비교 코드"
제가 파이썬을 이용해서 가장 잘 써먹는 것 중 하나입니다.
dividend.com에서도 배당 히스토리를 출력할 수는 있으나, 종목별로 배당히스토리를 비교하여 출력할 수는 없습니다. 그리고 이를 pandas_datareader를 통해 해냈는데요.
상당히 유용하고 재미있었습니다.
In[2]에서 변수로 잡았던 LQD_DIV의 데이터를 출력한 내용입니다.
action에는 배당유무가 써있고, value에는 주당 배당정보가 쓰여져 있습니다.


이를 토대로 시각화를 해보면 아래와 같은 결과를 볼 수 있습니다.



Pandas_datareader를 통해 몇 줄 안되는 코드로 원하는 데이터를 출력할 수 있었다는 것을 알 수 있습니다.
만약 야후 API를 별도로 임포트 하거나 Beautifulsoup를 통해 HTML을 가공하여 출력을 했다면 그것도 재미있었겠지만 시간은 조금 더 소요되었을 것이라 생각합니다.
다만 한가지 아쉬운 점은 Pandas_datareader의 야후 파이낸스는 2018년 이후로 지원이 중단된 것 같군요.


또 다른 데이터 분석 패키지를 알아보고 효율적인 것이 있다면 한번 더 포스팅 하도록 하겠습니다.
소스코드는 깃허브를 통해서도 확인하실 수 있습니다.
주소에는 주피터 노트북 소스코드와 .py 코드 모두 올려놓았습니다.
업데이트에 대한 내용은 깃허브 및 블로그를 통해 공유드리도록 하겠습니다.





반응형