벡테스팅 구현 참고용으로 다양한 백테스팅 라이브러리를 찾다가 정말 편리하게 사용 가능한 것을 발견했다. 바로 Finterstella (https://pypi.org/project/finterstellar/). 기본적인 주가 불러오기부터 다양한 전략 시그널 생성, 벡테스팅, 벡테스팅 결과 평가도 지원한다. 결국에는 백테스팅 프로그램을 직접 만들 것이지만, 좋은 참고자료로서 사용해보겠다.
Finterstella 사용 방법은 책을 통해서 접할 수 있다. 바로 김용환/Yubin Kim 님의 "미국 주식으로 시작하는 슬기로운 퀀트 투자"이다. 물론 python을 프로그래밍 언어로 사용한다. 내가 퀀트 책을 고르다가 가장 힘들었던 것은 책 자체가 오래돼서, 더 이상 실습이 힘들어지는... 버전 문제가 생기는 그런 경우이다. 하지만 이 책은 나름 포스트 코로나 시대에 나온 책이고, Google Colab을 기본 개발 환경으로 사용한다. 나도 Colab의 편의성을 깨닫고(특히 교육용) 연구실 신입 교육용 프로젝트도 Colab을 이용 중인데, 정말 반가워서 바로 구매하게 되었다. 책 구성도 기술적 투자, 가치투자... 순으로 퀀트로 할 수 있는 많은 것들이 쉽게 잘 구성되어있다.
앞으로 JW_capital에서는 이 책을 읽으며 느낀 점은, 책에 나오는 내용을 기반으로 하되, 나만의 방식으로 코드를 재구성해보고 다양한 주식, 벡테스팅 기간으로 벡테스팅을 해보면서 체화할 필요가 있다는 것이다. 또한 라이브러리 자체를 직접 구현해보는 시도도 만약 내가 퀀트 디벨로퍼 직군으로 간다면 중요할 것 같다.
라이브러리의 사용법, 이 책에서 알려주고 싶은 메시지는 직접 책을 구매해서 읽어보는 것을 추천한다.
- 교보문고링크: http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&mallGb=KOR&barcode=9791162244753#N)
미국 주식으로 시작하는 슬기로운 퀀트투자 - 교보문고
주린이+코알못도 파이썬으로 쉽게 따라 하는 퀀트투자 레시피 | 필요한 것은 이 책과 컴퓨터 1대뿐! 퀀트머신으로 따라 하며 배우는 미국 주식 퀀트투자 방법 이 책은 프로그래밍 학습 경험이 없
www.kyobobook.co.kr
블로그에서는 나만의 연습문제를 만들어서 연재를 하겠다. (같은 코드를 사용하면 저작권에서 문제 될 것 같다) 이제 각설하고 바로 Colab을 켜고 시작해보자!
!pip install finterstellar
import finterstellar as fs
라이브러리 사용 준비는 매우 간단하다. 2021.10.23 현재 파이썬 버전 등등 걱정할 필요 없이, Colab을 열고 pip으로 설치해 주고, import 하면 준비 완료!
def get_data(stock,start,end):
df = fs.get_price(stock,start_date=start,end_date=end)
fs.draw_chart(df,right=stock)
return df
주가(종가)를 가져오는 get_data 함수를 만들어보았다.
fs.get_price는 주식 종목 데이터를 pandas dataframe 형식으로 가져와준다.
fs.draw_chart는 차트를 그려준다. 오른쪽에 주식 가격을 표시하게끔 해봤다.
get_data('SBUX','2020-01-01','2021-10-23')
주식투자의 시작은 본인이 가장 애용하는 브랜드로부터 해보라는 말이 있다.
(그렇다면 소비 자체가 투자가 되는..?)
내가 일주일에 한 번은 가는 스타벅스(SBUX) 주식을 가져와보겠다.
코로나 쇼크(2020-02~03)에 엄청나게 빠지고, 꾸준히 올라간 것을 확인할 수 있다.
아직까지 책을 읽는 중이라서, 이 그래프를 꾸미고 하는 방법은 찾지 못했다. 물론 Finterstella 라이브러리는 벡테스팅에 초점을 둔 라이브러리라서 그런 기능이 있을지는 모르겠다. 하지만 주가 데이터를 가져오고 이동평균선 등을 그리고 꾸미는 정도의 일은 이전 포스트(CAP01)에서 python의 기본 라이브러리로 해보았다.
이렇게 우상향인 주식은 Buy and hold 가 가장 맘 편하고 수익도 안정적일 수가 있다. 하지만 우리는 해당 주식이 우상향으로 갈지 어떻게 될지 모른다. 역사적으로 우상향이었다고 생각하고 buy and hold 만 한다면 과거 데이터에 overfitting 이 된 것이다. 마치 모의고사 1회분만 100번 풀고 수능을 보는 것과 같다. 따라서, 과거 데이터를 여러 시점으로 나누고 다양한 전략들을 만들어서 벡테스트해보는 게 그나마 승률을 높일 수 있다고 생각한다.
다음 포스트부터는 Finterstella의 강력한 벡테스팅 기능을 이용해서, 다양한 전략을 시뮬레이션해볼 것이다.
'투자' 카테고리의 다른 글
퀀트킹 백테스터01 마법공식 백테스팅 (1) | 2022.01.10 |
---|---|
Python05 기술적투자04 Envelope 전략 (0) | 2021.12.03 |
Python04 기술적투자03 RSI 전략 (4) | 2021.10.31 |
Python03 기술적투자02 MACD전략 (0) | 2021.10.24 |
Python01 Financial data reader 와 pandas 를 이용한 이동평균선 구하기 (0) | 2021.07.23 |