채권 ETF 종류와 추천, 매월 100만원씩 투자 했다면 결과는?!

목차

    2020. 9. 11. 06:30

    채권
    채권

    채권은 주식과 음의 상관관계를 가집니다. 그래서 포트폴리오를 만들 때 주식과 채권을 일정 비율로 구성하는 경우가 많습니다. 보통 주식 60%, 채권 40%로 구성합니다. 채권 ETF 중 괜찮은 상품을 알아보고, 매월 100만 원씩 투자하면 어떤 결과가 나오는지 알아보았습니다.

     

     

    채권의 종류를 알아보고, 다음 매월 100만원씩 투자한다고 가정했을 때 그 결과도 확인해 보았습니다. 포스팅 하단에 ETF에 투자하면서 소득공제받는 방법과 다른 종류의 ETF들도 정리해 보았으니 같이 참고하시기 바랍니다.

     

    1. 채권 종류

    채권의 종류는 크게 발행처와 상환기간, 이자지급방법을 기준으로 나눌 수 있습니다. 발행처를 기준으로 국공채, 회사채로 나뉩니다. 상환기간을 기준으로는 단기채, 중기채, 장기채로 나눌 수 있습니다. 이자지급방법에 따라서는 이표채, 할인채, 복리채로 나눕니다. 각각에 대해서 자세히 알아보겠습니다.

     

    1) 국공채, 회사채

    발행처를 기준으로 나누는 방법입니다. 국공채는 정부나 공적인 기관에서 발행한 채권으로 부실 위험이 적지만, 대신 이율이 낮습니다. 회사채는 회사에서 발행한 채권으로 부실 위험은 국공채보다 높지만, 그만큼 이율도 높은 채권입니다. 포트폴리오를 구성할 때는 회사채보다 국공채에 투자한 ETF를 주로 대상으로 합니다. 장기간 투자하는 것을 가정으로 하기 때문에, 더 안정적인 성격의 자산을 편입하는 듯합니다. 발행처에 따라 세부적으로 국채, 지방채, 특수채, 금융채, 회사채로 나뉩니다.

     

    2) 단기채, 중기채, 장기채

    상환기간에 따라 나누는 방법입니다. 단기채는 상환기간이 1년 미만인 채권, 중기채는 1~5년, 장기채는 5년 이상의 채권을 말합니다. 상환기간이 길수록 수익률이 높고 금리변동에 민감합니다. 상환기간이 짧을수록 수익률은 낮고 금리에 덜 민감합니다.

     

    3) 시가총액 상위 ETF

    네이버 증권에서 시가총액 기준으로 상위 채권ETF를 정리해보면 아래와 같습니다.

    ETF명

    시가총액
    (억원)

    운영사

    운영보수

    추적오차율

    1년 수익률

    KODEX 단기채권 18,688 삼성자산운용 0.15% 0.03% 1.22%
    TIGER 단기통안채 14,717 미래에셋자산운용 0.09% 0.02% 1.09%
    KODEX국고채3년 733 삼성자산운용 0.15% 0.28% 1.69%
    KOSEF국고채10년 2,514 키움투자자산운용 0.15% 0.14% 1.24%
    TIGER 중장기국채 674 미래에셋자산운용 0.15% 1.06% 1.30%

     

    4) 추천 ETF

    이 중에서 KODEX 단기채권 ETF를 선택했습니다. 운영보수는 국고채에 투자하는 ETF가 동일합니다. 하지만 추적오차율이 가장 적습니다. 1년 수익률은 큰 차이는 없습니다. 단기 채권과 중장기 채권 중에 어떤 것을 선택해야 하는지 고민했는데요. 대부분 포트폴리오를 구성할 때는 상환기간이 긴 중장기채를 많이 편입했기 때문입니다. 하지만 앞으로 금리 변동이 많을 것으로 예상해 단기채권을 선택하고 수익률을 구해 보았습니다.

     

     

    2. 매월 KODEX단기채권 ETF 100만 원씩 매수한다면?

    이를 확인하기 위해 파이썬을 이용해서 코드를 작성했습니다. 전체 코드는 포스팅 하단에 파일로 첨부하였습니다. 앞에서 다룬 zipline패키지를 이용해서 KODEX 단기채권 ETF를 매월 100만원씩 투자하면 어떤 결과가 나오는지 구해 보았습니다.

     

    1) 데이터 수집

    우선 KODEX 단기채권 ETF 데이터를 수집했습니다.

    from kor_stock_to_csv import to_csv

    to_csv("153130","2015")

     

    데이터를 수집하고 난 후에는 data bundle에 등록해야 합니다. 터미널에서 아래와 같이 입력하여 수집한 데이터를 등록하였습니다.

    zipline ingest -b kor_stocks

     

    2) 100만 원 투자 가정 및 백테스트

    이제 코스피 ETF 적립식 투자를 계산한 것과 동일하게 매월 100만 원씩 매수한다고 가정하고, 코드를 작성하였습니다.

    from zipline.api import order, record, symbol, set_benchmark

     
    def initialize(context):
        context.i=0
        pass
     
    def handle_data(context,data):
        context.i+=1
        record(nth=context.i)
     
        if int(context.i)%23==0:
            buy_cnt=int(1000000/int(data.current(symbol('153130'), 'price')))
            order(symbol('153130'),buy_cnt)
            record(buy_cnt=buy_cnt)
            record(etf=data.current(symbol('153130'), 'price'))
        else:
            record(buy_cnt=0)
            record(etf=data.current(symbol('153130'), 'price'))
            pass
     

    터미널에서 아래와 같이 실행하여, 백테스트 결과를 얻었습니다.

    > zipline run -f buy_bond_etf_monthly.py --start 2015-1-1 --end 2020-8-9 --bundle kor_stocks --trading-calendar XKRX -o buy_bond_etf_monthly.pickle

     

    수익률을 아래와 같이 계산해보았습니다.

    import pandas as pd

     
    perf=pd.read_pickle('buy_bond_etf_monthly.pickle')
    # print(perf[["nth","buy_cnt","etf"]])
     
    cnt_sum=perf["buy_cnt"].sum()
    print("총 매수수량: {}".format(cnt_sum))
     
    perf["buy_amt"]=perf["buy_cnt"]*perf["etf"]
    buy_sum=perf["buy_amt"].sum()
    print("총매수금액: {}".format(buy_sum))
     
    last_price=perf.loc[perf["nth"]==perf["nth"].max(),"etf"][0]
    cur_sum=cnt_sum*last_price
    print("평가금액: {}".format(cur_sum))
    print("수익률: {:.2f}%".format(cur_sum/buy_sum*100-100))
     
    # 연간수익률 구하기
    import pyfolio as pf
     
    pf.create_full_tear_sheet(perf.returns)
    pf.timeseries.perf_stats(perf.returns)[["Annual return"]]
     
    [Out]:
    총 매수수량: 573
    총매수금액: 56342705.0
    평가금액: 58706715.0
    수익률: 4.20%
    Annual return:    0.039077

     

    약 5년 6개월간 573주를 매수했습니다. 총 매수금액은 5,600만 원 정도이고, 수익률은 4.2%였습니다. 코스피 200 ETF에 투자했을 때는 수익률이 16.9%였는데, 채권 ETF가 확실히 수익이 낮았습니다. 채권 ETF의 가격 흐름과 매수 시점을 그려보았습니다. 채권 ETF는 안정적(?)으로 꾸준히 상승하는 모습을 보여주었습니다.

     

    # 그래프 그리기

    import pandas as pd

    import seaborn as sns

     

    perf=pd.read_pickle('buy_bond_etf_monthly.pickle')

    sns.lineplot(x=perf.index,y=perf["etf"])

     

    # 매수시점 그리기

    buys=list()

    for t in perf.transactions:

        if len(t)>0:

            buys.append(t[0]['amount']>0)

        else:

            buys.append(False)

     

    buys=perf.ix[buys]

    sns.scatterplot(buys.index,perf.etf.ix[buys.index],s=100,markers="^",color='m')

     

    코드는 아래에 별도 파일로 올립니다.

    채권ETF.py
    0.00MB

     

    채권ETF-투자결과-그래프
    채권-ETF-가격-흐름

     

    보라색 원은 매수시점을 나타냅니다. 코스피 200 ETF와 채권 ETF를 같이 그려보면, 두 ETF의 성격을 더 잘 비교해 볼 수 있습니다. 두 ETF를 비교하기 위해, 15년 1월 1일의 값을 각각 100으로 놓고 그래프를 그려보았습니다.

     

    코스피-채권-ETF-가격흐름-비교
    코스피ETF-채권ETF-비교

     

    파란색이 코스피 200 ETF, 주황색이 채권 ETF의 가격 흐름입니다. 확실히 주식형 ETF의 변동폭이 훨씬 큰 것을 알 수 있습니다. 이를 가지고 포트폴리오를 구성하면, 어떤 결과가 나올지 궁금해집니다. 다음 포스팅에서는 코스피 200 ETF와 채권 ETF를 가지고 포트폴리오를 만들고, 결과를 비교해보겠습니다.

     

     

    3. 채권 ETF 투자하면서 소득공제받는 방법

    IRP계좌를 이용하면 ETF에 투자하면서, 소득공제를 받을 수 있습니다. IRP계좌는 개인의 연금 형성을 도와주기 위해 정책성으로 나온 상품입니다. 저도 IRP계좌를 이용해서 ETF 상품에 투자하고 있습니다. 그에 대한 후기도 다루었으니 참고하시기 바랍니다.

     

    4. 다른 ETF 종류

    채권 ETF 외에도 많은 종류의 ETF가 있습니다. 그중에서 많이 찾는 ETF 상품에 대한 내용을 정리해 보았으니 관심 있다면 참고하시기 바랍니다.

     

    ETF 관련 포스팅

     

    ETF는 개별 종목 선택에 대한 리스크를 줄여주는 괜찮은 금융상품이라고 생각합니다. 투자하면서 매일 떨어질지 오를지 고민하는 것도 정신건강에 매우 좋지 않습니다. 그보다는 미래 성장 가능성이 높은 분야나 국가, 주제에 ETF로 장기 투자하는 것도 한 번 고민해보시기 바랍니다.

     

    * 이 포스팅은 투자 권유의 목적이 아닙니다. 모든 투자에 대한 책임은 본인에게 있습니다.