실습환경 설정





백테스팅이란?

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

zipline Github

  • Python 2.7, 3.5를 지원


Anaconda Install

anaconda download

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

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

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

회사명 및 제공 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)


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파트에 대한 문제점 및 결론


참고