페이지 트리
메타 데이터의 끝으로 건너뛰기
메타 데이터의 시작으로 이동

Zipline GIthub

백테스팅이란?

과거 데이터를 이용하여 알고리즘을 검증

zipline Github

  • Python 2.7, 3.5를 지원


Anaconda Install

anaconda download

zipline install

Zipline Install
wget https://repo.anaconda.com/archive/Anaconda3-5.2.0-MacOSX-x86_64.sh


bash Anaconda3-5.2.0-MacOSX-x86_64.sh


export PATH="$HOME/anaconda3/bin:$PATH"
source $HOME/anaconda3/bin/activate

conda update conda

conda create -n env
conda install -c Quantopian zipline

//ssl 및 기타 오류 발생시 실행
brew install freetype pkg-config gcc openssl

conda create -n env_zipline pythone=3.5
source activate env_zipline

conda install -c Quantopian zipline


//기본 설치시에 해당 위치에 생성
cd /Users/user/anaconda3/envs

Anaconda 실행 및 사용법

이녀석을 실행하시면 아주 이쁜 화면이 나옵니다. pyCharm으로 실행을 해보았으나 zipline을 인식하지 못하는 문제가 발생하여 qtconsol 혹은 jupyter로 진행하였습니다.


헛!

야후 파이낸스 API 중단~?  구글도 중단~?

Pandas_datareader에서 야후와 구글 지원을 중단하고 새로운 API를 연계하여 지원 : https://pandas-datareader.readthedocs.io/en/latest/remote_data.html#google-finance

책 내용으로 코드 실행시 에러발생

변경된 코드 - Pandas 버전을 사용하려고 노력해봤습니다.
import pandas_datareader.data as web
import datetime
import matplotlib.pyplot as plt

start = datetime.datetime(2015, 1, 1)
end = datetime.datetime(2017, 3, 19)
data = web.DataReader('AAPL', 'iex', start, end) #해당 IEX는 지난 5년간의 데이터만 제공한다.
plt.plot(data.index, data['close'])


새로운 버전


API Key발급 및 Docs [Quandl] : https://docs.quandl.com/docs/getting-started

  • 시계열 및 테이블 2가지 종류의 데이터 형태로 제공한다. - excel도 제공

회사명 및 제공 API 검색 : https://www.quandl.com/search

import pandas_datareader.data as web
import datetime
import matplotlib.pyplot as plt
import quandl
from zipline.api import order, record, symbol
from zipline.algorithm import TradingAlgorithm


quandl.ApiConfig.api_key = "YOURAPIKEY"
data = quandl.get("EOD/AAPL")
plt.plot(data.index, data['Adj_Close'])

백테스트 순서

  • TradingAlgorithm - 구현
    • initialize(context) - 알고리즘 적용
    • handle_data(context, data) - 이벤트 핸들링
  • run - 실행
def initialize(context):
    pass


def handle_data(context, data):
    order(symbol('AAPL'),1)


data = data[['Adj_Close']]
data.columns = ['AAPL']
data = data.tz_localize('UTC')

algo = TradingAlgorithm(initialize=initialize, handle_data=handle_data)
result = algo.run(data)
  • run에서 막힘. 

    • Error Message : 'the label [Equity(0 [AAPL])] is not in the [items]'
    • AAPL로 column을 셋팅하고 symbol에 AAPL로 찾으라고 하였으나 왜 못찾는지 이유를 파악하지 못함.


Padans_datareader 번외


Tiingo API Key 받기

회원가입 : https://www.tiingo.com/

API Key  발급 : https://api.tiingo.com/docs/tiingo/daily

import pandas_datareader.data as web
web.get_data_tiingo('GOOG', api_key="YOURAPIKEY")

책의 Zipline파트에 대한 문제점 및 결론


  • 현재 zipline혹은 pandas버전에 대하여 고려가 되여있는가?
    • 책의 작성 시점의 버전과 최신 버전에 따른 문제점이 다수 발견되였다.
  • 해당 버전을 맞춰 진행하면 되지 않는가?
    • 시대가 변한만큼 지원안해주는 API들이 존재한다.
  • 결론....삽질을 많이 많이 했다...
  • 파알못이라 많은 시간의 투자와 많은 삽질을 진행했다.

참고

  • 레이블 없음