백테스트 패키지 추천! Quantstats 설치 및 사용 가이드
안녕하세요, 게으른 퀀트입니다. 이번 포스팅에서는 백테스트 코드가 아닌 백테스트를 조금 더 쉽게할 수 있는 패키지를 추천드리려고 합니다. 저의 블로그를 자주 방문해주신 분들은 잘 아시겠지만, 지금까지는 직접 파이썬으로 코드를 작성해서 백테스트를 진행했었습니다. 나름 반복되는 기능은 함수로 만들어서 재사용하려고 했지만, 여전히 불필요한 반복이 많았고 부족한 점을 느꼈습니다. 그래서 다양한 백테스트 툴과 패키지를 찾아보던 중 파이썬 기반으로 사용할 수 있는 괜찮은 패키지를 찾았습니다! 바로 Quantstats입니다 : )
이런 기본적인 벤치마크와 수익률을 비교하는 그래프부터 시작해서, 퀀트 투자 백테스트를 위해 필요한 다양한 그래프와 분석 결과를 제공합니다. 제가 직접 코드를 짜서 구현하다보면 아무래도 실수를 할 수도 있기 때문에, 잘 만들어진 패키지를 사용하는 것이 훨씬 더 안정적입니다.
1.설치 방법
Anaconda Prompt에서 아래 두 명령어 중 원하는 설치 방법대로 실행시켜줍니다.
conda install -c ranaroussi quantstats # Conda 설치
또는
pip install QuantStats # pip 설치
명령어를 실행하면 아래와 같이 설치가 진행됩니다.
Quantstats의 모든 기능을 정상적으로 사용하기 위해서는 아래 패키지들이 설치되어 있어야 합니다. 자신의 환경을 확인해보고 설치가 되어있지 않다면, 추가적으로 설치하시기 바랍니다.
- Python >= 3.5+
- pandas (tested to work with >=0.24.0)
- numpy >= 1.15.0
- scipy >= 1.2.0
- matplotlib >= 3.0.0
- seaborn >= 0.9.0
- tabulate >= 0.8.0
- yfinance >= 0.1.38
- plotly >= 3.4.1 (optional, for using plots.to_plotly())
설치 확인) Jupyter notebook에서 아래 코드를 실행시켰을 때 오류가 없이 실행된다면 정상 설치가 된 것입니다.
%matplotlib inline
import quantstats as qs
실행결과)
설치가 완료되었으니 간단한 사용법들을 알아보도록 하겠습니다. 저도 Quantstats를 오래 사용한 것이 아니라, 기본적인 사용법 먼저 알려드리고, 제가 직접 사용해보면서 유용하게 활용할 수 있는 방법들도 공유해보겠습니다. 기본 사용법은 아래 내용을 참고해주세요!
2.기본 사용법
기본 사용법을 익히기 전 알아야할 점이 있습니다. Quantstats의 다양한 리포트와 분석결과는 '일자-주가'를 기준으로 생성됩니다. 미국 주식의 경우 티커로 쉽게 구할 수 있고, 다양한 전략의 경우 그에 맞게 '일자-주가' 형태로 만들어줘야할 것 같습니다.
티커로 일별 수익률 구하기)
함수 내부적으로는 yfinance 패키지를 사용하고 있으며, 티커를 입력하면 전체 기간 일별 수익률을 리턴합니다. 데이터 타입은 pandas Series입니다.
stock = qs.utils.download_returns('FB')
실행결과)
리포트 출력)
qs.reports.plots(stock, mode='basic')
실행 결과)
분석결과 출력)
qs.reports.metrics(stock, mode='basic')
실행결과)
전체 리포트 생성)
qs.reports.html(stock, "AAPL", output='./file-name.html')
실행결과)
위 코드를 실행하면, 실행 중인 Jupyter Notebook 파일과 동일한 경로에 html 파일로 생성됩니다. 해당 파일을 열어보면 아래와 같은 깔끔한 리포트가 생성된 것을 확인할 수 있습니다😁
시각화가 아주 깔끔하게 잘 되는 것을 보니 매우 만족스럽습니다. 지금까지 힘들게 분석하고, 그래프를 그렸었는데 이제 불필요한 시간을 줄이고 중요한 곳에 집중할 수 있게 되었습니다. 다음 포스팅부터는 Quantstats을 활용해서 백테스트하는 코드를 더 구체적으로 올려보도록 하겠습니다. 기대해주세요~!
공감과 댓글, 공유는 큰 힘이 됩니다!
도움이 되셨다면 널리널리 알려주세요😉