mirror of
https://github.com/wassname/catalyst.git
synced 2026-06-27 23:52:53 +08:00
953 lines
185 KiB
Plaintext
953 lines
185 KiB
Plaintext
{
|
|
"metadata": {
|
|
"name": "",
|
|
"signature": "sha256:7e5a57d9f79d1d353883739f763fe143cd3ed96ad686b1e480cf3ea044639f62"
|
|
},
|
|
"nbformat": 3,
|
|
"nbformat_minor": 0,
|
|
"worksheets": [
|
|
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"# Zipline beginner tutorial\n",
|
|
"\n",
|
|
"## Basics\n",
|
|
"\n",
|
|
"Zipline is an open-source algorithmic trading simulator written in Python.\n",
|
|
"\n",
|
|
"The source can be found at: https://github.com/quantopian/zipline\n",
|
|
"\n",
|
|
"Some benefits include:\n",
|
|
"\n",
|
|
"* Realistic: slippage, transaction costs, order delays.\n",
|
|
"* Stream-based: Process each event individually, avoids look-ahead bias.\n",
|
|
"* Batteries included: Common transforms (moving average) as well as common risk calculations (Sharpe).\n",
|
|
"* Developed and continuously updated by [Quantopian](https://www.quantopian.com) which provides an easy-to-use web-interface to Zipline, 10 years of minute-resolution historical US stock data, and live-trading capabilities. This tutorial is directed at users wishing to use Zipline without using Quantopian. If you instead want to get started on Quantopian, see [here](https://www.quantopian.com/faq#get-started).\n",
|
|
"\n",
|
|
"This tutorial assumes that you have zipline correctly installed, see the [installation instructions](https://github.com/quantopian/zipline#installation) if you haven't set up zipline yet.\n",
|
|
"\n",
|
|
"Every `zipline` algorithm consists of two functions you have to define:\n",
|
|
"* `initialize(context)`\n",
|
|
"* `handle_data(context, data)`\n",
|
|
"\n",
|
|
"Before the start of the algorithm, `zipline` calls the `initialize()` function and passes in a `context` variable. `context` is a persistent namespace for you to store variables you need to access from one algorithm iteration to the next.\n",
|
|
"\n",
|
|
"After the algorithm has been initialized, `zipline` calls the `handle_data()` function once for each event. At every call, it passes the same `context` variable and an event-frame called `data` containing the current trading bar with open, high, low, and close (OHLC) prices as well as volume for each stock in your universe. For more information on these functions, see the [relevant part of the Quantopian docs](https://www.quantopian.com/help#api-toplevel)."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"## My first algorithm\n",
|
|
"\n",
|
|
"Lets take a look at a very simple algorithm from the `examples` directory, `buyapple.py`:"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"collapsed": false,
|
|
"input": [
|
|
"!tail ../zipline/examples/buyapple.py"
|
|
],
|
|
"language": "python",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"output_type": "stream",
|
|
"stream": "stdout",
|
|
"text": [
|
|
"from zipline.api import order, record, symbol\r\n",
|
|
"\r\n",
|
|
"\r\n",
|
|
"def initialize(context):\r\n",
|
|
" pass\r\n",
|
|
"\r\n",
|
|
"\r\n",
|
|
"def handle_data(context, data):\r\n",
|
|
" order(symbol('AAPL'), 10)\r\n",
|
|
" record(AAPL=data[symbol('AAPL')].price)\r\n"
|
|
]
|
|
}
|
|
],
|
|
"prompt_number": 1
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"As you can see, we first have to import some functions we would like to use. All functions commonly used in your algorithm can be found in `zipline.api`. Here we are using `order()` which takes two arguments -- a security object, and a number specifying how many stocks you would like to order (if negative, `order()` will sell/short stocks). In this case we want to order 10 shares of Apple at each iteration. For more documentation on `order()`, see the [Quantopian docs](https://www.quantopian.com/help#api-order).\n",
|
|
"\n",
|
|
"You don't have to use the `symbol()` function and could just pass in `AAPL` directly but it is good practice as this way your code will be Quantopian compatible.\n",
|
|
"\n",
|
|
"Finally, the `record()` function allows you to save the value of a variable at each iteration. You provide it with a name for the variable together with the variable itself: `varname=var`. After the algorithm finished running you will have access to each variable value you tracked with `record()` under the name you provided (we will see this further below). You also see how we can access the current price data of the AAPL stock in the `data` event frame (for more information see [here](https://www.quantopian.com/help#api-event-properties)."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"## Running the algorithm\n",
|
|
"\n",
|
|
"To now test this algorithm on financial data, `zipline` provides two interfaces. A command-line interface and an `IPython Notebook` interface.\n",
|
|
"\n",
|
|
"### Command line interface\n",
|
|
"After you installed zipline you should be able to execute the following from your command line (e.g. `cmd.exe` on Windows, or the Terminal app on OSX):"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"collapsed": false,
|
|
"input": [
|
|
"!run_algo.py --help"
|
|
],
|
|
"language": "python",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"output_type": "stream",
|
|
"stream": "stdout",
|
|
"text": [
|
|
"usage: run_algo.py [-h] [-c FILE] [--algofile ALGOFILE] [--data-frequency {minute,daily}] [--start START] [--end END]\r\n",
|
|
" [--capital_base CAPITAL_BASE] [--source {yahoo}] [--symbols SYMBOLS] [--output OUTPUT]\r\n",
|
|
"\r\n",
|
|
"Zipline version 0.6.1.\r\n",
|
|
"\r\n",
|
|
"optional arguments:\r\n",
|
|
" -h, --help show this help message and exit\r\n",
|
|
" -c FILE, --conf_file FILE\r\n",
|
|
" Specify config file\r\n",
|
|
" --algofile ALGOFILE, -f ALGOFILE\r\n",
|
|
" --data-frequency {minute,daily}\r\n",
|
|
" --start START, -s START\r\n",
|
|
" --end END, -e END\r\n",
|
|
" --capital_base CAPITAL_BASE\r\n",
|
|
" --source {yahoo}\r\n",
|
|
" --symbols SYMBOLS\r\n",
|
|
" --output OUTPUT, -o OUTPUT\r\n"
|
|
]
|
|
}
|
|
],
|
|
"prompt_number": 2
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"Note that you have to omit the preceding '!' when you call `run_algo.py`, this is only required by the IPython Notebook in which this tutorial was written.\n",
|
|
"\n",
|
|
"As you can see there are a couple of flags that specify where to find your algorithm (`-f`) as well as parameters specifying which stock data to load from Yahoo! finance (`--symbols`) and the time-range (`--start` and `--end`). Finally, you'll want to save the performance metrics of your algorithm so that you can analyze how it performed. This is done via the `--output` flag and will cause it to write the performance `DataFrame` in the pickle Python file format. Note that you can also define a configuration file with these parameters that you can then conveniently pass to the `-c` option so that you don't have to supply the command line args all the time (see the .conf files in the examples directory).\n",
|
|
"\n",
|
|
"Thus, to execute our algorithm from above and save the results to `buyapple_out.pickle` we would call `run_algo.py` as follows:"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"collapsed": false,
|
|
"input": [
|
|
"!run_algo.py -f ../zipline/examples/buyapple.py --start 2000-1-1 --end 2014-1-1 --symbols AAPL -o buyapple_out.pickle"
|
|
],
|
|
"language": "python",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"output_type": "stream",
|
|
"stream": "stdout",
|
|
"text": [
|
|
"AAPL\r\n"
|
|
]
|
|
},
|
|
{
|
|
"output_type": "stream",
|
|
"stream": "stdout",
|
|
"text": [
|
|
"\u001b[37m#!/usr/bin/env python\u001b[39;49;00m\r\n",
|
|
"\u001b[37m#\u001b[39;49;00m\r\n",
|
|
"\u001b[37m# Copyright 2014 Quantopian, Inc.\u001b[39;49;00m\r\n",
|
|
"\u001b[37m#\u001b[39;49;00m\r\n",
|
|
"\u001b[37m# Licensed under the Apache License, Version 2.0 (the \"License\");\u001b[39;49;00m\r\n",
|
|
"\u001b[37m# you may not use this file except in compliance with the License.\u001b[39;49;00m\r\n",
|
|
"\u001b[37m# You may obtain a copy of the License at\u001b[39;49;00m\r\n",
|
|
"\u001b[37m#\u001b[39;49;00m\r\n",
|
|
"\u001b[37m# http://www.apache.org/licenses/LICENSE-2.0\u001b[39;49;00m\r\n",
|
|
"\u001b[37m#\u001b[39;49;00m\r\n",
|
|
"\u001b[37m# Unless required by applicable law or agreed to in writing, software\u001b[39;49;00m\r\n",
|
|
"\u001b[37m# distributed under the License is distributed on an \"AS IS\" BASIS,\u001b[39;49;00m\r\n",
|
|
"\u001b[37m# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\u001b[39;49;00m\r\n",
|
|
"\u001b[37m# See the License for the specific language governing permissions and\u001b[39;49;00m\r\n",
|
|
"\u001b[37m# limitations under the License.\u001b[39;49;00m\r\n",
|
|
"\r\n",
|
|
"\u001b[34mfrom\u001b[39;49;00m \u001b[39;49;00m\u001b[04m\u001b[36mzipline.api\u001b[39;49;00m \u001b[39;49;00m\u001b[34mimport\u001b[39;49;00m \u001b[39;49;00morder\u001b[39;49;00m,\u001b[39;49;00m \u001b[39;49;00mrecord\u001b[39;49;00m,\u001b[39;49;00m \u001b[39;49;00msymbol\u001b[39;49;00m\r\n",
|
|
"\r\n",
|
|
"\r\n",
|
|
"\u001b[34mdef\u001b[39;49;00m \u001b[39;49;00m\u001b[32minitialize\u001b[39;49;00m(\u001b[39;49;00mcontext\u001b[39;49;00m)\u001b[39;49;00m:\u001b[39;49;00m\r\n",
|
|
" \u001b[39;49;00m\u001b[34mpass\u001b[39;49;00m\r\n",
|
|
"\r\n",
|
|
"\r\n",
|
|
"\u001b[34mdef\u001b[39;49;00m \u001b[39;49;00m\u001b[32mhandle_data\u001b[39;49;00m(\u001b[39;49;00mcontext\u001b[39;49;00m,\u001b[39;49;00m \u001b[39;49;00mdata\u001b[39;49;00m)\u001b[39;49;00m:\u001b[39;49;00m\r\n",
|
|
" \u001b[39;49;00morder\u001b[39;49;00m(\u001b[39;49;00msymbol\u001b[39;49;00m(\u001b[39;49;00m\u001b[33m'\u001b[39;49;00m\u001b[33mAAPL\u001b[39;49;00m\u001b[33m'\u001b[39;49;00m)\u001b[39;49;00m,\u001b[39;49;00m \u001b[39;49;00m\u001b[34m10\u001b[39;49;00m)\u001b[39;49;00m\r\n",
|
|
" \u001b[39;49;00mrecord\u001b[39;49;00m(\u001b[39;49;00mAAPL\u001b[39;49;00m=\u001b[39;49;00mdata\u001b[39;49;00m[\u001b[39;49;00msymbol\u001b[39;49;00m(\u001b[39;49;00m\u001b[33m'\u001b[39;49;00m\u001b[33mAAPL\u001b[39;49;00m\u001b[33m'\u001b[39;49;00m)\u001b[39;49;00m]\u001b[39;49;00m.\u001b[39;49;00mprice\u001b[39;49;00m)\u001b[39;49;00m\r\n",
|
|
"\u001b[34mimport\u001b[39;49;00m \u001b[39;49;00m\u001b[04m\u001b[36mmatplotlib.pyplot\u001b[39;49;00m \u001b[39;49;00m\u001b[34mas\u001b[39;49;00m \u001b[39;49;00m\u001b[04m\u001b[36mplt\u001b[39;49;00m\r\n",
|
|
"\r\n",
|
|
"\r\n",
|
|
"\u001b[34mdef\u001b[39;49;00m \u001b[39;49;00m\u001b[32manalyze\u001b[39;49;00m(\u001b[39;49;00mcontext\u001b[39;49;00m,\u001b[39;49;00m \u001b[39;49;00mperf\u001b[39;49;00m)\u001b[39;49;00m:\u001b[39;49;00m\r\n",
|
|
" \u001b[39;49;00max1\u001b[39;49;00m \u001b[39;49;00m=\u001b[39;49;00m \u001b[39;49;00mplt\u001b[39;49;00m.\u001b[39;49;00msubplot\u001b[39;49;00m(\u001b[39;49;00m\u001b[34m211\u001b[39;49;00m)\u001b[39;49;00m\r\n",
|
|
" \u001b[39;49;00mperf\u001b[39;49;00m.\u001b[39;49;00mportfolio_value\u001b[39;49;00m.\u001b[39;49;00mplot\u001b[39;49;00m(\u001b[39;49;00max\u001b[39;49;00m=\u001b[39;49;00max1\u001b[39;49;00m)\u001b[39;49;00m\r\n",
|
|
" \u001b[39;49;00max2\u001b[39;49;00m \u001b[39;49;00m=\u001b[39;49;00m \u001b[39;49;00mplt\u001b[39;49;00m.\u001b[39;49;00msubplot\u001b[39;49;00m(\u001b[39;49;00m\u001b[34m212\u001b[39;49;00m,\u001b[39;49;00m \u001b[39;49;00msharex\u001b[39;49;00m=\u001b[39;49;00max1\u001b[39;49;00m)\u001b[39;49;00m\r\n",
|
|
" \u001b[39;49;00mperf\u001b[39;49;00m.\u001b[39;49;00mAAPL\u001b[39;49;00m.\u001b[39;49;00mplot\u001b[39;49;00m(\u001b[39;49;00max\u001b[39;49;00m=\u001b[39;49;00max2\u001b[39;49;00m)\u001b[39;49;00m\r\n",
|
|
" \u001b[39;49;00mplt\u001b[39;49;00m.\u001b[39;49;00mgcf\u001b[39;49;00m(\u001b[39;49;00m)\u001b[39;49;00m.\u001b[39;49;00mset_size_inches\u001b[39;49;00m(\u001b[39;49;00m\u001b[34m18\u001b[39;49;00m,\u001b[39;49;00m \u001b[39;49;00m\u001b[34m8\u001b[39;49;00m)\u001b[39;49;00m\r\n",
|
|
" \u001b[39;49;00mplt\u001b[39;49;00m.\u001b[39;49;00mshow\u001b[39;49;00m(\u001b[39;49;00m)\u001b[39;49;00m\r\n"
|
|
]
|
|
},
|
|
{
|
|
"output_type": "stream",
|
|
"stream": "stdout",
|
|
"text": [
|
|
"[2014-07-25 17:50] INFO: Performance: Simulated 3521 trading days out of 3521.\r\n",
|
|
"[2014-07-25 17:50] INFO: Performance: first open: 2000-01-03 14:31:00+00:00\r\n",
|
|
"[2014-07-25 17:50] INFO: Performance: last close: 2013-12-31 21:00:00+00:00\r\n"
|
|
]
|
|
}
|
|
],
|
|
"prompt_number": 14
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"`run_algo.py` first outputs the algorithm contents. It then fetches historical price and volume data of Apple from Yahoo! finance in the desired time range, calls the `initialize()` function, and then streams the historical stock price day-by-day through `handle_data()`. After each call to `handle_data()` we instruct `zipline` to order 10 stocks of AAPL. After the call of the `order()` function, `zipline` enters the ordered stock and amount in the order book. After the `handle_data()` function has finished, `zipline` looks for any open orders and tries to fill them. If the trading volume is high enough for this stock, the order is executed after adding the commission and applying the slippage model which models the influence of your order on the stock price, so your algorithm will be charged more than just the stock price * 10. (Note, that you can also change the commission and slippage model that `zipline` uses, see the [Quantopian docs](https://www.quantopian.com/help#ide-slippage) for more information).\n",
|
|
"\n",
|
|
"Note that there is also an `analyze()` function printed. `run_algo.py` will try and look for a file with the ending with `_analyze.py` and the same name of the algorithm (so `buyapple_analyze.py`) or an `analyze()` function directly in the script. If an `analyze()` function is found it will be called *after* the simulation has finished and passed in the performance `DataFrame`. (The reason for allowing specification of an `analyze()` function in a separate file is that this way `buyapple.py` remains a valid Quantopian algorithm that you can copy&paste to the platform).\n",
|
|
"\n",
|
|
"Lets take a quick look at the performance `DataFrame`. For this, we use `pandas` from inside the IPython Notebook and print the first ten rows. Note that `zipline` makes heavy usage of `pandas`, especially for data input and outputting so it's worth spending some time to learn it."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"collapsed": false,
|
|
"input": [
|
|
"import pandas as pd\n",
|
|
"perf = pd.read_pickle('buyapple_out.pickle') # read in perf DataFrame\n",
|
|
"perf.head()"
|
|
],
|
|
"language": "python",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"html": [
|
|
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
|
|
"<table border=\"1\" class=\"dataframe\">\n",
|
|
" <thead>\n",
|
|
" <tr style=\"text-align: right;\">\n",
|
|
" <th></th>\n",
|
|
" <th>AAPL</th>\n",
|
|
" <th>capital_used</th>\n",
|
|
" <th>ending_cash</th>\n",
|
|
" <th>ending_value</th>\n",
|
|
" <th>orders</th>\n",
|
|
" <th>period_close</th>\n",
|
|
" <th>period_open</th>\n",
|
|
" <th>pnl</th>\n",
|
|
" <th>portfolio_value</th>\n",
|
|
" <th>positions</th>\n",
|
|
" <th>returns</th>\n",
|
|
" <th>starting_cash</th>\n",
|
|
" <th>starting_value</th>\n",
|
|
" <th>transactions</th>\n",
|
|
" </tr>\n",
|
|
" </thead>\n",
|
|
" <tbody>\n",
|
|
" <tr>\n",
|
|
" <th>2000-01-03 21:00:00</th>\n",
|
|
" <td> 3.82</td>\n",
|
|
" <td> 0.0</td>\n",
|
|
" <td> 10000000.0</td>\n",
|
|
" <td> 0.0</td>\n",
|
|
" <td> [{u'status': 0, u'limit_reached': False, u'cre...</td>\n",
|
|
" <td> 2000-01-03 21:00:00+00:00</td>\n",
|
|
" <td> 2000-01-03 14:31:00+00:00</td>\n",
|
|
" <td> 0.0</td>\n",
|
|
" <td> 10000000.0</td>\n",
|
|
" <td> []</td>\n",
|
|
" <td> 0.000000e+00</td>\n",
|
|
" <td> 10000000.0</td>\n",
|
|
" <td> 0.0</td>\n",
|
|
" <td> []</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>2000-01-04 21:00:00</th>\n",
|
|
" <td> 3.50</td>\n",
|
|
" <td>-35.3</td>\n",
|
|
" <td> 9999964.7</td>\n",
|
|
" <td> 35.0</td>\n",
|
|
" <td> [{u'status': 1, u'limit_reached': False, u'cre...</td>\n",
|
|
" <td> 2000-01-04 21:00:00+00:00</td>\n",
|
|
" <td> 2000-01-04 14:31:00+00:00</td>\n",
|
|
" <td>-0.3</td>\n",
|
|
" <td> 9999999.7</td>\n",
|
|
" <td> [{u'amount': 10, u'last_sale_price': 3.5, u'co...</td>\n",
|
|
" <td>-3.000000e-08</td>\n",
|
|
" <td> 10000000.0</td>\n",
|
|
" <td> 0.0</td>\n",
|
|
" <td> [{u'order_id': u'a52893c358834d60a09c7865d6779...</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>2000-01-05 21:00:00</th>\n",
|
|
" <td> 3.55</td>\n",
|
|
" <td>-35.8</td>\n",
|
|
" <td> 9999928.9</td>\n",
|
|
" <td> 71.0</td>\n",
|
|
" <td> [{u'status': 1, u'limit_reached': False, u'cre...</td>\n",
|
|
" <td> 2000-01-05 21:00:00+00:00</td>\n",
|
|
" <td> 2000-01-05 14:31:00+00:00</td>\n",
|
|
" <td> 0.2</td>\n",
|
|
" <td> 9999999.9</td>\n",
|
|
" <td> [{u'amount': 20, u'last_sale_price': 3.55, u'c...</td>\n",
|
|
" <td> 2.000000e-08</td>\n",
|
|
" <td> 9999964.7</td>\n",
|
|
" <td> 35.0</td>\n",
|
|
" <td> [{u'order_id': u'0e6af58f1f6b4cc9b55f896b05532...</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>2000-01-06 21:00:00</th>\n",
|
|
" <td> 3.24</td>\n",
|
|
" <td>-32.7</td>\n",
|
|
" <td> 9999896.2</td>\n",
|
|
" <td> 97.2</td>\n",
|
|
" <td> [{u'status': 1, u'limit_reached': False, u'cre...</td>\n",
|
|
" <td> 2000-01-06 21:00:00+00:00</td>\n",
|
|
" <td> 2000-01-06 14:31:00+00:00</td>\n",
|
|
" <td>-6.5</td>\n",
|
|
" <td> 9999993.4</td>\n",
|
|
" <td> [{u'amount': 30, u'last_sale_price': 3.24, u'c...</td>\n",
|
|
" <td>-6.500000e-07</td>\n",
|
|
" <td> 9999928.9</td>\n",
|
|
" <td> 71.0</td>\n",
|
|
" <td> [{u'order_id': u'f27eb86362e641b7a7ba2b8e76e33...</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>2000-01-07 21:00:00</th>\n",
|
|
" <td> 3.40</td>\n",
|
|
" <td>-34.3</td>\n",
|
|
" <td> 9999861.9</td>\n",
|
|
" <td> 136.0</td>\n",
|
|
" <td> [{u'status': 1, u'limit_reached': False, u'cre...</td>\n",
|
|
" <td> 2000-01-07 21:00:00+00:00</td>\n",
|
|
" <td> 2000-01-07 14:31:00+00:00</td>\n",
|
|
" <td> 4.5</td>\n",
|
|
" <td> 9999997.9</td>\n",
|
|
" <td> [{u'amount': 40, u'last_sale_price': 3.4, u'co...</td>\n",
|
|
" <td> 4.500003e-07</td>\n",
|
|
" <td> 9999896.2</td>\n",
|
|
" <td> 97.2</td>\n",
|
|
" <td> [{u'order_id': u'9e5ef91c4c3c40cdbb49220e10dd5...</td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
"</table>\n",
|
|
"</div>"
|
|
],
|
|
"metadata": {},
|
|
"output_type": "pyout",
|
|
"prompt_number": 15,
|
|
"text": [
|
|
" AAPL capital_used ending_cash ending_value \\\n",
|
|
"2000-01-03 21:00:00 3.82 0.0 10000000.0 0.0 \n",
|
|
"2000-01-04 21:00:00 3.50 -35.3 9999964.7 35.0 \n",
|
|
"2000-01-05 21:00:00 3.55 -35.8 9999928.9 71.0 \n",
|
|
"2000-01-06 21:00:00 3.24 -32.7 9999896.2 97.2 \n",
|
|
"2000-01-07 21:00:00 3.40 -34.3 9999861.9 136.0 \n",
|
|
"\n",
|
|
" orders \\\n",
|
|
"2000-01-03 21:00:00 [{u'status': 0, u'limit_reached': False, u'cre... \n",
|
|
"2000-01-04 21:00:00 [{u'status': 1, u'limit_reached': False, u'cre... \n",
|
|
"2000-01-05 21:00:00 [{u'status': 1, u'limit_reached': False, u'cre... \n",
|
|
"2000-01-06 21:00:00 [{u'status': 1, u'limit_reached': False, u'cre... \n",
|
|
"2000-01-07 21:00:00 [{u'status': 1, u'limit_reached': False, u'cre... \n",
|
|
"\n",
|
|
" period_close period_open \\\n",
|
|
"2000-01-03 21:00:00 2000-01-03 21:00:00+00:00 2000-01-03 14:31:00+00:00 \n",
|
|
"2000-01-04 21:00:00 2000-01-04 21:00:00+00:00 2000-01-04 14:31:00+00:00 \n",
|
|
"2000-01-05 21:00:00 2000-01-05 21:00:00+00:00 2000-01-05 14:31:00+00:00 \n",
|
|
"2000-01-06 21:00:00 2000-01-06 21:00:00+00:00 2000-01-06 14:31:00+00:00 \n",
|
|
"2000-01-07 21:00:00 2000-01-07 21:00:00+00:00 2000-01-07 14:31:00+00:00 \n",
|
|
"\n",
|
|
" pnl portfolio_value \\\n",
|
|
"2000-01-03 21:00:00 0.0 10000000.0 \n",
|
|
"2000-01-04 21:00:00 -0.3 9999999.7 \n",
|
|
"2000-01-05 21:00:00 0.2 9999999.9 \n",
|
|
"2000-01-06 21:00:00 -6.5 9999993.4 \n",
|
|
"2000-01-07 21:00:00 4.5 9999997.9 \n",
|
|
"\n",
|
|
" positions \\\n",
|
|
"2000-01-03 21:00:00 [] \n",
|
|
"2000-01-04 21:00:00 [{u'amount': 10, u'last_sale_price': 3.5, u'co... \n",
|
|
"2000-01-05 21:00:00 [{u'amount': 20, u'last_sale_price': 3.55, u'c... \n",
|
|
"2000-01-06 21:00:00 [{u'amount': 30, u'last_sale_price': 3.24, u'c... \n",
|
|
"2000-01-07 21:00:00 [{u'amount': 40, u'last_sale_price': 3.4, u'co... \n",
|
|
"\n",
|
|
" returns starting_cash starting_value \\\n",
|
|
"2000-01-03 21:00:00 0.000000e+00 10000000.0 0.0 \n",
|
|
"2000-01-04 21:00:00 -3.000000e-08 10000000.0 0.0 \n",
|
|
"2000-01-05 21:00:00 2.000000e-08 9999964.7 35.0 \n",
|
|
"2000-01-06 21:00:00 -6.500000e-07 9999928.9 71.0 \n",
|
|
"2000-01-07 21:00:00 4.500003e-07 9999896.2 97.2 \n",
|
|
"\n",
|
|
" transactions \n",
|
|
"2000-01-03 21:00:00 [] \n",
|
|
"2000-01-04 21:00:00 [{u'order_id': u'a52893c358834d60a09c7865d6779... \n",
|
|
"2000-01-05 21:00:00 [{u'order_id': u'0e6af58f1f6b4cc9b55f896b05532... \n",
|
|
"2000-01-06 21:00:00 [{u'order_id': u'f27eb86362e641b7a7ba2b8e76e33... \n",
|
|
"2000-01-07 21:00:00 [{u'order_id': u'9e5ef91c4c3c40cdbb49220e10dd5... "
|
|
]
|
|
}
|
|
],
|
|
"prompt_number": 15
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"As you can see, there is a row for each trading day, starting on the first business day of 2000. In the columns you can find various information about the state of your algorithm. The very first column `AAPL` was placed there by the `record()` function mentioned earlier and allows us to plot the price of apple. For example, we could easily examine now how our portfolio value changed over time compared to the AAPL stock price."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"collapsed": false,
|
|
"input": [
|
|
"%pylab inline\n",
|
|
"figsize(12, 12)\n",
|
|
"import matplotlib.pyplot as plt\n",
|
|
"\n",
|
|
"ax1 = plt.subplot(211)\n",
|
|
"perf.portfolio_value.plot(ax=ax1)\n",
|
|
"ax1.set_ylabel('portfolio value')\n",
|
|
"ax2 = plt.subplot(212, sharex=ax1)\n",
|
|
"perf.AAPL.plot(ax=ax2)\n",
|
|
"ax2.set_ylabel('AAPL stock price')"
|
|
],
|
|
"language": "python",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"output_type": "stream",
|
|
"stream": "stdout",
|
|
"text": [
|
|
"Populating the interactive namespace from numpy and matplotlib\n"
|
|
]
|
|
},
|
|
{
|
|
"metadata": {},
|
|
"output_type": "pyout",
|
|
"prompt_number": 16,
|
|
"text": [
|
|
"<matplotlib.text.Text at 0x7f6ab416b250>"
|
|
]
|
|
},
|
|
{
|
|
"metadata": {},
|
|
"output_type": "display_data",
|
|
"png": "iVBORw0KGgoAAAANSUhEUgAAAtMAAAKOCAYAAABk5JUYAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XlYlOX6B/DvsLgBirjgAoWGiSYihpoVieaSlpaWqccl\nlxIty07ar7TTCesc28wWlzKXyiXzZJYtSqY5ZuaSO7nigihumCi7wDC/P25fhmWGgWFmngG+n+ua\n6513mXkfbrnq9vF+70dnNBqNICIiIiKicnNTPQAiIiIiosqKyTQRERERkY2YTBMRERER2YjJNBER\nERGRjZhMExERERHZiMk0EREREZGNKnUyPXbsWPj7+yM0NNTqtS+88ALCw8MRHh6O1q1bo379+k4Y\nIRERERFVZbrK3Gd669at8Pb2xqhRoxAXF1fmz82dOxf79+/HokWLHDg6IiIiIqrqKvXMdGRkZIkZ\n5pMnT6Jv376IiIjAfffdh2PHjpX43Jdffolhw4Y5a5hEREREVEV5qB6AvY0fPx4LFixAcHAwdu7c\niaeffhqbNm0qOH/mzBkkJCSgR48eCkdJRERERFVBlUqm09PTsX37dgwePLjgWE5OTpFrvvrqKwwe\nPBg6nc7ZwyMiIiKiKqZKJdP5+fnw9fXFvn37LF6zatUqzJ8/34mjIiIiIqKqyqE109a6baxduxZh\nYWEIDw/HnXfeiV9//bXgXGxsLEJCQtCqVSu8/fbbZbpf3bp10aJFC6xevRoAYDQacfDgwYLzR48e\nRUpKCu66664K/FRERERERMKh3TysddvIyMiAl5cXACAuLg4DBw7EiRMnYDAY0Lp1a2zcuBHNmzdH\np06dsHLlSrRp06bI54cNG4YtW7bgypUr8Pf3x+uvv47u3btj4sSJuHDhAnJzczFs2DD861//AgDM\nmDEDN27cwMyZMx31IxMRERFRNeLQMo/IyEgkJCRYPK8l0oDUOzds2BAAsGvXLgQHByMoKAgAMHTo\nUKxdu7ZEMr1y5Uqz37t+/Xqzx1977bVyjJ6IiIiIqHTKW+N99913aNOmDfr27YuPPvoIAJCUlITA\nwMCCawICApCUlKRqiEREREREZil/APGRRx7BI488gq1bt2LkyJE4evRomT8bHByMkydPOnB0RERE\nRERAWFgY9u/fX+K48plpTWRkJPLy8nD16lUEBATg7NmzBefOnj2LgICAEp85efIkjEYjXwper732\nmvIxVOcX48/4V+cX48/YV9cX46/2deDAAbM5rNJkWkuGAWDv3r0AgAYNGiAiIgLx8fFISEhATk4O\nVq1ahQEDBqgcKhVTWi08OR7jrxbjrxbjrw5jrxbj75ocWuZRuNtGYGAgZsyYgdzcXABAdHQ0vvnm\nGyxduhSenp7w9vbGV199JYPy8MDcuXPRp08fGAwGjBs3rsTDh0REREREqjm0NZ6j6XQ6VOLhV2p6\nvR5RUVGqh1FtMf5qMf5qMf7qMPZqMf5qWco7mUwTEREREVlhKe90mQcQqXLR6/Wqh1CtMf5qMf5q\nMf7qMPZqMf6uick0EREREZGNWOZBRERERGQFyzyIiIiIiOyMyTTZhHVbajH+ajH+ajH+6jD2ajH+\nronJNBERERGRjVgzTURERERkBWumiYiIiIjsjMk02YR1W2ox/mox/mox/uow9mox/q6JyTQRERER\nkY1YM01EREREZAVrpomIiIiI7IzJNNmEdVtqMf5qMf5qMf7qMPZqMf6uick0EREREZGNWDNNRERE\nRGQFa6aJiIiIiOyMyTTZhHVbajH+ajH+ajH+6jD2ajH+ronJNBERERGRjVgzTURERERkBWumiYiI\niIjsjMk02YR1W2ox/mox/mox/uow9mox/q6JyTQRERERkY1YM01EREREZAVrpomIiIiI7IzJNNmE\ndVtqMf5qMf5qMf7qMPZqMf6uick0EREREZGNWDNNRERERGQFa6aJiIiIiOyMyTTZhHVbajH+ajH+\najH+6jD2ajH+rsmhyfTYsWPh7++P0NBQs+dXrFiBsLAwtG/fHvfccw8OHjxYcC4oKAjt27dHeHg4\nOnfu7MhhEhERERHZxKE101u3boW3tzdGjRqFuLi4Eue3b9+Otm3bol69eoiNjUVMTAx27NgBAGjR\nogX27NkDPz8/y4NnzTQREREROYGSmunIyEjUr1/f4vmuXbuiXr16AIAuXbrg3LlzRc4zUSYiIiJy\nHUYjcP266lG4FpepmV68eDH69etXsK/T6dCzZ09ERERg4cKFCkdG5rBuSy3GXy3GXy3GXx3GXi1X\niP+aNYCvL2AwqB6J6/BQPQAA2Lx5M5YsWYJt27YVHNu2bRuaNm2K5ORk9OrVCyEhIYiMjFQ4SiIi\nIqLq7cQJ2R44AHTsqHYsrkJ5Mn3w4EE89dRTiI2NLVIS0rRpUwBAo0aNMHDgQOzatctsMj169GgE\nBQUBAHx9fdGhQwdERUUBMP0Njvv234+KinKp8VS3fcaf8a/O+4w/97mvbj8xEQD0iI0FOnZUPx5H\n7mvvExISUBqHL9qSkJCA/v37m30AMTExET169MDy5ctx1113FRzPzMyEwWCAj48PMjIy0Lt3b7z2\n2mvo3bt30cHzAUQiIiIip+ndG4iPB6ZMASZNUj0a51LyAOKwYcNw991349ixYwgMDMSSJUuwYMEC\nLFiwAADw+uuvIyUlBRMnTizSAu/ixYuIjIxEhw4d0KVLFzz00EMlEmlSq/Df2sj5GH+1GH+1GH91\nGHu1XCH+ly4Bd94JXLigeiSuw6FlHitXriz1/KJFi7Bo0aISx1u2bIn9+/c7alhEREREZIPMTMDP\nD7hxQ/VIXIfDyzwciWUeRERERM4TEAAMHw5kZABz56oejXMpKfMgIiIioqrhlVeApCQgKwuYN0/1\naFwHk2myiSvUbVVnjL9ajL9ajL86jL1aKuOfnw/MnCnvc3KUDcMlMZkmIiIiIouOHAHc3U37vr7q\nxuKKWDNNRERERBZt2gT07GnanzEDeO014IsvgFGj1I3L2VgzTURERETl9sADRfdr1JDtE084fyyu\niMk02YR1c2ox/mox/mox/uow9mqpiL/RCOTlFT3mxuyxCIaDiIiIiMw6etT0vls32Y4dq2Ysroo1\n00RERERk1r59QMeOQFwccO4c0LevzFbrdHK+OqVhrJkmIiIionJJS5Otn5/UTmdlyf6yZerG5GqY\nTJNNWDenFuOvFuOvFuOvDmOvlor4X70q20aNZFurlmwfeACoX9/pw3FJTKaJiIiIyKyUFOna4elZ\n9HidOkBmpizgYjCoGZurYM00EREREZk1ezZw9izw/vslz3l5SSI9ahTw6afOH5uzsWaaiIiIiMol\nIwPw9jZ/zt8fuHED2LrVuWNyNUymySasm1OL8VeL8VeL8VeHsVdLRfyzskx10sX5+8s2O9t543FF\nTKaJiIiIyKzsbKB2bfPnduyQbX6+88bjilgzTURERERmPf00cMcdwDPPlDyn9ZoOCJC66qqONdNE\nRERE1YjBIN02KiI1FahXz/y5Bx6Q7blzwOXLFbtPZcZkmmzCujm1GH+1GH+1GH91GHu1yht/Pz9g\n4sSK3XPFCiAvz/y58eNN7zdvrth9KjMm00RERERVTGamzCpXpBpWW+3w8cfNn790yfTe0kOK1QFr\n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\ncWavee6557B+/XrUqVMHn3/+OcLDwwEAsbGxeP7552EwGPDkk0/ipZdeKjl4zkwTubxTpyTR9fGR\nbbsYFjUAACAASURBVJ060sHg229l5nb7dqktBYChQ6VjxqefSteJwYOlTVt2tqk7woQJ0lYsL08e\n2Lp4UZLqyEjg+HGpJT5/HvjzT+Cf/5TZaHd36boRFibJa82a6uJBRESVk5Iyj61bt8Lb2xujRo0y\nm0yvW7cOc+fOxbp167Bz505MnjwZO3bsgMFgQOvWrbFx40Y0b94cnTp1wsqVK9GmTZsy/VBEpM7p\n04BeLzPMBw+aapABSWoNBtP++PGS4I4cKWUVpXW2+OILeXjv5ZflIa4dOyTZfvxxYP58SaDvuktW\noWvUSL63WTOH/ZhERFTNKCnziIyMREJCgsXz33//PZ544gkAQJcuXXDt2jVcvHgRp0+fRnBwMIJu\nNkMdOnQo1q5dWyKZJnVYt6WWo+JvNMqsr7mOFZq0NOlpfOOGzBqnpUmN7/btsgx1aqr0O27aVJLe\nq1elRMPTUz5Tp458j7WWcMU98YS8zHnmmfJ9V0Xx918txl8dxl4txt81Ka2ZTkpKQmBgYMF+QEAA\nkpKScP78+RLHd+7cafY7nn7a8veX9j9re59r3Fj60bq7m16A1Ex6esrWw8P0+eJ/sSm8b+m9rdcV\nH79OJ+Nzc5NtzZoyW5iXJyt0GQzyeaNRkp+cHNlqM4o6nSxUkJ1t+nm07zX3Ks/5GjVkVtHNrehL\nG6+l49r3aD9Haqoc9/QsOu6yvsxdr90nN1dqbLOzTVstAc3KksQyP1+uy8mR+tfateWVmyvnMzNN\nSwsbjfK9aWny8+fny9bb2/S74+4u72vUkHvs3i2JrLaqmnav3Fy53/nzsuhD/fqmz2RmytbdXRLa\n/Hz5c01Nldnc5GSZVdbpgCZNZPv334C/v1xbr57MNl+4IOfr1JHWbr6+supe/frSX7dVK0mezfHg\nUxpERFTFKP9fW0XLNPbuHY0GDYIAALVr+yIgoANuvz0KRiNw/LgeAHD77VEATPutWsl+fHzJfaPR\n8vnjx82fb9EiClu3AmvX6mEwAHXrRsFgAK5f1yMvD/DyikJuruwDsg8AGRmy7+1dcl+nA9LTZd/H\nR84X309L00Ons3ze3PVGo9w/Px9ITZXxenhEwcMDuHFDD3d3oF490/09PYHGjaNQo4aM32gE/Pyi\nYDRGYfVq+f769SXeV6/KeV9f2U9JkfP16hXdr1tX9q9dK7p//boe2dlAbm7UzURPfzNJlf2cHNl3\nc4u6mazqbyajUTf/8iDx8PSMgo8PkJ0t19esKT+/dr27u1yflyf7bm6ybzCU3BdRNxNe2dfpolC7\nNuDmpkfNmvLzurlJfGvUkHi5u8ufp4cH0Ly5/PmfPy/xDQiIgpeXxAsAmjWTn0f7fQkIiEJODnDq\nlPz5+PrK79Ply3rk5gJNmkShdu0obNwo3x8QEAVPTzlfowYQEhKF226T709LAwIDZbxnzsj5Nm2i\nkJUFHD0q+506RcHPDzh9Wo/GjYH774/C+fPAzz/r0aAB0KFDFG7cALZt06NWLeDxx6NQs6bMkAAo\nmCXR6/X4+28gNNS0X/x8VdmPiopyqfFUt33Gn/vc574z9rX3pVVZAE5ojZeQkID+/fubrZmeMGEC\noqKiMHToUABASEgItmzZgtOnTyMmJgaxsbEAgDfffBNubm4lHkJkzTRptNldR7pxQ2Z1ObtKRERU\n/VjKO90UjKXAgAEDsHTpUgDAjh074OvrC39/f0RERCA+Ph4JCQnIycnBqlWrMGDAAJVDpWIK/63N\nFTg6kQakHMZVEmlXi391w/irxfirw9irxfi7JoemBsOGDcOWLVtw5coVBAYGYsaMGcjNzQUAREdH\no1+/fli3bh2Cg4Ph5eWFzz77TAbl4YG5c+eiT58+MBgMGDduHB8+JCIiIiKXwxUQiYiIiIiscMky\nDyIiIiKiyozJNNmEdVtqMf5qMf5qMf7qMPZqMf6uick0EREREZGNWDNNRERERGQFa6aJiIiIiOyM\nyTTZhHVbajH+ajH+ajH+6jD2ajH+ronJNBERERGRjVgzTURERERkBWumiYiIiIjsjMk02YR1W2ox\n/mox/mox/uow9mox/q6JyTQRERERkY1YM01EREREZAVrpomIiIiI7IzJNNmEdVtqMf5qMf5qMf7q\nMPZqMf6uick0EREREZGNWDNNRERERGQFa6aJiIiIiOyMyTTZhHVbajH+ajH+ajH+6jD2ajH+ronJ\nNBERERGRjVgzTURERERkBWumiYiIiIjsjMk02YR1W2ox/mox/mox/uow9mox/q6JyTQRERERkY1Y\nM01EREREZAVrpomIiIiI7IzJNNmEdVtqMf5qMf5qMf7qMPZqMf6uick0EREREZGNWDNNRERERGQF\n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\n6emJe++9FwBw//33q/waTqmssb/77rsBmNbQkfls9bMP8H8Da5Q1/vfccw8AwNvbG4GBgSq/itMp\nLfYzZsxAnTp1sG3bNnTu3BkA8NhjjyE2NhY9evRAeno69Ho9IiIi8v5VjMxni/hv3boV9913n8qv\nQVbg3xQuaNu2bWjXrh1SUlIQGhqKiRMnwtvbG1u3bs27kcHT0xOTJk3Ca6+9hm7dumHUqFHYtWsX\n7r77bly7dg2RkZFqv4STYuzVYvzVYvzVMTf2kydPxqRJk/Let3z5cnzwwQfo0qULDh06hIiICFVf\nwanZKv78lwDnpDNwFwKXs337dpw+fRpDhgwBADz33HNo2bIlKlSogNmzZ2Pfvn3IycnB5cuX8eKL\nL2LatGlo1KgRrl27hps3b6Ju3bqKv4HzYuzVYvzVYvzVsST2o0ePxscff4xGjRph+/btAIBOnTqp\nnL7TY/zdG1emXVCHDh3Qv3//vN2TOnbsiDNnzmD48OHIycnBzJkz4enpibNnz8Lb2xuNGjUCIH1F\n+ZdZ2TD2ajH+ajH+6lgSey8vr7zYd+rUiYmcDTD+7o3JtAuqWLEiKlSokHdn8MaNG/N6ts6fPx+x\nsbHo1asXBg0ahLZt26qcqsth7NVi/NVi/NVh7NVi/N0byzxcmHZH8SOPPIJZs2YhNDQUx48fR40a\nNfDPP//k7bJHtsfYq8X4q8X4q8PYq8X4uyeuTLswLy8vZGVloWbNmjh48CB69eqF9957D56enujY\nsSP/D21HjL1ajL9ajL86jL1ajL97Yms8F/fXX3/hu+++w6lTpzB8+HD8+9//Vj0lt8HYq8X4q8X4\nq8PYq8X4ux/ugOjidDodatSogblz56JDhw6qp+NWGHu1GH+1GH91GHu1GH/3w5ppIiIiIiIrsWaa\niIiIiMhKTKaJiIiIiKzEZJqIiIiIyEpMpomIiIiIrMRkmoiIiIjISkymiYiIiIisxGSaiIiIiMhK\nTKaJiIiIiKzEZJqIiIiIyEpMpomIiIiIrMRkmoiIiIjISkymiYiIiIisxGSaiIiIiMhKTKaJiIiI\niKzEZJqIiIiIyEpMpomIiIiIrMRkmoiIiIjISkymiYiIiIisxGSaiIiIiMhKTKaJiIiIiKzEZJqI\niIiIyEpMpomIiIiIrMRkmoiIiIjISkymiYiIiIisxGSaiIiIiMhKTKaJiIiIiKxUbsn0008/jaCg\n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\nAElFTkSuQmCC\n",
|
|
"text": [
|
|
"<matplotlib.figure.Figure at 0x7f6ab5621490>"
|
|
]
|
|
}
|
|
],
|
|
"prompt_number": 16
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"As you can see, our algorithm performance as assessed by the `portfolio_value` closely matches that of the AAPL stock price. This is not surprising as our algorithm only bought AAPL every chance it got."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"### IPython Notebook\n",
|
|
"\n",
|
|
"The [IPython Notebook](http://ipython.org/notebook.html) is a very powerful browser-based interface to a Python interpreter (this tutorial was written in it). As it is already the de-facto interface for most quantitative researchers `zipline` provides an easy way to run your algorithm inside the Notebook without requiring you to use the CLI. \n",
|
|
"\n",
|
|
"To use it you have to write your algorithm in a cell and let `zipline` know that it is supposed to run this algorithm. This is done via the `%%zipline` IPython magic command that is available after you `import zipline` from within the IPython Notebook. This magic takes the same arguments as the command line interface described above. Thus to run the algorithm from above with the same parameters we just have to execute the following cell after importing `zipline` to register the magic."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"collapsed": false,
|
|
"input": [
|
|
"import zipline"
|
|
],
|
|
"language": "python",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"prompt_number": 6
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"collapsed": false,
|
|
"input": [
|
|
"%%zipline --start 2000-1-1 --end 2014-1-1 --symbols AAPL -o perf_ipython\n",
|
|
"\n",
|
|
"from zipline.api import symbol, order, record\n",
|
|
"\n",
|
|
"def initialize(context):\n",
|
|
" pass\n",
|
|
"\n",
|
|
"def handle_data(context, data):\n",
|
|
" order(symbol('AAPL'), 10)\n",
|
|
" record(AAPL=data[symbol('AAPL')].price)"
|
|
],
|
|
"language": "python",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"output_type": "stream",
|
|
"stream": "stderr",
|
|
"text": [
|
|
"[2014-07-25 17:11] INFO: Performance: Simulated 3019 trading days out of 3019.\n"
|
|
]
|
|
},
|
|
{
|
|
"output_type": "stream",
|
|
"stream": "stderr",
|
|
"text": [
|
|
"[2014-07-25 17:11] INFO: Performance: first open: 2000-01-03 14:31:00+00:00\n"
|
|
]
|
|
},
|
|
{
|
|
"output_type": "stream",
|
|
"stream": "stderr",
|
|
"text": [
|
|
"[2014-07-25 17:11] INFO: Performance: last close: 2011-12-30 21:00:00+00:00\n"
|
|
]
|
|
},
|
|
{
|
|
"output_type": "stream",
|
|
"stream": "stdout",
|
|
"text": [
|
|
"AAPL\n"
|
|
]
|
|
}
|
|
],
|
|
"prompt_number": 7
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"Note that we did not have to specify an input file as above since the magic will use the contents of the cell and look for your algorithm functions there. Also, instead of defining an output file we are specifying a variable name with `-o` that will be created in the name space and contain the performance `DataFrame` we looked at above."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"collapsed": false,
|
|
"input": [
|
|
"perf_ipython.head()"
|
|
],
|
|
"language": "python",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"html": [
|
|
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
|
|
"<table border=\"1\" class=\"dataframe\">\n",
|
|
" <thead>\n",
|
|
" <tr style=\"text-align: right;\">\n",
|
|
" <th></th>\n",
|
|
" <th>AAPL</th>\n",
|
|
" <th>capital_used</th>\n",
|
|
" <th>ending_cash</th>\n",
|
|
" <th>ending_value</th>\n",
|
|
" <th>orders</th>\n",
|
|
" <th>period_close</th>\n",
|
|
" <th>period_open</th>\n",
|
|
" <th>pnl</th>\n",
|
|
" <th>portfolio_value</th>\n",
|
|
" <th>positions</th>\n",
|
|
" <th>returns</th>\n",
|
|
" <th>starting_cash</th>\n",
|
|
" <th>starting_value</th>\n",
|
|
" <th>transactions</th>\n",
|
|
" </tr>\n",
|
|
" </thead>\n",
|
|
" <tbody>\n",
|
|
" <tr>\n",
|
|
" <th>2000-01-03 21:00:00</th>\n",
|
|
" <td> 26.75</td>\n",
|
|
" <td> 0.0</td>\n",
|
|
" <td> 10000000.0</td>\n",
|
|
" <td> 0.0</td>\n",
|
|
" <td> [{u'status': 0, u'created': 2000-01-03 00:00:0...</td>\n",
|
|
" <td> 2000-01-03 21:00:00+00:00</td>\n",
|
|
" <td> 2000-01-03 14:31:00+00:00</td>\n",
|
|
" <td> 0.0</td>\n",
|
|
" <td> 10000000.0</td>\n",
|
|
" <td> []</td>\n",
|
|
" <td> 0.000000e+00</td>\n",
|
|
" <td> 10000000.0</td>\n",
|
|
" <td> 0.0</td>\n",
|
|
" <td> []</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>2000-01-04 21:00:00</th>\n",
|
|
" <td> 24.49</td>\n",
|
|
" <td>-245.2</td>\n",
|
|
" <td> 9999754.8</td>\n",
|
|
" <td> 244.9</td>\n",
|
|
" <td> [{u'status': 1, u'created': 2000-01-03 00:00:0...</td>\n",
|
|
" <td> 2000-01-04 21:00:00+00:00</td>\n",
|
|
" <td> 2000-01-04 14:31:00+00:00</td>\n",
|
|
" <td> -0.3</td>\n",
|
|
" <td> 9999999.7</td>\n",
|
|
" <td> [{u'amount': 10, u'last_sale_price': 24.49, u'...</td>\n",
|
|
" <td>-3.000000e-08</td>\n",
|
|
" <td> 10000000.0</td>\n",
|
|
" <td> 0.0</td>\n",
|
|
" <td> [{u'commission': 0.3, u'amount': 10, u'sid': u...</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>2000-01-05 21:00:00</th>\n",
|
|
" <td> 24.85</td>\n",
|
|
" <td>-248.8</td>\n",
|
|
" <td> 9999506.0</td>\n",
|
|
" <td> 497.0</td>\n",
|
|
" <td> [{u'status': 1, u'created': 2000-01-04 00:00:0...</td>\n",
|
|
" <td> 2000-01-05 21:00:00+00:00</td>\n",
|
|
" <td> 2000-01-05 14:31:00+00:00</td>\n",
|
|
" <td> 3.3</td>\n",
|
|
" <td> 10000003.0</td>\n",
|
|
" <td> [{u'amount': 20, u'last_sale_price': 24.85, u'...</td>\n",
|
|
" <td> 3.300000e-07</td>\n",
|
|
" <td> 9999754.8</td>\n",
|
|
" <td> 244.9</td>\n",
|
|
" <td> [{u'commission': 0.3, u'amount': 10, u'sid': u...</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>2000-01-06 21:00:00</th>\n",
|
|
" <td> 22.70</td>\n",
|
|
" <td>-227.3</td>\n",
|
|
" <td> 9999278.7</td>\n",
|
|
" <td> 681.0</td>\n",
|
|
" <td> [{u'status': 1, u'created': 2000-01-05 00:00:0...</td>\n",
|
|
" <td> 2000-01-06 21:00:00+00:00</td>\n",
|
|
" <td> 2000-01-06 14:31:00+00:00</td>\n",
|
|
" <td>-43.3</td>\n",
|
|
" <td> 9999959.7</td>\n",
|
|
" <td> [{u'amount': 30, u'last_sale_price': 22.7, u'c...</td>\n",
|
|
" <td>-4.329999e-06</td>\n",
|
|
" <td> 9999506.0</td>\n",
|
|
" <td> 497.0</td>\n",
|
|
" <td> [{u'commission': 0.3, u'amount': 10, u'sid': u...</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>2000-01-07 21:00:00</th>\n",
|
|
" <td> 23.78</td>\n",
|
|
" <td>-238.1</td>\n",
|
|
" <td> 9999040.6</td>\n",
|
|
" <td> 951.2</td>\n",
|
|
" <td> [{u'status': 1, u'created': 2000-01-06 00:00:0...</td>\n",
|
|
" <td> 2000-01-07 21:00:00+00:00</td>\n",
|
|
" <td> 2000-01-07 14:31:00+00:00</td>\n",
|
|
" <td> 32.1</td>\n",
|
|
" <td> 9999991.8</td>\n",
|
|
" <td> [{u'amount': 40, u'last_sale_price': 23.78, u'...</td>\n",
|
|
" <td> 3.210013e-06</td>\n",
|
|
" <td> 9999278.7</td>\n",
|
|
" <td> 681.0</td>\n",
|
|
" <td> [{u'commission': 0.3, u'amount': 10, u'sid': u...</td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
"</table>\n",
|
|
"</div>"
|
|
],
|
|
"metadata": {},
|
|
"output_type": "pyout",
|
|
"prompt_number": 8,
|
|
"text": [
|
|
" AAPL capital_used ending_cash ending_value \\\n",
|
|
"2000-01-03 21:00:00 26.75 0.0 10000000.0 0.0 \n",
|
|
"2000-01-04 21:00:00 24.49 -245.2 9999754.8 244.9 \n",
|
|
"2000-01-05 21:00:00 24.85 -248.8 9999506.0 497.0 \n",
|
|
"2000-01-06 21:00:00 22.70 -227.3 9999278.7 681.0 \n",
|
|
"2000-01-07 21:00:00 23.78 -238.1 9999040.6 951.2 \n",
|
|
"\n",
|
|
" orders \\\n",
|
|
"2000-01-03 21:00:00 [{u'status': 0, u'created': 2000-01-03 00:00:0... \n",
|
|
"2000-01-04 21:00:00 [{u'status': 1, u'created': 2000-01-03 00:00:0... \n",
|
|
"2000-01-05 21:00:00 [{u'status': 1, u'created': 2000-01-04 00:00:0... \n",
|
|
"2000-01-06 21:00:00 [{u'status': 1, u'created': 2000-01-05 00:00:0... \n",
|
|
"2000-01-07 21:00:00 [{u'status': 1, u'created': 2000-01-06 00:00:0... \n",
|
|
"\n",
|
|
" period_close period_open \\\n",
|
|
"2000-01-03 21:00:00 2000-01-03 21:00:00+00:00 2000-01-03 14:31:00+00:00 \n",
|
|
"2000-01-04 21:00:00 2000-01-04 21:00:00+00:00 2000-01-04 14:31:00+00:00 \n",
|
|
"2000-01-05 21:00:00 2000-01-05 21:00:00+00:00 2000-01-05 14:31:00+00:00 \n",
|
|
"2000-01-06 21:00:00 2000-01-06 21:00:00+00:00 2000-01-06 14:31:00+00:00 \n",
|
|
"2000-01-07 21:00:00 2000-01-07 21:00:00+00:00 2000-01-07 14:31:00+00:00 \n",
|
|
"\n",
|
|
" pnl portfolio_value \\\n",
|
|
"2000-01-03 21:00:00 0.0 10000000.0 \n",
|
|
"2000-01-04 21:00:00 -0.3 9999999.7 \n",
|
|
"2000-01-05 21:00:00 3.3 10000003.0 \n",
|
|
"2000-01-06 21:00:00 -43.3 9999959.7 \n",
|
|
"2000-01-07 21:00:00 32.1 9999991.8 \n",
|
|
"\n",
|
|
" positions \\\n",
|
|
"2000-01-03 21:00:00 [] \n",
|
|
"2000-01-04 21:00:00 [{u'amount': 10, u'last_sale_price': 24.49, u'... \n",
|
|
"2000-01-05 21:00:00 [{u'amount': 20, u'last_sale_price': 24.85, u'... \n",
|
|
"2000-01-06 21:00:00 [{u'amount': 30, u'last_sale_price': 22.7, u'c... \n",
|
|
"2000-01-07 21:00:00 [{u'amount': 40, u'last_sale_price': 23.78, u'... \n",
|
|
"\n",
|
|
" returns starting_cash starting_value \\\n",
|
|
"2000-01-03 21:00:00 0.000000e+00 10000000.0 0.0 \n",
|
|
"2000-01-04 21:00:00 -3.000000e-08 10000000.0 0.0 \n",
|
|
"2000-01-05 21:00:00 3.300000e-07 9999754.8 244.9 \n",
|
|
"2000-01-06 21:00:00 -4.329999e-06 9999506.0 497.0 \n",
|
|
"2000-01-07 21:00:00 3.210013e-06 9999278.7 681.0 \n",
|
|
"\n",
|
|
" transactions \n",
|
|
"2000-01-03 21:00:00 [] \n",
|
|
"2000-01-04 21:00:00 [{u'commission': 0.3, u'amount': 10, u'sid': u... \n",
|
|
"2000-01-05 21:00:00 [{u'commission': 0.3, u'amount': 10, u'sid': u... \n",
|
|
"2000-01-06 21:00:00 [{u'commission': 0.3, u'amount': 10, u'sid': u... \n",
|
|
"2000-01-07 21:00:00 [{u'commission': 0.3, u'amount': 10, u'sid': u... "
|
|
]
|
|
}
|
|
],
|
|
"prompt_number": 8
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"### Manual (advanced)\n",
|
|
"\n",
|
|
"If you are happy with either way above you can safely skip this passage. To provide a closer look at how `zipline` actually works it is instructive to see how we run an algorithm without any of the interfaces demonstrated above which hide the actual `zipline` API."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"collapsed": false,
|
|
"input": [
|
|
"import pytz\n",
|
|
"from datetime import datetime\n",
|
|
"\n",
|
|
"import zipline\n",
|
|
"from zipline.algorithm import TradingAlgorithm\n",
|
|
"from zipline.utils.factory import load_bars_from_yahoo\n",
|
|
"from zipline.api import order, record, symbol\n",
|
|
"\n",
|
|
"# Load data manually from Yahoo! finance\n",
|
|
"start = datetime(2000, 1, 1, 0, 0, 0, 0, pytz.utc)\n",
|
|
"end = datetime(2012, 1, 1, 0, 0, 0, 0, pytz.utc)\n",
|
|
"data = load_bars_from_yahoo(stocks=['AAPL'], start=start,\n",
|
|
" end=end)\n",
|
|
"\n",
|
|
"# Define algorithm\n",
|
|
"def initialize(context):\n",
|
|
" pass\n",
|
|
"\n",
|
|
"def handle_data(context, data):\n",
|
|
" order(symbol('AAPL'), 10)\n",
|
|
" record(AAPL=data[symbol('AAPL')].price)\n",
|
|
"\n",
|
|
"# Create algorithm object passing in initialize and\n",
|
|
"# handle_data functions\n",
|
|
"algo_obj = TradingAlgorithm(initialize=initialize, \n",
|
|
" handle_data=handle_data)\n",
|
|
"\n",
|
|
"# Run algorithm\n",
|
|
"perf_manual = algo_obj.run(data)"
|
|
],
|
|
"language": "python",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"output_type": "stream",
|
|
"stream": "stderr",
|
|
"text": [
|
|
"[2014-11-19 10:17] INFO: Performance: Simulated 3019 trading days out of 3019.\n"
|
|
]
|
|
},
|
|
{
|
|
"output_type": "stream",
|
|
"stream": "stderr",
|
|
"text": [
|
|
"[2014-11-19 10:17] INFO: Performance: first open: 2000-01-03 14:31:00+00:00\n"
|
|
]
|
|
},
|
|
{
|
|
"output_type": "stream",
|
|
"stream": "stderr",
|
|
"text": [
|
|
"[2014-11-19 10:17] INFO: Performance: last close: 2011-12-30 21:00:00+00:00\n"
|
|
]
|
|
},
|
|
{
|
|
"output_type": "stream",
|
|
"stream": "stdout",
|
|
"text": [
|
|
"AAPL\n"
|
|
]
|
|
}
|
|
],
|
|
"prompt_number": 1
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"As you can see, we again define the functions as above but we manually pass them to the `TradingAlgorithm` class which is the main `zipline` class for running algorithms. We also manually load the data using `load_bars_from_yahoo()` and pass it to the `TradingAlgorithm.run()` method which kicks off the backtest simulation."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"##Access to previous prices using `history`\n",
|
|
"\n",
|
|
"###Working example: Dual Moving Average Cross-Over\n",
|
|
"\n",
|
|
"The Dual Moving Average (DMA) is a classic momentum strategy. It's probably not used by any serious trader anymore but is still very instructive. The basic idea is that we compute two rolling or moving averages (mavg) -- one with a longer window that is supposed to capture long-term trends and one shorter window that is supposed to capture short-term trends. Once the short-mavg crosses the long-mavg from below we assume that the stock price has upwards momentum and long the stock. If the short-mavg crosses from above we exit the positions as we assume the stock to go down further.\n",
|
|
"\n",
|
|
"As we need to have access to previous prices to implement this strategy we need a new concept: History\n",
|
|
"\n",
|
|
"`history()` is a convenience function that keeps a rolling window of data for you. The first argument is the number of bars you want to collect, the second argument is the unit (either `'1d'` for `'1m'` but note that you need to have minute-level data for using `1m`). For a more detailed description `history()`'s features, see the [Quantopian docs](https://www.quantopian.com/help#ide-history). While you can directly use the `history()` function on Quantopian, in `zipline` you have to register each history container you want to use with `add_history()` and pass it the same arguments as the history function below. Lets look at the strategy which should make this clear:"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"collapsed": false,
|
|
"input": [
|
|
"%%zipline --start 2000-1-1 --end 2014-1-1 --symbols AAPL -o perf_dma\n",
|
|
"\n",
|
|
"\n",
|
|
"from zipline.api import order_target, record, symbol, history, add_history\n",
|
|
"import numpy as np\n",
|
|
"\n",
|
|
"def initialize(context):\n",
|
|
" # Register 2 histories that track daily prices,\n",
|
|
" # one with a 100 window and one with a 300 day window\n",
|
|
" add_history(100, '1d', 'price')\n",
|
|
" add_history(300, '1d', 'price')\n",
|
|
"\n",
|
|
" context.i = 0\n",
|
|
"\n",
|
|
"\n",
|
|
"def handle_data(context, data):\n",
|
|
" # Skip first 300 days to get full windows\n",
|
|
" context.i += 1\n",
|
|
" if context.i < 300:\n",
|
|
" return\n",
|
|
"\n",
|
|
" # Compute averages\n",
|
|
" # history() has to be called with the same params\n",
|
|
" # from above and returns a pandas dataframe.\n",
|
|
" short_mavg = history(100, '1d', 'price').mean()\n",
|
|
" long_mavg = history(300, '1d', 'price').mean()\n",
|
|
"\n",
|
|
" # Trading logic\n",
|
|
" if short_mavg[0] > long_mavg[0]:\n",
|
|
" # order_target orders as many shares as needed to\n",
|
|
" # achieve the desired number of shares.\n",
|
|
" order_target(symbol('AAPL'), 100)\n",
|
|
" elif short_mavg[0] < long_mavg[0]:\n",
|
|
" order_target(symbol('AAPL'), 0)\n",
|
|
"\n",
|
|
" # Save values for later inspection\n",
|
|
" record(AAPL=data[symbol('AAPL')].price,\n",
|
|
" short_mavg=short_mavg[0],\n",
|
|
" long_mavg=long_mavg[0])\n",
|
|
" \n",
|
|
" \n",
|
|
"def analyze(context, perf):\n",
|
|
" fig = plt.figure()\n",
|
|
" ax1 = fig.add_subplot(211)\n",
|
|
" perf.portfolio_value.plot(ax=ax1)\n",
|
|
" ax1.set_ylabel('portfolio value in $')\n",
|
|
"\n",
|
|
" ax2 = fig.add_subplot(212)\n",
|
|
" perf['AAPL'].plot(ax=ax2)\n",
|
|
" perf[['short_mavg', 'long_mavg']].plot(ax=ax2)\n",
|
|
"\n",
|
|
" perf_trans = perf.ix[[t != [] for t in perf.transactions]]\n",
|
|
" buys = perf_trans.ix[[t[0]['amount'] > 0 for t in perf_trans.transactions]]\n",
|
|
" sells = perf_trans.ix[\n",
|
|
" [t[0]['amount'] < 0 for t in perf_trans.transactions]]\n",
|
|
" ax2.plot(buys.index, perf.short_mavg.ix[buys.index],\n",
|
|
" '^', markersize=10, color='m')\n",
|
|
" ax2.plot(sells.index, perf.short_mavg.ix[sells.index],\n",
|
|
" 'v', markersize=10, color='k')\n",
|
|
" ax2.set_ylabel('price in $')\n",
|
|
" plt.legend(loc=0)\n",
|
|
" plt.show()"
|
|
],
|
|
"language": "python",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"output_type": "stream",
|
|
"stream": "stderr",
|
|
"text": [
|
|
"[2014-07-25 17:59] INFO: Performance: Simulated 3521 trading days out of 3521.\n"
|
|
]
|
|
},
|
|
{
|
|
"output_type": "stream",
|
|
"stream": "stderr",
|
|
"text": [
|
|
"[2014-07-25 17:59] INFO: Performance: first open: 2000-01-03 14:31:00+00:00\n"
|
|
]
|
|
},
|
|
{
|
|
"output_type": "stream",
|
|
"stream": "stderr",
|
|
"text": [
|
|
"[2014-07-25 17:59] INFO: Performance: last close: 2013-12-31 21:00:00+00:00\n"
|
|
]
|
|
},
|
|
{
|
|
"output_type": "stream",
|
|
"stream": "stdout",
|
|
"text": [
|
|
"AAPL\n"
|
|
]
|
|
},
|
|
{
|
|
"metadata": {},
|
|
"output_type": "display_data",
|
|
"png": "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\nFi9ezNixY7OK0MeMGcOMGTNISkoiKSkp654zZsygQYMGJCUl8dhjjzF+/HhvfRURERERycfx42Z7\n5505z9eoYfp1K+k2vJZ0d+3alXr16uU417RpU05c+HXo+PHjNGvWDIAFCxYwePBggoODCQsLIzw8\nnNWrV7N//35OnTpFzIW/UwwdOpTPP/8cgIULFzJs2DAABgwYwNKlS731VaQUVNtnj2Jvl+Jvl+Jv\nj2Jvl434nzgBcXFQpUru16pXh6NHITXV58PyO0G+/LDJkydz/fXX84c//IHMzExWrlwJwL59+4h1\nF/4AISEhJCcnExwcTEhISNb5Zs2akZycDEBycjKhoaEABAUFUadOHY4ePUr9+vV9+I1EREREAltB\nS703bAgdOkDTprBli2/H5W98mnSPGjWKv/71r9xxxx3MmzePkSNH8tVXX3n9c4cPH05YWBgAdevW\npX379lk1T+7fCHXsnWP3OX8ZTyAdx8XF+dV4Au1Y8Vf8dazjQDk+cwbOnEkgISH3640axbF5M5w4\nkffr5f3Yvb9r1y4K49XFcXbt2sVtt93Gpk2bAKhduzYnT54EwHEc6taty4kTJ5g8eTIAEyZMAKB3\n7948//zzNG/enO7du7Plwq9GH330EStWrODNN9+kd+/ePPfcc8TGxpKRkUHTpk05dOhQ7i+oxXFE\nREREvOadd2DlSpgxI/drgwbBxx+b/UBIx/xmcZzw8HCWL18OwNdff81VV10FQL9+/ZgzZw7p6ens\n3LmTpKQkYmJiaNKkCbVr12b16tU4jsPs2bPp379/1ntmzZoFwCeffEKPHj18+VWkiLL/Jii+pdjb\npfjbpfjbo9jbZSP+aWlQrVrer23d6tux+DOvlZcMHjyY5cuXc/jwYUJDQ5k4cSJvvfUWDz30EGlp\naVxyySW89dZbAERFRTFw4ECioqIICgoiPj4e14X1ROPj4xk+fDipqan06dOH3r17A6ZUZciQIURE\nRNCgQQPmzJnjra8iIiIiIvk4exaqVs37tR9+8O1Y/JlXy0v8gcpLRERERLznxRdNd5KXXsr9WufO\nsH692U9Ph+Bg347N1/ymvERERERE/Mcjj0DfvqW7x6pV+ZeX/P3vnv2XXy7d55R3SrrFq1TbZ49i\nb5fib5fib49ib1dx4z99Olzod1FiixbB4cN5v5a97CSPfhcBRUm3iIiISADKyDDbWrVKd5/69eGP\n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\nsberoPi766gvrqe+mC8faPzjHz377pnukyd99/ll5Ykn4OefC76mDBf2FBERERF/lZIC3btDr14F\nXzdmjFmh0lvi4z0lLtnbEqakmG2dOuVjgZzdu02cTp6EKVMKn6nXTLd4lWr77FHs7VL87VL87VHs\n7Soo/qdPm8VpWrcu+B7dusHkyWU7ruzGjIH77st9fvdu732mN4webbZ9+5rtgQMFX6+kW0RERKSC\nO3jQLEhz+eW2R5K/1attj6B4+vQx2337zHbVqoKvdzn5LRBfQbhcLir4VxQREREp0L/+BX/5CyxZ\nYnskuWUvMbn3XvjHP0xduTdWxCxL06fDI49Ap06wfr37bP55p2a6RURERCq4w4ehUSPboyjcU0+Z\nFTEffhj+7/9sj6Zg27aZUh1Pwl0wJd3iVarts0ext0vxt0vxt0extyu/+H/5JWRk+HYsxTFihNlW\nrmwepIyP9ywP76+mTStepxevJd0jR46kcePGREdH5zj/xhtv0KpVK9q0acP48eOzzk+aNImIiAgi\nIyNZku1vH+vXryc6OpqIiAjGjRuXdT4tLY1BgwYRERFBbGwsu8tb9b2IiIiIj8yZA3Pn2h5F3h58\nEB57DJo3NytUuhfxKayfuD84cABiYsz+998XfK3Xarq/+eYbatasydChQ9m0aRMAy5Yt4+WXX+bL\nL78kODiYQ4cOcemll5KYmMg999zD2rVrSU5O5qabbiIpKQmXy0VMTAzTp08nJiaGPn368Oijj9K7\nd2/i4+P56aefiI+PZ+7cucyfP585c+bk/oKq6RYREZEAtmULtGsHy5bBddfZHk3h3LXcTZrA/v12\nx5KfzEwzK79kCSQkwMsvmzaHBeWdXpvp7tq1K/Xq1ctx7s033+Spp54i+MIaoJdeeikACxYsYPDg\nwQQHBxMWFkZ4eDirV69m//79nDp1ipgLv0IMHTqUzz//HICFCxcy7MIyRgMGDGDp0qXe+ioiIiIi\n5VZUlOkhHRlpeyTF06yZ7RHkLzXV1J737Fn0nuI+relOSkpixYoVxMbGEhcXx7p16wDYt28fISEh\nWdeFhISQnJyc63yzZs1ITk4GIDk5mdDQUACCgoKoU6cOR48e9eG3kaJQbZ89ir1dir9dir89ir1d\nBcW/fn3fjaMs+POs/JkzJukGaNiwaO/x6YqUGRkZHDt2jFWrVrF27VoGDhzIjh07vP65w4cPJ+zC\n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\ntLD/A4rHiP21mJkWAAAAAElFTkSuQmCC\n",
|
|
"text": [
|
|
"<matplotlib.figure.Figure at 0x7f6aaf252210>"
|
|
]
|
|
}
|
|
],
|
|
"prompt_number": 19
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"Here we are explicitly defining an `analyze()` function that gets automatically called once the backtest is done (this is not possible on Quantopian currently).\n",
|
|
"\n",
|
|
"Although it might not be directly apparent, the power of `history()` (pun intended) can not be under-estimated as most algorithms make use of prior market developments in one form or another. You could easily devise a strategy that trains a classifier with [`scikit-learn`](http://scikit-learn.org/stable/) which tries to predict future market movements based on past prices (note, that most of the `scikit-learn` functions require `numpy.ndarray`s rather than `pandas.DataFrame`s, so you can simply pass the underlying `ndarray` of a `DataFrame` via `.values`).\n",
|
|
"\n",
|
|
"We also used the `order_target()` function above. This and other functions like it can make order management and portfolio rebalancing much easier. See the [Quantopian documentation on order functions](https://www.quantopian.com/help#api-order-methods) fore more details.\n",
|
|
"\n",
|
|
"# Conclusions\n",
|
|
"\n",
|
|
"We hope that this tutorial gave you a little insight into the architecture, API, and features of `zipline`. For next steps, check out some of the [examples](https://github.com/quantopian/zipline/tree/master/zipline/examples).\n",
|
|
"\n",
|
|
"Feel free to ask questions on [our mailing list](https://groups.google.com/forum/#!forum/zipline), report problems on our [GitHub issue tracker](https://github.com/quantopian/zipline/issues?state=open), [get involved](https://github.com/quantopian/zipline/wiki/Contribution-Requests), and [checkout Quantopian](https://quantopian.com)."
|
|
]
|
|
}
|
|
],
|
|
"metadata": {}
|
|
}
|
|
]
|
|
} |