주식시장은 국내 사정 뿐만 아니라 해외 주요 국가들의 상황에 영향을 받습니다. 많은 투자자들이 특히 미국 주식시장 상황을 관심있게 지켜보는 이유가 미국 주식시장 상황에 우리나라 주식시장이 큰 영향을 받는다고 생각해서일 것입니다. 이번 포스트에서는 우리나라 주식시장과 주요국 주식시장들 간의 상관관계를 살펴보겠습니다.
주요 주식시장으로 한국의 KOSPI, 미국의 Dow Jones (DJI), Nasdaq (NAS), S&P 500 (SPI), 일본의 니케이 225 (NII), 중국의 상해종합 (SHS), 홍콩의 항셍 (HSI), 영국의 FTSE 100 (LNS), 프랑스의 CAC 40 (PAS), 독일의 DAX30 (XTR)를 들 수 있습니다. 괄호 안의 코드명은 네이버 금융을 참고했습니다. 각 해외 주식시장 지수들과 한국의 KOSPI 사이의 상관관계는 다음과 같습니다.
상관관계가 높은 순으로 정렬해 보면 다음과 같습니다.
Index
Correlation
HSI@HSI
0.6646677893714394
NII@NI225
0.39574631268446814
SHS@000001
0.26712766899597473
LNS@FTSE100
0.12171746103767508
DJI@DJI
0.09225215796116076
PAS@CAC40
0.047920317117435045
XTR@DAX30
0.03127491770767439
NAS@IXIC
0.019002467506360643
SPI@SPX
-0.011244728898221503
이렇게 일일이 상관관계를 살펴보기 전에는 코스피가 미국 증시와 가장 비슷한 흐름을 보일 것으로 생각했으나, 실제로는 홍콩 증시와 더 비슷한 것을 알 수 있습니다. 그리고 확실히 코스피는 홍콩, 일본, 중국 등의 증시와 관계가 깊다고 볼 수 있습니다.
기술적 분석(Technical Analysis)는 과거 축적된 주가와 거래량 등을 분석하여 미래 주가의 방향성을 예측하는 분석 방법입니다. 대표적인 보조지표(Indicator)로 이동평균(Moving Average), 볼린저밴드(Bollinger Band), Moving Average Convergence Divergence(MACD), Relative Strength Index(RSI) 등이 있습니다.
보조지표들 외에도 차트에서 패턴을 알아내기도 합니다. 대표적인 패턴으로 Three Line Strike, Two Black Gapping, Three Black Crows, Evening Star, Abandoned Baby 등이 있습니다.
이번 포스트에서는 기술적 분석 라이브러리인 TA-LIB의 Python Wrapper에 대해서 소개하고자 합니다. TA-LIB를 이용하면 이동평균, 볼린저밴드, MACD, RSI 등의 대표적인 기술적 분석 보조지표를 쉽게 계산할 수 있고 다양한 차트 패턴을 포착할 수 있습니다. 자세한 기능은 이 문서에서 확인할 수 있습니다.
IMF에서 세계 지표들을 확인할 수 있습니다. 이번 포스트에서는 파이썬으로 IMF 사이트에서 GDP 관련 지표들을 파이썬으로 얻어오는 방법을 다루겠습니다.
국제통화기금(IMF, International Monetary Fund)는 선진국들이 출자하는 펀드이며 세계 경제 지표를 조사하여 공개하고 있습니다. IMF에 대한 자세한 사항은 나무위키 - IMF를 참고하세요.
국내총생산(GDP, Gross Domestic Product)에는 명목 GDP(Nominal GDP)와 실질 GDP(Real GDP)가 있습니다. 명목 GDP는 당해의 시장가격으로 가치를 계산하고 실질 GDP는 물가를 고려한 가격으로 가치를 계산합니다. 따라서 경제성장률은 실질 GDP의 성장률을 의미합니다. 한국의 GDP는 나라지표 사이트에서 확인할 수 있습니다.
다음으로 얻고자 하는 데이터 종류를 선택합니다. 이 포스트에서 확인하고자 하는 데이터는 Gross domestic product, constant prices (Percent change)와 Output gap in percent of potential GDP (Percent of potential GDP)이긴 하지만 전체 다 선택하겠습니다.
이제 다음 화면에서 Start Year를 1980으로 변경하고 나머지는 기본 설정으로 둔 상태에서 Prepare Report 버튼을 누릅니다.
조금 기다리면 다음과 같은 화면이 나옵니다. 화면에 표시하기에 데이터가 너무 크다는 문구가 나오는데, 그 아래에 다운로드 링크가 있습니다. 이 링크를 클릭하면 WEO_Data.xls 파일을 다운받을 수 있습니다. 이 파일은 사실 TSV(Tab-separated Values) 입니다.
이제 파이썬으로 이 파일을 다운받고 읽어 보겠습니다. 먼저 다음처럼 requests 라이브러리를 사용해서 IMF 데이터를 요청하고 파일을 저장합니다.
파이썬에서 봉차트를 제공하는 라이브러리가 많지 않습니다. 필자는 matplotlib에서 떨어져 나온 mpl_finance와 bokeh 정도로 알고 있습니다. 이미 mpl_finance로 봉차트를 그리는 방법은 이전 포스트 Matplotlib으로 봉차트(Candlestick Chart) 그리기
에서 다루었습니다.
이번 포스트에서 bokeh로 봉차트를 그리는 방법에 대해서 다루겠습니다. bokeh는 Anaconda에서 개발 중인 차트 라이브러리 입니다. matplotlib과 matplotlib 기반인 seaborn과는 다르게 독자 노선을 가지는 라이브러리 입니다. bokeh는 웹에 최적화 되어있는 라이브러리 입니다. matplotlib을 웹브라우저에 띄우려면 차트를 png 등의 그림으로 변환하여 보여줘야 해서 응답형(reponsible) 차트를 웹에 띄우기가 어렵습니다. 그래서 보통 웹에 차트를 띄울 때는 데이터만 서버에서 받고 Chart.js와 D3.js 같은 자바스크립트 라이브러리를 사용하여 데이터를 가시화 합니다. bokeh는 파이썬에서 차트를 가시화하고 그 결과를 쉽게 웹에 띄울 수 있는 여러 방법을 제공합니다. 이 포스트에서는 다루지 않겠습니다.
bokeh에서 봉차트를 제공하고 있습니다. bokeh 봉차트 문서에서 상세한 정보를 확인해 보세요.
먼저 Anaconda3가 설치되어 있는 상태라 가정하고 글을 이어나가겠습니다. Jupyter Lab(Notebook)에서 bokeh가 잘 설치되어 있는지 확인합니다.
from bokeh.io import output_notebook, show
from bokeh.plotting import figure, gridplot
output_notebook()
BokehJS 0.12.16 successfully loaded.
이렇게 로딩이 성공되었다는 메시지가 뜨는지 확인합니다. 만약 다음과 같은 메시지가 뜬다면 Jupyter Lab의 Extension을 설치해야 합니다.
Loading BokehJS ...
JavaScript output is disabled in JupyterLab
Anaconda Prompt에서 다음과 같이 jupyterlab_bokeh 확장을 설치합니다.
Terminal window
jupyterlabextensioninstalljupyterlab_bokeh
설치가 되지 않는다면 아마도 node.js가 설치되어 있지 않아서일 것입니다. 그렇다면 conda install nodejs를 통해 먼저 node.js를 설치하고 다시 jupyterlab_bokeh 확장을 설치합니다.
bokeh가 잘 설치되어 있다면 이제 봉차트를 그릴 준비가 되었습니다. 차트 데이터는 다음과 같이 ['date', 'open', 'high', 'low', 'close', 'volume']의 리스트로 있습니다.
시스템 트레이딩에 관심 있는 분들이라면 주식투자 자동화에도 관심이 있을 것입니다. 주식투자 자동화의 첫걸음은 증권사 HTS API 자동 로그인 입니다. 증권사 HTS마다 그 방법이 다르며 이번 포스트에서는 대신증권의 크레온 플러스를 파이썬에서 자동으로 로그인하는 방법을 다루겠습니다.
크레온 다운로드센터에서 CREON HTS를 다운받습니다. CREON HTS에 CREON Plus가 포함되어 있습니다. 설치 과정은 생략하겠습니다.
크레온 HTS를 실행하면 다음과 같은 로그인 창이 나타날 것입니다. 직접 크레온 HTS에 로그인하여 API를 사용할 때는 로그인 창 상단에 creon plus 버튼을 누르고 ID, 비밀번호, 공인인증 비밀번호(조회전용이 아닌 경우)를 입력하여 로그인 버튼을 누르면 됩니다.
Anaconda3 x86(32bit) 버전을 아무 문제 없이 잘 쓰고 있었다. 굳이 32bit 버전을 사용한 이유는 HTS API를 사용하기 위해서 였습니다. 증권사 장단점 비교 글에서 그 이유를 설명했습니다.
그런데 윈도우 업데이트가 되었는지 갑자기 Anaconda3 x86의 python.exe를 실행하려 하면 다음과 같은 에러 메시지가 표시되며 실행되지 않았습니다.
먼저 이 에러 메시지를 검색해서 이런 저런 방법을 써봤지만 해결되지 않았습니다. 관리자 권한으로 실행해봐도 안되고, “기본 제공 관리자 계정에 대한 관리자 승인 모드” 사용을 해봐도 안됐습니다. Anaconda 버전이 낮아서 그런가 해서 다시 설치해 봤는데도 안되었습니다.
결국 Anaconda3 x64 버전에 x86 환경을 생성하는 것으로 해결는데 그 방법은 다음과 같습니다.
먼저 cmd prompt를 엽니다. 그리고 다음과 같이 환경 설정 후 x86 환경을 설치합니다.