Google에서 온라인으로 제공하는 스프레드시트에 약간의 스크립트를 덧붙여, 저의 포트폴리오 현황을 정해진 시간대에 이메일로 보내주고, 자산배분과 리밸런싱을 도와주는 간단한 프로그램을 만들었습니다.

주요 기능

  • 다수 증권사의 국내/해외주식 계정에 산재된 종목들의 현황을 한 곳에서 확인할 수 있습니다. 보유수량과 평균 매입가만 입력하면 현재가와 환율을 자동으로 가져와 손익을 계산합니다.

    Positions

  • 자산유형(주식/채권/원자재/금/리츠 등) 및 투자지역(미국/한국/중국/선진국/신흥국 등)으로 구분된 자산배분 목표를 정하여 포트폴리오를 구성하고 변동사항을 손쉽게 확인할 수 있습니다.

    Charts

  • 당초 자산배분 목표를 벗어난 경우, 또는 향후 경제전망을 고려해 자산배분 목표를 변경하는 경우 리밸런싱을 해야하는데, 각 자산별로 목표 대비 얼마씩 조정해야 하는지 계산해 리밸런싱을 도와줍니다.

    Rebalancing

  • 앞서 소개한 모든 내용을 PDF로 만들어 매주 또는 매일 정해진 시간대에 이메일로 보내줍니다.

    Email

설치 방법

  1. 위 링크를 누르면 아래와 같은 화면이 나오는데, [Make a copy] 버튼을 눌러 자신의 Google Drive로 복사합니다. 루트 디렉토리에 Copy of Copy of Portfolio라는 파일이 복사되어 있을 것입니다.

    copy

  2. 파일명을 Portfolio 정도로 변경하고 적당한 폴더로 옮겨줍니다.

  3. 설치가 끝났습니다.

활용 방법

이제부터는 Excel 다루듯이 쓰시면 됩니다. 여기까지 읽어오신 분들께 스프레드시트의 사용법을 설명드릴 필요는 없을것 같고, 어디를 주로 수정해서 쓰시면 되는지만 알려드리겠습니다.

Dashboard 시트

Positions 테이블의 하늘색 부분은 종목을 처음으로 추가했을때 입력하는 곳입니다. 이후에는 초록색으로 칠해진 보유수량(Shares)과 평균 매수단가(Average)만 수정하시면 됩니다.

색이 칠해지지 않은 종목명(Name)과 평가액(Value) 등은 Google Finance에서 데이터를 가져와 계산해 보여주기 때문에 수정할 필요가 없습니다. 새로운 종목을 추가할땐 기존의 행을 복사해서 쓰는 것이 편합니다. 손익계산을 위해 숨겨놓은 컬럼이 있기 때문에 그렇습니다.

하단의 Charts는 Positions 테이블의 값을 토대로 보여주는 것이기 때문에 수정할 필요가 없습니다.

Rebalancing 시트

복잡해 보이지만 사실 아주 간단합니다. 이 시트의 목적은 자산배분 목표를 설정하고, 현재 평가액의 현황을 점검한 뒤, 목표대비 크게 벗어난 자산을 찾아내 얼마씩 가감해야 하는지 알려주기 위한 것입니다.

첫번째 Target Allocation 테이블은 자산배분 목표를 입력하는 곳입니다. 하늘색으로 표시된 부분만 수정하시면 됩니다. 두번째는 Current Status인데, 일반 테이블이 아니고 피벗 테이블입니다. Positions 테이블에서 지정한 자산유형(Asset Class)과 투자지역(Region)을 토대로 현재의 평가액(Value)에 따른 자산배분 현황을 계산해주기 때문에 수정할 필요가 없습니다. 세번째 Variance 테이블은 첫번째 테이블과 두번째 테이블의 차이를 계산해 얼마를 더 사야할지(양수), 얼마를 팔아야 할지(음수)를 알려줍니다.

