맥스

맥스님의 아티클

맥스

맥스

3. 월별 수익률

#구현 내용

  • 아직은 기간이 짧아서 일 단위 수익률 그래프가 보기가 재밌지만 장기적으로는 일별 수익률은 보기 힘들거다. 그래서 월 단위 누적 수익률 그래프를 추가했고, 월별 수익률 테이블을 별도로 추가했다. ChatGPT가 가르쳐준 twr.groupby(twr['date'].dt.month).tail(1) 을 가지고 재빠르게 구현할 수 있었다.
  • 기능이 많아지면서 코드가 늘어나서 리팩토링을 했다. 주피터 노트북에 구현해놓고 복붙해서 쓰던거를 파이썬 모듈로 만들어서 재사용하게 했다.


#고민거리

  • 매일 30분씩 걸려서 데이터를 받아오는게 슬슬 기다리기 싫어진다.
  • 보유 종목 하나가 주식 분할을 했다. 현재로서는 직접 거래 내역을 수정하는 수 밖에 없었다. 실 서비스로 발전시키려면 어떻게든 계좌 연동을 시켜거나 자동으로 반영해주는 시스템이 반드시 필요하겠다 느꼈다. (이 뿐 아니라 배당 재투자금도 자동 연동해주는게 꼭 필요하다 느낀다.)
5
0
맥스

맥스

2. 누적 수익률 및 Drawdown

#1 누적 수익률 (Time-weighted Return)

Cashflow의 시점이나 잔액 측정 시점에 따라 계산 방법이 다르고 애초에 TWR 자체도 계산법이 여러 가지가 있어서 무척 헤맸다. ChatGPT가 준 코드도 틀렸다. 도메인 전문가가 아니다보니 ChatGPT의 답이 맞는지 아닌지 파악하는게 어려웠다. 빨리 가려다가 오히려 더 헤매고서는, 다시 위키피디아부터 읽고 개념부터 제대로 이해하고 나니 쉽게 구현할 수 있었다.


#2 TWR의 이해

투자를 시작한 지난 10월 말부터 TWR을 계산해보니 단순 수익률(RoR)보다 2%p 낮게 나왔다. RoR은 +3%인데 TWR은 고작 +1%다. 이 부분이 처음에는 직관적으로 와닿지 않았다. TWR은 '전략'의 수익률이다. 그래서 펀드매니저를 평가할 때 사용된다. 같은 펀드에 투자하더라도 투자자마다 언제 매수했느냐에 다라 수익률이 다를 수 있다. 현재 내 TWR보다 RoR이 높은 이유는 1월 초 저점에서 추가 매수를 한 이후 1월에 많이 올랐기 때문인거 같다. 그리고 현재 퀀트 전략 6개의 매수 시점이 다르고 시작한지 얼마 되지 않아서 괴리가 더 클 거 같다. 큰 의미는 없는거 같다.


#3 다음 계획

월별 수익률 보기, 연율화 수익률, 연율화 변동성, 리밸런싱 리포트 생성 등

4
0
맥스

맥스

1. Balance Over Time

#1 API 선택

금융 관련 서비스를 만드는데 가장 큰 진입 장벽이 데이터라는걸 여실히 느꼈다. 개인 목적용은 호출 제한 있는 무료 플랜도 있지만 상용 목적은 저렴한게 120만원/월 정도 수준이다. 계속 개인용으로만 쓸거면 야후 파이낸스 라이브러리를 썼겠지만 미래에 서비스로 낼 가능성을 고려하여 기업용 API를 제공해주는 곳의 개인용 무료 버전으로 시작을 했다. 무료 버전으로는 실시간 데이터를 불러올 수 없다는게 가장 큰 단점이다. 일단 무료 데이터로 하다가 차차 유료 데이터를 사용해보기로.


#2 거래 내역 불러오기

아직 자동 연동은 안했고(못했고?) 브로커리지에서 거래 내역을 CSV로 뽑아서 넣는 방식으로 처리 중이다. 서비스로 진화하려면 거래 내역을 입력/연동하는 귀찮음을 최대한 줄여주는게 관건이겠다. 다이렉트 인덱싱을 제공하는 피델리티조차 아직 거래 내역에 바스켓 정보는 없어서 수동으로 입력해줘야 하는건 큰 문제다.


