ml-finance-python

python scripts for finance machine learning

git clone https://9o.is/git/ml-finance-python.git

notebook.ipynb

(59142B)


      1 {
      2  "cells": [
      3   {
      4    "cell_type": "markdown",
      5    "metadata": {
      6     "collapsed": true
      7    },
      8    "source": [
      9     "# Zack's Broker Ratings Revision History\n",
     10     "\n",
     11     "In this notebook, we'll take a look at Zack's *Broker Ratings Revision History* dataset, available on [Quantopian](https://www.quantopian.com/store). This dataset spans 2002 through the current day and provides Analyst Ratings History for Securities.\n",
     12     "\n",
     13     "Update time: Zacks updates this dataset sometime during the first week of each month. In pipeline, your data will be updated close to midnight. So on the 27th, you will have data with a maximum asof_date of the 26th.\n",
     14     "\n",
     15     "## Notebook Contents\n",
     16     "\n",
     17     "There are two ways to access the data and you'll find both of them listed below. Just click on the section you'd like to read through.\n",
     18     "\n",
     19     "- <a href='#interactive'><strong>Interactive overview</strong></a>: This is only available on Research and uses blaze to give you access to large amounts of data. Recommended for exploration and plotting.\n",
     20     "- <a href='#pipeline'><strong>Pipeline overview</strong></a>: Data is made available through pipeline which is available on both the Research & Backtesting environment. Recommended for custom factor development and moving back & forth between research/backtesting.\n",
     21     "\n",
     22     "### Free samples and limits\n",
     23     "One key caveat: we limit the number of results returned from any given expression to 10,000 to protect against runaway memory usage. To be clear, you have access to all the data server side. We are limiting the size of the responses back from Blaze.\n",
     24     "\n",
     25     "There is a *free* version of this dataset as well as a paid one. The free sample includes data until 2 months prior to the current date.\n",
     26     "\n",
     27     "To access the most up-to-date values for this data set for trading a live algorithm (as with other partner sets), you need to purchase acess to the full set.\n",
     28     "\n",
     29     "With preamble in place, let's get started:\n",
     30     "\n",
     31     "<a id='interactive'></a>\n",
     32     "#Interactive Overview\n",
     33     "### Accessing the data with Blaze and Interactive on Research\n",
     34     "Partner datasets are available on Quantopian Research through an API service known as [Blaze](http://blaze.pydata.org). Blaze provides the Quantopian user with a convenient interface to access very large datasets, in an interactive, generic manner.\n",
     35     "\n",
     36     "Blaze provides an important function for accessing these datasets. Some of these sets are many millions of records. Bringing that data directly into Quantopian Research directly just is not viable. So Blaze allows us to provide a simple querying interface and shift the burden over to the server side.\n",
     37     "\n",
     38     "It is common to use Blaze to reduce your dataset in size, convert it over to Pandas and then to use Pandas for further computation, manipulation and visualization.\n",
     39     "\n",
     40     "Helpful links:\n",
     41     "* [Query building for Blaze](http://blaze.readthedocs.io/en/latest/queries.html)\n",
     42     "* [Pandas-to-Blaze dictionary](http://blaze.readthedocs.io/en/latest/rosetta-pandas.html)\n",
     43     "* [SQL-to-Blaze dictionary](http://blaze.readthedocs.io/en/latest/rosetta-sql.html).\n",
     44     "\n",
     45     "Once you've limited the size of your Blaze object, you can convert it to a Pandas DataFrames using:\n",
     46     "> `from odo import odo`  \n",
     47     "> `odo(expr, pandas.DataFrame)`\n",
     48     "\n",
     49     "\n",
     50     "###To see how this data can be used in your algorithm, search for the `Pipeline Overview` section of this notebook or head straight to <a href='#pipeline'>Pipeline Overview</a>"
     51    ]
     52   },
     53   {
     54    "cell_type": "code",
     55    "execution_count": 2,
     56    "metadata": {
     57     "collapsed": false
     58    },
     59    "outputs": [],
     60    "source": [
     61     "# import the free sample of the dataset\n",
     62     "from quantopian.interactive.data.zacks import broker_ratings as dataset\n",
     63     "\n",
     64     "# import data operations\n",
     65     "from odo import odo\n",
     66     "# import other libraries we will use\n",
     67     "import pandas as pd\n",
     68     "import matplotlib.pyplot as plt"
     69    ]
     70   },
     71   {
     72    "cell_type": "code",
     73    "execution_count": 16,
     74    "metadata": {
     75     "collapsed": false
     76    },
     77    "outputs": [
     78     {
     79      "data": {
     80       "text/html": [
     81        "Timestamp('2002-01-02 00:00:00')"
     82       ],
     83       "text/plain": [
     84        "Timestamp('2002-01-02 00:00:00')"
     85       ]
     86      },
     87      "execution_count": 16,
     88      "metadata": {},
     89      "output_type": "execute_result"
     90     }
     91    ],
     92    "source": [
     93     "# Let's use blaze to understand the data a bit using Blaze dshape()\n",
     94     "dataset.timestamp.min()"
     95    ]
     96   },
     97   {
     98    "cell_type": "code",
     99    "execution_count": 4,
    100    "metadata": {
    101     "collapsed": false
    102    },
    103    "outputs": [
    104     {
    105      "data": {
    106       "text/html": [
    107        "464669"
    108       ],
    109       "text/plain": [
    110        "464669"
    111       ]
    112      },
    113      "execution_count": 4,
    114      "metadata": {},
    115      "output_type": "execute_result"
    116     }
    117    ],
    118    "source": [
    119     "# And how many rows are there?\n",
    120     "# N.B. we're using a Blaze function to do this, not len()\n",
    121     "dataset.count()"
    122    ]
    123   },
    124   {
    125    "cell_type": "code",
    126    "execution_count": 6,
    127    "metadata": {
    128     "collapsed": false
    129    },
    130    "outputs": [
    131     {
    132      "data": {
    133       "text/html": [
    134        "<table border=\"1\" class=\"dataframe\">\n",
    135        "  <thead>\n",
    136        "    <tr style=\"text-align: right;\">\n",
    137        "      <th></th>\n",
    138        "      <th>file_prod_date</th>\n",
    139        "      <th>m_ticker</th>\n",
    140        "      <th>symbol</th>\n",
    141        "      <th>comp_name</th>\n",
    142        "      <th>comp_name_2</th>\n",
    143        "      <th>exchange</th>\n",
    144        "      <th>currency_code</th>\n",
    145        "      <th>rating_cnt_strong_buys</th>\n",
    146        "      <th>rating_cnt_mod_buys</th>\n",
    147        "      <th>rating_cnt_holds</th>\n",
    148        "      <th>rating_cnt_mod_sells</th>\n",
    149        "      <th>rating_cnt_strong_sells</th>\n",
    150        "      <th>rating_mean_recom</th>\n",
    151        "      <th>rating_cnt_with</th>\n",
    152        "      <th>rating_cnt_without</th>\n",
    153        "      <th>sid</th>\n",
    154        "      <th>asof_date</th>\n",
    155        "      <th>timestamp</th>\n",
    156        "    </tr>\n",
    157        "  </thead>\n",
    158        "  <tbody>\n",
    159        "    <tr>\n",
    160        "      <th>0</th>\n",
    161        "      <td>2016-10-04</td>\n",
    162        "      <td>AA</td>\n",
    163        "      <td>AA</td>\n",
    164        "      <td>ALCOA INC</td>\n",
    165        "      <td>Alcoa Inc.</td>\n",
    166        "      <td>NYSE</td>\n",
    167        "      <td>USD</td>\n",
    168        "      <td>6.0</td>\n",
    169        "      <td>3.0</td>\n",
    170        "      <td>3.0</td>\n",
    171        "      <td>0.0</td>\n",
    172        "      <td>1.0</td>\n",
    173        "      <td>2.2</td>\n",
    174        "      <td>16.0</td>\n",
    175        "      <td>3.0</td>\n",
    176        "      <td>2</td>\n",
    177        "      <td>2002-01-01</td>\n",
    178        "      <td>2002-01-02</td>\n",
    179        "    </tr>\n",
    180        "    <tr>\n",
    181        "      <th>1</th>\n",
    182        "      <td>2016-10-04</td>\n",
    183        "      <td>AAPL</td>\n",
    184        "      <td>AAPL</td>\n",
    185        "      <td>APPLE INC</td>\n",
    186        "      <td>Apple Inc.</td>\n",
    187        "      <td>NSDQ</td>\n",
    188        "      <td>USD</td>\n",
    189        "      <td>1.0</td>\n",
    190        "      <td>4.0</td>\n",
    191        "      <td>12.0</td>\n",
    192        "      <td>0.0</td>\n",
    193        "      <td>0.0</td>\n",
    194        "      <td>2.6</td>\n",
    195        "      <td>19.0</td>\n",
    196        "      <td>2.0</td>\n",
    197        "      <td>24</td>\n",
    198        "      <td>2002-01-01</td>\n",
    199        "      <td>2002-01-02</td>\n",
    200        "    </tr>\n",
    201        "    <tr>\n",
    202        "      <th>2</th>\n",
    203        "      <td>2016-10-04</td>\n",
    204        "      <td>ABT</td>\n",
    205        "      <td>ABT</td>\n",
    206        "      <td>ABBOTT LABS</td>\n",
    207        "      <td>Abbott Laboratories</td>\n",
    208        "      <td>NYSE</td>\n",
    209        "      <td>USD</td>\n",
    210        "      <td>9.0</td>\n",
    211        "      <td>7.0</td>\n",
    212        "      <td>4.0</td>\n",
    213        "      <td>0.0</td>\n",
    214        "      <td>0.0</td>\n",
    215        "      <td>1.8</td>\n",
    216        "      <td>21.0</td>\n",
    217        "      <td>1.0</td>\n",
    218        "      <td>62</td>\n",
    219        "      <td>2002-01-01</td>\n",
    220        "      <td>2002-01-02</td>\n",
    221        "    </tr>\n",
    222        "  </tbody>\n",
    223        "</table>"
    224       ],
    225       "text/plain": [
    226        "  file_prod_date m_ticker symbol    comp_name          comp_name_2 exchange  \\\n",
    227        "0     2016-10-04       AA     AA    ALCOA INC           Alcoa Inc.     NYSE   \n",
    228        "1     2016-10-04     AAPL   AAPL    APPLE INC           Apple Inc.     NSDQ   \n",
    229        "2     2016-10-04      ABT    ABT  ABBOTT LABS  Abbott Laboratories     NYSE   \n",
    230        "\n",
    231        "  currency_code  rating_cnt_strong_buys  rating_cnt_mod_buys  \\\n",
    232        "0           USD                     6.0                  3.0   \n",
    233        "1           USD                     1.0                  4.0   \n",
    234        "2           USD                     9.0                  7.0   \n",
    235        "\n",
    236        "   rating_cnt_holds  rating_cnt_mod_sells  rating_cnt_strong_sells  \\\n",
    237        "0               3.0                   0.0                      1.0   \n",
    238        "1              12.0                   0.0                      0.0   \n",
    239        "2               4.0                   0.0                      0.0   \n",
    240        "\n",
    241        "   rating_mean_recom  rating_cnt_with  rating_cnt_without  sid  asof_date  \\\n",
    242        "0                2.2             16.0                 3.0    2 2002-01-01   \n",
    243        "1                2.6             19.0                 2.0   24 2002-01-01   \n",
    244        "2                1.8             21.0                 1.0   62 2002-01-01   \n",
    245        "\n",
    246        "   timestamp  \n",
    247        "0 2002-01-02  \n",
    248        "1 2002-01-02  \n",
    249        "2 2002-01-02  "
    250       ]
    251      },
    252      "execution_count": 6,
    253      "metadata": {},
    254      "output_type": "execute_result"
    255     }
    256    ],
    257    "source": [
    258     "# Let's see what the data looks like. We'll grab three rows\n",
    259     "dataset.tail(3)"
    260    ]
    261   },
    262   {
    263    "cell_type": "markdown",
    264    "metadata": {},
    265    "source": [
    266     "Let's go over the columns:\n",
    267     "- **file_prod_date**: File production date\n",
    268     "- **m_ticker**: Master ticker or trading symbol\n",
    269     "- **symbol**: Ticker\n",
    270     "- **comp_name**: Company name\n",
    271     "- **comp_name_2**: Company name 2\n",
    272     "- **exchange**: Exchange traded\n",
    273     "- **currency_code**: Currency code\n",
    274     "- **rating_cnt_strong_buys**: Number of analysts with a strong buy rating\n",
    275     "- **rating_cnt_mod_buys**: Number of analysts with a moderate buy rating\n",
    276     "- **rating_cnt_holds**: Number of analysts with a hold rating\n",
    277     "- **rating_cnt_mod_sells**: Number of analysts with a moderate sell rating\n",
    278     "- **rating_cnt_strong_sells**: Number of analysts with a strong sell rating\n",
    279     "- **rating_mean_recom**: Average rating recommendation\n",
    280     "- **rating_cnt_with**: Number of analysts with a rating\n",
    281     "- **rating_cnt_without**: Number of analysts with no rating\n",
    282     "- **asof_date**: Observation date\n",
    283     "- **timestamp**: This is our timestamp on when we registered the data.\n",
    284     "\n",
    285     "\n",
    286     "We've done much of the data processing for you. Fields like `timestamp` and `sid` are standardized across all our Store Datasets, so the datasets are easy to combine. We have standardized the `sid` across all our equity databases.\n",
    287     "\n",
    288     "We can select columns and rows with ease. Below, we'll fetch all rows for Apple (sid 24) and explore the scores a bit with a chart."
    289    ]
    290   },
    291   {
    292    "cell_type": "code",
    293    "execution_count": 9,
    294    "metadata": {
    295     "collapsed": false
    296    },
    297    "outputs": [
    298     {
    299      "data": {
    300       "text/html": [
    301        "<div>\n",
    302        "<table border=\"1\" class=\"dataframe\">\n",
    303        "  <thead>\n",
    304        "    <tr style=\"text-align: right;\">\n",
    305        "      <th></th>\n",
    306        "      <th>symbol</th>\n",
    307        "      <th>name</th>\n",
    308        "      <th>sid</th>\n",
    309        "      <th>predicted_five_day_log_return</th>\n",
    310        "      <th>timestamp</th>\n",
    311        "    </tr>\n",
    312        "  </thead>\n",
    313        "  <tbody>\n",
    314        "    <tr>\n",
    315        "      <th>2016-10-03</th>\n",
    316        "      <td>AAPL</td>\n",
    317        "      <td>APPLE INC</td>\n",
    318        "      <td>24</td>\n",
    319        "      <td>0.003</td>\n",
    320        "      <td>2016-10-04 00:00:00.000000</td>\n",
    321        "    </tr>\n",
    322        "    <tr>\n",
    323        "      <th>2016-10-04</th>\n",
    324        "      <td>AAPL</td>\n",
    325        "      <td>APPLE INC</td>\n",
    326        "      <td>24</td>\n",
    327        "      <td>0.011</td>\n",
    328        "      <td>2016-10-06 04:01:28.909580</td>\n",
    329        "    </tr>\n",
    330        "    <tr>\n",
    331        "      <th>2016-10-05</th>\n",
    332        "      <td>AAPL</td>\n",
    333        "      <td>APPLE INC</td>\n",
    334        "      <td>24</td>\n",
    335        "      <td>0.021</td>\n",
    336        "      <td>2016-10-06 04:01:28.909580</td>\n",
    337        "    </tr>\n",
    338        "  </tbody>\n",
    339        "</table>\n",
    340        "</div>"
    341       ],
    342       "text/plain": [
    343        "           symbol       name  sid  predicted_five_day_log_return  \\\n",
    344        "2016-10-03   AAPL  APPLE INC   24                          0.003   \n",
    345        "2016-10-04   AAPL  APPLE INC   24                          0.011   \n",
    346        "2016-10-05   AAPL  APPLE INC   24                          0.021   \n",
    347        "\n",
    348        "                            timestamp  \n",
    349        "2016-10-03 2016-10-04 00:00:00.000000  \n",
    350        "2016-10-04 2016-10-06 04:01:28.909580  \n",
    351        "2016-10-05 2016-10-06 04:01:28.909580  "
    352       ]
    353      },
    354      "execution_count": 9,
    355      "metadata": {},
    356      "output_type": "execute_result"
    357     }
    358    ],
    359    "source": [
    360     "aapl_data = dataset_100[dataset_100.symbol == 'AAPL']\n",
    361     "aapl = odo(aapl_data, pd.DataFrame)\n",
    362     "# suppose we want the rows to be indexed by timestamp.\n",
    363     "aapl.index = list(aapl['asof_date'])\n",
    364     "aapl.drop('asof_date',1,inplace=True)\n",
    365     "aapl[-3:]"
    366    ]
    367   },
    368   {
    369    "cell_type": "markdown",
    370    "metadata": {},
    371    "source": [
    372     "<a id='pipeline'></a>\n",
    373     "\n",
    374     "#Pipeline Overview\n",
    375     "\n",
    376     "### Accessing the data in your algorithms & research\n",
    377     "The only method for accessing partner data within algorithms running on Quantopian is via the pipeline API. Different data sets work differently but in the case of this data, you can add this data to your pipeline as follows:"
    378    ]
    379   },
    380   {
    381    "cell_type": "code",
    382    "execution_count": 12,
    383    "metadata": {
    384     "collapsed": true
    385    },
    386    "outputs": [],
    387    "source": [
    388     "# Import necessary Pipeline modules\n",
    389     "from quantopian.pipeline import Pipeline\n",
    390     "from quantopian.research import run_pipeline\n",
    391     "from quantopian.pipeline.factors import AverageDollarVolume"
    392    ]
    393   },
    394   {
    395    "cell_type": "code",
    396    "execution_count": 9,
    397    "metadata": {
    398     "collapsed": false
    399    },
    400    "outputs": [],
    401    "source": [
    402     "# For use in your algorithms\n",
    403     "# Using the full/sample paid dataset in your pipeline algo\n",
    404     "from quantopian.pipeline.data.zacks import broker_ratings"
    405    ]
    406   },
    407   {
    408    "cell_type": "markdown",
    409    "metadata": {},
    410    "source": [
    411     "Now that we've imported the data, let's take a look at which fields are available for each dataset.\n",
    412     "\n",
    413     "You'll find the dataset, the available fields, and the datatypes for each of those fields."
    414    ]
    415   },
    416   {
    417    "cell_type": "code",
    418    "execution_count": 10,
    419    "metadata": {
    420     "collapsed": false
    421    },
    422    "outputs": [
    423     {
    424      "name": "stdout",
    425      "output_type": "stream",
    426      "text": [
    427       "Here are the list of available fields per dataset:\n",
    428       "---------------------------------------------------\n",
    429       "\n",
    430       "Dataset: broker_ratings\n",
    431       "\n",
    432       "Fields:\n",
    433       "comp_name - object\n",
    434       "exchange - object\n",
    435       "currency_code - object\n",
    436       "symbol - object\n",
    437       "m_ticker - object\n",
    438       "rating_mean_recom - float64\n",
    439       "rating_cnt_without - float64\n",
    440       "rating_cnt_strong_buys - float64\n",
    441       "asof_date - datetime64[ns]\n",
    442       "rating_cnt_mod_buys - float64\n",
    443       "rating_cnt_holds - float64\n",
    444       "file_prod_date - datetime64[ns]\n",
    445       "rating_cnt_mod_sells - float64\n",
    446       "comp_name_2 - object\n",
    447       "rating_cnt_strong_sells - float64\n",
    448       "rating_cnt_with - float64\n",
    449       "\n",
    450       "\n",
    451       "---------------------------------------------------\n",
    452       "\n"
    453      ]
    454     }
    455    ],
    456    "source": [
    457     "print \"Here are the list of available fields per dataset:\"\n",
    458     "print \"---------------------------------------------------\\n\"\n",
    459     "\n",
    460     "def _print_fields(dataset):\n",
    461     "    print \"Dataset: %s\\n\" % dataset.__name__\n",
    462     "    print \"Fields:\"\n",
    463     "    for field in list(dataset.columns):\n",
    464     "        print \"%s - %s\" % (field.name, field.dtype)\n",
    465     "    print \"\\n\"\n",
    466     "\n",
    467     "for data in (broker_ratings,):\n",
    468     "    _print_fields(data)\n",
    469     "\n",
    470     "\n",
    471     "print \"---------------------------------------------------\\n\""
    472    ]
    473   },
    474   {
    475    "cell_type": "markdown",
    476    "metadata": {},
    477    "source": [
    478     "Now that we know what fields we have access to, let's see what this data looks like when we run it through Pipeline.\n",
    479     "\n",
    480     "\n",
    481     "This is constructed the same way as you would in the backtester. For more information on using Pipeline in Research view this thread:\n",
    482     "https://www.quantopian.com/posts/pipeline-in-research-build-test-and-visualize-your-factors-and-filters"
    483    ]
    484   },
    485   {
    486    "cell_type": "code",
    487    "execution_count": 13,
    488    "metadata": {
    489     "collapsed": false
    490    },
    491    "outputs": [],
    492    "source": [
    493     "# Let's see what this data looks like when we run it through Pipeline\n",
    494     "# This is constructed the same way as you would in the backtester. For more information\n",
    495     "# on using Pipeline in Research view this thread:\n",
    496     "# https://www.quantopian.com/posts/pipeline-in-research-build-test-and-visualize-your-factors-and-filters\n",
    497     "\n",
    498     "columns = {'Strong Sells': broker_ratings.rating_cnt_strong_sells.latest,\n",
    499     "           'Strong Buys': broker_ratings.rating_cnt_strong_buys.latest}\n",
    500     "pipe = Pipeline(columns=columns, screen=broker_ratings.rating_cnt_mod_sells.latest.notnan())"
    501    ]
    502   },
    503   {
    504    "cell_type": "code",
    505    "execution_count": 14,
    506    "metadata": {
    507     "collapsed": false
    508    },
    509    "outputs": [
    510     {
    511      "data": {
    512       "image/png": "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\n",
    513       "text/plain": [
    514        "<IPython.core.display.Image object>"
    515       ]
    516      },
    517      "execution_count": 14,
    518      "metadata": {},
    519      "output_type": "execute_result"
    520     }
    521    ],
    522    "source": [
    523     "# The show_graph() method of pipeline objects produces a graph to show how it is being calculated.\n",
    524     "pipe.show_graph(format='png')"
    525    ]
    526   },
    527   {
    528    "cell_type": "code",
    529    "execution_count": 15,
    530    "metadata": {
    531     "collapsed": false,
    532     "scrolled": false
    533    },
    534    "outputs": [
    535     {
    536      "data": {
    537       "text/html": [
    538        "<div>\n",
    539        "<table border=\"1\" class=\"dataframe\">\n",
    540        "  <thead>\n",
    541        "    <tr style=\"text-align: right;\">\n",
    542        "      <th></th>\n",
    543        "      <th></th>\n",
    544        "      <th>Strong Buys</th>\n",
    545        "      <th>Strong Sells</th>\n",
    546        "    </tr>\n",
    547        "  </thead>\n",
    548        "  <tbody>\n",
    549        "    <tr>\n",
    550        "      <th rowspan=\"30\" valign=\"top\">2013-11-01 00:00:00+00:00</th>\n",
    551        "      <th>Equity(2 [AA])</th>\n",
    552        "      <td>2.0</td>\n",
    553        "      <td>4.0</td>\n",
    554        "    </tr>\n",
    555        "    <tr>\n",
    556        "      <th>Equity(24 [AAPL])</th>\n",
    557        "      <td>27.0</td>\n",
    558        "      <td>0.0</td>\n",
    559        "    </tr>\n",
    560        "    <tr>\n",
    561        "      <th>Equity(31 [ABAX])</th>\n",
    562        "      <td>1.0</td>\n",
    563        "      <td>0.0</td>\n",
    564        "    </tr>\n",
    565        "    <tr>\n",
    566        "      <th>Equity(39 [DDC])</th>\n",
    567        "      <td>2.0</td>\n",
    568        "      <td>0.0</td>\n",
    569        "    </tr>\n",
    570        "    <tr>\n",
    571        "      <th>Equity(52 [ABM])</th>\n",
    572        "      <td>1.0</td>\n",
    573        "      <td>0.0</td>\n",
    574        "    </tr>\n",
    575        "    <tr>\n",
    576        "      <th>Equity(53 [ABMD])</th>\n",
    577        "      <td>4.0</td>\n",
    578        "      <td>1.0</td>\n",
    579        "    </tr>\n",
    580        "    <tr>\n",
    581        "      <th>Equity(62 [ABT])</th>\n",
    582        "      <td>9.0</td>\n",
    583        "      <td>0.0</td>\n",
    584        "    </tr>\n",
    585        "    <tr>\n",
    586        "      <th>Equity(64 [ABX])</th>\n",
    587        "      <td>2.0</td>\n",
    588        "      <td>0.0</td>\n",
    589        "    </tr>\n",
    590        "    <tr>\n",
    591        "      <th>Equity(66 [AB])</th>\n",
    592        "      <td>1.0</td>\n",
    593        "      <td>0.0</td>\n",
    594        "    </tr>\n",
    595        "    <tr>\n",
    596        "      <th>Equity(67 [ADSK])</th>\n",
    597        "      <td>5.0</td>\n",
    598        "      <td>0.0</td>\n",
    599        "    </tr>\n",
    600        "    <tr>\n",
    601        "      <th>Equity(69 [ACAT])</th>\n",
    602        "      <td>2.0</td>\n",
    603        "      <td>0.0</td>\n",
    604        "    </tr>\n",
    605        "    <tr>\n",
    606        "      <th>Equity(70 [VBF])</th>\n",
    607        "      <td>0.0</td>\n",
    608        "      <td>0.0</td>\n",
    609        "    </tr>\n",
    610        "    <tr>\n",
    611        "      <th>Equity(76 [TAP])</th>\n",
    612        "      <td>4.0</td>\n",
    613        "      <td>0.0</td>\n",
    614        "    </tr>\n",
    615        "    <tr>\n",
    616        "      <th>Equity(84 [ACET])</th>\n",
    617        "      <td>0.0</td>\n",
    618        "      <td>0.0</td>\n",
    619        "    </tr>\n",
    620        "    <tr>\n",
    621        "      <th>Equity(86 [ACG])</th>\n",
    622        "      <td>0.0</td>\n",
    623        "      <td>0.0</td>\n",
    624        "    </tr>\n",
    625        "    <tr>\n",
    626        "      <th>Equity(99 [ACO])</th>\n",
    627        "      <td>0.0</td>\n",
    628        "      <td>0.0</td>\n",
    629        "    </tr>\n",
    630        "    <tr>\n",
    631        "      <th>Equity(100 [IEP])</th>\n",
    632        "      <td>1.0</td>\n",
    633        "      <td>0.0</td>\n",
    634        "    </tr>\n",
    635        "    <tr>\n",
    636        "      <th>Equity(106 [ACU])</th>\n",
    637        "      <td>0.0</td>\n",
    638        "      <td>0.0</td>\n",
    639        "    </tr>\n",
    640        "    <tr>\n",
    641        "      <th>Equity(110 [ACXM])</th>\n",
    642        "      <td>2.0</td>\n",
    643        "      <td>1.0</td>\n",
    644        "    </tr>\n",
    645        "    <tr>\n",
    646        "      <th>Equity(112 [ACY])</th>\n",
    647        "      <td>0.0</td>\n",
    648        "      <td>0.0</td>\n",
    649        "    </tr>\n",
    650        "    <tr>\n",
    651        "      <th>Equity(114 [ADBE])</th>\n",
    652        "      <td>9.0</td>\n",
    653        "      <td>0.0</td>\n",
    654        "    </tr>\n",
    655        "    <tr>\n",
    656        "      <th>Equity(117 [AEY])</th>\n",
    657        "      <td>0.0</td>\n",
    658        "      <td>0.0</td>\n",
    659        "    </tr>\n",
    660        "    <tr>\n",
    661        "      <th>Equity(122 [ADI])</th>\n",
    662        "      <td>11.0</td>\n",
    663        "      <td>0.0</td>\n",
    664        "    </tr>\n",
    665        "    <tr>\n",
    666        "      <th>Equity(128 [ADM])</th>\n",
    667        "      <td>3.0</td>\n",
    668        "      <td>0.0</td>\n",
    669        "    </tr>\n",
    670        "    <tr>\n",
    671        "      <th>Equity(149 [ADX])</th>\n",
    672        "      <td>0.0</td>\n",
    673        "      <td>0.0</td>\n",
    674        "    </tr>\n",
    675        "    <tr>\n",
    676        "      <th>Equity(153 [AE])</th>\n",
    677        "      <td>0.0</td>\n",
    678        "      <td>0.0</td>\n",
    679        "    </tr>\n",
    680        "    <tr>\n",
    681        "      <th>Equity(154 [AEM])</th>\n",
    682        "      <td>4.0</td>\n",
    683        "      <td>0.0</td>\n",
    684        "    </tr>\n",
    685        "    <tr>\n",
    686        "      <th>Equity(157 [AEG])</th>\n",
    687        "      <td>0.0</td>\n",
    688        "      <td>0.0</td>\n",
    689        "    </tr>\n",
    690        "    <tr>\n",
    691        "      <th>Equity(161 [AEP])</th>\n",
    692        "      <td>7.0</td>\n",
    693        "      <td>0.0</td>\n",
    694        "    </tr>\n",
    695        "    <tr>\n",
    696        "      <th>Equity(162 [AEPI])</th>\n",
    697        "      <td>0.0</td>\n",
    698        "      <td>0.0</td>\n",
    699        "    </tr>\n",
    700        "    <tr>\n",
    701        "      <th>...</th>\n",
    702        "      <th>...</th>\n",
    703        "      <td>...</td>\n",
    704        "      <td>...</td>\n",
    705        "    </tr>\n",
    706        "    <tr>\n",
    707        "      <th rowspan=\"30\" valign=\"top\">2013-11-25 00:00:00+00:00</th>\n",
    708        "      <th>Equity(45505 [MONT])</th>\n",
    709        "      <td>3.0</td>\n",
    710        "      <td>0.0</td>\n",
    711        "    </tr>\n",
    712        "    <tr>\n",
    713        "      <th>Equity(45506 [PINC])</th>\n",
    714        "      <td>4.0</td>\n",
    715        "      <td>0.0</td>\n",
    716        "    </tr>\n",
    717        "    <tr>\n",
    718        "      <th>Equity(45520 [VMEM])</th>\n",
    719        "      <td>1.0</td>\n",
    720        "      <td>0.0</td>\n",
    721        "    </tr>\n",
    722        "    <tr>\n",
    723        "      <th>Equity(45521 [RNG])</th>\n",
    724        "      <td>3.0</td>\n",
    725        "      <td>0.0</td>\n",
    726        "    </tr>\n",
    727        "    <tr>\n",
    728        "      <th>Equity(45522 [ENZY])</th>\n",
    729        "      <td>3.0</td>\n",
    730        "      <td>0.0</td>\n",
    731        "    </tr>\n",
    732        "    <tr>\n",
    733        "      <th>Equity(45526 [PEGI])</th>\n",
    734        "      <td>2.0</td>\n",
    735        "      <td>0.0</td>\n",
    736        "    </tr>\n",
    737        "    <tr>\n",
    738        "      <th>Equity(45538 [CNHI])</th>\n",
    739        "      <td>0.0</td>\n",
    740        "      <td>0.0</td>\n",
    741        "    </tr>\n",
    742        "    <tr>\n",
    743        "      <th>Equity(45557 [RMAX])</th>\n",
    744        "      <td>2.0</td>\n",
    745        "      <td>0.0</td>\n",
    746        "    </tr>\n",
    747        "    <tr>\n",
    748        "      <th>Equity(45558 [BURL])</th>\n",
    749        "      <td>5.0</td>\n",
    750        "      <td>0.0</td>\n",
    751        "    </tr>\n",
    752        "    <tr>\n",
    753        "      <th>Equity(45559 [ESRT])</th>\n",
    754        "      <td>1.0</td>\n",
    755        "      <td>0.0</td>\n",
    756        "    </tr>\n",
    757        "    <tr>\n",
    758        "      <th>Equity(45577 [OCIP])</th>\n",
    759        "      <td>2.0</td>\n",
    760        "      <td>0.0</td>\n",
    761        "    </tr>\n",
    762        "    <tr>\n",
    763        "      <th>Equity(45578 [CHMI])</th>\n",
    764        "      <td>3.0</td>\n",
    765        "      <td>0.0</td>\n",
    766        "    </tr>\n",
    767        "    <tr>\n",
    768        "      <th>Equity(45579 [PBPB])</th>\n",
    769        "      <td>1.0</td>\n",
    770        "      <td>0.0</td>\n",
    771        "    </tr>\n",
    772        "    <tr>\n",
    773        "      <th>Equity(45617 [QTS])</th>\n",
    774        "      <td>3.0</td>\n",
    775        "      <td>0.0</td>\n",
    776        "    </tr>\n",
    777        "    <tr>\n",
    778        "      <th>Equity(45618 [AR])</th>\n",
    779        "      <td>8.0</td>\n",
    780        "      <td>0.0</td>\n",
    781        "    </tr>\n",
    782        "    <tr>\n",
    783        "      <th>Equity(45619 [LDRH])</th>\n",
    784        "      <td>4.0</td>\n",
    785        "      <td>0.0</td>\n",
    786        "    </tr>\n",
    787        "    <tr>\n",
    788        "      <th>Equity(45640 [WNRL])</th>\n",
    789        "      <td>1.0</td>\n",
    790        "      <td>0.0</td>\n",
    791        "    </tr>\n",
    792        "    <tr>\n",
    793        "      <th>Equity(45641 [CXP])</th>\n",
    794        "      <td>1.0</td>\n",
    795        "      <td>0.0</td>\n",
    796        "    </tr>\n",
    797        "    <tr>\n",
    798        "      <th>Equity(45642 [SGM])</th>\n",
    799        "      <td>2.0</td>\n",
    800        "      <td>0.0</td>\n",
    801        "    </tr>\n",
    802        "    <tr>\n",
    803        "      <th>Equity(45643 [MGNX])</th>\n",
    804        "      <td>3.0</td>\n",
    805        "      <td>0.0</td>\n",
    806        "    </tr>\n",
    807        "    <tr>\n",
    808        "      <th>Equity(45656 [GLPI])</th>\n",
    809        "      <td>1.0</td>\n",
    810        "      <td>0.0</td>\n",
    811        "    </tr>\n",
    812        "    <tr>\n",
    813        "      <th>Equity(45667 [VEEV])</th>\n",
    814        "      <td>3.0</td>\n",
    815        "      <td>0.0</td>\n",
    816        "    </tr>\n",
    817        "    <tr>\n",
    818        "      <th>Equity(45668 [PAGP])</th>\n",
    819        "      <td>1.0</td>\n",
    820        "      <td>0.0</td>\n",
    821        "    </tr>\n",
    822        "    <tr>\n",
    823        "      <th>Equity(45689 [VJET])</th>\n",
    824        "      <td>1.0</td>\n",
    825        "      <td>0.0</td>\n",
    826        "    </tr>\n",
    827        "    <tr>\n",
    828        "      <th>Equity(45733 [AERI])</th>\n",
    829        "      <td>2.0</td>\n",
    830        "      <td>0.0</td>\n",
    831        "    </tr>\n",
    832        "    <tr>\n",
    833        "      <th>Equity(45734 [COMM])</th>\n",
    834        "      <td>1.0</td>\n",
    835        "      <td>0.0</td>\n",
    836        "    </tr>\n",
    837        "    <tr>\n",
    838        "      <th>Equity(45735 [EIGI])</th>\n",
    839        "      <td>2.0</td>\n",
    840        "      <td>0.0</td>\n",
    841        "    </tr>\n",
    842        "    <tr>\n",
    843        "      <th>Equity(45755 [BRX])</th>\n",
    844        "      <td>0.0</td>\n",
    845        "      <td>0.0</td>\n",
    846        "    </tr>\n",
    847        "    <tr>\n",
    848        "      <th>Equity(45780 [TCS])</th>\n",
    849        "      <td>7.0</td>\n",
    850        "      <td>0.0</td>\n",
    851        "    </tr>\n",
    852        "    <tr>\n",
    853        "      <th>Equity(45815 [TWTR])</th>\n",
    854        "      <td>2.0</td>\n",
    855        "      <td>1.0</td>\n",
    856        "    </tr>\n",
    857        "  </tbody>\n",
    858        "</table>\n",
    859        "<p>72163 rows × 2 columns</p>\n",
    860        "</div>"
    861       ],
    862       "text/plain": [
    863        "                                                Strong Buys  Strong Sells\n",
    864        "2013-11-01 00:00:00+00:00 Equity(2 [AA])                2.0           4.0\n",
    865        "                          Equity(24 [AAPL])            27.0           0.0\n",
    866        "                          Equity(31 [ABAX])             1.0           0.0\n",
    867        "                          Equity(39 [DDC])              2.0           0.0\n",
    868        "                          Equity(52 [ABM])              1.0           0.0\n",
    869        "                          Equity(53 [ABMD])             4.0           1.0\n",
    870        "                          Equity(62 [ABT])              9.0           0.0\n",
    871        "                          Equity(64 [ABX])              2.0           0.0\n",
    872        "                          Equity(66 [AB])               1.0           0.0\n",
    873        "                          Equity(67 [ADSK])             5.0           0.0\n",
    874        "                          Equity(69 [ACAT])             2.0           0.0\n",
    875        "                          Equity(70 [VBF])              0.0           0.0\n",
    876        "                          Equity(76 [TAP])              4.0           0.0\n",
    877        "                          Equity(84 [ACET])             0.0           0.0\n",
    878        "                          Equity(86 [ACG])              0.0           0.0\n",
    879        "                          Equity(99 [ACO])              0.0           0.0\n",
    880        "                          Equity(100 [IEP])             1.0           0.0\n",
    881        "                          Equity(106 [ACU])             0.0           0.0\n",
    882        "                          Equity(110 [ACXM])            2.0           1.0\n",
    883        "                          Equity(112 [ACY])             0.0           0.0\n",
    884        "                          Equity(114 [ADBE])            9.0           0.0\n",
    885        "                          Equity(117 [AEY])             0.0           0.0\n",
    886        "                          Equity(122 [ADI])            11.0           0.0\n",
    887        "                          Equity(128 [ADM])             3.0           0.0\n",
    888        "                          Equity(149 [ADX])             0.0           0.0\n",
    889        "                          Equity(153 [AE])              0.0           0.0\n",
    890        "                          Equity(154 [AEM])             4.0           0.0\n",
    891        "                          Equity(157 [AEG])             0.0           0.0\n",
    892        "                          Equity(161 [AEP])             7.0           0.0\n",
    893        "                          Equity(162 [AEPI])            0.0           0.0\n",
    894        "...                                                     ...           ...\n",
    895        "2013-11-25 00:00:00+00:00 Equity(45505 [MONT])          3.0           0.0\n",
    896        "                          Equity(45506 [PINC])          4.0           0.0\n",
    897        "                          Equity(45520 [VMEM])          1.0           0.0\n",
    898        "                          Equity(45521 [RNG])           3.0           0.0\n",
    899        "                          Equity(45522 [ENZY])          3.0           0.0\n",
    900        "                          Equity(45526 [PEGI])          2.0           0.0\n",
    901        "                          Equity(45538 [CNHI])          0.0           0.0\n",
    902        "                          Equity(45557 [RMAX])          2.0           0.0\n",
    903        "                          Equity(45558 [BURL])          5.0           0.0\n",
    904        "                          Equity(45559 [ESRT])          1.0           0.0\n",
    905        "                          Equity(45577 [OCIP])          2.0           0.0\n",
    906        "                          Equity(45578 [CHMI])          3.0           0.0\n",
    907        "                          Equity(45579 [PBPB])          1.0           0.0\n",
    908        "                          Equity(45617 [QTS])           3.0           0.0\n",
    909        "                          Equity(45618 [AR])            8.0           0.0\n",
    910        "                          Equity(45619 [LDRH])          4.0           0.0\n",
    911        "                          Equity(45640 [WNRL])          1.0           0.0\n",
    912        "                          Equity(45641 [CXP])           1.0           0.0\n",
    913        "                          Equity(45642 [SGM])           2.0           0.0\n",
    914        "                          Equity(45643 [MGNX])          3.0           0.0\n",
    915        "                          Equity(45656 [GLPI])          1.0           0.0\n",
    916        "                          Equity(45667 [VEEV])          3.0           0.0\n",
    917        "                          Equity(45668 [PAGP])          1.0           0.0\n",
    918        "                          Equity(45689 [VJET])          1.0           0.0\n",
    919        "                          Equity(45733 [AERI])          2.0           0.0\n",
    920        "                          Equity(45734 [COMM])          1.0           0.0\n",
    921        "                          Equity(45735 [EIGI])          2.0           0.0\n",
    922        "                          Equity(45755 [BRX])           0.0           0.0\n",
    923        "                          Equity(45780 [TCS])           7.0           0.0\n",
    924        "                          Equity(45815 [TWTR])          2.0           1.0\n",
    925        "\n",
    926        "[72163 rows x 2 columns]"
    927       ]
    928      },
    929      "execution_count": 15,
    930      "metadata": {},
    931      "output_type": "execute_result"
    932     }
    933    ],
    934    "source": [
    935     "# run_pipeline will show the output of your pipeline\n",
    936     "pipe_output = run_pipeline(pipe, start_date='2013-11-01', end_date='2013-11-25')\n",
    937     "pipe_output"
    938    ]
    939   },
    940   {
    941    "cell_type": "markdown",
    942    "metadata": {},
    943    "source": [
    944     "Now you can take that and begin to use it as a building block for your algorithms, for more examples on how to do that you can visit our <a href='https://www.quantopian.com/posts/pipeline-factor-library-for-data'>data pipeline factor library</a>"
    945    ]
    946   }
    947  ],
    948  "metadata": {
    949   "kernelspec": {
    950    "display_name": "Python 2",
    951    "language": "python",
    952    "name": "python2"
    953   },
    954   "language_info": {
    955    "codemirror_mode": {
    956     "name": "ipython",
    957     "version": 2
    958    },
    959    "file_extension": ".py",
    960    "mimetype": "text/x-python",
    961    "name": "python",
    962    "nbconvert_exporter": "python",
    963    "pygments_lexer": "ipython2",
    964    "version": "2.7.12"
    965   }
    966  },
    967  "nbformat": 4,
    968  "nbformat_minor": 0
    969 }