Variance 테이블은 조건서식 기능을 활용해 어떤 자산을 가감해야 할지 노란색으로 알려줍니다. 노란색으로 표시되는 기준은 같은 색으로 칠해진 Threshold 부분에서 조절할 수 있습니다. 위 예시에서는, 총 평가액의 5%를 초과해 자산배분 목표와 벗어난 경우 노란색으로 표시하고 있습니다.

만약 Positions 테이블에서 자산유형(Asset Class)과 투자지역(Region)을 새로운 값으로 변경하셨다면 Current Status 피벗 테이블이 수정사항을 반영해 변경되어 있을 것입니다. 이 경우, Current Status 피벗 테이블을 기준으로 Target Allocation 테이블을 먼저 수정하시면 Variance 테이블도 Target Allocation 테이블에서 입력한 값으로 바뀔 것입니다. 스크립트로 자동화할 수 있지만, 발생 빈도에 비해 들이는 노력과 복잡도가 크게 증가하므로 생략했습니다.

이메일 발송

유일하게 스크립트를 사용한 부분입니다. 아래와 같이 [Apps Script]를 클릭해 스크립트 에디터로 진입할 수 있습니다. 앞서 스프레드시트를 복사하며 스크립트까지 함께 복사되어 있을 것입니다.

Dashboard 시트와 Rebalancing 시트를 PDF로 만들어 이메일로 발송하는 함수를 각각의 동명 .gs 파일에 정의했고, 23행과 24행의 수신자 이메일 주소(to), 참조자 이메일 주소(cc)를 수정 후 Run을 눌러 테스트해볼 수 있습니다. 이 스프레드시트에서 처음으로 이메일을 발송하기 때문에 권한을 요청하는 다이얼로그가 뜰텐데, 승인하면 됩니다.

이메일 보내는 함수를 Google 서버에서 정기적으로 실행하도록 Trigger를 등록할 차례입니다. 화면의 좌측에 세로로 나열된 메뉴에서 시계 아이콘으로 그려진 [Triggers] 를 누르고, 우측 하단의 [Add Trigger] 버튼을 누릅니다.

아래와 같이 어떤 함수를 실행할지, 언제 실행할지를 고르고 저장합니다. 본인의 성향에 맞게 이메일 발송빈도를 정하시면 됩니다. 저는 Dashboard 시트는 주 1회, Rebalancing 시트는 매월초 받아보는 것으로 2개의 Trigger를 추가했습니다.

마치며

저는 채권시장 참여자들이 예측한 경제전망을 토대로 자산배분 목표를 세우고, 유동성이 충분하고 보수가 저렴한 ETF에 투자하는 형태의 투자전략을 이행하고 있습니다. 물론, 역량이 부족하여 개별종목에 대한 심도있는 분석을 할 수도 없고, 본업이 따로 있어 빈번한 거래를 할만한 시간적인 여유가 없기 때문이기도 합니다.

이러한 관점에서, 수시로 다수의 증권사 앱을 열어보지 않더라도 보유한 모든 종목들의 손익을 종합해 주기적으로 살펴보고, 혹시 리밸런싱이 필요한 시점은 아닌지를 월 1회 정도는 점검하고 싶었습니다. 이러한 목적에서 이 스프레드시트가 제공하는 정서적인 측면과 전략적인 측면의 강점은 매우 크다고 생각합니다.

이 스프레드시트에 종목별 매수시점 대비 환차익/환차손 계산을 추가할수도, 종목별 가격변동 차트와 전체 평가금액 차트를 추가할 수도 있겠지만 저는 현 상태로도 충분하다고 생각합니다. 제가 통제할 수 없었던 과거를 화려하게 꾸미기 보다는 현재를 짚어보고 미래의 변화에 시간을 더 투자하는 것이 가치 있다고 생각해서 입니다. 따라서, 저는 이쯤에서 스프레드시트 개발과 소개를 마무리 하고, 투자의 대가들이 저술한 책들에서 지혜를 구해보고자 먼저 일어나 보겠습니다.

Warning

본 게시글에 언급된 모든 종목 및 자산배분 비율은 예시이며, 자신의 투자원칙에 맞게 종목을 선정하고, 자산을 배분하시기 바랍니다.