mirror of
https://github.com/wassname/catalyst.git
synced 2026-06-28 02:44:59 +08:00
942 lines
191 KiB
Plaintext
942 lines
191 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 2012-1-1 --symbols AAPL -o buyapple_out.pickle"
|
|
],
|
|
"language": "python",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"output_type": "stream",
|
|
"stream": "stdout",
|
|
"text": [
|
|
"AAPL\r\n",
|
|
"\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-01 16:06] INFO: Performance: Simulated 3019 trading days out of 3019.\r\n",
|
|
"[2014-07-01 16:06] INFO: Performance: first open: 2000-01-03 14:31:00+00:00\r\n",
|
|
"[2014-07-01 16:06] INFO: Performance: last close: 2011-12-30 21:00:00+00:00\r\n"
|
|
]
|
|
}
|
|
],
|
|
"prompt_number": 3
|
|
},
|
|
{
|
|
"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> 26.75</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> 24.49</td>\n",
|
|
" <td>-245.2</td>\n",
|
|
" <td> 9999754.8</td>\n",
|
|
" <td> 244.9</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': 24.49, u'...</td>\n",
|
|
" <td>-3.000000e-08</td>\n",
|
|
" <td> 10000000.0</td>\n",
|
|
" <td> 0.0</td>\n",
|
|
" <td> [{u'order_id': u'9f810eed8db0461e84db52fc17323...</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'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> 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'order_id': u'd5498584ca754d15b7a6ca43b6b30...</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'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>-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'order_id': u'1e98ec2df36f4160a9a01393001f2...</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'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> 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'order_id': u'd97055b613fb441eba992741a78e2...</td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
"</table>\n",
|
|
"</div>"
|
|
],
|
|
"metadata": {},
|
|
"output_type": "pyout",
|
|
"prompt_number": 4,
|
|
"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'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 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'order_id': u'9f810eed8db0461e84db52fc17323... \n",
|
|
"2000-01-05 21:00:00 [{u'order_id': u'd5498584ca754d15b7a6ca43b6b30... \n",
|
|
"2000-01-06 21:00:00 [{u'order_id': u'1e98ec2df36f4160a9a01393001f2... \n",
|
|
"2000-01-07 21:00:00 [{u'order_id': u'd97055b613fb441eba992741a78e2... "
|
|
]
|
|
}
|
|
],
|
|
"prompt_number": 4
|
|
},
|
|
{
|
|
"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": 5,
|
|
"text": [
|
|
"<matplotlib.text.Text at 0x7ff5fc9ada10>"
|
|
]
|
|
},
|
|
{
|
|
"metadata": {},
|
|
"output_type": "display_data",
|
|
"png": "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\n1ioSAAAAAElFTkSuQmCC\n",
|
|
"text": [
|
|
"<matplotlib.figure.Figure at 0x7ff5fca9f050>"
|
|
]
|
|
}
|
|
],
|
|
"prompt_number": 5
|
|
},
|
|
{
|
|
"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 2012-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-01 16:06] INFO: Performance: Simulated 3019 trading days out of 3019.\n"
|
|
]
|
|
},
|
|
{
|
|
"output_type": "stream",
|
|
"stream": "stderr",
|
|
"text": [
|
|
"[2014-07-01 16:06] INFO: Performance: first open: 2000-01-03 14:31:00+00:00\n"
|
|
]
|
|
},
|
|
{
|
|
"output_type": "stream",
|
|
"stream": "stderr",
|
|
"text": [
|
|
"[2014-07-01 16:06] 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",
|
|
"from zipline.algorithm import TradingAlgorithm\n",
|
|
"from zipline.utils.factory import load_bars_from_yahoo\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-07-01 16:07] INFO: Performance: Simulated 3019 trading days out of 3019.\n"
|
|
]
|
|
},
|
|
{
|
|
"output_type": "stream",
|
|
"stream": "stderr",
|
|
"text": [
|
|
"[2014-07-01 16:07] INFO: Performance: first open: 2000-01-03 14:31:00+00:00\n"
|
|
]
|
|
},
|
|
{
|
|
"output_type": "stream",
|
|
"stream": "stderr",
|
|
"text": [
|
|
"[2014-07-01 16:07] INFO: Performance: last close: 2011-12-30 21:00:00+00:00\n"
|
|
]
|
|
},
|
|
{
|
|
"output_type": "stream",
|
|
"stream": "stdout",
|
|
"text": [
|
|
"AAPL\n"
|
|
]
|
|
}
|
|
],
|
|
"prompt_number": 9
|
|
},
|
|
{
|
|
"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 2012-1-1 --symbols AAPL -o perf_dma\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",
|
|
"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 > long_mavg:\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 < long_mavg:\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",
|
|
"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-01 16:08] INFO: Performance: Simulated 3019 trading days out of 3019.\n"
|
|
]
|
|
},
|
|
{
|
|
"output_type": "stream",
|
|
"stream": "stderr",
|
|
"text": [
|
|
"[2014-07-01 16:08] INFO: Performance: first open: 2000-01-03 14:31:00+00:00\n"
|
|
]
|
|
},
|
|
{
|
|
"output_type": "stream",
|
|
"stream": "stderr",
|
|
"text": [
|
|
"[2014-07-01 16:08] INFO: Performance: last close: 2011-12-30 21:00:00+00:00\n"
|
|
]
|
|
},
|
|
{
|
|
"output_type": "stream",
|
|
"stream": "stdout",
|
|
"text": [
|
|
"AAPL\n"
|
|
]
|
|
},
|
|
{
|
|
"metadata": {},
|
|
"output_type": "display_data",
|
|
"png": "iVBORw0KGgoAAAANSUhEUgAAAt0AAAKOCAYAAAB6LaWrAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xl4FdX9x/H3hYRN9qBsQYISCGFLRCOtCwEEAypYqfDQ\nlkVxC1YpUsvSoqBWcCmKtLH+NCpgFdzBDUEkWlEjsigQkVTDlkS2CCRmJ/P74zD3JmRfbm4m+bye\nJ8+ZmTsz91y+BL45+c45LsuyLERERERExGsa+boDIiIiIiL1nZJuEREREREvU9ItIiIiIuJlSrpF\nRERERLxMSbeIiIiIiJcp6RYRERER8bIGn3R/8803/OpXv2LAgAGMGTOG9PT0Es9bunQp/fv3p1+/\nfixdurTS1xd24MABRo4cSWhoKH379mX//v019nlEREREpO5pUEl3XFwcN910U5Fjt9xyC48++ijf\nfvstv/nNb3jssceKXbdr1y6ee+45tmzZwjfffMO7777LDz/8UOHrzzZ58mRmz55NQkICW7Zs4bzz\nzquZDygiIiIidVKDSrpdLlexY4mJiVxxxRUAXHXVVbzxxhvFztmzZw+XXnopzZo1o3HjxgwZMoQ3\n33yzzOtPnz7NvffeS0REBAMHDuT//u//AEhISOD06dMMHz4cgBYtWtC8efOa/7AiIiIiUmc0qKS7\npMU3+/bty5o1awB47bXXOHjwYLFz+vXrx3//+1/S0tLIzMzkvffe49ChQ2VeHxsbS9u2bfnqq6/4\n6quvePbZZ9m3bx979+6lbdu2jBs3josuuoi//OUvFBQUeOsji4iIiEgd0CCS7sGDBxMeHs6tt97K\n2rVrCQ8PJzw8nA0bNvD8888TExPDxRdfTEZGBk2aNCl2fUhICLNnz2bkyJGMGjWK8PBwGjUyf3Sl\nXb9+/XpWrFhBeHg4gwcPJi0tjf/973/k5+fz3//+l3/84x9s2bKFH3/8kRdffLE2/zhEREREpJb5\n+boDteHLL78E4JNPPuHFF1/khRdeKPL6hx9+CMDevXt57733SrzHzTffzM033wzAvHnzOP/88wHo\n3bt3kevff/999zX//Oc/GTFiRJH7xMfHExYWRlBQEADXX389X375pfveIiIiIlL/eH2k+/Tp04SH\nh3PdddcBsGDBAgIDA92jzR988IH73EWLFhEcHExISAjr1693H9+6dSv9+/cnODiYGTNmuI/n5OQw\n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\nHekOCgpyfzVv3pydO3eya9cuWrRoQVBV5xESqSSVNzmb4udsil/Ne/99z/bZExz89a+wYIHZ/ukn\ns8R3VRWOXUVGuu2FduyH+LypQ4fiSWR99+yzZmEg24cfmnbZMigo8By3H46MjIzkmmvMtJFny8sz\nSXdIiHf7LDWv3KqtV199lYiICF577bUi2yIiIlI5J054tgvPFALw44+mzciAzz4zi9rUhIqMdNtJ\n+cSJNfOeZWnXDv72N++/T13i72/azz4zX1u3el47etSznZ3tmbHG5YJu3Yre54knTEnJgQPQtat3\n+yw1r9yk+6GHHmLLli2sWLGCFStWsGXLFh588MHa6JuIakodTvFzNsWv5tlzYIOZB7uwpCTTbtxo\n2rMTrsqobE33oUOmPbt22BuaNzdlNA1pru7cXNN+/XXRvwMA+/d7tu250e342cl669am/eQTzzU1\n9aCt1J5yk27Lsji30HdhQECAFpoRERGppB9/NGUGtpyc4ud06QLXX28eoqypqfWaNsU9/Vxp9u6F\nBx6onXmfO3UyrV3S0hDYsc7IMD/gzJ9v9nv3hiVLPOft3w/du3v27QclzznHLDa0ebOpAwdPIi7O\nUW7SHRUVxdVXX82LL77ICy+8wOjRoxk1alRt9E1ENaUOp/g5m+JXs958E4YM8ewXTrayskybkmLa\nzz+v3nsVjl2rVpCeXvb5338PvXpV7z0rKi/PtD//XDvvVxdkZ5tykYwM80Blt26m1OiNN8xqkxs3\nmr8DycnmNTt+9t+L1FSz2NCJE54HXTXlovOUmnRnn/mx+LHHHuP222/n22+/ZefOndx+++08+uij\ntdZBERGR+uDECRg+3LP/xhvmwUrLMouc2KUEUPXl10vSqhX87ndw772ln/P992bUtTbY9eUNLelu\n0wZeftmTdLdpY0b99+yBq64yfwd69y7624bQULjlFs9+fn7txUlqXqlJ969//WvArEw5btw4lixZ\nwpIlS/iN5qiRWqSaUmdT/JxN8as5x4+bUeyAANi+3XN89WrPnNX2CPD//V/1369w7Fq1MjXFjz9e\n8rmZmWZe8ODg6r9vRTTUpPvECZNwHzjgWdTm7BIie0YSO37NmhV/6HT06IZVD1+flDpPd05ODv/5\nz3/YvHkzbxaas8ayLFwuFzfU1ASiIiIi9VyfPmaWij/8AcLCPMdbtIAnnyx6bk0/zFh41Dwvr+iI\n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\n3V2huP7tgWJY2q40du3atQPA29ub2rVru/JRyqVLxW/ChAnUr1+f5cuXc/vttwPQt29f/vrrL7p1\n68aJEyeIjo6mefPmzt8SSvmg/9JKkS1fvpwbb7yR5ORkGjduzGuvvYa3tzfLli1zvgjp6enJyJEj\nGTFiBJ07d2bo0KH88ssvtG3blmPHjtGhQwfXPkQ5pdjZm+JnX4qdvRU2fqNGjWLkyJHO87755hve\nfvttOnbsyMaNG2nevLmrHkFcyGFpFgQpop9//pndu3czePBgAIYNG0bLli3x8fHhww8/ZP369WRl\nZXHo0CGeeOIJ3nvvPYKDgzl27BinTp0iICDAxU9Qfil29qb42ZdiZ2+XE78nn3yScePGERwczM8/\n/wzAbbfd5srmi4upp1uK7KabbqJ///7OGQhvueUW9uzZw4MPPkhWVhYffPABnp6e7Nu3D29vb4KD\ngwEzLqn+x+Faip29KX72pdjZ2+XEz8vLyxm/2267TQm3KOmWoqtUqRI+Pj7OcX0XLVrkHDf2iy++\n4K+//uLOO+8kIiKCG264wZVNlfModvam+NmXYmdvip9cCZWXyBXLeYO7V69e/Pe//6Vx48Zs376d\nmjVrsnnzZuesheJ+FDt7U/zsS7GzN8VPikI93XLFvLy8OHPmDLVq1eLPP//kzjvv5M0338TT05Nb\nbrlF/+FxY4qdvSl+9qXY2ZviJ0WhIQOlWGzYsIGvv/6aXbt28eCDD/Lwww+7uklSSIqdvSl+9qXY\n2ZviJ5dLM1JKsXA4HNSsWZNPPvmEm266ydXNkcug2Nmb4mdfip29KX5yuVTTLSIiIiJSwlTTLSIi\nIiJSwpR0i4iIiIiUMCXdIiIiIiIlTEm3iIiIiEgJU9ItIiIiIlLClHSLiIiIiJQwJd0iIiIiIiVM\nSbeIiIiISAlT0i0iIiIiUsKUdIuIiIiIlDAl3SIiIiIiJUxJt4iIiIhICVPSLSIiIiJSwpR0i4iI\niIiUMCXdIiIiIiIlTEm3iIiIiEgJU9ItIiIiIlLClHSLiIiIiJQwJd0iIiIiIiVMSbeIiIiISAlT\n0i0iIiIiUsKUdIuIiIiIlDAl3SIiIiIiJUxJt4iIiIhICVPSLSIiIiJSwpR0i4iIiIiUMLdMurOy\nsggLC6N3794AjBo1isDAQMLCwggLC2P+/PnOY8eMGUOTJk1o1qwZCxcudFWTRUREREQuysvVDcjP\n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\nSUVORK5CYII=\n",
|
|
"text": [
|
|
"<matplotlib.figure.Figure at 0x7ff5f0e13d10>"
|
|
]
|
|
}
|
|
],
|
|
"prompt_number": 11
|
|
},
|
|
{
|
|
"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": {}
|
|
}
|
|
]
|
|
} |