#3 pandas와 plotly

연산 속도도 엄청 빠른듯 하고, plotly는 코드 몇 줄 안쓰고도 훌륭한 그래프를 그릴 수 있었다. 그리고 ChatGPT가 코드를 거의 80% 가까이 완성해줘서 둘 다 한번도 사용해본적 없지만 놀라운 생산성으로 개발이 진행됐다.


#4 다음 할거

인덱스 및 포트폴리오 수익률 그래프 함께 그리기

8
0
맥스

맥스

개인 퀀트 투자자를 위한 모니터링 툴이 없다.

작년 하반기부터 퀀트 투자를 시작했다. 현재의 현금 흐름을 미래의 자산으로 축적하기 위해 장기적으로 좋은 투자를 해놓고 싶다는 갈증이 있었다. 주식 투자는 성격상 맞지 않다고 느꼈다. 팔고 나서 오르면 기분이 안좋고, 사고 나서 떨어지면 기분이 안좋더라. 이런식으로는 돈을 벌어도 기분이 별로고 돈을 잃으면 불안해서 지속 가능한 투자법이 아니었다. 수많은 연구 결과에 의하면 인간의 본성 자체가 주식 투자에 적합하지 않고, 이를 극복하고 주식 투자에 성공하는 일은 정말 어려운 일이라고 한다.


그러던 와중에 퀀트 투자의 세계를 알게 됐고, 퀀트를 공부하면서 금융 시장에 대한 지적 호기심을 충족함과 동시에 장기적으로 주식 투자를 하기에 좋은 방법이라는 판단을 내렸다. 기계적인 리밸런싱 행위를 통해 감정이 의사 결정을 방해하는 일을 차단할 수 있고, 보통 1년에 1번, 또는 3개월에 1번 정도 매매하기 때문에 투자를 하면서 현업에 집중할 수 있다.


퀀트 투자자에게 중요한 것은 벤치마크 대비 초과 수익을 내는가이다. 일반적으로는 S&P 500, 나스닥, 코스피 등의 인덱스를 벤치마크로 삼는다. 왜냐면 아무런 노력 없이 인덱스 추종 ETF만 사도 낼 수 있는 수익이기 때문에 굳이 노력을 해서 퀀트를 했는데도 그보다 수익이 안나오는건 실패라고 볼 수 있다. 그런데 투자를 시작하고 보니 아직 개인 퀀트 투자자들을 위한 포트폴리오 추적 서비스가 없다. 일반적인 주식 투자와 다른 점 때문에 확연히 다른 기능이 필요하다.


(1) 수익률의 대상: 퀀트 투자자에게 중요한건 개별 종목이 아니라 여러 주식이 함께 담긴 포트폴리오 ‘바스켓’의 수익률이 중요하다. 그리고 리밸런싱 때문에 바스켓에 담긴 개별 주식은 계속 바뀐다. 바스켓을 하나의 추적 대상으로 봐야 한다.
(2) 수익률 정의: 개별 종목의 매수/매도가로 수익률을 계산하는게 아니라, 바스켓의 수익률을 추적해야 한다. 보통 배당 재투자를 하기 때문에 올바른 수익률을 계산하기 위해서는 배당 재투자금과 원금을 구분해서 계산해야 한다.
(3) 수익률 계산법: 포트폴리오에 추가로 투자금을 투입할 수도 있고, 불가피하게 인출할 일이 생기기도 한다. 그럼에도 퀀트 모델 자체의 수익률을 올바르게 보기 위해서는 현금 흐름의 효과를 제거할 수 있는 시간가중수익률(Time-weighted return)을 써야한다.


첫번째 목표는 실시간 포트폴리오로 아래의 백테스팅 결과와 같은 시각화 정보를 그리는 것이다. 그 외에도 분석에 도움이 될만한 정보, 또는 재미로 보기 좋을 정보들을 추가할 예정이다.

8
2