pip install zipline
python
import zipline
from zipline.api import order, symbol
from zipline.algorithm import TradingAlgorithm
python
def initialize(context):
context.stock = symbol('AAPL')
def handle_data(context, data):
current_price = data[context.stock].price
if current_price > data[context.stock].mavg(50):
order(context.stock, 1)
elif current_price < data[context.stock].mavg(50):
order(context.stock, -1)
python
start = pd.Timestamp('2010-01-01', tz='utc')
end = pd.Timestamp('2021-01-01', tz='utc')
capital_base = 100000
data_frequency = 'daily'
algo = TradingAlgorithm(initialize=initialize, handle_data=handle_data)
results = algo.run(data)
python
from zipline import run_algorithm
results, _ = run_algorithm(
start=start,
end=end,
initialize=initialize,
handle_data=handle_data,
capital_base=capital_base,
data_frequency=data_frequency,
)
python
import matplotlib.pyplot as plt
results.portfolio_value.plot()
plt.show()
python
returns = results.portfolio_value.pct_change()
annual_returns = (returns.mean() + 1) ** (252 / len(returns)) - 1