미국 ETF와 유사한 국내 ETF 찾기!

퀀트 전략/자산배분|2020. 10. 19. 19:51

 지난 포스팅에서 VAA 전략을 국내 ETF 버전으로 운영해보면 어떨까 알아보았습니다. 그런데 내용을 진행하다보니 VAA 전략에서 사용한 미국 ETF에 대응하는 국내 ETF를 찾기가 어려웠습니다. 찾더라도 눈으로 일일히 확인해가며 비슷할 것 같은 ETF를 확인해보고 주먹구구식으로 대입해서 확인해보는 방법이었습니다. 이런 방법이 비효율적이라고 생각했고, 앞으로 다양한 해외 전략을 국내 ETF 버전으로 운영하는 것에 대한 포스팅을 올릴 계획이었기에 조금 더 체계적이고 정확하게 대응되는 ETF를 찾아보려고 했습니다.

 

 유사하다는 것을 통계적인 관점에서 바라보면 '상관계수가 높다'고 표현할 수 있습니다. Pandas를 활용하면 쉽게 상관계수를 구할 수 있어서 사용해보았습니다.

 

1.대상 미국 ETF 데이터 조회

 

더보기
start_day = datetime(2019,1,1) # 시작일
end_day = datetime(2020,10,10) # 종료일

TARGET_ETF = 'SPY'
df_target = pdr.get_data_yahoo(TARGET_ETF, start_day, end_day)['Adj Close']
df_target.head(10)

 

 우선 가장 대표적인 미국 ETF인 SPY(S&P 500 지수 추종)으로 살펴보도록 하겠습니다. 2019년부터 현재까지의 데이터로 비교를 해보도록 하겠습니다. 기간을 어떻게 잡느냐에 따라서 상관계수가 잘 분석되기도, 엉뚱하게 분석되기도 합니다.

 

 예를 들어서 1주일로 기간을 짧게 잡으면 우연히 가격 추이가 비슷하게 흘러간 것을 유사하다고 판단할 수도 있습니다. 그래서 여러 기간으로 테스트를 해보다 약 1년 정도면 데이터를 로드하는데 시간이 그렇게 오래 걸리지도 않고, 적절히 상관관계를 분석하는 것으로 판단됩니다.

 

2.국내 ETF 리스트 조회

 

더보기
# 전체 ETF 리스트
url = 'https://finance.naver.com/api/sise/etfItemList.nhn'
json_data = json.loads(requests.get(url).text)
df_etf_list = json_normalize(json_data['result']['etfItemList'])
df_etf_list.head(5)

 

 네이버 증권에서 제공하는 API를 사용하여서 현재 국내에 있는 전체 ETF 리스트를 가져옵니다. 총 ETF의 개수는 453개 입니다. ETF의 이름을 통해서 대략적으로 어떤 내용인지 알 수 있긴 하지만, 실제로 미국 ETF와 일일히 비교하기엔 확실히 많은 숫자입니다. 데이터를 가져오면 아래와 같은 형식으로 조회해볼 수 있습니다. 이 중 우리가 사용할 데이터는 종목코드와 ETF 이름 정도가 될 것 같습니다.

 

 

3.국내 ETF 데이터 조회

 

더보기
start_day = '20190101' # 시작일
end_day = '20201010' # 종료일

cal_days = (datetime.strptime(end_day, "%Y%m%d") - datetime.strptime(start_day, "%Y%m%d")).days

col_list = []
df_etf = pd.DataFrame()

for i in range(len(df_etf_list)):
    df_close = util.get_stock_data(df_etf_list.loc[i,'itemcode'], start_day, end_day)['close']
    
    if len(df_close) > cal_days/2 :
        col_list.append(df_etf_list.loc[i,'itemcode'])
        df_etf = pd.merge(df_etf, df_close, how='outer', left_index=True, right_index=True)

 

 네이버 API를 통해서 가져온 ETF 리스트를 통해 약 1년 반 동안의 주가 데이터를 가져옵니다. 조회할 기간의 절반에도 못 미치는 데이터만 존재하는 경우에는 포함하지 않습니다. 예를 들어 출시된지 일주일 밖에 안 된 ETF들의 상관관계는 정확하게 파악하기 힘듭니다. 우연히 비슷하게 주가가 비슷하게 움직였다는 이유로 상관계수가 높게 측정될 가능성이 높습니다.

 

4.미국 ETF와 국내 ETF 데이터 조인

 

