본 포스트는 퀀트투자를 위한 개인적인 백테스트 기록이며, 테스트 과정이 올바르게 진행되었다는 어떠한 증명도 할 수 없음을 알려드립니다. 본 포스트를 참고하셔서 투자를 하는 행위는 삼가하여 주시기 바랍니다.
지난번 포스트까지 백테스트 파이썬 코드에서 약간의 실수가 있었다.
데이터를 스크래핑 할때 'KOSPI'만 가져온 것이다. 왠지 종목수가 적게 나와서 좀 의아하게 생각했다.
그래서 전체 시장, 즉 코스피와 코스닥의 데이터를 모두 불러와서 저 PBR로 20종목을 골라낸 후 백테스트를 해 보았다.
파이썬 코드는 길지 않은데, 17년치를 백테스트 하다보니 프로그램을 돌리는 시간이 약 30분 정도 걸린다. 이 시간이 너무나 길게 느껴진다. 비효율적이다.
그래서 multiprocessing을 구현하려고 하는데, 내가 이해를 충분히 하지 못한 탓인지 계속 에러가 발생한다.
당분간 시간이 걸리더라도 만들어진 코드를 활용해야 겠다.
결과는 이렇게 나왔다.
투자한 달에 따른 수익률의 편차가 크게 나타났다.
1월과 12월에 투자를 하면 각각 투자 원금의 160배, 135배 정도 자산이 늘어난다는 얘기다.
PBR은 0이상이 아닌 0.2이상을 조건으로 백테스를 했다. 강환국님의 책에서 0.2이하인 회사는 망해간다는 문구가 있어서 그렇게 했다. 0이상으로 하면 수익률이 더욱 올라간다.
PBR 0 이상의 조건은 포스트를 하지 않는다. 이유는 이 포스트의 후반부에 설명할 예정인데, 결론부터 말하면 의미가 없어서 하지 않았다.
회사에서 동료한테 이런 백테스를 하고 있다고 얘기를 한 적이 있다. 그 동료가 "왜 MDD"는 구하지 않고 '최대손실' 을 구하냐"고 질문을 했다.
개인적 의견으로 장기간 복리수익률을 목표로 투자를 할때 MDD는 그닥 의미가 크지 않다고 생각한다. MDD는 최대이익 대비 최대손실을 나타낸다.
위의 테이블은 저 PBR을 기준으로 종목 20개를 선정하여 1년 후 매도하는 방식의 백테스트 결과이다.
수익률이 높을때는 619% 까지 올랐지만, 낮을때는 -49%까지 떨어졌다.
MDD 관점으로 생각한다면 매년 수익이 나더라도 619%와 0%는 엄청난 MDD 수치를 보여준다. 그러면 수익률을 줄이던지해서 변동폭을 줄여야 할 것 이다.
하지만, 나는 생각을 조금 달리한다. 0% 이상의 수익률은 굳이 관리할 필요가 없고, 관리할 수도 없다고 생각한다. 오랜기간 투자하다 보면 어떤해는 대박이 날때고 있고 어떤 기간은 계속 부진할 수도 있다.
오랜기간 투자를 하다보면 '폭락장'은 어쩔 수 없이 찾아온다. 피한다는 건 인간의 영역이 아니라고 생각한다. 우리가 할 수 있는건 그냥 묵묵히 엉덩이를 무겁게 하는 것 뿐이다. 오랜기간 투자를 하다보면 어느새 자산은 여유로운 노후를 즐기기 충분할 만큼 늘어나 있을 것이다.
사실 본 포스트의 백테스트 결과는 오류가 있다.
위의 테이블은 백테스트를 하여 나온 백데이터 중 일부분이다.
2015년 1월 2일을 기준으로 투자한 승화프리텍이라는 종목을 살펴보자. 이 종목은 1년만에 119배가 올랐다.
위는 119배가 오른것으로 표시된 승화프리텍 관련 기사다. 2014년 12월에 상장폐지 심사를 받게 되었다. 내가 테스트 한 기준은 2015년 1월 2일이니 현실에서는 불가능한 투자다.
결국 이번 포스트에서 기록한 백테스트 결과는 신뢰가 어렵게 되었다. 그래서 'PBR >0' 조건도 무의미하니 포스트를 하지 않겠다고 한 것이다.
그럼 이런 오류를 줄이기 위해서는 무엇을 해야 할 것인가?
답변하기 상당히 어려운 질문인 것 같다. 일반 직장인이며, IT 비전공자이자, 투자와도 관련이 없는 40대 아저씨가 풀기 힘든 문제이다.
하지만, 내 나름대로 조건을 추가하여 최소한의 방지턱은 설치할 수 있다고 생각한다.
다음 포스트에 다루어 볼 예정이지만, 거래량 조건을 추가하였다. 거래량이 0인 종목은 거래가 정지되었다는 얘기다.
통상적으로 문제가 있는 종목은 거래가 중지된다. 이런 주식은 살 수도 없고, 사서도 안된다. 당연히 백테스트에서도 이런 조건은 반영이 되어야 한다.
직접 Raw Data를 구해서 파이썬을 이용하여 수십가지의 백테스트를 진행하고 있다. 진행하면서 많은 부분을 깨닫게 된다.
나 자신을 위해서 그리고 혹시나 모를 지금 내 포스트를 읽고 있는 그 누군가를 위해서 중요한 사실을 기록해 두겠다. 항상 명심하며 투자 하기를 바란다.
1. 투자의 세계에서는 그 누구도 믿지마라.
- 투자는 잘 못하지만, 나름 책도 많이 읽어보고 투자로 손실도 많이 발생했다. 넘어져서 일어날 때 잡은 돌 하나에는 "누구도 믿지마라"라는 글귀가 적혀있었다.
- 내가 퀀트투자 백테스트를 하기 전에 많이 망설였다. 시중에 돈을 주면 쉽게 백테스트 할 수 있는 프로그램이 있었기 때문이다. 하지만, 백테스트를 진행할 수록 직접 해보길 잘 했다는 생각이 든다.
- 이번 포스트에서도 적었지만, 백테스트 과정에서 많은 변수가 있다. 당연히 시중 프로그램은 많은 부분 개선했으리라 믿는다. 하지만, 100% 완벽하리라 생각하지도 않는다.
- 내가 공부하고 투자해서 손실이 나면 개선이 가능하지만, 남이 만든 프로그램은 어떻게 개선할 것인가?
2. 시중에 나온 퀀트책은 두리뭉실하다.
- 퀀트책을 읽다보면 행복해진다. 마치 금방 부자가 될 수있을 것만 같다. 방법도 간단하다. 백테스트도 저자가 알아서 다 해봤다고 한다.
- 그래서 그냥 믿고 투자를 할 것인가? 한 해에 -40% 이상 손실이 발생할 수도 있는데, 10년이상 지속할 수 있겠는가?
- 투자는 자기 자신을 믿어야 한다. 그러기 위해서는 직접 분석하고 검증을 해 봐야 한다.
3. 게으른 사람은 부자가 되지 못한다.
- 예전에 책에서 읽은 문구이다.
- 부자가 되려면은 밖에 나가서 돌이라도 주어라. 뭐든지 하라는 말이다.
- 주위에 "나는 컴퓨터를 잘 몰라서", "육아에 바빠서", "책과 친하지 않아서" 이런 수 많은 핑계를 들을 수 있다. 한마디로 하기 싫은 것이다. 남이 다 차려 놓은 밥상에 숟가락만 얹을 생각이다.
- 넷플릭스 오징어 게임에서 깐부할배가 이런 대사를 한다. "어디, 자네는 돈 벌기가 쉽던가?" 맞는 말이다. 돈 벌기는 쉽지 않다. 그러니 부지런히 배우고 또 배워야 한다.
'파이썬(Python) > 퀀트투자' 카테고리의 다른 글
퀀트투자 백테스트 - 현실적인 백테스트 방법 - 2 (0) | 2021.11.05 |
---|---|
퀀트투자 백테스트 - 현실적인 백테스트 방법 - 1 (0) | 2021.11.03 |
퀀트투자 백테스트 - 저 PBR 20종목 VS 30종목 승자는? (0) | 2021.10.28 |
퀀트투자 백테스트 - 저 PBR 투자 수익률 (0) | 2021.10.26 |
퀀트투자 백테스트 - 워런버핏이 사용하던 NCAV 투자법 파이썬 코드 (0) | 2021.10.24 |
댓글