QuantStats를 사용하면 백테스트 결과 정보를 손쉽게 구할수 있습니다. 퀀터스에서도 QuantStats를 사용하여 결과 정보를 얻고 있습니다.
GAGR% 연복리수익률, Sharpe 지수, Max Drawdown, 각종 그래프 결과 정보를 얻으려면 여러 함수를 만들어야 하고 퀀트 전략 마다 함수를 관리해야 하는 불편함이 있습니다.
QuantStats 라이브러리를 사용하면 일별 수익률만 구해서 pandas Series로 변경하여 reports.plots, reports.metrocs 등에 넣어주면 백테스트 결괏값을 손쉽게 얻을 수 있습니다.
Google Colab에서 QuantStats 실행하기
# matplotlib 임포트, 주피터 출력설정
import matplotlib.pyplot as plt
%matplotlib inline
# yfinance와 QuantStats를 설치 합니다.
!pip install finance-datareader
!pip install yfinance
!pip install QuantStats
# 백테스트에 필요한 라이브러리를 import합니다.
import FinanceDataReader as fdr
import yfinance as yf
import pandas as pd
import numpy as np
from tqdm.notebook import tqdm
import seaborn as sns
import datetime
import quantstats as qs
#데이터 타입이 맞지 않아 report에서 오류가 발생하였습니다.
stock_data = qs.utils.download_returns('QQQ')
stock_df = pd.DataFrame(stock_data)
stock_df['Date'] = stock_df.index
#날짜가 1999-03-01 00:00:00 표기되어 dt.tz_localize(None)으로 정리
stock_df['Date'] = stock_df['Date'].dt.tz_localize(None)
stock_df = stock_df.set_index('Date')
dayROR = pd.Series(stock_df['Close'])
qs.reports.plots(dayROR, mode='basic')
qs.reports.metrics(dayROR, mode='basic')
#reports.html 실행시 colab에서는 데이터타입 오류 발생
#qs.reports.html(dayROR, "AAPL", output='./test.html')
reports.metrics에서 datetime64오류는 위와 같이 tz_localize로 해결하였습니다. report.html에서는 "AAPL"로 불러오는 부분에서 datetime64 오류가 발생하는데 yfinance의 날짜/시간대와 관련이 있는 것 같습니다. github에서도 이러한 오류가 발생하는 분들이 글들의 답변을 보니 확인중이라고 합니다. 시간이 되면 아나콘다에서 세팅을 해보고 다시 테스트해 봐야겠습니다.
qs.report.html을 사용하는 이유는 Benchmark하기 위함인데 비교대상을 reports.metrics로 각각 불러와서 비교하면 해결이 되긴 합니다. google colab에서는 당분간 이렇게 사용해야 겠습니다.
아래 링크는 google colab에서 QuantStats 테스트한 코드입니다.
https://colab.research.google.com/drive/1T22Y0uOqncHAINssT_78G1xQHALaHQ1Z?usp=sharing
'파이썬 백테스트' 카테고리의 다른 글
PyPortfolioOpt 라이브러리로 효율적 투자선(Efficient Frontier) 쉽게 구하기(Harry Markowitz) (0) | 2023.01.24 |
---|---|
FinanceDataReader 금융데이터 알아보기 (0) | 2022.12.28 |
백테스트 실습 환경 소개(Google Colab) (0) | 2022.12.21 |
왜? 백테스트를 해야 하는가? (0) | 2022.11.14 |
댓글