더보기
col_list.append(TARGET_ETF)
df_etf = pd.merge(df_etf, df_target, how='outer', left_index=True, right_index=True)
df_etf.columns = col_list
df_etf.head(5)

 

 

 테스트할 SPY와 국내 ETF의 일별 가격 데이터를 조인하여 하나의 데이터프레임 형태로 만들었습니다. 이 데이터로 상관관계를 분석해보도록 하겠습니다.

 

더보기
# 상관계수 분석
corr = df_etf.corr(method='pearson')
top10 = corr.sort_values(by=TARGET_ETF, ascending=False).head(10)[TARGET_ETF]
pd.merge(top10, df_etf_list, how='left', left_index=True, right_on='itemcode')[[TARGET_ETF,'itemcode','itemname']]

 

 

 위 도표를 보면 102110과 069500의 상관계수가 0.999956으로 상당히 높다는 사실을 확인할 수 있습니다. 상관계수는 1에 가까울수록 양의 상관관계(매우 유사), -1에 가까울수록 음의 상관관계(반대), 0에 가까울수록 아무런 상관관계가 없음을 의미합니다.

 

 종목코드 102110은 TIGER 200, 069500은 KODEX200으로 둘 다 KOSPI 지수를 추종하는 ETF입니다. 동일한 지수를 추종하기 때문에 상관관계가 아주 높게 측정되었죠.

 

 그렇다면 저희가 샘플로 찾던 SPY와 가장 높은 상관관계를 가진 ETF는 무엇일까요? 어쩌면 당연한 결과이지만 S&P 지수와 연관된 ETF들이 높은 상관계수를 기록했습니다.

 

SPY와 상관계수가 높은 ETF들

5.가격 추이 그래프 비교

 

더보기
scaler = MinMaxScaler() 
scaled_values = scaler.fit_transform(df_etf) 
df_etf.loc[:,:] = scaled_values

plt.figure(figsize=(15,5))
sns.lineplot(data=df_etf[[TARGET_ETF,'272560','239660','278620']])

 

SPY와 219480의 가격 추이 그래프

 상관계수가 매우 높은 두 ETF의 가격 추이 그래프를 그려보면 위와 같습니다. 움직임 자체가 매우 유사하다는 사실을 확인할 수 있습니다. 이 정도의 유사성을 보인다면 해외 전략에서 국내 ETF로 대체할 수 있을 것으로 보여집니다.

 

6. AGG(미국 총채권), SHY(미국 단기채)와 유사한 ETF는?

 지난 포스팅에서 대응할만한 ETF를 찾지 못 했던 AGG와 SHY를 위와 같은 방식으로 유사한 ETF를 찾아보겠습니다. 우선 AGG의 결과입니다.

 

 AGG와 유사한 ETF로는 272560(KBSTAR 단기국공채액티브), 239660(ARIRANG 우량회사채50 1년), 278620(ARIRANG 단기채권액티브)입니다. 그리고 이를 그래프로 표기해보면 아래와 같습니다.

 

 

 얼추 비슷하게 움직이는 것처럼 보이지만, 코로나로 인해 급락을 했을 때 큰 차이를 보냅니다. 국내 ETF가 안 떨어졌으니 더 좋은 것이 아닌가라고 생각하실 수도 있지만, 공격자산의 모멘텀 스코어가 수비자산으로의 전환 신호라는 사실을 생각해본다면 AGG를 단순히 이 ETF로 전환했을 때 전환 신호로서의 역할을 제대로 할 수 있을지는 의문입니다.

 

 다음은 SHY와 유사한 ETF에 대한 결과입니다. 122260(KOSEF 통안채1년), 272560(KBSTAR 단기국공채액티브), 196230(KBSTAR 단기통안채) 순으로 상관계수가 높다고 나왔습니다. 이를 그래프로 그려보면 아래와 같습니다. 역시 전체적으로 비슷하기는 하지만 이번 코로나 시기에 차이가 나는 것을 확인할 수 있습니다.

 

 

 그리고 지난 포스팅에서 댓글로 알려주신 홍선님께서 알려주신 329750(TIGER 미국달러단기채권액티브 ETF)도 함께 비교해보았는데, 상관계수도 많이 낮고 단순 그래프 비교를 살펴보아도 차이가 크게 난다는 사실을 알 수 있습니다. 이 ETF로 SHY를 대체하기에는 무리가 있어보입니다! 

 

댓글()