주식 투자를 하다 보면 뉴스나 경제 기사에서 MSCI 지수(MSCI Index)라는 용어를 자주 접하게 됩니다. 특히 “한국 증시의 MSCI 선진국 지수 편입”과 같은 기사는 매년 단골로 등장하는 주제이기도 합니다. 그렇다면 MSCI 지수는 정확히 무엇이며, 왜 전 세계 투자자들이 이 지수에 주목하는 것일까요?
이번 글에서는 MSCI 지수의 개념과 중요성, 그리고 주요 지수들을 확인하는 방법에 대해 알아보겠습니다.
MSCI(Morgan Stanley Capital International) 지수는 미국의 투자은행인 모건스탠리의 자회사인 모건스탠리 캐피털 인터내셔널이 발표하는 글로벌 주가지수입니다.
전 세계 주식 시장을 선진국(Developed Markets), 신흥국(Emerging Markets), 프론티어 시장(Frontier Markets) 등으로 분류하고, 각 국가의 상장 주식들을 조합하여 산출합니다. MSCI 지수는 글로벌 펀드 매니저들이 투자 포트폴리오를 구성하거나 성과를 평가할 때 사용하는 가장 대표적인 벤치마크(기준) 역할을 합니다.
MSCI 지수가 금융 시장에서 막대한 영향력을 가지는 이유는 패시브 자금(Passive Funds) 때문입니다.
최근 몇 년간 특정 지수의 수익률을 그대로 추종하는 ETF(상장지수펀드)나 인덱스 펀드의 규모가 기하급수적으로 커졌습니다. 이러한 펀드들은 MSCI 지수를 추종하는 경우가 많습니다. 따라서 특정 국가나 기업이 MSCI 지수에 새로 편입되거나 비중이 늘어나면, 해당 지수를 추종하는 글로벌 자금이 기계적으로 유입되어 주가 상승을 견인하는 효과가 발생합니다. 반대로 지수에서 제외되거나 비중이 줄어들면 대규모 자금 유출이 일어날 수 있습니다.
한국은 현재 MSCI 신흥국(EM) 지수에 속해 있습니다. 한국 경제의 규모나 위상을 고려할 때 선진국 지수에 편입되어야 한다는 목소리가 꾸준히 나오고 있으며, 정부 차원에서도 외환시장 개방, 영문 공시 확대 등 시장 접근성을 개선하여 선진국 지수로 승격하기 위한 노력을 지속하고 있습니다. 선진국 지수에 편입될 경우, 코리아 디스카운트 해소와 함께 안정적인 글로벌 장기 투자 자금의 유입을 기대할 수 있습니다.
MSCI 지수는 단순한 숫자의 나열이 아니라, 글로벌 자본이 어느 방향으로 흘러가고 있는지를 보여주는 중요한 지표입니다. 성공적인 투자를 위해 MSCI 지수의 흐름을 꾸준히 모니터링해 보시기 바랍니다.
암호화폐 트레이딩 봇이나 데이터 분석 시스템을 개발할 때 가장 중요한 것 중 하나는 실시간 시장 데이터를 빠르고 안정적으로 수집하는 것입니다. 이번 포스트에서는 업비트(Upbit) 거래소의 WebSocket API를 활용하여 실시간으로 가격과 호가 데이터를 받아오는 방법을 다룹니다.
조회한 테이블 좌측의 ℹ️ 아이콘을 클릭하면 Timeseries code를 확인할 수 있는데, 여기서 국가 코드와 지표 코드를 알 수 있습니다. 예를 들어, Timeseries code: KOR.NGDP_RPCH.A는 한국(KOR)의 실질 GDP 성장률(NGDP_RPCH)을 의미합니다. A는 연간 데이터를 나타냅니다.
kr_data.plot(x="TIME_PERIOD",y="VALUE",title="Korea GDP Gap Over Time",kind="line",ax=axes[1, 2])
plt.tight_layout()
양국의 실질 GDP는 꾸준히 증가하는 추세를 보이며, 실질 GDP 성장률은 경기 변동에 따라 등락을 반복하는 모습을 확인할 수 있습니다.
GDP 갭 역시 경제 상황에 따라 변화하는 모습을 시각적으로 파악할 수 있습니다. 잠재 GDP는 경제가 완전 고용 상태에서 생산할 수 있는 최대 생산량을 나타내는데, GDP 갭이 양수일 경우 실제 GDP가 잠재 GDP를 초과하는 상태를 의미하며, 음수일 경우 그 반대를 의미합니다. GDP 갭이 양수로 크면 인플레이션 압력이 증가할 수 있고, 음수로 크면 경기 침체의 신호일 수 있습니다.
이와 같이 파이썬을 활용하여 IMF WEO 데이터베이스에서 각국의 GDP 데이터를 수집하고 분석할 수 있습니다. 미국, 한국 외에도 다양한 국가의 GDP 데이터를 동일한 방법으로 수집하여 비교 분석할 수 있습니다.
여기서 CPI, PPI는 전월 대비 % 값입니다. CPI와 코스피를 봤을 때 2001년 부근에서는 서로 역관계처럼 보이다가 2007년 부근에서는 코스피가 CPI를 선행하는 것처럼도 보입니다. PPI도 구간에 따라서 상관성이 다르게 보입니다. 즉 물가 지수와 코스피만으로 서로가 밀접한 상관성이 있다고 말할 수는 없어 보입니다. 이 부부은 2008년 금융위기로 주식 폭락과 물가
실제로 피어슨 상관계수를 구해 보면 구간에 따라서 매우 큰 차이가 생기는 것을 볼 수 있습니다.
from scipy.stats import pearsonr
_df = df[df['date'] >='20150101']
print(pearsonr(_df['close'], _df['cpi']))
print(pearsonr(_df['close'], _df['ppi']))
(0.3184625030996628, 1.1693520291646116e-42)
(0.7737092632552787, 0.0)
그렇다고 상관성이 아주 없다고 볼 수도 없습니다. 주식 딥러닝 모델을 구축할 때 학습데이터의 피처로 충분히 활용할 만하다고 보입니다.
눈으로 보기에는 “kospi” 검색어가 급증할 때 코스피 지수가 폭락한 경우가 많았음이 보입니다. 공포 심리에 의해 뉴스 등을 찾아보기 위해 검색이 급증하고 실제로 코스피 지수도 요동치는 경우가 있습니다. 물론 상관성은 높지 않아 보이지만 검색 급증이 있으면 하나의 작은 위험 신호로 고려하는 것도 나쁘지 않을 것입니다. 조심해서 나쁠 것은 없습니다.
다음과 같이 상관 계수를 뽑아 보면 그렇게 상관성은 높게 나오지 않습니다. 시계열 전체에서의 상관성 보다는 검색 급증 시그널 정도만 잘 포착하는 것이 의미있어 보입니다.
먼저 개별종목 공매도 거래 데이터를 받아오겠습니다. 크롬이나 웨일 브라우저에서 F12 키를 눌러 개발자 도구를 열어줍니다. 그리고 다음과 같이 Network 탭에서 Fetch/XHR 하위 탭을 확인합니다. 그리고 조회 버튼을 다시 누르면 아래에 getJsonData.cmd 내역이 뜨고 여기서 요청 정보를 확인할 수 있습니다.
여기서 Request URL, Request Headers, Form Data를 확인합니다. 다음과 같이 확인한 정보로 요청 준비를 합니다.
이 데이터로 다양한 분석을 해볼 수 있겠습니다. 여기서는 공매도 잔고는 많으면서 공매도 거래는 적은 순으로 정렬해 봅니다.
_df['score'] = _df['비중'] / (_df['거래량비중'] +1)
_df.sort_values('score',ascending=False)
index
종목코드
종목명
증권구분
공매도거래량
공매도거래량업틱룰
공매도거래량업틱룰예외
거래량
거래량비중
공매도거래대금
공매도거래대금업틱룰
공매도거래대금업틱룰예외
거래대금
거래대금비중
종목명_dup
공매도잔고수량
상장주식수
공매도잔고금액
시가총액
비중
score
97
034220
LG디스플레이
주권
4,420
2,290
2,130
1,949,194
0.23
89,668,950
46,585,150
43,083,800
39,626,663,800
0.23
LG디스플레이
28,935,291
357,815,700
568,578,468,150
7,031,078,505,000
8.09
6.577236
620
097520
엠씨넥스
주권
30
0
30
83,676
0.04
1,333,050
0
1,333,050
3,713,085,850
0.04
엠씨넥스
435,409
17,963,282
19,332,159,600
797,569,720,800
2.42
2.326923
370
032350
롯데관광개발
주권
17,567
16,928
639
882,332
1.99
324,702,700
312,941,650
11,761,050
16,281,919,250
1.99
롯데관광개발
4,726,867
69,275,662
94,300,996,650
1,382,049,456,900
6.82
2.280936
699
006490
인스코비
주권
675
0
675
1,384,422
0.05
2,285,320
0
2,285,320
4,702,224,255
0.05
인스코비
1,824,640
109,848,100
6,541,334,400
393,805,438,500
1.66
1.580952
578
003620
쌍용차
주권
0
0
0
0
0.00
0
0
0
0
0.00
쌍용차
2,180,965
149,840,002
6,041,273,050
415,056,805,540
1.46
1.460000
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
983
75701B93
현대유퍼스트부동산25호 A
수익증권
0
0
0
0
0.00
0
0
0
0
0.00
NaN
NaN
NaN
NaN
NaN
NaN
NaN
984
75702B93
현대유퍼스트부동산25호 C-i
수익증권
0
0
0
0
0.00
0
0
0
0
0.00
NaN
NaN
NaN
NaN
NaN
NaN
NaN
985
75701BA7
현대유퍼스트부동산30호[파생형] A
수익증권
0
0
0
0
0.00
0
0
0
0
0.00
NaN
NaN
NaN
NaN
NaN
NaN
NaN
986
75702BA7
현대유퍼스트부동산30호[파생형] C-i
수익증권
0
0
0
0
0.00
0
0
0
0
0.00
NaN
NaN
NaN
NaN
공매도 잔고가 많다는 것은 다시 상환해야 할 물량이 많다는 것이고 동시에 공매도 거래 비중이 적다면 주가가 바닥에 가까워 졌다고 추측해 볼 여지가 있습니다. 주식 거래에서 확실한 것은 없습니다. 다양한 금융데이터 분석을 통해 성공적인 투자에 한걸음씩 다가가는 것이 중요하다고 봅니다.
퀀티랩 주식투자 대표 모델인 Quantylab Long-Term Trading (QL) 모델을 업데이트 했습니다. 기존 모델에 비해 다양한 시장지표 및 종목지표를 추가하고 레이블링을 조정하는 작업이었습니다.
Feature 수는 412개로 326개 시장지표 자질과 86개 종목지표 자질로 구성했습니다. 각종 지표에 Moving Average 등을 적용하여 자질 수는 부풀려진 면이 있습니다.
시장지표는 코스피/코스닥 지수, 해외 주식 시장 지수, 환율, 채권, 금리, 원자재, GSCI, 달러 지수, BDI, 필라델피아 반도체 지수, 미국시장 변동성 지수, MSCI 지수 등을 포함합니다. 종목지표는 종목 주가, 거래량, 시가총액, Bollinger Band, MACD, RSI, 수급, PER, PBR, ROE, 배당수익률, 기관/외국인/개인 수급, 공매도 비율, 대차잔고액 등을 포함합니다. 이들 시장지표 및 종목지표 자질들을 모아서 표준화 (Standardization) 했습니다.
레이블링은 수익성, 변동성, 거래규모 지표를 만들어 조합했습니다. 수익성 지표는 중장기 기간에서 종가의 변곡점을 찾아서 현재 종가와 다음 변곡점과의 차이를 기대 수익률로 삼았습니다. 변동성 지표는 변곡점 사이에서의 표준편차로 구했습니다. 거래규모 지표는 종목의 거래대금에 log를 취해 사용했습니다.
이렇게 자질과 레이블링을 마치고 적당히 심층신경망 레이어를 구성하여 학습했습니다. 중간에 이런저런 실수로 시행착오를 겪었지만 다 생략하고 결과를 바로 공유하려 합니다.
학습에는 2015~2019년 기간내의 데이터를 사용했습니다. 이렇게 학습한 모델로 2020년부터 현재까지 일단위로 종목 점수를 구하여 매수/매도를 판단해서 종가매매 백테스팅을 수행했습니다. 즉, 학습과 백테스팅 데이터가 겹쳐지지 않게하여 의미있는 백테스팅이 되도록 했습니다.
백테스팅 결과 2020년 부터 2021-09-17 까지의 평가 수익률은 +73.07%로 동기간 코스피 대비 30% 정도 높았습니다. QL 모델로 매수/매도를 판단한 내역은 다음과 같습니다.