ml-finance-python

python scripts for finance machine learning

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

notebook.ipynb

(86014B)


      1 {
      2  "cells": [
      3   {
      4    "cell_type": "markdown",
      5    "metadata": {
      6     "collapsed": true
      7    },
      8    "source": [
      9     "# Zacks: Earnings Surprise\n",
     10     "\n",
     11     "In this notebook, we'll take a look at Zacks's *Earnings Surprise* dataset, available on [Quantopian](https://www.quantopian.com/store). This dataset spans 2006 through the current day. It contains earnings surprises, analyst estimats, and actual EPS numbers for X securities.\n",
     12     "\n",
     13     "## Notebook Contents\n",
     14     "\n",
     15     "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",
     16     "\n",
     17     "- <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",
     18     "- <strong>Pipeline overview</strong> (Not Available Yet): 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",
     19     "\n",
     20     "### Free samples and limits\n",
     21     "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",
     22     "\n",
     23     "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",
     24     "\n",
     25     "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",
     26     "\n",
     27     "With preamble in place, let's get started:\n",
     28     "\n",
     29     "<a id='interactive'></a>\n",
     30     "#Interactive Overview\n",
     31     "### Accessing the data with Blaze and Interactive on Research\n",
     32     "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",
     33     "\n",
     34     "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",
     35     "\n",
     36     "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",
     37     "\n",
     38     "Helpful links:\n",
     39     "* [Query building for Blaze](http://blaze.readthedocs.io/en/latest/queries.html)\n",
     40     "* [Pandas-to-Blaze dictionary](http://blaze.readthedocs.io/en/latest/rosetta-pandas.html)\n",
     41     "* [SQL-to-Blaze dictionary](http://blaze.readthedocs.io/en/latest/rosetta-sql.html).\n",
     42     "\n",
     43     "Once you've limited the size of your Blaze object, you can convert it to a Pandas DataFrames using:\n",
     44     "> `from odo import odo`  \n",
     45     "> `odo(expr, pandas.DataFrame)`\n",
     46     "\n",
     47     "\n",
     48     "###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>"
     49    ]
     50   },
     51   {
     52    "cell_type": "code",
     53    "execution_count": 1,
     54    "metadata": {
     55     "collapsed": false
     56    },
     57    "outputs": [],
     58    "source": [
     59     "# import the dataset\n",
     60     "from quantopian.interactive.data.zacks import earnings_surprises as dataset\n",
     61     "\n",
     62     "# or if you want to import the paid dataset, use:\n",
     63     "# from quantopian.interactive.data.zacks import earnings_surprises_free\n",
     64     "\n",
     65     "# import data operations\n",
     66     "from odo import odo\n",
     67     "# import other libraries we will use\n",
     68     "import pandas as pd\n",
     69     "import matplotlib.pyplot as plt"
     70    ]
     71   },
     72   {
     73    "cell_type": "code",
     74    "execution_count": 2,
     75    "metadata": {
     76     "collapsed": false
     77    },
     78    "outputs": [
     79     {
     80      "data": {
     81       "text/html": [
     82        "Timestamp('2006-05-27 00:00:00')"
     83       ],
     84       "text/plain": [
     85        "Timestamp('2006-05-27 00:00:00')"
     86       ]
     87      },
     88      "execution_count": 2,
     89      "metadata": {},
     90      "output_type": "execute_result"
     91     }
     92    ],
     93    "source": [
     94     "# Let's use blaze to understand the data a bit using Blaze dshape()\n",
     95     "dataset.timestamp.min()"
     96    ]
     97   },
     98   {
     99    "cell_type": "code",
    100    "execution_count": 6,
    101    "metadata": {
    102     "collapsed": false
    103    },
    104    "outputs": [
    105     {
    106      "data": {
    107       "text/html": [
    108        "146923"
    109       ],
    110       "text/plain": [
    111        "146923"
    112       ]
    113      },
    114      "execution_count": 6,
    115      "metadata": {},
    116      "output_type": "execute_result"
    117     }
    118    ],
    119    "source": [
    120     "# And how many rows are there?\n",
    121     "# N.B. we're using a Blaze function to do this, not len()\n",
    122     "dataset.count()"
    123    ]
    124   },
    125   {
    126    "cell_type": "code",
    127    "execution_count": 7,
    128    "metadata": {
    129     "collapsed": false
    130    },
    131    "outputs": [
    132     {
    133      "data": {
    134       "text/html": [
    135        "<table border=\"1\" class=\"dataframe\">\n",
    136        "  <thead>\n",
    137        "    <tr style=\"text-align: right;\">\n",
    138        "      <th></th>\n",
    139        "      <th>file_prod_date</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>per_type</th>\n",
    146        "      <th>eps_mean_est</th>\n",
    147        "      <th>eps_act</th>\n",
    148        "      <th>eps_amt_diff_surp</th>\n",
    149        "      <th>eps_pct_diff_surp</th>\n",
    150        "      <th>eps_std_dev_est</th>\n",
    151        "      <th>eps_cnt_est</th>\n",
    152        "      <th>eps_act_zacks_adj</th>\n",
    153        "      <th>per_fisc_year</th>\n",
    154        "      <th>per_fisc_qtr</th>\n",
    155        "      <th>per_end_date</th>\n",
    156        "      <th>per_cal_year</th>\n",
    157        "      <th>per_cal_qtr</th>\n",
    158        "      <th>act_rpt_code</th>\n",
    159        "      <th>act_rpt_desc</th>\n",
    160        "      <th>act_rpt_date_time</th>\n",
    161        "      <th>m_ticker</th>\n",
    162        "      <th>per_code</th>\n",
    163        "      <th>sid</th>\n",
    164        "      <th>asof_date</th>\n",
    165        "      <th>timestamp</th>\n",
    166        "    </tr>\n",
    167        "  </thead>\n",
    168        "  <tbody>\n",
    169        "    <tr>\n",
    170        "      <th>0</th>\n",
    171        "      <td>2016-05-31</td>\n",
    172        "      <td>ADBE</td>\n",
    173        "      <td>ADOBE SYSTEMS</td>\n",
    174        "      <td>Adobe Systems Inc.</td>\n",
    175        "      <td>NSDQ</td>\n",
    176        "      <td>USD</td>\n",
    177        "      <td>Q</td>\n",
    178        "      <td>0.27</td>\n",
    179        "      <td>0.28</td>\n",
    180        "      <td>0.01</td>\n",
    181        "      <td>3.70</td>\n",
    182        "      <td>0</td>\n",
    183        "      <td>5</td>\n",
    184        "      <td>-0.08</td>\n",
    185        "      <td>2006</td>\n",
    186        "      <td>2</td>\n",
    187        "      <td>2006-05-31</td>\n",
    188        "      <td>2006</td>\n",
    189        "      <td>2</td>\n",
    190        "      <td>None</td>\n",
    191        "      <td>None</td>\n",
    192        "      <td>2006-06-16 03:59:59</td>\n",
    193        "      <td>ADBE</td>\n",
    194        "      <td>QR-39</td>\n",
    195        "      <td>114</td>\n",
    196        "      <td>2006-06-16</td>\n",
    197        "      <td>2006-06-17</td>\n",
    198        "    </tr>\n",
    199        "    <tr>\n",
    200        "      <th>1</th>\n",
    201        "      <td>2016-05-31</td>\n",
    202        "      <td>AIR</td>\n",
    203        "      <td>AAR CORP</td>\n",
    204        "      <td>AAR Corp.</td>\n",
    205        "      <td>NYSE</td>\n",
    206        "      <td>USD</td>\n",
    207        "      <td>Q</td>\n",
    208        "      <td>0.29</td>\n",
    209        "      <td>0.31</td>\n",
    210        "      <td>0.02</td>\n",
    211        "      <td>6.90</td>\n",
    212        "      <td>NaN</td>\n",
    213        "      <td>1</td>\n",
    214        "      <td>0.00</td>\n",
    215        "      <td>2006</td>\n",
    216        "      <td>4</td>\n",
    217        "      <td>2006-05-31</td>\n",
    218        "      <td>2006</td>\n",
    219        "      <td>2</td>\n",
    220        "      <td>None</td>\n",
    221        "      <td>None</td>\n",
    222        "      <td>2006-07-13 03:59:59</td>\n",
    223        "      <td>AAR7</td>\n",
    224        "      <td>QR-39</td>\n",
    225        "      <td>253</td>\n",
    226        "      <td>2006-07-13</td>\n",
    227        "      <td>2006-07-14</td>\n",
    228        "    </tr>\n",
    229        "    <tr>\n",
    230        "      <th>2</th>\n",
    231        "      <td>2016-05-31</td>\n",
    232        "      <td>APOG</td>\n",
    233        "      <td>APOGEE ENTRPRS</td>\n",
    234        "      <td>Apogee Enterprises Inc.</td>\n",
    235        "      <td>NSDQ</td>\n",
    236        "      <td>USD</td>\n",
    237        "      <td>Q</td>\n",
    238        "      <td>0.16</td>\n",
    239        "      <td>0.17</td>\n",
    240        "      <td>0.01</td>\n",
    241        "      <td>6.25</td>\n",
    242        "      <td>NaN</td>\n",
    243        "      <td>1</td>\n",
    244        "      <td>0.00</td>\n",
    245        "      <td>2007</td>\n",
    246        "      <td>1</td>\n",
    247        "      <td>2006-05-31</td>\n",
    248        "      <td>2006</td>\n",
    249        "      <td>2</td>\n",
    250        "      <td>None</td>\n",
    251        "      <td>None</td>\n",
    252        "      <td>2006-06-28 03:59:59</td>\n",
    253        "      <td>APOG</td>\n",
    254        "      <td>QR-39</td>\n",
    255        "      <td>474</td>\n",
    256        "      <td>2006-06-28</td>\n",
    257        "      <td>2006-06-29</td>\n",
    258        "    </tr>\n",
    259        "  </tbody>\n",
    260        "</table>"
    261       ],
    262       "text/plain": [
    263        "  file_prod_date symbol       comp_name              comp_name_2 exchange  \\\n",
    264        "0     2016-05-31   ADBE   ADOBE SYSTEMS       Adobe Systems Inc.     NSDQ   \n",
    265        "1     2016-05-31    AIR        AAR CORP                AAR Corp.     NYSE   \n",
    266        "2     2016-05-31   APOG  APOGEE ENTRPRS  Apogee Enterprises Inc.     NSDQ   \n",
    267        "\n",
    268        "  currency_code per_type  eps_mean_est  eps_act  eps_amt_diff_surp    ...      \\\n",
    269        "0           USD        Q          0.27     0.28               0.01    ...       \n",
    270        "1           USD        Q          0.29     0.31               0.02    ...       \n",
    271        "2           USD        Q          0.16     0.17               0.01    ...       \n",
    272        "\n",
    273        "   per_cal_year  per_cal_qtr  act_rpt_code  act_rpt_desc   act_rpt_date_time  \\\n",
    274        "0          2006            2          None          None 2006-06-16 03:59:59   \n",
    275        "1          2006            2          None          None 2006-07-13 03:59:59   \n",
    276        "2          2006            2          None          None 2006-06-28 03:59:59   \n",
    277        "\n",
    278        "   m_ticker per_code  sid  asof_date  timestamp  \n",
    279        "0      ADBE    QR-39  114 2006-06-16 2006-06-17  \n",
    280        "1      AAR7    QR-39  253 2006-07-13 2006-07-14  \n",
    281        "2      APOG    QR-39  474 2006-06-28 2006-06-29  \n",
    282        "\n",
    283        "[3 rows x 27 columns]"
    284       ]
    285      },
    286      "execution_count": 7,
    287      "metadata": {},
    288      "output_type": "execute_result"
    289     }
    290    ],
    291    "source": [
    292     "# Let's see what the data looks like. We'll grab the first three rows.\n",
    293     "dataset[:3]"
    294    ]
    295   },
    296   {
    297    "cell_type": "markdown",
    298    "metadata": {},
    299    "source": [
    300     "Let's go over the columns:\n",
    301     "- **symbol**: the ticker symbol of the company.\n",
    302     "- **comp_name**: the name of the company.\n",
    303     "- **comp_name_2**: the name of the company.\n",
    304     "- **exchange**: what the exchange stock is currently trading \n",
    305     "- **currency_code**: currency code\n",
    306     "- **per_type**: period type (e.g. Q for quarter)\n",
    307     "- **sid**: the equity's unique identifier. Use this instead of ticker or name. \n",
    308     "- **eps_mean_est**: Earnings per share (EPS) mean estimate for the period\n",
    309     "- **eps_act**: Earnings per share (EPS) actual for the period\n",
    310     "- **eps_amt_diff_surp**: Earnings per share (EPS) surprise amount for the period\n",
    311     "- **eps_pct_diff_surp**: Earnings per share (EPS) surprise percent for the period\n",
    312     "- **eps_std_dev_est**: Earnings per share (EPS) standard deviation in estimate for the period\n",
    313     "- **eps_cnt_est**: Number of estimates for the period\n",
    314     "- **eps_act_zacks_adj**: Estimated earnings per share (EPS) (Zacks adjustment)\n",
    315     "- **per_fisc_year**: Period fiscal year\n",
    316     "- **per_fisc_qtr**: Period fiscal quarter\n",
    317     "- **per_end_date**: Period end date\n",
    318     "- **per_cal_year**: Period calendar year\n",
    319     "- **per_cal_qtr**: Period calender quarter\n",
    320     "- **act_rpt_code**: Actual report time of day code (BTO - before the open, DTM - during the market, AMC - after market close)\n",
    321     "- **act_rpt_desc**: Actual report time of day description\n",
    322     "- **act_rpt_date_time**: Actual report timestamp (eastern time)\n",
    323     "- **m_ticker**: Master ticker or trading symbol\n",
    324     "- **asof_date**: The date to which this data applies/Actual report date\n",
    325     "- **timestamp**: This is our timestamp on when we registered the data.\n",
    326     "\n",
    327     "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",
    328     "\n",
    329     "We can select columns and rows with ease. Below, we'll fetch all entries for the sid 24 (AAPL) and plot the earnings surprises for that."
    330    ]
    331   },
    332   {
    333    "cell_type": "code",
    334    "execution_count": 9,
    335    "metadata": {
    336     "collapsed": false
    337    },
    338    "outputs": [
    339     {
    340      "data": {
    341       "text/html": [
    342        "<table border=\"1\" class=\"dataframe\">\n",
    343        "  <thead>\n",
    344        "    <tr style=\"text-align: right;\">\n",
    345        "      <th></th>\n",
    346        "      <th>eps_pct_diff_surp</th>\n",
    347        "      <th>eps_mean_est</th>\n",
    348        "      <th>eps_act</th>\n",
    349        "      <th>eps_std_dev_est</th>\n",
    350        "      <th>asof_date</th>\n",
    351        "    </tr>\n",
    352        "  </thead>\n",
    353        "  <tbody>\n",
    354        "    <tr>\n",
    355        "      <th>0</th>\n",
    356        "      <td>22.73</td>\n",
    357        "      <td>0.0629</td>\n",
    358        "      <td>0.0771</td>\n",
    359        "      <td>0.0029</td>\n",
    360        "      <td>2006-07-20</td>\n",
    361        "    </tr>\n",
    362        "    <tr>\n",
    363        "      <th>1</th>\n",
    364        "      <td>24.00</td>\n",
    365        "      <td>0.0714</td>\n",
    366        "      <td>0.0886</td>\n",
    367        "      <td>0.0029</td>\n",
    368        "      <td>2006-10-19</td>\n",
    369        "    </tr>\n",
    370        "    <tr>\n",
    371        "      <th>2</th>\n",
    372        "      <td>46.15</td>\n",
    373        "      <td>0.1114</td>\n",
    374        "      <td>0.1629</td>\n",
    375        "      <td>0.0043</td>\n",
    376        "      <td>2007-01-18</td>\n",
    377        "    </tr>\n",
    378        "    <tr>\n",
    379        "      <th>3</th>\n",
    380        "      <td>38.10</td>\n",
    381        "      <td>0.0900</td>\n",
    382        "      <td>0.1243</td>\n",
    383        "      <td>0.0071</td>\n",
    384        "      <td>2007-04-26</td>\n",
    385        "    </tr>\n",
    386        "    <tr>\n",
    387        "      <th>4</th>\n",
    388        "      <td>29.58</td>\n",
    389        "      <td>0.1014</td>\n",
    390        "      <td>0.1314</td>\n",
    391        "      <td>0.0043</td>\n",
    392        "      <td>2007-07-26</td>\n",
    393        "    </tr>\n",
    394        "    <tr>\n",
    395        "      <th>5</th>\n",
    396        "      <td>20.24</td>\n",
    397        "      <td>0.1200</td>\n",
    398        "      <td>0.1443</td>\n",
    399        "      <td>0.0100</td>\n",
    400        "      <td>2007-10-23</td>\n",
    401        "    </tr>\n",
    402        "    <tr>\n",
    403        "      <th>6</th>\n",
    404        "      <td>9.32</td>\n",
    405        "      <td>0.2300</td>\n",
    406        "      <td>0.2514</td>\n",
    407        "      <td>0.0143</td>\n",
    408        "      <td>2008-01-23</td>\n",
    409        "    </tr>\n",
    410        "    <tr>\n",
    411        "      <th>7</th>\n",
    412        "      <td>9.43</td>\n",
    413        "      <td>0.1514</td>\n",
    414        "      <td>0.1657</td>\n",
    415        "      <td>0.0086</td>\n",
    416        "      <td>2008-04-24</td>\n",
    417        "    </tr>\n",
    418        "    <tr>\n",
    419        "      <th>8</th>\n",
    420        "      <td>12.26</td>\n",
    421        "      <td>0.1514</td>\n",
    422        "      <td>0.1700</td>\n",
    423        "      <td>0.0057</td>\n",
    424        "      <td>2008-07-22</td>\n",
    425        "    </tr>\n",
    426        "    <tr>\n",
    427        "      <th>9</th>\n",
    428        "      <td>13.51</td>\n",
    429        "      <td>0.1586</td>\n",
    430        "      <td>0.1800</td>\n",
    431        "      <td>0.0071</td>\n",
    432        "      <td>2008-10-22</td>\n",
    433        "    </tr>\n",
    434        "    <tr>\n",
    435        "      <th>10</th>\n",
    436        "      <td>27.14</td>\n",
    437        "      <td>0.2000</td>\n",
    438        "      <td>0.2543</td>\n",
    439        "      <td>0.0114</td>\n",
    440        "      <td>2009-01-22</td>\n",
    441        "    </tr>\n",
    442        "  </tbody>\n",
    443        "</table>"
    444       ],
    445       "text/plain": [
    446        "    eps_pct_diff_surp  eps_mean_est  eps_act  eps_std_dev_est  asof_date\n",
    447        "0               22.73        0.0629   0.0771           0.0029 2006-07-20\n",
    448        "1               24.00        0.0714   0.0886           0.0029 2006-10-19\n",
    449        "2               46.15        0.1114   0.1629           0.0043 2007-01-18\n",
    450        "3               38.10        0.0900   0.1243           0.0071 2007-04-26\n",
    451        "4               29.58        0.1014   0.1314           0.0043 2007-07-26\n",
    452        "5               20.24        0.1200   0.1443           0.0100 2007-10-23\n",
    453        "6                9.32        0.2300   0.2514           0.0143 2008-01-23\n",
    454        "7                9.43        0.1514   0.1657           0.0086 2008-04-24\n",
    455        "8               12.26        0.1514   0.1700           0.0057 2008-07-22\n",
    456        "9               13.51        0.1586   0.1800           0.0071 2008-10-22\n",
    457        "..."
    458       ]
    459      },
    460      "execution_count": 9,
    461      "metadata": {},
    462      "output_type": "execute_result"
    463     }
    464    ],
    465    "source": [
    466     "aapl = dataset[dataset.sid==24][['eps_pct_diff_surp','eps_mean_est', 'eps_act', 'eps_std_dev_est', 'asof_date']].sort('asof_date')\n",
    467     "aapl"
    468    ]
    469   },
    470   {
    471    "cell_type": "markdown",
    472    "metadata": {},
    473    "source": [
    474     "Let's convert `aapl` to a DataFrame."
    475    ]
    476   },
    477   {
    478    "cell_type": "code",
    479    "execution_count": 10,
    480    "metadata": {
    481     "collapsed": false
    482    },
    483    "outputs": [
    484     {
    485      "data": {
    486       "text/html": [
    487        "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
    488        "<table border=\"1\" class=\"dataframe\">\n",
    489        "  <thead>\n",
    490        "    <tr style=\"text-align: right;\">\n",
    491        "      <th></th>\n",
    492        "      <th>eps_pct_diff_surp</th>\n",
    493        "      <th>eps_mean_est</th>\n",
    494        "      <th>eps_act</th>\n",
    495        "      <th>eps_std_dev_est</th>\n",
    496        "    </tr>\n",
    497        "  </thead>\n",
    498        "  <tbody>\n",
    499        "    <tr>\n",
    500        "      <th>2006-07-20</th>\n",
    501        "      <td>22.73</td>\n",
    502        "      <td>0.0629</td>\n",
    503        "      <td>0.0771</td>\n",
    504        "      <td>0.0029</td>\n",
    505        "    </tr>\n",
    506        "    <tr>\n",
    507        "      <th>2006-10-19</th>\n",
    508        "      <td>24.00</td>\n",
    509        "      <td>0.0714</td>\n",
    510        "      <td>0.0886</td>\n",
    511        "      <td>0.0029</td>\n",
    512        "    </tr>\n",
    513        "    <tr>\n",
    514        "      <th>2007-01-18</th>\n",
    515        "      <td>46.15</td>\n",
    516        "      <td>0.1114</td>\n",
    517        "      <td>0.1629</td>\n",
    518        "      <td>0.0043</td>\n",
    519        "    </tr>\n",
    520        "  </tbody>\n",
    521        "</table>\n",
    522        "</div>"
    523       ],
    524       "text/plain": [
    525        "            eps_pct_diff_surp  eps_mean_est  eps_act  eps_std_dev_est\n",
    526        "2006-07-20              22.73        0.0629   0.0771           0.0029\n",
    527        "2006-10-19              24.00        0.0714   0.0886           0.0029\n",
    528        "2007-01-18              46.15        0.1114   0.1629           0.0043"
    529       ]
    530      },
    531      "execution_count": 10,
    532      "metadata": {},
    533      "output_type": "execute_result"
    534     }
    535    ],
    536    "source": [
    537     "aapl_surprise = odo(aapl, pd.DataFrame)\n",
    538     "# suppose we want the rows to be indexed by timestamp.\n",
    539     "aapl_surprise.index = list(aapl_surprise['asof_date'])\n",
    540     "aapl_surprise.drop('asof_date',1,inplace=True)\n",
    541     "# display the first three rows. DataFrames, when printed, display 60 rows at a time.\n",
    542     "aapl_surprise[:3]"
    543    ]
    544   },
    545   {
    546    "cell_type": "markdown",
    547    "metadata": {},
    548    "source": [
    549     "<a id='pipeline'></a>\n",
    550     "\n",
    551     "#Pipeline Overview\n",
    552     "\n",
    553     "### Accessing the data in your algorithms & research\n",
    554     "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:\n",
    555     "\n",
    556     "Import the data set here\n",
    557     "> `from quantopian.pipeline.data.zacks import (`\n",
    558     "> `EarningsSurprises`\n",
    559     "> `)`\n",
    560     "\n",
    561     "Then in intialize() you could do something simple like adding the raw value of one of the fields to your pipeline:\n",
    562     "> `pipe.add(zacks.eps_mean_est.latest, 'EPS mean estimate')`"
    563    ]
    564   },
    565   {
    566    "cell_type": "code",
    567    "execution_count": 1,
    568    "metadata": {
    569     "collapsed": true
    570    },
    571    "outputs": [],
    572    "source": [
    573     "# Import necessary Pipeline modules\n",
    574     "from quantopian.pipeline import Pipeline\n",
    575     "from quantopian.research import run_pipeline\n",
    576     "from quantopian.pipeline.factors import AverageDollarVolume"
    577    ]
    578   },
    579   {
    580    "cell_type": "code",
    581    "execution_count": 2,
    582    "metadata": {
    583     "collapsed": true
    584    },
    585    "outputs": [],
    586    "source": [
    587     "# For use in your algorithms\n",
    588     "# Using the full/sample paid dataset in your pipeline algo\n",
    589     "from quantopian.pipeline.data.zacks import EarningsSurprises"
    590    ]
    591   },
    592   {
    593    "cell_type": "markdown",
    594    "metadata": {},
    595    "source": [
    596     "Now that we've imported the data, let's take a look at which fields are available for each dataset.\n",
    597     "\n",
    598     "You'll find the dataset, the available fields, and the datatypes for each of those fields."
    599    ]
    600   },
    601   {
    602    "cell_type": "code",
    603    "execution_count": 4,
    604    "metadata": {
    605     "collapsed": false
    606    },
    607    "outputs": [
    608     {
    609      "name": "stdout",
    610      "output_type": "stream",
    611      "text": [
    612       "Here are the list of available fields per dataset:\n",
    613       "---------------------------------------------------\n",
    614       "\n",
    615       "Dataset: EarningsSurprises\n",
    616       "\n",
    617       "Fields:\n",
    618       "per_cal_qtr - float64\n",
    619       "eps_cnt_est - float64\n",
    620       "per_cal_year - float64\n",
    621       "per_fisc_qtr - float64\n",
    622       "eps_amt_diff_surp - float64\n",
    623       "eps_act_zacks_adj - float64\n",
    624       "per_fisc_year - float64\n",
    625       "eps_mean_est - float64\n",
    626       "eps_act - float64\n",
    627       "asof_date - datetime64[ns]\n",
    628       "per_type - object\n",
    629       "per_end_date - datetime64[ns]\n",
    630       "act_rpt_desc - object\n",
    631       "eps_std_dev_est - float64\n",
    632       "act_rpt_code - object\n",
    633       "eps_pct_diff_surp - float64\n",
    634       "\n",
    635       "\n",
    636       "---------------------------------------------------\n",
    637       "\n"
    638      ]
    639     }
    640    ],
    641    "source": [
    642     "print \"Here are the list of available fields per dataset:\"\n",
    643     "print \"---------------------------------------------------\\n\"\n",
    644     "\n",
    645     "def _print_fields(dataset):\n",
    646     "    print \"Dataset: %s\\n\" % dataset.__name__\n",
    647     "    print \"Fields:\"\n",
    648     "    for field in list(dataset.columns):\n",
    649     "        print \"%s - %s\" % (field.name, field.dtype)\n",
    650     "    print \"\\n\"\n",
    651     "\n",
    652     "for data in (EarningsSurprises,):\n",
    653     "    _print_fields(data)\n",
    654     "\n",
    655     "\n",
    656     "print \"---------------------------------------------------\\n\""
    657    ]
    658   },
    659   {
    660    "cell_type": "markdown",
    661    "metadata": {},
    662    "source": [
    663     "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",
    664     "\n",
    665     "\n",
    666     "This is constructed the same way as you would in the backtester. For more information on using Pipeline in Research view this thread:\n",
    667     "https://www.quantopian.com/posts/pipeline-in-research-build-test-and-visualize-your-factors-and-filters"
    668    ]
    669   },
    670   {
    671    "cell_type": "code",
    672    "execution_count": 6,
    673    "metadata": {
    674     "collapsed": false
    675    },
    676    "outputs": [],
    677    "source": [
    678     "# Let's see what this data looks like when we run it through Pipeline\n",
    679     "# This is constructed the same way as you would in the backtester. For more information\n",
    680     "# on using Pipeline in Research view this thread:\n",
    681     "# https://www.quantopian.com/posts/pipeline-in-research-build-test-and-visualize-your-factors-and-filters\n",
    682     "\n",
    683     "# Setting some basic liquidity strings (just for good habit)\n",
    684     "dollar_volume = AverageDollarVolume(window_length=20)\n",
    685     "top_1000_most_liquid = dollar_volume.rank(ascending=False) < 1000\n",
    686     "\n",
    687     "pipe = Pipeline(\n",
    688     "    columns={\n",
    689     "        'EPS mean estimate': EarningsSurprises.eps_mean_est.latest,\n",
    690     "        'Zacks adj': EarningsSurprises.eps_act_zacks_adj.latest,\n",
    691     "        'eps_act': EarningsSurprises.eps_act.latest\n",
    692     "    },\n",
    693     "    screen=(top_1000_most_liquid & EarningsSurprises.eps_mean_est.latest.notnan())\n",
    694     ")"
    695    ]
    696   },
    697   {
    698    "cell_type": "code",
    699    "execution_count": 7,
    700    "metadata": {
    701     "collapsed": false
    702    },
    703    "outputs": [
    704     {
    705      "data": {
    706       "image/png": "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\n0y/ZbROUI6cir4brVkyMze3XbsXESJKy58hps56fr59VHAAAAAAAALg/ijRItcKFC2vRokUaOHCg\n0aHAA7JkcezCO7PZLEmKi4vT1q1bU9XX6mXzdfXyRbWrXczu6+EXz2vX5l+tvrzu3HeQ9m7fpOXz\npqtd96fl4+uj72d/oSFjrK/WiLx6RZLUp5X9wsj5s6fsLs8akM3u8uio6/rum8+1ecNPCr90Xrdi\noi2vRUVes2p7PSLh5+BceayWJ/8iPK2x3suhvQnPoilfrfZ//fz7APnkcSX+HJmG2505c3ySSul4\nJ/L3z6rGrdpp1eLZWrdiofoOHqW1yxeoRbtuVu3cuW+OyBaY3fJvU5IxZG954thJ5Oz5zxqQTbdi\nonUnLk5+/v427cMvntdbL/RU+x7PKPTpwSnGXLh4KUVeDdfli//YvDcvXzgnSSpUrJTNenF34ixx\nAAAAAAAAwDEUaZBqkyZN0qRJ7r1VELxHu3bttHz58nu28fX11d27d5UtWzZ17NhRxYoV05gxY5zq\n586dO/pl1feavvwPPVCwsM3rC2d8otmf/U9rli+wKtJUr9dYJcpW0okj+7Vu5SIFBuVQSP4Hba5S\nyRWSV1cuXdC3G/Zbbs+UFuNHPKvdWzcq7JlX1DbsKcszdJI+PD5RcK7cirgarusRV5Xn36snJOl6\nxFW723Z1rJL046LZkqRWHbpbluXME6Krly+mGFfOPHlT3Z8zx8dZzZ/sqlWLZ2vDD9+pY+9ntfOP\nX/TcyLFWbVy1byaTSWazWXfu3LE87yb6RlSa9+FenD3/Ifke1LlTxxV947pyJduv6KjrGv1iLz3W\nsYdNgaZtzcJWVztVq9NI+3du0dH9f1pdlSRJRw/sliSbq9wk6cb1hOfUhOR/0LEdBAAAAAAAAM+k\nAZA2Pj4+8vHxka+vr9q1a6dly5bpypUrmj17tipXruz09rb9tkaFi5eyW6CRpEfbdlGWLD7a+utq\nmysxEm9ztmTWVH33zWfq3O95m/XrNWklSdq3c7PNawf+3KahfZ50Kt5DexKuTOnQ6xlLASIuNtZu\n2+oPPyJJ2rPtd+tt7N5ht72rY10wfbIO7dmuFu1CVSHJlTR1GrewG9fubRutXk8NZ46Ps8pUrKbC\nJUrravglfTR6iGrWb2JTzHDVviXequxa+H+3JDtxZH+qY3eEs+e/ZLmKkqRL589aLY+LjdWYV59S\n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\nv1N222GtdN21b/7a96V8+fWoTJw4OV9+PSqXXds/W+/2t+y+0zq5/PydKry3a5epz4q58IrnM2r0\nj/no429y/a2vVznWWqsvlSR5/c0v0u/xD7LxDM+emeaam17LS699lrHjfsqz/f+Tk856LIu0ap7T\nT+g2W8YHAGDeV1JaWlpadBEAADBXGNMvmfCvoquAedojT32Ya296LQMGDc53o35Iq5bNsuF6y+aQ\n/TbK9t1WrfQ9I74dlz+d/GCeev7fGf/DxGy56Uq58oKds+za55S1KR1xYdnPb7z9ZQ780z35+NPh\nWWv1pfL3K3dP+1+1KdtestjxSZLP3jw5R514f1545dNMmVKazTZeMRed2T2rtl+8XscH6lDr44qu\nAACqJaQBAICaEtJAgzAtpJk+WAHmUkIaAOZwbncGAAAAAABQACENAAAAAABAAYQ0AAAA8LNptzqb\n8WcAAKgPTYouAAAAAOYUnkMDAMDs5EoaAAAAAACAAghpAAAAAAAACiCkAQAAAAAAKICQBgAAAAAA\noABCGgAAAAAAgAIIaQAAoKZKSoquAACoMf+/DcCcr6S0tLS06CIAAGCuMHlUMnlo0VUAADVRskDS\ndJmiqwCAaglpAAAAAAAACuB2ZwAAAAAAAAUQ0gAAAAAAABRASAMAAAAAAFAAIQ0AAAAAAEABhDQA\nAAAAAAAFENIAAAAAAAAUQEgDAAAAAABQACENAAAAAABAAYQ0AAAAAAAABRDSAAAAAAAAFEBIAwAA\nAAAAUAAhDQAAAAAAQAGENAAAAAAAAAVokuSeoosAAAAAAABoaP4fXQ9atxxJfbwAAAAASUVORK5C\nYII=\n",
    707       "text/plain": [
    708        "<IPython.core.display.Image object>"
    709       ]
    710      },
    711      "execution_count": 7,
    712      "metadata": {},
    713      "output_type": "execute_result"
    714     }
    715    ],
    716    "source": [
    717     "# The show_graph() method of pipeline objects produces a graph to show how it is being calculated.\n",
    718     "pipe.show_graph(format='png')"
    719    ]
    720   },
    721   {
    722    "cell_type": "code",
    723    "execution_count": 8,
    724    "metadata": {
    725     "collapsed": false
    726    },
    727    "outputs": [
    728     {
    729      "data": {
    730       "text/html": [
    731        "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
    732        "<table border=\"1\" class=\"dataframe\">\n",
    733        "  <thead>\n",
    734        "    <tr style=\"text-align: right;\">\n",
    735        "      <th></th>\n",
    736        "      <th></th>\n",
    737        "      <th>EPS mean estimate</th>\n",
    738        "      <th>Zacks adj</th>\n",
    739        "      <th>eps_act</th>\n",
    740        "    </tr>\n",
    741        "  </thead>\n",
    742        "  <tbody>\n",
    743        "    <tr>\n",
    744        "      <th rowspan=\"30\" valign=\"top\">2016-03-01 00:00:00+00:00</th>\n",
    745        "      <th>Equity(2 [AA])</th>\n",
    746        "      <td>0.03</td>\n",
    747        "      <td>-0.43</td>\n",
    748        "      <td>0.04</td>\n",
    749        "    </tr>\n",
    750        "    <tr>\n",
    751        "      <th>Equity(24 [AAPL])</th>\n",
    752        "      <td>3.24</td>\n",
    753        "      <td>0.00</td>\n",
    754        "      <td>3.28</td>\n",
    755        "    </tr>\n",
    756        "    <tr>\n",
    757        "      <th>Equity(53 [ABMD])</th>\n",
    758        "      <td>0.16</td>\n",
    759        "      <td>0.00</td>\n",
    760        "      <td>0.23</td>\n",
    761        "    </tr>\n",
    762        "    <tr>\n",
    763        "      <th>Equity(62 [ABT])</th>\n",
    764        "      <td>0.61</td>\n",
    765        "      <td>-0.11</td>\n",
    766        "      <td>0.62</td>\n",
    767        "    </tr>\n",
    768        "    <tr>\n",
    769        "      <th>Equity(64 [ABX])</th>\n",
    770        "      <td>0.07</td>\n",
    771        "      <td>-2.33</td>\n",
    772        "      <td>0.08</td>\n",
    773        "    </tr>\n",
    774        "    <tr>\n",
    775        "      <th>Equity(67 [ADSK])</th>\n",
    776        "      <td>-0.07</td>\n",
    777        "      <td>-0.11</td>\n",
    778        "      <td>-0.04</td>\n",
    779        "    </tr>\n",
    780        "    <tr>\n",
    781        "      <th>Equity(76 [TAP])</th>\n",
    782        "      <td>0.57</td>\n",
    783        "      <td>0.00</td>\n",
    784        "      <td>0.55</td>\n",
    785        "    </tr>\n",
    786        "    <tr>\n",
    787        "      <th>Equity(114 [ADBE])</th>\n",
    788        "      <td>0.45</td>\n",
    789        "      <td>-0.03</td>\n",
    790        "      <td>0.47</td>\n",
    791        "    </tr>\n",
    792        "    <tr>\n",
    793        "      <th>Equity(122 [ADI])</th>\n",
    794        "      <td>0.53</td>\n",
    795        "      <td>-0.04</td>\n",
    796        "      <td>0.56</td>\n",
    797        "    </tr>\n",
    798        "    <tr>\n",
    799        "      <th>Equity(128 [ADM])</th>\n",
    800        "      <td>0.65</td>\n",
    801        "      <td>0.58</td>\n",
    802        "      <td>0.61</td>\n",
    803        "    </tr>\n",
    804        "    <tr>\n",
    805        "      <th>Equity(154 [AEM])</th>\n",
    806        "      <td>-0.01</td>\n",
    807        "      <td>-0.07</td>\n",
    808        "      <td>0.00</td>\n",
    809        "    </tr>\n",
    810        "    <tr>\n",
    811        "      <th>Equity(161 [AEP])</th>\n",
    812        "      <td>0.50</td>\n",
    813        "      <td>0.48</td>\n",
    814        "      <td>0.48</td>\n",
    815        "    </tr>\n",
    816        "    <tr>\n",
    817        "      <th>Equity(166 [AES])</th>\n",
    818        "      <td>0.33</td>\n",
    819        "      <td>-0.47</td>\n",
    820        "      <td>0.34</td>\n",
    821        "    </tr>\n",
    822        "    <tr>\n",
    823        "      <th>Equity(168 [AET])</th>\n",
    824        "      <td>1.20</td>\n",
    825        "      <td>-0.46</td>\n",
    826        "      <td>1.37</td>\n",
    827        "    </tr>\n",
    828        "    <tr>\n",
    829        "      <th>Equity(185 [AFL])</th>\n",
    830        "      <td>1.48</td>\n",
    831        "      <td>0.15</td>\n",
    832        "      <td>1.56</td>\n",
    833        "    </tr>\n",
    834        "    <tr>\n",
    835        "      <th>Equity(197 [AGCO])</th>\n",
    836        "      <td>0.79</td>\n",
    837        "      <td>-0.07</td>\n",
    838        "      <td>0.80</td>\n",
    839        "    </tr>\n",
    840        "    <tr>\n",
    841        "      <th>Equity(216 [HES])</th>\n",
    842        "      <td>-1.36</td>\n",
    843        "      <td>-5.03</td>\n",
    844        "      <td>-1.40</td>\n",
    845        "    </tr>\n",
    846        "    <tr>\n",
    847        "      <th>Equity(239 [AIG])</th>\n",
    848        "      <td>-0.90</td>\n",
    849        "      <td>-0.40</td>\n",
    850        "      <td>-1.10</td>\n",
    851        "    </tr>\n",
    852        "    <tr>\n",
    853        "      <th>Equity(300 [ALK])</th>\n",
    854        "      <td>1.43</td>\n",
    855        "      <td>0.05</td>\n",
    856        "      <td>1.46</td>\n",
    857        "    </tr>\n",
    858        "    <tr>\n",
    859        "      <th>Equity(301 [ALKS])</th>\n",
    860        "      <td>-0.39</td>\n",
    861        "      <td>-0.16</td>\n",
    862        "      <td>-0.30</td>\n",
    863        "    </tr>\n",
    864        "    <tr>\n",
    865        "      <th>Equity(337 [AMAT])</th>\n",
    866        "      <td>0.25</td>\n",
    867        "      <td>-0.01</td>\n",
    868        "      <td>0.26</td>\n",
    869        "    </tr>\n",
    870        "    <tr>\n",
    871        "      <th>Equity(353 [AME])</th>\n",
    872        "      <td>0.63</td>\n",
    873        "      <td>-0.06</td>\n",
    874        "      <td>0.63</td>\n",
    875        "    </tr>\n",
    876        "    <tr>\n",
    877        "      <th>Equity(357 [TWX])</th>\n",
    878        "      <td>1.01</td>\n",
    879        "      <td>0.00</td>\n",
    880        "      <td>1.06</td>\n",
    881        "    </tr>\n",
    882        "    <tr>\n",
    883        "      <th>Equity(368 [AMGN])</th>\n",
    884        "      <td>2.27</td>\n",
    885        "      <td>-0.24</td>\n",
    886        "      <td>2.61</td>\n",
    887        "    </tr>\n",
    888        "    <tr>\n",
    889        "      <th>Equity(410 [AN])</th>\n",
    890        "      <td>1.05</td>\n",
    891        "      <td>-0.09</td>\n",
    892        "      <td>0.96</td>\n",
    893        "    </tr>\n",
    894        "    <tr>\n",
    895        "      <th>Equity(438 [AON])</th>\n",
    896        "      <td>2.09</td>\n",
    897        "      <td>-0.18</td>\n",
    898        "      <td>2.27</td>\n",
    899        "    </tr>\n",
    900        "    <tr>\n",
    901        "      <th>Equity(448 [APA])</th>\n",
    902        "      <td>-0.52</td>\n",
    903        "      <td>-19.01</td>\n",
    904        "      <td>-0.06</td>\n",
    905        "    </tr>\n",
    906        "    <tr>\n",
    907        "      <th>Equity(455 [APC])</th>\n",
    908        "      <td>-1.05</td>\n",
    909        "      <td>-1.88</td>\n",
    910        "      <td>-0.57</td>\n",
    911        "    </tr>\n",
    912        "    <tr>\n",
    913        "      <th>Equity(460 [APD])</th>\n",
    914        "      <td>1.70</td>\n",
    915        "      <td>-0.11</td>\n",
    916        "      <td>1.78</td>\n",
    917        "    </tr>\n",
    918        "    <tr>\n",
    919        "      <th>Equity(465 [APH])</th>\n",
    920        "      <td>0.59</td>\n",
    921        "      <td>0.00</td>\n",
    922        "      <td>0.63</td>\n",
    923        "    </tr>\n",
    924        "    <tr>\n",
    925        "      <th>...</th>\n",
    926        "      <th>...</th>\n",
    927        "      <td>...</td>\n",
    928        "      <td>...</td>\n",
    929        "      <td>...</td>\n",
    930        "    </tr>\n",
    931        "    <tr>\n",
    932        "      <th rowspan=\"30\" valign=\"top\">2016-03-02 00:00:00+00:00</th>\n",
    933        "      <th>Equity(45971 [AAL])</th>\n",
    934        "      <td>1.96</td>\n",
    935        "      <td>3.09</td>\n",
    936        "      <td>2.00</td>\n",
    937        "    </tr>\n",
    938        "    <tr>\n",
    939        "      <th>Equity(45992 [ARMK])</th>\n",
    940        "      <td>0.45</td>\n",
    941        "      <td>-0.08</td>\n",
    942        "      <td>0.46</td>\n",
    943        "    </tr>\n",
    944        "    <tr>\n",
    945        "      <th>Equity(45993 [HLT])</th>\n",
    946        "      <td>0.22</td>\n",
    947        "      <td>0.60</td>\n",
    948        "      <td>0.22</td>\n",
    949        "    </tr>\n",
    950        "    <tr>\n",
    951        "      <th>Equity(46015 [ALLY])</th>\n",
    952        "      <td>0.51</td>\n",
    953        "      <td>-2.49</td>\n",
    954        "      <td>0.52</td>\n",
    955        "    </tr>\n",
    956        "    <tr>\n",
    957        "      <th>Equity(46693 [GRUB])</th>\n",
    958        "      <td>0.12</td>\n",
    959        "      <td>-0.04</td>\n",
    960        "      <td>0.17</td>\n",
    961        "    </tr>\n",
    962        "    <tr>\n",
    963        "      <th>Equity(46776 [SABR])</th>\n",
    964        "      <td>0.26</td>\n",
    965        "      <td>0.22</td>\n",
    966        "      <td>0.24</td>\n",
    967        "    </tr>\n",
    968        "    <tr>\n",
    969        "      <th>Equity(46979 [JD])</th>\n",
    970        "      <td>-0.09</td>\n",
    971        "      <td>0.00</td>\n",
    972        "      <td>-0.86</td>\n",
    973        "    </tr>\n",
    974        "    <tr>\n",
    975        "      <th>Equity(46989 [PE])</th>\n",
    976        "      <td>-0.07</td>\n",
    977        "      <td>-0.12</td>\n",
    978        "      <td>-0.02</td>\n",
    979        "    </tr>\n",
    980        "    <tr>\n",
    981        "      <th>Equity(47063 [ANET])</th>\n",
    982        "      <td>0.51</td>\n",
    983        "      <td>-0.07</td>\n",
    984        "      <td>0.68</td>\n",
    985        "    </tr>\n",
    986        "    <tr>\n",
    987        "      <th>Equity(47126 [MRD])</th>\n",
    988        "      <td>0.10</td>\n",
    989        "      <td>0.05</td>\n",
    990        "      <td>0.05</td>\n",
    991        "    </tr>\n",
    992        "    <tr>\n",
    993        "      <th>Equity(47169 [KITE])</th>\n",
    994        "      <td>-0.82</td>\n",
    995        "      <td>0.00</td>\n",
    996        "      <td>-0.85</td>\n",
    997        "    </tr>\n",
    998        "    <tr>\n",
    999        "      <th>Equity(47207 [SERV])</th>\n",
   1000        "      <td>0.31</td>\n",
   1001        "      <td>-0.21</td>\n",
   1002        "      <td>0.33</td>\n",
   1003        "    </tr>\n",
   1004        "    <tr>\n",
   1005        "      <th>Equity(47208 [GPRO])</th>\n",
   1006        "      <td>-0.12</td>\n",
   1007        "      <td>-0.04</td>\n",
   1008        "      <td>-0.21</td>\n",
   1009        "    </tr>\n",
   1010        "    <tr>\n",
   1011        "      <th>Equity(47415 [SYF])</th>\n",
   1012        "      <td>0.63</td>\n",
   1013        "      <td>0.00</td>\n",
   1014        "      <td>0.65</td>\n",
   1015        "    </tr>\n",
   1016        "    <tr>\n",
   1017        "      <th>Equity(47430 [MBLY])</th>\n",
   1018        "      <td>0.09</td>\n",
   1019        "      <td>0.00</td>\n",
   1020        "      <td>0.08</td>\n",
   1021        "    </tr>\n",
   1022        "    <tr>\n",
   1023        "      <th>Equity(47740 [BABA])</th>\n",
   1024        "      <td>0.70</td>\n",
   1025        "      <td>0.03</td>\n",
   1026        "      <td>0.73</td>\n",
   1027        "    </tr>\n",
   1028        "    <tr>\n",
   1029        "      <th>Equity(47777 [CFG])</th>\n",
   1030        "      <td>0.42</td>\n",
   1031        "      <td>0.00</td>\n",
   1032        "      <td>0.42</td>\n",
   1033        "    </tr>\n",
   1034        "    <tr>\n",
   1035        "      <th>Equity(47833 [W])</th>\n",
   1036        "      <td>-0.28</td>\n",
   1037        "      <td>0.00</td>\n",
   1038        "      <td>-0.18</td>\n",
   1039        "    </tr>\n",
   1040        "    <tr>\n",
   1041        "      <th>Equity(48065 [AXTA])</th>\n",
   1042        "      <td>0.26</td>\n",
   1043        "      <td>-0.08</td>\n",
   1044        "      <td>0.24</td>\n",
   1045        "    </tr>\n",
   1046        "    <tr>\n",
   1047        "      <th>Equity(48215 [QSR])</th>\n",
   1048        "      <td>0.31</td>\n",
   1049        "      <td>-0.08</td>\n",
   1050        "      <td>0.33</td>\n",
   1051        "    </tr>\n",
   1052        "    <tr>\n",
   1053        "      <th>Equity(48220 [LC])</th>\n",
   1054        "      <td>0.00</td>\n",
   1055        "      <td>-0.01</td>\n",
   1056        "      <td>0.02</td>\n",
   1057        "    </tr>\n",
   1058        "    <tr>\n",
   1059        "      <th>Equity(48317 [JUNO])</th>\n",
   1060        "      <td>-0.54</td>\n",
   1061        "      <td>-0.35</td>\n",
   1062        "      <td>-0.54</td>\n",
   1063        "    </tr>\n",
   1064        "    <tr>\n",
   1065        "      <th>Equity(48384 [QRVO])</th>\n",
   1066        "      <td>0.74</td>\n",
   1067        "      <td>-0.90</td>\n",
   1068        "      <td>0.82</td>\n",
   1069        "    </tr>\n",
   1070        "    <tr>\n",
   1071        "      <th>Equity(49139 [FIT])</th>\n",
   1072        "      <td>0.20</td>\n",
   1073        "      <td>-0.03</td>\n",
   1074        "      <td>0.29</td>\n",
   1075        "    </tr>\n",
   1076        "    <tr>\n",
   1077        "      <th>Equity(49183 [WRK])</th>\n",
   1078        "      <td>0.58</td>\n",
   1079        "      <td>-2.35</td>\n",
   1080        "      <td>0.59</td>\n",
   1081        "    </tr>\n",
   1082        "    <tr>\n",
   1083        "      <th>Equity(49209 [BXLT])</th>\n",
   1084        "      <td>0.56</td>\n",
   1085        "      <td>-0.43</td>\n",
   1086        "      <td>0.57</td>\n",
   1087        "    </tr>\n",
   1088        "    <tr>\n",
   1089        "      <th>Equity(49229 [KHC])</th>\n",
   1090        "      <td>0.58</td>\n",
   1091        "      <td>-0.39</td>\n",
   1092        "      <td>0.62</td>\n",
   1093        "    </tr>\n",
   1094        "    <tr>\n",
   1095        "      <th>Equity(49242 [PYPL])</th>\n",
   1096        "      <td>0.28</td>\n",
   1097        "      <td>-0.02</td>\n",
   1098        "      <td>0.32</td>\n",
   1099        "    </tr>\n",
   1100        "    <tr>\n",
   1101        "      <th>Equity(49496 [FDC])</th>\n",
   1102        "      <td>0.17</td>\n",
   1103        "      <td>-1.53</td>\n",
   1104        "      <td>-0.07</td>\n",
   1105        "    </tr>\n",
   1106        "    <tr>\n",
   1107        "      <th>Equity(49515 [RACE])</th>\n",
   1108        "      <td>0.35</td>\n",
   1109        "      <td>0.00</td>\n",
   1110        "      <td>0.31</td>\n",
   1111        "    </tr>\n",
   1112        "  </tbody>\n",
   1113        "</table>\n",
   1114        "<p>1587 rows × 3 columns</p>\n",
   1115        "</div>"
   1116       ],
   1117       "text/plain": [
   1118        "                                                EPS mean estimate  Zacks adj  \\\n",
   1119        "2016-03-01 00:00:00+00:00 Equity(2 [AA])                     0.03      -0.43   \n",
   1120        "                          Equity(24 [AAPL])                  3.24       0.00   \n",
   1121        "                          Equity(53 [ABMD])                  0.16       0.00   \n",
   1122        "                          Equity(62 [ABT])                   0.61      -0.11   \n",
   1123        "                          Equity(64 [ABX])                   0.07      -2.33   \n",
   1124        "                          Equity(67 [ADSK])                 -0.07      -0.11   \n",
   1125        "                          Equity(76 [TAP])                   0.57       0.00   \n",
   1126        "                          Equity(114 [ADBE])                 0.45      -0.03   \n",
   1127        "                          Equity(122 [ADI])                  0.53      -0.04   \n",
   1128        "                          Equity(128 [ADM])                  0.65       0.58   \n",
   1129        "                          Equity(154 [AEM])                 -0.01      -0.07   \n",
   1130        "                          Equity(161 [AEP])                  0.50       0.48   \n",
   1131        "                          Equity(166 [AES])                  0.33      -0.47   \n",
   1132        "                          Equity(168 [AET])                  1.20      -0.46   \n",
   1133        "                          Equity(185 [AFL])                  1.48       0.15   \n",
   1134        "                          Equity(197 [AGCO])                 0.79      -0.07   \n",
   1135        "                          Equity(216 [HES])                 -1.36      -5.03   \n",
   1136        "                          Equity(239 [AIG])                 -0.90      -0.40   \n",
   1137        "                          Equity(300 [ALK])                  1.43       0.05   \n",
   1138        "                          Equity(301 [ALKS])                -0.39      -0.16   \n",
   1139        "                          Equity(337 [AMAT])                 0.25      -0.01   \n",
   1140        "                          Equity(353 [AME])                  0.63      -0.06   \n",
   1141        "                          Equity(357 [TWX])                  1.01       0.00   \n",
   1142        "                          Equity(368 [AMGN])                 2.27      -0.24   \n",
   1143        "                          Equity(410 [AN])                   1.05      -0.09   \n",
   1144        "                          Equity(438 [AON])                  2.09      -0.18   \n",
   1145        "                          Equity(448 [APA])                 -0.52     -19.01   \n",
   1146        "                          Equity(455 [APC])                 -1.05      -1.88   \n",
   1147        "                          Equity(460 [APD])                  1.70      -0.11   \n",
   1148        "                          Equity(465 [APH])                  0.59       0.00   \n",
   1149        "...                                                           ...        ...   \n",
   1150        "2016-03-02 00:00:00+00:00 Equity(45971 [AAL])                1.96       3.09   \n",
   1151        "                          Equity(45992 [ARMK])               0.45      -0.08   \n",
   1152        "                          Equity(45993 [HLT])                0.22       0.60   \n",
   1153        "                          Equity(46015 [ALLY])               0.51      -2.49   \n",
   1154        "                          Equity(46693 [GRUB])               0.12      -0.04   \n",
   1155        "                          Equity(46776 [SABR])               0.26       0.22   \n",
   1156        "                          Equity(46979 [JD])                -0.09       0.00   \n",
   1157        "                          Equity(46989 [PE])                -0.07      -0.12   \n",
   1158        "                          Equity(47063 [ANET])               0.51      -0.07   \n",
   1159        "                          Equity(47126 [MRD])                0.10       0.05   \n",
   1160        "                          Equity(47169 [KITE])              -0.82       0.00   \n",
   1161        "                          Equity(47207 [SERV])               0.31      -0.21   \n",
   1162        "                          Equity(47208 [GPRO])              -0.12      -0.04   \n",
   1163        "                          Equity(47415 [SYF])                0.63       0.00   \n",
   1164        "                          Equity(47430 [MBLY])               0.09       0.00   \n",
   1165        "                          Equity(47740 [BABA])               0.70       0.03   \n",
   1166        "                          Equity(47777 [CFG])                0.42       0.00   \n",
   1167        "                          Equity(47833 [W])                 -0.28       0.00   \n",
   1168        "                          Equity(48065 [AXTA])               0.26      -0.08   \n",
   1169        "                          Equity(48215 [QSR])                0.31      -0.08   \n",
   1170        "                          Equity(48220 [LC])                 0.00      -0.01   \n",
   1171        "                          Equity(48317 [JUNO])              -0.54      -0.35   \n",
   1172        "                          Equity(48384 [QRVO])               0.74      -0.90   \n",
   1173        "                          Equity(49139 [FIT])                0.20      -0.03   \n",
   1174        "                          Equity(49183 [WRK])                0.58      -2.35   \n",
   1175        "                          Equity(49209 [BXLT])               0.56      -0.43   \n",
   1176        "                          Equity(49229 [KHC])                0.58      -0.39   \n",
   1177        "                          Equity(49242 [PYPL])               0.28      -0.02   \n",
   1178        "                          Equity(49496 [FDC])                0.17      -1.53   \n",
   1179        "                          Equity(49515 [RACE])               0.35       0.00   \n",
   1180        "\n",
   1181        "                                                eps_act  \n",
   1182        "2016-03-01 00:00:00+00:00 Equity(2 [AA])           0.04  \n",
   1183        "                          Equity(24 [AAPL])        3.28  \n",
   1184        "                          Equity(53 [ABMD])        0.23  \n",
   1185        "                          Equity(62 [ABT])         0.62  \n",
   1186        "                          Equity(64 [ABX])         0.08  \n",
   1187        "                          Equity(67 [ADSK])       -0.04  \n",
   1188        "                          Equity(76 [TAP])         0.55  \n",
   1189        "                          Equity(114 [ADBE])       0.47  \n",
   1190        "                          Equity(122 [ADI])        0.56  \n",
   1191        "                          Equity(128 [ADM])        0.61  \n",
   1192        "                          Equity(154 [AEM])        0.00  \n",
   1193        "                          Equity(161 [AEP])        0.48  \n",
   1194        "                          Equity(166 [AES])        0.34  \n",
   1195        "                          Equity(168 [AET])        1.37  \n",
   1196        "                          Equity(185 [AFL])        1.56  \n",
   1197        "                          Equity(197 [AGCO])       0.80  \n",
   1198        "                          Equity(216 [HES])       -1.40  \n",
   1199        "                          Equity(239 [AIG])       -1.10  \n",
   1200        "                          Equity(300 [ALK])        1.46  \n",
   1201        "                          Equity(301 [ALKS])      -0.30  \n",
   1202        "                          Equity(337 [AMAT])       0.26  \n",
   1203        "                          Equity(353 [AME])        0.63  \n",
   1204        "                          Equity(357 [TWX])        1.06  \n",
   1205        "                          Equity(368 [AMGN])       2.61  \n",
   1206        "                          Equity(410 [AN])         0.96  \n",
   1207        "                          Equity(438 [AON])        2.27  \n",
   1208        "                          Equity(448 [APA])       -0.06  \n",
   1209        "                          Equity(455 [APC])       -0.57  \n",
   1210        "                          Equity(460 [APD])        1.78  \n",
   1211        "                          Equity(465 [APH])        0.63  \n",
   1212        "...                                                 ...  \n",
   1213        "2016-03-02 00:00:00+00:00 Equity(45971 [AAL])      2.00  \n",
   1214        "                          Equity(45992 [ARMK])     0.46  \n",
   1215        "                          Equity(45993 [HLT])      0.22  \n",
   1216        "                          Equity(46015 [ALLY])     0.52  \n",
   1217        "                          Equity(46693 [GRUB])     0.17  \n",
   1218        "                          Equity(46776 [SABR])     0.24  \n",
   1219        "                          Equity(46979 [JD])      -0.86  \n",
   1220        "                          Equity(46989 [PE])      -0.02  \n",
   1221        "                          Equity(47063 [ANET])     0.68  \n",
   1222        "                          Equity(47126 [MRD])      0.05  \n",
   1223        "                          Equity(47169 [KITE])    -0.85  \n",
   1224        "                          Equity(47207 [SERV])     0.33  \n",
   1225        "                          Equity(47208 [GPRO])    -0.21  \n",
   1226        "                          Equity(47415 [SYF])      0.65  \n",
   1227        "                          Equity(47430 [MBLY])     0.08  \n",
   1228        "                          Equity(47740 [BABA])     0.73  \n",
   1229        "                          Equity(47777 [CFG])      0.42  \n",
   1230        "                          Equity(47833 [W])       -0.18  \n",
   1231        "                          Equity(48065 [AXTA])     0.24  \n",
   1232        "                          Equity(48215 [QSR])      0.33  \n",
   1233        "                          Equity(48220 [LC])       0.02  \n",
   1234        "                          Equity(48317 [JUNO])    -0.54  \n",
   1235        "                          Equity(48384 [QRVO])     0.82  \n",
   1236        "                          Equity(49139 [FIT])      0.29  \n",
   1237        "                          Equity(49183 [WRK])      0.59  \n",
   1238        "                          Equity(49209 [BXLT])     0.57  \n",
   1239        "                          Equity(49229 [KHC])      0.62  \n",
   1240        "                          Equity(49242 [PYPL])     0.32  \n",
   1241        "                          Equity(49496 [FDC])     -0.07  \n",
   1242        "                          Equity(49515 [RACE])     0.31  \n",
   1243        "\n",
   1244        "[1587 rows x 3 columns]"
   1245       ]
   1246      },
   1247      "execution_count": 8,
   1248      "metadata": {},
   1249      "output_type": "execute_result"
   1250     }
   1251    ],
   1252    "source": [
   1253     "# run_pipeline will show the output of your pipeline\n",
   1254     "pipe_output = run_pipeline(pipe, start_date='2016-03-01', end_date='2016-03-02')\n",
   1255     "pipe_output"
   1256    ]
   1257   }
   1258  ],
   1259  "metadata": {
   1260   "kernelspec": {
   1261    "display_name": "Python 2",
   1262    "language": "python",
   1263    "name": "python2"
   1264   },
   1265   "language_info": {
   1266    "codemirror_mode": {
   1267     "name": "ipython",
   1268     "version": 2
   1269    },
   1270    "file_extension": ".py",
   1271    "mimetype": "text/x-python",
   1272    "name": "python",
   1273    "nbconvert_exporter": "python",
   1274    "pygments_lexer": "ipython2",
   1275    "version": "2.7.12"
   1276   }
   1277  },
   1278  "nbformat": 4,
   1279  "nbformat_minor": 0
   1280 }