반응형

퀀트 프로그램/백테스트 코드에 해당하는 글 11

  1. 실전 백테스트 - VAA 전략 17 안녕하세요, 게으른 퀀트입니다. 오늘은 VAA 전략의 실전 백테스트를 진행해보도록 하겠습니다. 예전에 VAA 전략에 대한 내용들을 포스팅할 때 백테스트 결과에 대해서 다루어 보았지만, 이번 포스팅에서는 코드를 중점적으로 살펴보도록 하겠습니다. VAA와 DAA 전략의 백테스트 코드만 잘 이해해도 웬만한 동적자산 배분전략의 백테스트는 구현이 가능하니 시간을 내서 실습해보시기 바랍니다😉 1.라이브러리 import 및 메타데이터 세팅 # 필요 라이브러리 import import pandas_datareader as pdr import pandas as pd from datetime import datetime, timedelta import matplotlib.pyplot as plt import seaborn.. 2021.05.11
  2. 백테스트-수익률, MDD 시각화&그래프(feat.seaborn) 안녕하세요, 게으른 퀀트입니다. 이런저런 주제로 다양하게 포스팅을 하다보니 한 주제로 우직하게 포스팅하기가 어렵네요🤣 백테스트 코드를 정리하면서 그래프를 그리는 방법에 대해서 다루기로 하였는데 잊고 있었습니다. 댓글로 다시 한 번 요청해주신 분이 계셔서, 후다닥 포스팅을 준비해보았습니다. 필요한 주제나 내용에 대해서 댓글로 알려주시면 최선을 다해 준비해보도록 하겠습니다. 언제나 환영이에요!! 데이터 시각화는 다양한 방식으로 가능하겠지만, 저는 seaborn이라는 패키지를 사용합니다. anaconda를 사용하시는 분들은 아래 명령어로 간단하게 설치가 가능합니다. # seaborn 설치 명령어 conda install -c anaconda seaborn 1. 데이터 준비 데이터는 예전 포스팅에서 다루었던 수.. 2021.05.09
  3. 백테스트 패키지 추천! Quantstats 설치 및 사용 가이드 6 안녕하세요, 게으른 퀀트입니다. 이번 포스팅에서는 백테스트 코드가 아닌 백테스트를 조금 더 쉽게할 수 있는 패키지를 추천드리려고 합니다. 저의 블로그를 자주 방문해주신 분들은 잘 아시겠지만, 지금까지는 직접 파이썬으로 코드를 작성해서 백테스트를 진행했었습니다. 나름 반복되는 기능은 함수로 만들어서 재사용하려고 했지만, 여전히 불필요한 반복이 많았고 부족한 점을 느꼈습니다. 그래서 다양한 백테스트 툴과 패키지를 찾아보던 중 파이썬 기반으로 사용할 수 있는 괜찮은 패키지를 찾았습니다! 바로 Quantstats입니다 : ) 이런 기본적인 벤치마크와 수익률을 비교하는 그래프부터 시작해서, 퀀트 투자 백테스트를 위해 필요한 다양한 그래프와 분석 결과를 제공합니다. 제가 직접 코드를 짜서 구현하다보면 아무래도 실수.. 2021.04.30
  4. 실전 백테스트 - DAA 전략 21 지난 포스팅까지 백테스트를 하기 위한 기본적인 코드를 익혀봤다면, 이번 포스팅부터는 여러 전략들을 백테스트하는 실전 내용을 다루려고 합니다. 앞서 공부했던 코드들을 대부분 사용하지만, 각 전략마다 로직을 구현해야 하는 부분이 존재하기 때문에, 그 부분을 중점적으로 다뤄보려고 합니다. 첫 번째로 다룰 전략은 DAA 전략입니다. 여러 번 요청이 왔었지만, 리밸런싱에 정신이 팔려 포스팅을 미루고만 있었네요😭 1.준비단계 백테스트를 진행할 기간을 정하고, 종목을 선택해서 데이터를 가져오는 것부터 시작합니다. 백테스트 기간은 이왕이면 길게 산정하고 싶지만, 해당 ETF들의 상장일이 그리 길지 않아서 방법이 없습니다. import pandas_datareader as pdr import pandas as pd fr.. 2021.04.06
  5. 백테스트-ETF 상장일 구하는 방법(네이버 금융/ 증권 활용) 안녕하세요, 게으른 퀀트입니다. 이번 포스팅에서는 ETF 상장일을 구하는 방법에 대해 알아보겠습니다. 'ETF 상장일은 알아서 뭐에 쓰려고?'라고 생각하시는 분들도 있으실텐데요. 백테스트를 진행하다보면 국내 상장 ETF로 성과를 검증해보고 싶은 마음이 들지만, 실제로 ETF 상품이 운영된 기간이 그리 길지 않아서 백테스트가 힘든 경우가 발생합니다. 그런 경우에 상장일을 구하고, 상장일이 빠른 ETF를 활용하면 훨씬 긴 기간을 백테스트 해볼 수 있죠. 1.준비과정(국내 ETF 리스트 가져오기) import requests import json import pandas as pd # 국내 ETF 전체 리스트 url = 'https://finance.naver.com/api/sise/etfItemList.nh.. 2021.03.23
  6. 백테스트-국내 주식 종가 가져오는 방법(네이버 금융, 증권 활용) 안녕하세요, 이번 시간에는 네이버 금융, 증권에서 국내 주가를 가져와서 DataFrame 형태로 만드는 함수에 대해서 설명드리겠습니다. 이 함수는 제가 개인적으로 함수 형태로 만들어서 백테스트를 할 때 활용하는 코드입니다. 참고하셔서 조금씩 변형해도 유용하게 쓰실 수 있을 것 같습니다😁 # 주가 데이터 호출 함수 def get_stock_data(code, from_date, to_date): """ Naver 금융 데이터 호출 결과 예시 ==> 일자|시가|고가|저가|종가|거래량 :param code: 종목 코드 :param from_date: 데이터 시작일자 :param to_date: 데이터 종료일자 :return: 해당 종목 코드의 일자, 시가, 고가, 저가, 종가, 거래량 데이터프레임 """ fr.. 2021.03.18
  7. 백테스트-ETF 정보 가져오는 방법(네이버 금융 API 활용) 4 안녕하세요, 오늘은 네이버 증권 API를 활용해서 국내에 상장된 ETF 정보를 조회하는 방법에 대해서 알아보도록 하겠습니다. 네이버 증권(금융)에서 ETF 탭을 선택하면 국내에 상장된 ETF 정보를 확인할 수 있습니다. 위 캡처 화면에서 조회되는 ETF 정보를 백테스트하기에 쉽도록 DataFrame으로 가져오는 방법을 알려드리겠습니다! 1.전체 ETF 리스트 가져오기 사실 소스코드가 매우 간단해서 '이걸로 포스팅을 올리는게 맞나?'라는 생각도 들었었지만, 검색을 통해서 블로그를 방문해주시는 분들이 많기 때문에 기능 별로 분리해서 포스팅을 하는게 좋을 것 같다고 생각했습니다. 아주 간단한 소스코드를 함께 한 번 살펴보시죠. import requests import json import pandas as p.. 2021.03.07
  8. 백테스트-MDD 구하는 방법(pandas) 1 안녕하세요, 지난 포스팅에서 우리는 각종 수익률(월별 수익률, 누적 수익률, 월별 Log 수익률, 누적 Log 수익률)에 대해서 알아보았습니다. 그리고 이번 포스팅에서는 수익률만큼이나 중요한 MDD를 구하는 방법을 알아보도록 하겠습니다. MDD(Max-DrawDown)란 전략을 운영하는 기간 중 최고점 대비 최대 낙폭을 의미합니다. 크고 작은 낙폭 중 가장 큰 낙폭을 MDD라고 하는 것이죠. 예를 들어 LAA 전략에서 보여드렸던 수익률 그래프를 다시 한 번 보도록 하겠습니다. 이 그래프에서도 크고 작은 낙폭들이 보이고, 그 중 나름 큰 낙폭 세 지점을 찾아보았습니다. 그 중 가장 낙폭이 커보이는 것은 (1)번 구간 같아 보이네요. 그렇다면 LAA 전략의 MDD는 (1) 지점에서 최고점 대비 최저점의 낙폭.. 2021.03.02
  9. 백테스트-수익률 구하는 방법(pandas-월별 수익률, 누적수익률, log 수익률, 누적 log 수익률) 9 안녕하세요, 이번 포스팅부터 본격적으로 주가 정보를 분석해보도록 하겠습니다. 처음으로 분석해 볼 데이터는 수익률 데이터입니다. 구체적으로는 월별 수익률과, 누적 수익률, 월별 log 수익률, 누적 log 수익률입니다. 우선 지난 시간에서 월별 말일의 주가로 정리한 데이터를 확인해보겠습니다. 1.월별 수익률 DataFrame에서 월별 수익률을 계산하는 것은 매우 쉽습니다! 저도 처음에는 이전 가격대비 변경액을 백분율로 계산을 했었는데, 알고보니 pct_change()라는 유용한 함수를 제공하더라구요. pandas.DataFrame.pct_change란? 기본적으로 바로 이전 행의 백분율 변경을 계산합니다. 이것은 요소의 시계열 변화율을 비교할 때 유용합니다. 이미 월별 말일 데이터로 준비를 해두었길래, 이.. 2021.02.28
  10. 백테스트-주가 정보 기간별 집계(DataFrame.resample) 안녕하세요, 백테스트 실습 두 번째 포스팅입니다. 지난 포스팅에서 종목의 주가 데이터를 가져오는 방법을 알아보았습니다. 오늘 포스팅에서는 수익률, MDD 등 다양한 정보를 분석하기 전에 분석하기 쉽게 기간 별로 집계하는 방법에 대해 알아보겠습니다. 이를 위해서 DataFrame의 resample이라는 함수를 활용할 예정입니다. 참고) pandas.DataFrame.resample — pandas 1.2.2 documentation Which side of bin interval is closed. The default is ‘left’ for all frequency offsets except for ‘M’, ‘A’, ‘Q’, ‘BM’, ‘BA’, ‘BQ’, and ‘W’ which all have a .. 2021.02.25
  11. 백테스트-해외 주식 종가 데이터 가져오는 방법(get_data_yahoo) 안녕하세요, 백테스트를 진행하면서 많은 분들이 소스코드를 요청하셔서 따라하시기 쉽도록 설명을 곁들여 포스팅해보려고 합니다. 그 첫번째 시간으로 가장 기본적인, 주가 데이터를 가져오는 방법을 알아보겠습니다. 다양한 방법으로 주가 데이터를 가져올 수 있겠지만, 이 포스팅에서는 pandas_datareader의 get_data_yahoo 함수를 사용해보겠습니다. 이는 Yahoo Finance 데이터를 html로 읽어오는 함수입니다. 저도 테스트하기 위한 막 코딩을 하는거라, 비효율적이고 지저분한 코드일 수 있으니 양해해주세요. 더 효율적이고 깔끔하게 정리가 가능한 코드들을 댓글로 알려주시면 저도 배울 수 있으니, 자유롭게 댓글 달아주세요 : ) 백테스트를 할 때 파이썬 언어를 사용하며, 주로 Jupyter N.. 2021.02.24
반응형