import pandas_datareader.data as web
import datetime
import matplotlib.pyplot as plt
from zipline.api import order, symbol
# order : zipline 백테스팅 시뮬레이션 주문 실행 함수
# symbol : 참조할 데이터에 대한 심볼 등록
#from zipline.algorithm import TradingAlgorithm
from zipline import run_algorithm
from zipline.utils.factory import create_simulation_parameters
# create_simulation_parameters : 초기 금액 설정에 사용
def initialize(context):
pass
def handle_data(context, data):
# order을 통해 AAPL 심볼 주식을 1주 매수
order(symbol('AAPL'), 1)
start = datetime.datetime(2010, 1, 2)
end = datetime.datetime(2016, 3, 19)
data = web.DataReader("AAPL", "yahoo", start, end)
# 새로운 dataframe 객체 만들기
data2 = data[['Adj Close']]
# dataframe의 column의 이름 바꾸기
data2.columns = ['AAPL']
data2 = data.tz_localize("UTC")
data2.head()
# sim_params = create_simulation_parameters(capital_base=100000000)
algo = run_algorithm(start = data2.index[0], end = data2.index[-1], capital_base = 1000000, initialize=initialize, handle_data=handle_data)
plt.plot(algo.index, algo.portfolio_value)
plt.show()
-----
파이썬으로 배우는 알고리즘 트레이딩에 있는 예제에서 변경,
Tradingalgorithm 함수는 과거의 zipline api의 함수인 것으로 확인,
run_algorithm으로 변경
algo = run_algorithm(start = data2.index[0], end = data2.index[-1], capital_base = 1000000, initialize=initialize, handle_data=handle_data)
맨 끝에 data = data 를 추가했을 경우에는 에러 발생.
이것에 대한 이유는 차차 확인해보기로.
[출처] Zipline 1.4.1 버전 오류 해결|작성자 PKB