ml-finance-python

python scripts for finance machine learning

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

notebook.ipynb

(91332B)


      1 {
      2  "cells": [
      3   {
      4    "cell_type": "markdown",
      5    "metadata": {
      6     "collapsed": true
      7    },
      8    "source": [
      9     "# EventVestor: Buyback Authorizations\n",
     10     "\n",
     11     "In this notebook, we'll take a look at EventVestor's *Buyback Authorizations* dataset, available on the [Quantopian Store](https://www.quantopian.com/store). This dataset spans January 01, 2007 through the current day.\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     "- <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",
     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": 19,
     54    "metadata": {
     55     "collapsed": false
     56    },
     57    "outputs": [],
     58    "source": [
     59     "# import the dataset\n",
     60     "from quantopian.interactive.data.eventvestor import buyback_auth as dataset\n",
     61     "\n",
     62     "# or if you want to import the free dataset, use:\n",
     63     "#from quantopian.data.eventvestor import buyback_auth_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/plain": [
     82        "dshape(\"\"\"var * {\n",
     83        "  event_id: float64,\n",
     84        "  trade_date: ?datetime,\n",
     85        "  symbol: string,\n",
     86        "  event_type: ?string,\n",
     87        "  event_headline: ?string,\n",
     88        "  buyback_type: ?string,\n",
     89        "  buyback_purpose: ?string,\n",
     90        "  offer_type: ?string,\n",
     91        "  buyback_amount: float64,\n",
     92        "  buyback_units: ?string,\n",
     93        "  event_rating: float64,\n",
     94        "  sid: int64,\n",
     95        "  asof_date: datetime,\n",
     96        "  timestamp: datetime\n",
     97        "  }\"\"\")"
     98       ]
     99      },
    100      "execution_count": 2,
    101      "metadata": {},
    102      "output_type": "execute_result"
    103     }
    104    ],
    105    "source": [
    106     "# Let's use blaze to understand the data a bit using Blaze dshape()\n",
    107     "dataset.dshape"
    108    ]
    109   },
    110   {
    111    "cell_type": "code",
    112    "execution_count": 3,
    113    "metadata": {
    114     "collapsed": false
    115    },
    116    "outputs": [
    117     {
    118      "data": {
    119       "text/html": [
    120        "8894"
    121       ],
    122       "text/plain": [
    123        "8894"
    124       ]
    125      },
    126      "execution_count": 3,
    127      "metadata": {},
    128      "output_type": "execute_result"
    129     }
    130    ],
    131    "source": [
    132     "# And how many rows are there?\n",
    133     "# N.B. we're using a Blaze function to do this, not len()\n",
    134     "dataset.count()"
    135    ]
    136   },
    137   {
    138    "cell_type": "code",
    139    "execution_count": 4,
    140    "metadata": {
    141     "collapsed": false
    142    },
    143    "outputs": [
    144     {
    145      "data": {
    146       "text/html": [
    147        "<table border=\"1\" class=\"dataframe\">\n",
    148        "  <thead>\n",
    149        "    <tr style=\"text-align: right;\">\n",
    150        "      <th></th>\n",
    151        "      <th>event_id</th>\n",
    152        "      <th>trade_date</th>\n",
    153        "      <th>symbol</th>\n",
    154        "      <th>event_type</th>\n",
    155        "      <th>event_headline</th>\n",
    156        "      <th>buyback_type</th>\n",
    157        "      <th>buyback_purpose</th>\n",
    158        "      <th>offer_type</th>\n",
    159        "      <th>buyback_amount</th>\n",
    160        "      <th>buyback_units</th>\n",
    161        "      <th>event_rating</th>\n",
    162        "      <th>sid</th>\n",
    163        "      <th>asof_date</th>\n",
    164        "      <th>timestamp</th>\n",
    165        "    </tr>\n",
    166        "  </thead>\n",
    167        "  <tbody>\n",
    168        "    <tr>\n",
    169        "      <th>0</th>\n",
    170        "      <td>199282</td>\n",
    171        "      <td>2007-01-05</td>\n",
    172        "      <td>IIIN</td>\n",
    173        "      <td>Buyback</td>\n",
    174        "      <td>Insteel Industries Announces $25M Share Buyback</td>\n",
    175        "      <td>New</td>\n",
    176        "      <td>General Corporate</td>\n",
    177        "      <td>Open Market</td>\n",
    178        "      <td>25.0</td>\n",
    179        "      <td>$M</td>\n",
    180        "      <td>1</td>\n",
    181        "      <td>3849</td>\n",
    182        "      <td>2007-01-05</td>\n",
    183        "      <td>2007-01-06</td>\n",
    184        "    </tr>\n",
    185        "    <tr>\n",
    186        "      <th>1</th>\n",
    187        "      <td>131132</td>\n",
    188        "      <td>2007-01-12</td>\n",
    189        "      <td>COP</td>\n",
    190        "      <td>Buyback</td>\n",
    191        "      <td>ConocoPhillips Announces $1B Share Repurchase ...</td>\n",
    192        "      <td>New</td>\n",
    193        "      <td>General Corporate</td>\n",
    194        "      <td>Open Market</td>\n",
    195        "      <td>1000.0</td>\n",
    196        "      <td>$M</td>\n",
    197        "      <td>1</td>\n",
    198        "      <td>23998</td>\n",
    199        "      <td>2007-01-12</td>\n",
    200        "      <td>2007-01-13</td>\n",
    201        "    </tr>\n",
    202        "    <tr>\n",
    203        "      <th>2</th>\n",
    204        "      <td>150579</td>\n",
    205        "      <td>2007-01-17</td>\n",
    206        "      <td>VLY</td>\n",
    207        "      <td>Buyback</td>\n",
    208        "      <td>Valley National Bancorp Announces 3.5M Share R...</td>\n",
    209        "      <td>New</td>\n",
    210        "      <td>General Corporate</td>\n",
    211        "      <td>Open Market</td>\n",
    212        "      <td>3.5</td>\n",
    213        "      <td>Mshares</td>\n",
    214        "      <td>1</td>\n",
    215        "      <td>8011</td>\n",
    216        "      <td>2007-01-17</td>\n",
    217        "      <td>2007-01-18</td>\n",
    218        "    </tr>\n",
    219        "  </tbody>\n",
    220        "</table>"
    221       ],
    222       "text/plain": [
    223        "   event_id trade_date symbol event_type  \\\n",
    224        "0    199282 2007-01-05   IIIN    Buyback   \n",
    225        "1    131132 2007-01-12    COP    Buyback   \n",
    226        "2    150579 2007-01-17    VLY    Buyback   \n",
    227        "\n",
    228        "                                      event_headline buyback_type  \\\n",
    229        "0    Insteel Industries Announces $25M Share Buyback          New   \n",
    230        "1  ConocoPhillips Announces $1B Share Repurchase ...          New   \n",
    231        "2  Valley National Bancorp Announces 3.5M Share R...          New   \n",
    232        "\n",
    233        "     buyback_purpose   offer_type  buyback_amount buyback_units  event_rating  \\\n",
    234        "0  General Corporate  Open Market            25.0            $M             1   \n",
    235        "1  General Corporate  Open Market          1000.0            $M             1   \n",
    236        "2  General Corporate  Open Market             3.5       Mshares             1   \n",
    237        "\n",
    238        "     sid  asof_date  timestamp  \n",
    239        "0   3849 2007-01-05 2007-01-06  \n",
    240        "1  23998 2007-01-12 2007-01-13  \n",
    241        "2   8011 2007-01-17 2007-01-18  "
    242       ]
    243      },
    244      "execution_count": 4,
    245      "metadata": {},
    246      "output_type": "execute_result"
    247     }
    248    ],
    249    "source": [
    250     "# Let's see what the data looks like. We'll grab the first three rows.\n",
    251     "dataset[:3]"
    252    ]
    253   },
    254   {
    255    "cell_type": "markdown",
    256    "metadata": {},
    257    "source": [
    258     "Let's go over the columns:\n",
    259     "- **event_id**: the unique identifier for this buyback authorization.\n",
    260     "- **asof_date**: EventVestor's timestamp of event capture.\n",
    261     "- **trade_date**: for event announcements made before trading ends, trade_date is the same as event_date. For announcements issued after market close, trade_date is next market open day.\n",
    262     "- **symbol**: stock ticker symbol of the affected company.\n",
    263     "- **event_type**: this should always be *Buyback*.\n",
    264     "- **event_headline**: a short description of the event.\n",
    265     "- **buyback_type**: types include *new*, *additional*, *reinstates*, *suspends*, *reduction*\n",
    266     "- **buyback_purpose**: types include *general corporate*, *undervalued*, *stock options*, *acquisition*\n",
    267     "- **offer_type**: types include *open market, private placement, mixed offer, dutch auction, tender offers.*\n",
    268     "- **buyback_amount**: the amount of buyback_units being bought back\n",
    269     "- **buyback_units**: the units of buyback_amount: values include millions of dollars (or other local currency), shares in millions, or percent of shares outstanding.\n",
    270     "- **event_rating**: this is always 1. The meaning of this is uncertain.\n",
    271     "- **timestamp**: this is our timestamp on when we registered the data.\n",
    272     "- **sid**: the equity's unique identifier. Use this instead of the symbol.\n",
    273     "\n",
    274     "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",
    275     "\n",
    276     "We can select columns and rows with ease. Below, we'll fetch all entries for Microsoft. We're really only interested in the buyback amount, the units, and the date, so we'll display only those columns."
    277    ]
    278   },
    279   {
    280    "cell_type": "code",
    281    "execution_count": 5,
    282    "metadata": {
    283     "collapsed": false
    284    },
    285    "outputs": [
    286     {
    287      "data": {
    288       "text/plain": [
    289        "Equity(5061, symbol=u'MSFT', asset_name=u'MICROSOFT CORP', exchange=u'NASDAQ GLOBAL SELECT MARKET', start_date=Timestamp('1993-01-04 00:00:00+0000', tz='UTC'), end_date=Timestamp('2016-05-24 00:00:00+0000', tz='UTC'), first_traded=None, auto_close_date=Timestamp('2016-05-27 00:00:00+0000', tz='UTC'))"
    290       ]
    291      },
    292      "execution_count": 5,
    293      "metadata": {},
    294      "output_type": "execute_result"
    295     }
    296    ],
    297    "source": [
    298     "# get the sid for MSFT\n",
    299     "symbols('MSFT')"
    300    ]
    301   },
    302   {
    303    "cell_type": "code",
    304    "execution_count": 10,
    305    "metadata": {
    306     "collapsed": false
    307    },
    308    "outputs": [
    309     {
    310      "data": {
    311       "text/html": [
    312        "<table border=\"1\" class=\"dataframe\">\n",
    313        "  <thead>\n",
    314        "    <tr style=\"text-align: right;\">\n",
    315        "      <th></th>\n",
    316        "      <th>timestamp</th>\n",
    317        "      <th>buyback_amount</th>\n",
    318        "      <th>buyback_units</th>\n",
    319        "    </tr>\n",
    320        "  </thead>\n",
    321        "  <tbody>\n",
    322        "    <tr>\n",
    323        "      <th>0</th>\n",
    324        "      <td>2008-09-23</td>\n",
    325        "      <td>40000</td>\n",
    326        "      <td>$M</td>\n",
    327        "    </tr>\n",
    328        "    <tr>\n",
    329        "      <th>1</th>\n",
    330        "      <td>2013-09-18</td>\n",
    331        "      <td>40000</td>\n",
    332        "      <td>$M</td>\n",
    333        "    </tr>\n",
    334        "  </tbody>\n",
    335        "</table>"
    336       ],
    337       "text/plain": [
    338        "   timestamp  buyback_amount buyback_units\n",
    339        "0 2008-09-23           40000            $M\n",
    340        "1 2013-09-18           40000            $M"
    341       ]
    342      },
    343      "execution_count": 10,
    344      "metadata": {},
    345      "output_type": "execute_result"
    346     }
    347    ],
    348    "source": [
    349     "# knowing that the MSFT sid is 5061:\n",
    350     "msft = dataset[dataset.sid==5061][['timestamp','buyback_amount', 'buyback_units']].sort('timestamp')\n",
    351     "msft"
    352    ]
    353   },
    354   {
    355    "cell_type": "markdown",
    356    "metadata": {},
    357    "source": [
    358     "Finally, suppose we want a DataFrame of Apple Buybacks, sorted in descending order by the buyback amount:"
    359    ]
    360   },
    361   {
    362    "cell_type": "code",
    363    "execution_count": 7,
    364    "metadata": {
    365     "collapsed": true
    366    },
    367    "outputs": [],
    368    "source": [
    369     "aapl_sid = symbols('AAPL').sid"
    370    ]
    371   },
    372   {
    373    "cell_type": "code",
    374    "execution_count": 9,
    375    "metadata": {
    376     "collapsed": false
    377    },
    378    "outputs": [
    379     {
    380      "data": {
    381       "text/html": [
    382        "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
    383        "<table border=\"1\" class=\"dataframe\">\n",
    384        "  <thead>\n",
    385        "    <tr style=\"text-align: right;\">\n",
    386        "      <th></th>\n",
    387        "      <th>event_id</th>\n",
    388        "      <th>trade_date</th>\n",
    389        "      <th>symbol</th>\n",
    390        "      <th>event_type</th>\n",
    391        "      <th>event_headline</th>\n",
    392        "      <th>buyback_type</th>\n",
    393        "      <th>buyback_purpose</th>\n",
    394        "      <th>offer_type</th>\n",
    395        "      <th>buyback_amount</th>\n",
    396        "      <th>buyback_units</th>\n",
    397        "      <th>event_rating</th>\n",
    398        "      <th>sid</th>\n",
    399        "      <th>asof_date</th>\n",
    400        "      <th>timestamp</th>\n",
    401        "    </tr>\n",
    402        "  </thead>\n",
    403        "  <tbody>\n",
    404        "    <tr>\n",
    405        "      <th>0</th>\n",
    406        "      <td>1570151</td>\n",
    407        "      <td>2013-04-24</td>\n",
    408        "      <td>AAPL</td>\n",
    409        "      <td>Buyback</td>\n",
    410        "      <td>Apple Raises Share Repurchase Program to $60B</td>\n",
    411        "      <td>Additional</td>\n",
    412        "      <td>General Corporate</td>\n",
    413        "      <td>Open Market</td>\n",
    414        "      <td>50000</td>\n",
    415        "      <td>$M</td>\n",
    416        "      <td>1</td>\n",
    417        "      <td>24</td>\n",
    418        "      <td>2013-04-23</td>\n",
    419        "      <td>2013-04-24 00:00:00</td>\n",
    420        "    </tr>\n",
    421        "    <tr>\n",
    422        "      <th>1</th>\n",
    423        "      <td>1918113</td>\n",
    424        "      <td>2015-04-28</td>\n",
    425        "      <td>AAPL</td>\n",
    426        "      <td>Buyback</td>\n",
    427        "      <td>Apple Announces Additional $50B Share Repurcha...</td>\n",
    428        "      <td>Additional</td>\n",
    429        "      <td>General Corporate</td>\n",
    430        "      <td>Open Market</td>\n",
    431        "      <td>50000</td>\n",
    432        "      <td>$M</td>\n",
    433        "      <td>1</td>\n",
    434        "      <td>24</td>\n",
    435        "      <td>2015-04-27</td>\n",
    436        "      <td>2015-04-28 00:00:00</td>\n",
    437        "    </tr>\n",
    438        "    <tr>\n",
    439        "      <th>2</th>\n",
    440        "      <td>2162722</td>\n",
    441        "      <td>2016-04-27</td>\n",
    442        "      <td>AAPL</td>\n",
    443        "      <td>Buyback</td>\n",
    444        "      <td>Apple Increases Share Repurchase Authorization...</td>\n",
    445        "      <td>Additional</td>\n",
    446        "      <td>General Corporate</td>\n",
    447        "      <td>Open Market</td>\n",
    448        "      <td>35000</td>\n",
    449        "      <td>$M</td>\n",
    450        "      <td>1</td>\n",
    451        "      <td>24</td>\n",
    452        "      <td>2016-04-26</td>\n",
    453        "      <td>2016-04-27 11:02:42.070375</td>\n",
    454        "    </tr>\n",
    455        "    <tr>\n",
    456        "      <th>3</th>\n",
    457        "      <td>1708179</td>\n",
    458        "      <td>2014-04-24</td>\n",
    459        "      <td>AAPL</td>\n",
    460        "      <td>Buyback</td>\n",
    461        "      <td>Apple Announces Additional $30B Share Repurcha...</td>\n",
    462        "      <td>Additional</td>\n",
    463        "      <td>General Corporate</td>\n",
    464        "      <td>Open Market</td>\n",
    465        "      <td>30000</td>\n",
    466        "      <td>$M</td>\n",
    467        "      <td>1</td>\n",
    468        "      <td>24</td>\n",
    469        "      <td>2014-04-23</td>\n",
    470        "      <td>2014-04-24 00:00:00</td>\n",
    471        "    </tr>\n",
    472        "    <tr>\n",
    473        "      <th>4</th>\n",
    474        "      <td>1410570</td>\n",
    475        "      <td>2012-03-19</td>\n",
    476        "      <td>AAPL</td>\n",
    477        "      <td>Buyback</td>\n",
    478        "      <td>Apple to Repurchase $10B Shares</td>\n",
    479        "      <td>New</td>\n",
    480        "      <td>General Corporate</td>\n",
    481        "      <td>Open Market</td>\n",
    482        "      <td>10000</td>\n",
    483        "      <td>$M</td>\n",
    484        "      <td>1</td>\n",
    485        "      <td>24</td>\n",
    486        "      <td>2012-03-19</td>\n",
    487        "      <td>2012-03-20 00:00:00</td>\n",
    488        "    </tr>\n",
    489        "  </tbody>\n",
    490        "</table>\n",
    491        "</div>"
    492       ],
    493       "text/plain": [
    494        "   event_id trade_date symbol event_type  \\\n",
    495        "0   1570151 2013-04-24   AAPL    Buyback   \n",
    496        "1   1918113 2015-04-28   AAPL    Buyback   \n",
    497        "2   2162722 2016-04-27   AAPL    Buyback   \n",
    498        "3   1708179 2014-04-24   AAPL    Buyback   \n",
    499        "4   1410570 2012-03-19   AAPL    Buyback   \n",
    500        "\n",
    501        "                                      event_headline buyback_type  \\\n",
    502        "0      Apple Raises Share Repurchase Program to $60B   Additional   \n",
    503        "1  Apple Announces Additional $50B Share Repurcha...   Additional   \n",
    504        "2  Apple Increases Share Repurchase Authorization...   Additional   \n",
    505        "3  Apple Announces Additional $30B Share Repurcha...   Additional   \n",
    506        "4                   Apple to Repurchase $10B Shares           New   \n",
    507        "\n",
    508        "     buyback_purpose   offer_type  buyback_amount buyback_units  event_rating  \\\n",
    509        "0  General Corporate  Open Market           50000            $M             1   \n",
    510        "1  General Corporate  Open Market           50000            $M             1   \n",
    511        "2  General Corporate  Open Market           35000            $M             1   \n",
    512        "3  General Corporate  Open Market           30000            $M             1   \n",
    513        "4  General Corporate  Open Market           10000            $M             1   \n",
    514        "\n",
    515        "   sid  asof_date                  timestamp  \n",
    516        "0   24 2013-04-23        2013-04-24 00:00:00  \n",
    517        "1   24 2015-04-27        2015-04-28 00:00:00  \n",
    518        "2   24 2016-04-26 2016-04-27 11:02:42.070375  \n",
    519        "3   24 2014-04-23        2014-04-24 00:00:00  \n",
    520        "4   24 2012-03-19        2012-03-20 00:00:00  "
    521       ]
    522      },
    523      "execution_count": 9,
    524      "metadata": {},
    525      "output_type": "execute_result"
    526     }
    527    ],
    528    "source": [
    529     "aapl = dataset[dataset.sid==aapl_sid].sort('buyback_amount',ascending=False)\n",
    530     "aapl_df = odo(aapl, pd.DataFrame)\n",
    531     "aapl_df"
    532    ]
    533   },
    534   {
    535    "cell_type": "markdown",
    536    "metadata": {},
    537    "source": [
    538     "<a id='pipeline'></a>\n",
    539     "\n",
    540     "#Pipeline Overview\n",
    541     "\n",
    542     "### Accessing the data in your algorithms & research\n",
    543     "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",
    544     "\n",
    545     "Import the data set here\n",
    546     "> `from quantopian.pipeline.data.eventvestor import BuybackAuthorizations`\n",
    547     "\n",
    548     "Then in intialize() you could do something simple like adding the raw value of one of the fields to your pipeline:\n",
    549     "> `pipe.add(BuybackAuthorizations.total_scanned_messages.latest, 'total_scanned_messages')`"
    550    ]
    551   },
    552   {
    553    "cell_type": "code",
    554    "execution_count": 2,
    555    "metadata": {
    556     "collapsed": true
    557    },
    558    "outputs": [],
    559    "source": [
    560     "# Import necessary Pipeline modules\n",
    561     "from quantopian.pipeline import Pipeline\n",
    562     "from quantopian.research import run_pipeline\n",
    563     "from quantopian.pipeline.factors import AverageDollarVolume"
    564    ]
    565   },
    566   {
    567    "cell_type": "code",
    568    "execution_count": 1,
    569    "metadata": {
    570     "collapsed": false
    571    },
    572    "outputs": [],
    573    "source": [
    574     "# For use in your algorithms\n",
    575     "# Using the full dataset in your pipeline algo\n",
    576     "from quantopian.pipeline.data.eventvestor import BuybackAuthorizations\n",
    577     "\n",
    578     "from quantopian.pipeline.factors.eventvestor import BusinessDaysSinceBuybackAuth"
    579    ]
    580   },
    581   {
    582    "cell_type": "markdown",
    583    "metadata": {},
    584    "source": [
    585     "Now that we've imported the data, let's take a look at which fields are available for each dataset.\n",
    586     "\n",
    587     "You'll find the dataset, the available fields, and the datatypes for each of those fields."
    588    ]
    589   },
    590   {
    591    "cell_type": "code",
    592    "execution_count": 24,
    593    "metadata": {
    594     "collapsed": false
    595    },
    596    "outputs": [
    597     {
    598      "name": "stdout",
    599      "output_type": "stream",
    600      "text": [
    601       "Here are the list of available fields per dataset:\n",
    602       "---------------------------------------------------\n",
    603       "\n",
    604       "Dataset: BuybackAuthorizations\n",
    605       "\n",
    606       "Fields:\n",
    607       "previous_date - datetime64[ns]\n",
    608       "previous_type - object\n",
    609       "previous_amount - float64\n",
    610       "previous_unit - object\n",
    611       "\n",
    612       "\n",
    613       "---------------------------------------------------\n",
    614       "\n"
    615      ]
    616     }
    617    ],
    618    "source": [
    619     "print \"Here are the list of available fields per dataset:\"\n",
    620     "print \"---------------------------------------------------\\n\"\n",
    621     "\n",
    622     "def _print_fields(dataset):\n",
    623     "    print \"Dataset: %s\\n\" % dataset.__name__\n",
    624     "    print \"Fields:\"\n",
    625     "    for field in list(dataset.columns):\n",
    626     "        print \"%s - %s\" % (field.name, field.dtype)\n",
    627     "    print \"\\n\"\n",
    628     "\n",
    629     "for data in (BuybackAuthorizations,):\n",
    630     "    _print_fields(data)\n",
    631     "\n",
    632     "\n",
    633     "print \"---------------------------------------------------\\n\""
    634    ]
    635   },
    636   {
    637    "cell_type": "markdown",
    638    "metadata": {},
    639    "source": [
    640     "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",
    641     "\n",
    642     "\n",
    643     "This is constructed the same way as you would in the backtester. For more information on using Pipeline in Research view this thread:\n",
    644     "https://www.quantopian.com/posts/pipeline-in-research-build-test-and-visualize-your-factors-and-filters"
    645    ]
    646   },
    647   {
    648    "cell_type": "code",
    649    "execution_count": 3,
    650    "metadata": {
    651     "collapsed": false
    652    },
    653    "outputs": [],
    654    "source": [
    655     "# Let's see what this data looks like when we run it through Pipeline\n",
    656     "# This is constructed the same way as you would in the backtester. For more information\n",
    657     "# on using Pipeline in Research view this thread:\n",
    658     "# https://www.quantopian.com/posts/pipeline-in-research-build-test-and-visualize-your-factors-and-filters\n",
    659     "pipe = Pipeline()\n",
    660     "       \n",
    661     "pipe.add(BuybackAuthorizations.previous_date.latest, 'previous_date')\n",
    662     "pipe.add(BuybackAuthorizations.previous_amount.latest, 'previous_amount')\n",
    663     "pipe.add(BusinessDaysSinceBuybackAuth(), \"business_days\")"
    664    ]
    665   },
    666   {
    667    "cell_type": "code",
    668    "execution_count": 4,
    669    "metadata": {
    670     "collapsed": false
    671    },
    672    "outputs": [],
    673    "source": [
    674     "# Setting some basic liquidity strings (just for good habit)\n",
    675     "dollar_volume = AverageDollarVolume(window_length=20)\n",
    676     "top_1000_most_liquid = dollar_volume.rank(ascending=False) < 1000\n",
    677     "\n",
    678     "pipe.set_screen(top_1000_most_liquid & BuybackAuthorizations.previous_amount.latest.notnan())"
    679    ]
    680   },
    681   {
    682    "cell_type": "code",
    683    "execution_count": 5,
    684    "metadata": {
    685     "collapsed": false
    686    },
    687    "outputs": [
    688     {
    689      "data": {
    690       "image/png": "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\nzapVNWtnz3HJzPX43Odf6qUO7XRq9tda8uZI7fnrpJoMG6XTly6btXv0jdHy9vLSka8n6fDUScof\nEqKe//tYq3bvNWuX2fFs6duvq3KJ4hrWuaPiVyxJ8yZekhZs3KQWNasrb3BOSVLnxg0V5O+v3w8d\n1l8XLti0z2xdnjr3pZYyN3Ru1NBibrDnOs1M3ksZb/J/H/TrLUkyGAya8cpgUztbj+fd9oW1WDK6\nzbbkWltfw6S3j5IN/HyyXu/eVWfmTrd6/ttyTGzNZ/bmeEfvX2v7IaXM7t/UUo+Np2Z/rZc6tNNz\nn39p9TmOOj+z4zjDGMMYwxjDGCNlnzFGytj5lpn3MM7cP/aer/bkE09yTxaLA3Pk0Jyhr2jPF5/o\n1Sc7qFzRIoqMidGCjb+rw7tj1WTYKF2Jum71+akTrLWT5N15CxQZE6Ox/XqpWfWqyunvrwaVKui1\nrp2dtWk2aV69mqqVKqkLEdc0f+Mms8c+X/6TBrdvZ/W5yS9ecj0Zqu7jxqtyieLaOH6s6pa3/Onv\nyK5P6qGKFRTg56dHaz941yLLu98u0K4//9I7vUL1VOsWKpQ7t3L6++vhqlU0d+grdm/r04+2VIVi\nRZUrKFDDnuwgSVqTKuE46jg5IvbR33yns+HhpliCAwLUvHo1vd+3l05fvqJ3vp1varth/0FJ0v35\n8inI319+Pj4qV7SIPnuuv9k63/l2vk5fvqIxfcLUsmYN5fT3V6PKlfRR/6d06tIlTfj+R7u2815D\nPiAfmPXpoOM0rHNHSdJXP/+i67GxpuU34+L05YqVGvpv/5J9170zPNW6hWm/jOz6pCTp5x279GL7\ntmmW/7Jzl9lzs2t+Sb7Wby//XqdmT9NbYd00bNrMu+aLu8no9TigTWs1rlLJ7Ny5duOG3p23IE3b\nCf37KX9IiIoXyK9PBz4jSRq3YLFZm8xce6cvX1HT4a8rtGljje3by2q7mavWqk+Ku7ty+vvryUYN\nJEmzHPwjRHeTMjcM75L0gV/q3JDR69TevJfaLzt3a9SsuUkxhHVXl8YNzR635XhmVEa32ZZca+tr\nGFuM6tZZDSpVUE5//7ue/5L1Y2JPPrMnx1vjzNzvyP0rpR0bgwMC1LhKJQ1o0zrd5zni/MyO4wxj\njHWMMeYYYxhjrMlKY0wye8+3zLyHcdX7L1vO16zKo4vFXgaDJOlOYqLVNncSE03tUqtSsoQ+6Ndb\nh6Z8rqNfT9Lr3bsop7+/th49ppEzZlt8jj3W7NknSWpW3fxT4PoVy2d63Zn1UoekFwOf/bjctGz9\nvgNKTEzUIzWqWX1eyoLYlQVztfTt1/VgmQestrf3KwhLNifNI/VEvbppHqvxQCm7B8CaD5Q2/btw\nvrySpAvXrpm1cdRxckTsP+/YaTGWR2pUT3p8+07Tso4N6kuSuo8br9J9B2jAxC+1aNNm5Q8JMevr\np21Jz2ld60GzdTauUkmStCLFOrMy8kHGkQ/+46jjVLtsGTWrXlVRMbH66udfTctnr16nuuXLqmLx\nYqZl9lz3zpByv9yXJ4/F5ff/u7/+iTDfX9klv1jjZTCoSL686tW8qSY+N0Bbjx7T0K9nZGqdGbke\nG1WuZPZ38rmzek/auzFKFCpo+jt5/ssjZ86atcvotXf83Hk1G/66CubOpRFdnrTYRkr6Ovs/VyPU\n8sEaZsv7tUx6Y//Nug0u/VVvs9yQN+kaSJ0bMnqd2pv3Uu7b4+fOq+f4j5VoNKpn84c1qnuXNG1t\nOZ4ZldFttiXX2voaxhap87O18z+ZtWNiTz6zJ8db48zc78j9K1kfGxtWqmj1OY46P7PzOMMYY44x\nJi3GGMYYa7LSGCNl7HzLzHsYV73/suV8zao8es7i4MAARcXEKiom1vQVk9Su3bihkMDAu67rgcKF\nNbpnqB6qWEFt335Pv+7aY1csli6K8OtJn/zmDwkxW556rhR36P5wY70x+xvtO/m31u87oGbVq+rz\nZSs0uH1bh/YTmCOHXe2TL5xCKS72zAgOCDD9288n6XROPa2Ao46TI2JPvlsgdSz5Q5LmtLkcFWVa\n9vVLz+vxurU1/7dNWr/vgGauWqOZq9aoeIH8WvLma6peupTZc4r3tjyv3MkLFzMcrychH2Qc+eA/\njjxOwzp31Pp9BzRx6XINbt9WPt7e+viHpZoz9GWzdvZc986Qcr+k/DDF0vLU+yu75BdbNK1WRZK0\nZu++TK0nI9dj6nkPk8+dlHegRcbE6KPFP+rHLVt1Pvyqbty6ZXrsanS02fMzeu21GPWWrsfe1Nnw\ncH23YZNCmza22G7GqjX6JyJC/k9YvmP/XPhVrdq1R4/WftDi445my7me0evU3ryXLComVh3HfKCo\nmFg1rFRRXw1+3uxxe45nRmV0m23Jtba+hrFF6vxs6fxPydoxsTef2ZrjrXFm7nfk/pWsj42p/07m\nyPOTcSYJYwxjjCWMMYwx1mSlMSaj51tm3sO46v2XLedrVuXRxeJyRYpox/E/dej0GdMnMqkdOn1G\nZYvcb7bMr92TOjt3usUfDWpUOekT8pS3+2dU/pAQXYqMVPj167o/b17T8uQXXJYYDAYZjUbFJ9yR\nr4+3pKRk7mh+Pj4a1LaN3pzzrT79cZlKFiqorUePWZzzyZUK5c6tc+FXdenaNbNPlpwpI8fJEkfE\nXjBXLv0TEWEhlmjT48kMBoM6Nqivjg3qK9Fo1B+Hj2jcgsVatXuvnv70C+2cOOHfuHLp/NUIXZ4/\nR3lyWi6i3gvIBxlHPviPo/KBJLWsWUM1HiilvX/9rblr1ys4MFBF8uVT/QrmdyjYc92nx1XnS0rZ\nJb/YIvmFX8yt22bL7T0uGbkeo2JilSvovw/Cks+dArn+ewEc+sFHWrNnn97s0U0vtHvc9KGapXnW\nM3rtTXxugK7HxOjpT7/Q4MlT1bhKJRXNn8+sTXzCHX23YaP+nD5ZJQsVSrOOcQsW66258zRr9do0\nb+TdcY4nc9R1aotEo1Fh/5ug4+fOq9R9hbT4jRGmNxjJ7DmeGeXMbbb1NYwtrkZHmxWzLJ3/trA3\nn9ma462xd//ac/47cv9K1sdGa/MFO/L8ZJxJwhjDGOMojDGMMcmPp+TOMcYV51tqztw/2YVHT0PR\ntm5tSdKsNdbnHZq5aq3a1KlltsxoNGr51u0W2+/695dVa5YpbfHxu0l5Qrd8MOkW9nV7D5i1+ePw\nUavPT/4VzJS3pu89edLuOJI/0YpPuKPY27dVKLR3mjYDHmutwBw5tHLnbr381TQ91aqlAvz87O7L\nkTo2SJrMfamF47P16DE99Mpwh/eZkeNkiSNif7xebYuxrP33LoLH69YxLfNt20nnwq9KSvrErFHl\nSpo3Yqgk6ejZc6Z2TzxUT5L024FDafr7/dBhNXz17j+8lxWQD6wjH9jOUfkg2bDOSefAR98v1fjF\nP5jmqkvJnus+PY46X+yRXfKLLZLnb6tdtozZ8owcF3uvx61Hj5n9nXzutKz531dwk8/hVzo+YXoR\nfjs+3uL6MnrtdXionnq3aK729espMiZGz3z6eZq7J1Zs36EKRYtafBMvSb1bNJe3l5eWb9uR5m4S\ne/elLbnPVo66Tm3x2sw5+nXXHuUOCtLy0W+Y3fWSPK7YczyljO0LZ26zra9hbJE6P1s6/22RkXxm\nS463xt79a8/578j9K1kfG7cdPW6xvSPPT8aZJIwxjDGOwhjDGCN51hhj7/nmCM7cPxnhyHziKh5d\nLH6xfVtVLF5Mc9as04uTp+rQ6TO6HR+v2/HxOnjqtJ6f9JV2/nnC4tdqhk2bpU9/XKbTly7rdny8\nLl6L1HcbNqnPR58qwM9P4/pm/uC81aO7cgcF6fVZc7V+3wHduHVLmw8f0de/rLL6nBb/zpEy4fsf\nFRUTq2PnzmvmqrV29121VAlJ0o7jf2rF9p16qGKFNG3yBudUr0eayWg0atXuvXqu7WN29+Nob4V1\nU+USxTX6m+80/dfVuhQZqRu3bmnV7r3q9/FEvd+3p+P7zMBxSv5hL0fH/nZYd5UoWMAUS/TNm1q/\n74DemP2NShQsoLfCupm1Hzhxkg6fOavb8fG6FBmp8Yt/kCS1SjFH19th3VXm/sIaPHmqvt+8RVej\noxV986Z+2r5T/T7+XOP6Wf9xiKyEfGAd+cCOPh2UD5I92fAhlS58n/66cEF3EhP1mIWvPNp73Vvj\nqPPFHtklv1iTaDTqn4gIzV23QS9N+VoBfn4a0yfMrE1Gjou91+OHi77XliNHdePWLdO5kydnTr3V\n479zJ/mbEh8uXKLImBhFRN/QG7O/tbi+zF57X77wrArkCtHavfv1xfKfzB6bvWad+rRoZvW5RfLl\nVasHayguIUHz1v9m9pi9+9KW3GcrR12nd/PNut/08ZKl8vH21vzXhql80SIW29lzPKWM7Qtnb7Mt\nr2Gk9HOsJE1d+as2Hz6S7vlvi4zkM1tyfHr92bN/7T3/bd2/trA0Nm45clQfLvreYntHnp/ZeZxh\njLGMMSbjGGMYYzxxjLH3fHMEZ+8fezkyn7iKwZiZCTWil0txx+7abOGP+9TtmW8yNBn29dhYTVy6\nQiu279Cf5y8o5tYtBebIoQfuv0+P16mtVzq2N/vajCQdOHVaSzZv0cYDh3T03DlFRN+Qt5eXiubP\nryZVK2tIxydUoVhRU3t7b39PuR2Hz5zViBmztengYXkZDGpStbI+G/iMyjz9bJq2UtJXnYdMna41\ne/Yp9nacmlWrqomD+qt03wFp1p86rpTr2vXnXxowcZJO/HNBVUuV0MxXBqf5+r0knfjngioPfEFd\nGjfUN8OHpHnc2rand6wsPSd1+/Riv3HrlsYv/kGLf/9Dpy5eUnBAgB4s84BGde9s9gML1tZh73LJ\n8nH6uP9TKt9/kLwMBt1ebv5iOHldqbcrs7FL0qXISL3z7Xz9tG2nLkdFqWCuXGpTt7ZG9+xuNlXC\nH4ePavqvq/XbwUP65+pVBebIoRIFC6pL44Ya3L6t2XxJ127c0Nj5i/Xjlm06fzVceXMGq065shrZ\n9UnVq1BO9vBt20kLpvVU1w7V7XqePQz5h2neiFfT/CLv3ZAPLPdLPrB9ueS4fJBs6spf9fykrzR7\n6Mvq0bSJxTa2Xvfpxe2I8yUj+8uR+SW5L0/LMeld94E5cqhogfxqUqWyXu7QLs0bL3uOS0r2XI/7\nv/xMr349U1uOHJVRST+WMv7pvma563JklEbMmKVVu/cq8kaMyha5X69376IeH/73VcGMXHv5u/U0\n+xre/NeGqfu48Wni3frJeNV/ZZjp7+bVq+nX90enu12p47J3X6aX+zJyrmf0Ok29nvT6Ce7UTbfi\n0r+bJn7FEruPZ0b2RWa2+W77057XMNZybPLyE9On6KWvpmnjgUNKNBotnv+2HBMpY/nsbjneEftX\nsu/8t2f/2irl2GiQ9FDFCprQv5+qDXopTf+OPD8lx44zizZtVo8PJ8gYnjZPOUrXp+fKeDWnvhs5\n1Kb2jDGMMRJjDGNM9h1j7DnfHPkexln7JyOx2Pp+3ZrQDz6SId8NLZxuxweowe0kP/t+xD2FRR5f\nLM6q7lZccJVEo1El+zyjRaNGZOhN/b3sn4gIlej9jArmzqXz38x0dzgewxMLOVkd+cDzkQ9chxyT\nhOsRSJ+njJ3IWjyxWOwOjDFA+hhjkJW4o1js0dNQIPN+3rFTxQoUyPYvEnzbdtJfFy6YLdt08LAk\nqWnVKu4ICXA58kES8gE8AdcjAMBZGGMAAJlBsfge5Nu2k7YdPa5rN27ovXkLNbLrk+4OySO8+OXX\nOnnhomJu3dK6ffs1auYchQQG6q2w7u4ODXAa8oFl5AO4A9cjAMBZGGMAAI7i4+4A7kUp5yrxbdvJ\nLV9taDR0pPIFB2tQuzZqV89xv66aVf36/mh99fOvajJslK5GRytPziA1rVZVb4d1tzrxP+AI5APP\nQz6AO3E9AnfnCWNnVmfrbzCwb+8tjDHA3THGZB5jzL2PYrETuPuCcHf/nqh59WpqXr2au8NANuTu\n69Hd/Xsi8gHchesRsA3XSuaxD7MfjjlgG66VzGMf3vuYhgIAAAAAAAAAQLEYAAAAAAAAAECxGAAA\nAAAAAAAgisUAAAAAAAAAAFEsBgAAAAAAAACIYjEAAAAAAAAAQBSLAQAAAGzvwQIAACAASURBVAAA\nAACiWAwAAAAAAAAAEMViAAAAAAAAAIAoFgMAAAAAAAAARLEYAAAAAAAAACCKxQAAAAAAAAAAUSwG\nAAAAAAAAAEjycWVn035Z5cruAHiwdfsOKComxt1hALhHkWMAIPvZdeKkS/o5efES720BAC5x8uIl\nPZAvyKV9uqRYXKRwLnl7e+m5L6a4ojsAmeDt7aUihXM5tY9i9+fWtF9WaZpTewHgicgxAABnKl4k\nj1PXX6xIbi1aul/PffGXU/sBACBZs1YPu7Q/g9FoNGb42dHLpbhjDgwHWUnXp+dKkhZO7+XmSABk\nJYb8w7RgWk917VDd3aEAsGLhj/vU7ZlvZAwf7+5QAJdjnAKQ1ZC3AJgJbif5lc/osxcxZzEAAAAA\nAAAAgB+4AwAAAAAAAABQLAYAAAAAAAAAiGIxAAAAAAAAAEAUiwEAAAAAAAAAolgMAAAAAAAAABDF\nYgAAAAAAAACAKBYDAAAAAAAAAESxGAAAAAAAAAAgySdTz85RzkFhIEvyCk76v19598YBIOvxuZ/c\nAXgynytJ/+c6RXbFOAUgqyFvAZAkg0HyKZypVWSuWOxXnmSUnfnMTfp/cDv3xgEg6wmoRe4APFnA\nzaT/c50iu2KcApDVkLcAOAjTUAAAAAAAAAAAKBYDAAAAAAAAACgWAwAAAAAAAABEsRgAAAAAAAAA\nIIrFAAAAAAAAAABRLAYAAAAAAAAAiGIxAAAAAAAAAEAUiwEAAAAAAAAAolgMAAAAAAAAABDFYgAA\nAAAAAACAKBYDAAAAAAAAAESxGAAAAAAAAAAgisUAAAAAAAAAAFEsBgAAAAAAAACIYjEAAAAAAAAA\nQBSLAQAAAAAAAACiWAwAAAAAAAAAEMViAAAAAAAAAIAoFgMAAAAAAAAARLEYAAAAAAAAACDJx90B\nAADuXZGRkdq5c2ea5QcOHFDevHlNfxcvXlzlypVzZWgAAAAAACAVisUAAKcZNmyYpk2blmb5mDFj\nNGbMGNPfISEhioqKcmVoAAAAAAAgFaahAAA4TbNmzWQwGNJt4+vrq+bNm7soIgAAAAAAYA3FYgCA\n03To0EEBAQHptklISFDv3r1dFBEAAAAAALCGYjEAwGkCAwPVsWNH+fn5WW0TFBSkNm3auDAqAAAA\nAABgCcViAIBT9ejRQ3FxcRYf8/X1VZcuXZQjRw4XRwUAAAAAAFKjWAwAcKpWrVopT548Fh+Lj49X\njx49XBwRAAAAAACwhGIxAMCpfHx81L17d4tTUeTLl0/NmjVzQ1QAAAAAACA1isUAAKcLDQ1NMxWF\nn5+fwsLC5O3t7aaoAAAAAABAShSLAQBO16hRIxUpUsRsWVxcnEJDQ90UEQAAAAAASI1iMQDA6QwG\ng8LCwsymoihRooTq16/vxqgAAAAAAEBKFIsBAC6RcioKX19f9ezZ080RAQAAAACAlCgWAwBcokaN\nGipdurQkKT4+Xl27dnVzRAAAAAAAICWKxQAAl+nbt68kqWLFiqpWrZp7gwEAAAAAAGZ83B0AgHtX\nXFyc5s+fr1u3brk7FHiYcuXKaerUqe4OAx6kVatWKlmypLvDAAAAAIBsjWIxAKdZsWKF+vTp4+4w\n4IGWLl2qpUuXujsMeJDQ0FDNmzfP3WEAAAAAQLZGsRiA0yQkJEiSlu866+ZIAHiyD0c8Z8oXAAAA\nAAD3Yc5iAAAAAAAAAADFYgAAAAAAAAAAxWIAAAAAAAAAgCgWAwAAAAAAAABEsRgAAAAAAAAAIIrF\nAAAAAAAAAABRLAYAAAAAAAAAiGIxAAAAAAAAAEAUiwEAAAAAAAAAolgMAAAAAAAAABDFYgAAAAAA\nAACAKBYDAAAAAAAAAESxGAAAAAAAAAAgycfdAQBAeq5cPK+n2zVQkeKlNfn79e4Ox2O1q1XM4vKA\nwJzKV/A+VaxRW6079lD5KjUd1s/yXWfvutyRUm9jcK48mrduv9myW7Ex6tK4gtkyW+NxxTa4yp+H\n9mnmZ+9r7NSFOnXiqH5b+aN2/bFeF86ekiQVuO9+VX6wvjr1GqjCxUpaXMfebZu0cPrnOnHkgCSp\nbKVq6vLUC6pRr7FZu1EDuqrfS6+rbOXqztwkAAAAAIALcGcxAI+2ZtlCGRMTde7UCR3Zt9Pd4Xis\n5bvOmhU4l+86q2U7z2j6T1s0cPi7io68pqF9ntDE94YpPi4uU/3Ys9yRlu86q5YdukuSOvcdlKZQ\nLEn+gUFJ7dp3U58XX7MrrqxeIE626sfv9ObzPfREj6clSS92a6ntm1brqZff0KxfdmrWLzvV54XX\ntGPTGj3f9RHt2/57mnWsXbFIbw7qoZJlK2ja8s2atnyzSpQpr7eeD9P6n5eYtW0X+pTeHBSqX3+Y\n55LtAwAAAAA4D8ViAB7LaDRqzfKFqt2wuSRp9bIFbo4oazEYDAoOya0a9Rrr9QnT1PuFEVr943xN\nen+ku0PLsJZPdJUkrfvpeyUm3rHY5tbNWP2xbqWat+3sytA8wq7N6/XFmBF6ftQHqt+0tWn58HFf\nqka9xgrKGaygnMGq17SVBr/1keLj4jT9k/fM1hERfllTPnhDFarVUv+h7ygkd16F5M6r/kPfUbkq\nNTV53OuKjAg3tX+o2aN6duT7mvT+SO3azN3/AAAAAJCVUSwG4LH279is4JA8eubVtyVJv69aoVs3\nY90cVdbVpd8LqlKrvtauWKSDu7a6O5wMqVi9ju4vXkoRVy5pz9ZNFttsXvuTKtWoq7z5C7o4OvdK\niI/XF++PVIVqtdW4VTvT8uW7zqrEA+XTtK9UvbYk6fzpk2bLV/84X7duxqpl+24yGAym5QaDQS3b\nd9PN2BtavXS+2XOaPtZR5arU1KSxrykhIcGRmwUAAAAAcCGKxQBs8sorr6hUqVJ66623dOTIEZf0\nuXrpArV4oquKlCititXr6GbsDW1e85NL+r5XPfZkL0lJUxVkVY+06yJJWrt8ocXH1/x73mQ3f6z9\nWeGX/lHTxzrY1D7qWoQkqVS5SmbL925PKsKXszC/dfKc13u2bEzz2MOPdtCVi+f1x9qf7YobAAAA\nAOA5+IE7ADY5efKkTp06pXHjxum9995TxYoV1a9fP3Xr1k3Fixd3eH8xN6K1c/M6DRyR9BX5lu27\n6ci+HVq9dL6pWCil/dGzR5/sqedHjZMkhV+6oH5t6poeS56TNioiXN9+9bG2b1ytqIhwheTJpzqN\nHlHYc0OVJ18Bi+ueuvR3zfx0jPbv/EMx0dfN1rd32yYtnz9Th/ZsU9ztWypWqpye7POcmrR+Is12\nnfnruGZ8NkaHdm+TweClCtUeVP9XR2tQl+Zp4rQnVltVqPagJKWZ//na1SuaN2WCdvy+VlER4cqV\nN7/qNG6hsGdfVe68+e3uJyVb94+t+7v54531zeSPtG3DKsVEX1dQcIjpeRfOndbZU3+pbpOWDts2\ne3/UL+Xy2b/s1Ff/e1O7t26Ur4+v6jRpoQHD3lXM9Sh9Nf4tHdi5RTn8/VWrQTP1HzrabFsk+47/\nto2rJEllKlW76zZJ0vqfv5ckhQ54xWz52b9PSJIKFLo/zXMK3FdEknTu1Ik0j5X79wfutm1cZfHc\nBwAAAAB4Pu4sBmCX5K+YHzlyRKNGjVKJEiVUvnx5jR49Wn///bfD+tn4y4+qWa+JgkNyS5Iat2wr\n/4BAHdqzXRfOnjK1W77rrBo80kaS1Lnv86ZCsSTlL1RYPZ8bpkfadjEV8yIjwjWkdzttWbdSL709\nQd+tP6jh477Unq0bNaxfe1NhMnndyb4c+5o69hqoOb/u0uiJc8xifXNQD3l5eWnqj5v01Q8bFZI7\nj8aPel67t/xm1u7CudMa/nRH/X38sN78ZIbm/LpToQNe1udjRljs055YbZUnX9LUDBHhl03Lrl29\noiG92mr7pjUa8u6nmrf+gF555xNt2/CrXu3dzmx+2oywdf/Yur/zFyqsGnUbKS7utn77danZY2uX\nL1TTRzvIx8fHYdtm74/6pVw+a+JY9Rw0XLNW7lCTR9tr3YrFmvD6i5r28TvqO3iUZq7crgbNH9Pa\nFYs087P3zdZj7/H/6+ghSVLBwkXvuk0njx3SopmT1PWpF1WrQVOzx2KioyRJ/oGBaZ6XvOzGv21S\nKvBvvyf/jQMAAAAAkPVQLAaQYcmF4z///FNjxozRAw88oHr16umzzz7TlStXMrXu1cvMpxLwDwxS\nwxaPS5LWLDOffqBzn0GSpJWL5yg25oZpedztW1qxYKae7POcadm3Uybo8oVz6v3CSNWs30T+gUGq\nXLOunnn1bV06f1ZL5kyxGE/Xp19Uxeq15ZfDX7UaNktTKOz/6miF5M6rAvcV0cDh70qSFk6faNbm\nu68+Vkz0dfUdPErV6jSUf2CQKlavo25Pv2ixz4zGmh6jMVGSzOai/XbyRwq/9I8proDAnKpet5H6\nDH5Nly+c07dTJtjdT2q27J+U7ra/WzzRTZK0NsW5YExM1Nrli9WifTeXblt6WnUIVbFSZRSUM1hd\nn0o6zjt+X6snQp82Le/y7/Kdm9eZPdfe43/1ykVJUlBO87uTU/v7+GG99UJPPd6lt3o9P9xRm6qc\nIbmS4rh80WHrBAAAAAC4FtNQIFNOnjypqVOnujsMuMCZM2esPmY0GnXnzh1J0o4dO7Rjxw4NHz5c\nNWumnfPUpr7+Oq6rly+q5kNNzJa3bN9da5cv0rqfFqvnc0Nl8Er6vKts5eqqVqeh9u/YrJ8XzVHn\nvknF4zXLFqp81ZoqVrqsaR3bN66WJNVq2Mxs3VUerGd63FIBrVzlGlbjTV3IvL94qaTtOPmn2fI9\n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\n",
    691       "text/plain": [
    692        "<IPython.core.display.Image object>"
    693       ]
    694      },
    695      "execution_count": 5,
    696      "metadata": {},
    697      "output_type": "execute_result"
    698     }
    699    ],
    700    "source": [
    701     "# The show_graph() method of pipeline objects produces a graph to show how it is being calculated.\n",
    702     "pipe.show_graph(format='png')"
    703    ]
    704   },
    705   {
    706    "cell_type": "code",
    707    "execution_count": 6,
    708    "metadata": {
    709     "collapsed": false,
    710     "scrolled": true
    711    },
    712    "outputs": [
    713     {
    714      "data": {
    715       "text/html": [
    716        "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
    717        "<table border=\"1\" class=\"dataframe\">\n",
    718        "  <thead>\n",
    719        "    <tr style=\"text-align: right;\">\n",
    720        "      <th></th>\n",
    721        "      <th></th>\n",
    722        "      <th>business_days</th>\n",
    723        "      <th>previous_amount</th>\n",
    724        "      <th>previous_date</th>\n",
    725        "    </tr>\n",
    726        "  </thead>\n",
    727        "  <tbody>\n",
    728        "    <tr>\n",
    729        "      <th rowspan=\"30\" valign=\"top\">2013-11-01 00:00:00+00:00</th>\n",
    730        "      <th>Equity(2 [AA])</th>\n",
    731        "      <td>1323</td>\n",
    732        "      <td>0.0</td>\n",
    733        "      <td>2008-10-07</td>\n",
    734        "    </tr>\n",
    735        "    <tr>\n",
    736        "      <th>Equity(24 [AAPL])</th>\n",
    737        "      <td>138</td>\n",
    738        "      <td>50000.0</td>\n",
    739        "      <td>2013-04-23</td>\n",
    740        "    </tr>\n",
    741        "    <tr>\n",
    742        "      <th>Equity(62 [ABT])</th>\n",
    743        "      <td>100</td>\n",
    744        "      <td>3000.0</td>\n",
    745        "      <td>2013-06-14</td>\n",
    746        "    </tr>\n",
    747        "    <tr>\n",
    748        "      <th>Equity(67 [ADSK])</th>\n",
    749        "      <td>358</td>\n",
    750        "      <td>30.0</td>\n",
    751        "      <td>2012-06-19</td>\n",
    752        "    </tr>\n",
    753        "    <tr>\n",
    754        "      <th>Equity(76 [TAP])</th>\n",
    755        "      <td>588</td>\n",
    756        "      <td>1200.0</td>\n",
    757        "      <td>2011-08-02</td>\n",
    758        "    </tr>\n",
    759        "    <tr>\n",
    760        "      <th>Equity(114 [ADBE])</th>\n",
    761        "      <td>406</td>\n",
    762        "      <td>2000.0</td>\n",
    763        "      <td>2012-04-12</td>\n",
    764        "    </tr>\n",
    765        "    <tr>\n",
    766        "      <th>Equity(122 [ADI])</th>\n",
    767        "      <td>769</td>\n",
    768        "      <td>1000.0</td>\n",
    769        "      <td>2010-11-22</td>\n",
    770        "    </tr>\n",
    771        "    <tr>\n",
    772        "      <th>Equity(128 [ADM])</th>\n",
    773        "      <td>1750</td>\n",
    774        "      <td>370.0</td>\n",
    775        "      <td>2007-02-16</td>\n",
    776        "    </tr>\n",
    777        "    <tr>\n",
    778        "      <th>Equity(166 [AES])</th>\n",
    779        "      <td>177</td>\n",
    780        "      <td>300.0</td>\n",
    781        "      <td>2013-02-27</td>\n",
    782        "    </tr>\n",
    783        "    <tr>\n",
    784        "      <th>Equity(168 [AET])</th>\n",
    785        "      <td>25</td>\n",
    786        "      <td>750.0</td>\n",
    787        "      <td>2013-09-27</td>\n",
    788        "    </tr>\n",
    789        "    <tr>\n",
    790        "      <th>Equity(185 [AFL])</th>\n",
    791        "      <td>843</td>\n",
    792        "      <td>3.0</td>\n",
    793        "      <td>2010-08-10</td>\n",
    794        "    </tr>\n",
    795        "    <tr>\n",
    796        "      <th>Equity(197 [AGCO])</th>\n",
    797        "      <td>331</td>\n",
    798        "      <td>50.0</td>\n",
    799        "      <td>2012-07-26</td>\n",
    800        "    </tr>\n",
    801        "    <tr>\n",
    802        "      <th>Equity(239 [AIG])</th>\n",
    803        "      <td>66</td>\n",
    804        "      <td>1000.0</td>\n",
    805        "      <td>2013-08-01</td>\n",
    806        "    </tr>\n",
    807        "    <tr>\n",
    808        "      <th>Equity(300 [ALK])</th>\n",
    809        "      <td>287</td>\n",
    810        "      <td>250.0</td>\n",
    811        "      <td>2012-09-26</td>\n",
    812        "    </tr>\n",
    813        "    <tr>\n",
    814        "      <th>Equity(328 [ALTR])</th>\n",
    815        "      <td>47</td>\n",
    816        "      <td>30.0</td>\n",
    817        "      <td>2013-08-28</td>\n",
    818        "    </tr>\n",
    819        "    <tr>\n",
    820        "      <th>Equity(337 [AMAT])</th>\n",
    821        "      <td>434</td>\n",
    822        "      <td>3000.0</td>\n",
    823        "      <td>2012-03-05</td>\n",
    824        "    </tr>\n",
    825        "    <tr>\n",
    826        "      <th>Equity(338 [BEAM])</th>\n",
    827        "      <td>61</td>\n",
    828        "      <td>3.0</td>\n",
    829        "      <td>2013-08-08</td>\n",
    830        "    </tr>\n",
    831        "    <tr>\n",
    832        "      <th>Equity(353 [AME])</th>\n",
    833        "      <td>521</td>\n",
    834        "      <td>100.0</td>\n",
    835        "      <td>2011-11-03</td>\n",
    836        "    </tr>\n",
    837        "    <tr>\n",
    838        "      <th>Equity(357 [TWX])</th>\n",
    839        "      <td>192</td>\n",
    840        "      <td>4000.0</td>\n",
    841        "      <td>2013-02-06</td>\n",
    842        "    </tr>\n",
    843        "    <tr>\n",
    844        "      <th>Equity(368 [AMGN])</th>\n",
    845        "      <td>231</td>\n",
    846        "      <td>2000.0</td>\n",
    847        "      <td>2012-12-13</td>\n",
    848        "    </tr>\n",
    849        "    <tr>\n",
    850        "      <th>Equity(410 [AN])</th>\n",
    851        "      <td>336</td>\n",
    852        "      <td>250.0</td>\n",
    853        "      <td>2012-07-19</td>\n",
    854        "    </tr>\n",
    855        "    <tr>\n",
    856        "      <th>Equity(438 [AON])</th>\n",
    857        "      <td>401</td>\n",
    858        "      <td>5000.0</td>\n",
    859        "      <td>2012-04-19</td>\n",
    860        "    </tr>\n",
    861        "    <tr>\n",
    862        "      <th>Equity(448 [APA])</th>\n",
    863        "      <td>126</td>\n",
    864        "      <td>30.0</td>\n",
    865        "      <td>2013-05-09</td>\n",
    866        "    </tr>\n",
    867        "    <tr>\n",
    868        "      <th>Equity(455 [APC])</th>\n",
    869        "      <td>1354</td>\n",
    870        "      <td>5000.0</td>\n",
    871        "      <td>2008-08-25</td>\n",
    872        "    </tr>\n",
    873        "    <tr>\n",
    874        "      <th>Equity(460 [APD])</th>\n",
    875        "      <td>554</td>\n",
    876        "      <td>1000.0</td>\n",
    877        "      <td>2011-09-19</td>\n",
    878        "    </tr>\n",
    879        "    <tr>\n",
    880        "      <th>Equity(465 [APH])</th>\n",
    881        "      <td>206</td>\n",
    882        "      <td>10.0</td>\n",
    883        "      <td>2013-01-17</td>\n",
    884        "    </tr>\n",
    885        "    <tr>\n",
    886        "      <th>Equity(510 [ARG])</th>\n",
    887        "      <td>268</td>\n",
    888        "      <td>600.0</td>\n",
    889        "      <td>2012-10-23</td>\n",
    890        "    </tr>\n",
    891        "    <tr>\n",
    892        "      <th>Equity(559 [ASH])</th>\n",
    893        "      <td>122</td>\n",
    894        "      <td>600.0</td>\n",
    895        "      <td>2013-05-15</td>\n",
    896        "    </tr>\n",
    897        "    <tr>\n",
    898        "      <th>Equity(607 [ATML])</th>\n",
    899        "      <td>392</td>\n",
    900        "      <td>200.0</td>\n",
    901        "      <td>2012-05-02</td>\n",
    902        "    </tr>\n",
    903        "    <tr>\n",
    904        "      <th>Equity(630 [ADP])</th>\n",
    905        "      <td>625</td>\n",
    906        "      <td>35.0</td>\n",
    907        "      <td>2011-06-10</td>\n",
    908        "    </tr>\n",
    909        "    <tr>\n",
    910        "      <th>...</th>\n",
    911        "      <th>...</th>\n",
    912        "      <td>...</td>\n",
    913        "      <td>...</td>\n",
    914        "      <td>...</td>\n",
    915        "    </tr>\n",
    916        "    <tr>\n",
    917        "      <th rowspan=\"30\" valign=\"top\">2013-11-25 00:00:00+00:00</th>\n",
    918        "      <th>Equity(38691 [CFN])</th>\n",
    919        "      <td>77</td>\n",
    920        "      <td>750.0</td>\n",
    921        "      <td>2013-08-08</td>\n",
    922        "    </tr>\n",
    923        "    <tr>\n",
    924        "      <th>Equity(38817 [VRSK])</th>\n",
    925        "      <td>112</td>\n",
    926        "      <td>300.0</td>\n",
    927        "      <td>2013-06-20</td>\n",
    928        "    </tr>\n",
    929        "    <tr>\n",
    930        "      <th>Equity(38921 [LEA])</th>\n",
    931        "      <td>170</td>\n",
    932        "      <td>750.0</td>\n",
    933        "      <td>2013-04-01</td>\n",
    934        "    </tr>\n",
    935        "    <tr>\n",
    936        "      <th>Equity(38936 [DG])</th>\n",
    937        "      <td>175</td>\n",
    938        "      <td>500.0</td>\n",
    939        "      <td>2013-03-25</td>\n",
    940        "    </tr>\n",
    941        "    <tr>\n",
    942        "      <th>Equity(38989 [AOL])</th>\n",
    943        "      <td>100</td>\n",
    944        "      <td>150.0</td>\n",
    945        "      <td>2013-07-08</td>\n",
    946        "    </tr>\n",
    947        "    <tr>\n",
    948        "      <th>Equity(39053 [CIT])</th>\n",
    949        "      <td>127</td>\n",
    950        "      <td>200.0</td>\n",
    951        "      <td>2013-05-30</td>\n",
    952        "    </tr>\n",
    953        "    <tr>\n",
    954        "      <th>Equity(39095 [CHTR])</th>\n",
    955        "      <td>497</td>\n",
    956        "      <td>321.0</td>\n",
    957        "      <td>2011-12-29</td>\n",
    958        "    </tr>\n",
    959        "    <tr>\n",
    960        "      <th>Equity(39546 [LYB])</th>\n",
    961        "      <td>133</td>\n",
    962        "      <td>10.0</td>\n",
    963        "      <td>2013-05-22</td>\n",
    964        "    </tr>\n",
    965        "    <tr>\n",
    966        "      <th>Equity(40430 [GM])</th>\n",
    967        "      <td>243</td>\n",
    968        "      <td>5500.0</td>\n",
    969        "      <td>2012-12-19</td>\n",
    970        "    </tr>\n",
    971        "    <tr>\n",
    972        "      <th>Equity(40597 [FLT])</th>\n",
    973        "      <td>259</td>\n",
    974        "      <td>200.0</td>\n",
    975        "      <td>2012-11-27</td>\n",
    976        "    </tr>\n",
    977        "    <tr>\n",
    978        "      <th>Equity(40755 [NLSN])</th>\n",
    979        "      <td>84</td>\n",
    980        "      <td>500.0</td>\n",
    981        "      <td>2013-07-30</td>\n",
    982        "    </tr>\n",
    983        "    <tr>\n",
    984        "      <th>Equity(40852 [KMI])</th>\n",
    985        "      <td>28</td>\n",
    986        "      <td>250.0</td>\n",
    987        "      <td>2013-10-16</td>\n",
    988        "    </tr>\n",
    989        "    <tr>\n",
    990        "      <th>Equity(41047 [HCA])</th>\n",
    991        "      <td>572</td>\n",
    992        "      <td>80.8</td>\n",
    993        "      <td>2011-09-15</td>\n",
    994        "    </tr>\n",
    995        "    <tr>\n",
    996        "      <th>Equity(41149 [QIHU])</th>\n",
    997        "      <td>490</td>\n",
    998        "      <td>50.0</td>\n",
    999        "      <td>2012-01-09</td>\n",
   1000        "    </tr>\n",
   1001        "    <tr>\n",
   1002        "      <th>Equity(41182 [GNC])</th>\n",
   1003        "      <td>202</td>\n",
   1004        "      <td>250.0</td>\n",
   1005        "      <td>2013-02-14</td>\n",
   1006        "    </tr>\n",
   1007        "    <tr>\n",
   1008        "      <th>Equity(41462 [MOS])</th>\n",
   1009        "      <td>527</td>\n",
   1010        "      <td>1200.0</td>\n",
   1011        "      <td>2011-11-17</td>\n",
   1012        "    </tr>\n",
   1013        "    <tr>\n",
   1014        "      <th>Equity(41636 [MPC])</th>\n",
   1015        "      <td>42</td>\n",
   1016        "      <td>2000.0</td>\n",
   1017        "      <td>2013-09-26</td>\n",
   1018        "    </tr>\n",
   1019        "    <tr>\n",
   1020        "      <th>Equity(41759 [DNKN])</th>\n",
   1021        "      <td>337</td>\n",
   1022        "      <td>15.0</td>\n",
   1023        "      <td>2012-08-09</td>\n",
   1024        "    </tr>\n",
   1025        "    <tr>\n",
   1026        "      <th>Equity(42023 [XYL])</th>\n",
   1027        "      <td>68</td>\n",
   1028        "      <td>250.0</td>\n",
   1029        "      <td>2013-08-21</td>\n",
   1030        "    </tr>\n",
   1031        "    <tr>\n",
   1032        "      <th>Equity(42027 [UBNT])</th>\n",
   1033        "      <td>337</td>\n",
   1034        "      <td>100.0</td>\n",
   1035        "      <td>2012-08-09</td>\n",
   1036        "    </tr>\n",
   1037        "    <tr>\n",
   1038        "      <th>Equity(42118 [GRPN])</th>\n",
   1039        "      <td>78</td>\n",
   1040        "      <td>300.0</td>\n",
   1041        "      <td>2013-08-07</td>\n",
   1042        "    </tr>\n",
   1043        "    <tr>\n",
   1044        "      <th>Equity(42173 [DLPH])</th>\n",
   1045        "      <td>312</td>\n",
   1046        "      <td>750.0</td>\n",
   1047        "      <td>2012-09-13</td>\n",
   1048        "    </tr>\n",
   1049        "    <tr>\n",
   1050        "      <th>Equity(42230 [TRIP])</th>\n",
   1051        "      <td>203</td>\n",
   1052        "      <td>250.0</td>\n",
   1053        "      <td>2013-02-13</td>\n",
   1054        "    </tr>\n",
   1055        "    <tr>\n",
   1056        "      <th>Equity(42277 [ZNGA])</th>\n",
   1057        "      <td>283</td>\n",
   1058        "      <td>200.0</td>\n",
   1059        "      <td>2012-10-24</td>\n",
   1060        "    </tr>\n",
   1061        "    <tr>\n",
   1062        "      <th>Equity(42436 [SLCA])</th>\n",
   1063        "      <td>378</td>\n",
   1064        "      <td>25.0</td>\n",
   1065        "      <td>2012-06-13</td>\n",
   1066        "    </tr>\n",
   1067        "    <tr>\n",
   1068        "      <th>Equity(42699 [VNTV])</th>\n",
   1069        "      <td>0</td>\n",
   1070        "      <td>137.0</td>\n",
   1071        "      <td>2013-11-24</td>\n",
   1072        "    </tr>\n",
   1073        "    <tr>\n",
   1074        "      <th>Equity(42788 [PSX])</th>\n",
   1075        "      <td>83</td>\n",
   1076        "      <td>1000.0</td>\n",
   1077        "      <td>2013-07-31</td>\n",
   1078        "    </tr>\n",
   1079        "    <tr>\n",
   1080        "      <th>Equity(43399 [ADT])</th>\n",
   1081        "      <td>3</td>\n",
   1082        "      <td>1000.0</td>\n",
   1083        "      <td>2013-11-20</td>\n",
   1084        "    </tr>\n",
   1085        "    <tr>\n",
   1086        "      <th>Equity(43694 [ABBV])</th>\n",
   1087        "      <td>201</td>\n",
   1088        "      <td>1500.0</td>\n",
   1089        "      <td>2013-02-15</td>\n",
   1090        "    </tr>\n",
   1091        "    <tr>\n",
   1092        "      <th>Equity(44931 [NWSA])</th>\n",
   1093        "      <td>46</td>\n",
   1094        "      <td>500.0</td>\n",
   1095        "      <td>2013-09-20</td>\n",
   1096        "    </tr>\n",
   1097        "  </tbody>\n",
   1098        "</table>\n",
   1099        "<p>9750 rows × 3 columns</p>\n",
   1100        "</div>"
   1101       ],
   1102       "text/plain": [
   1103        "                                                business_days  \\\n",
   1104        "2013-11-01 00:00:00+00:00 Equity(2 [AA])                 1323   \n",
   1105        "                          Equity(24 [AAPL])               138   \n",
   1106        "                          Equity(62 [ABT])                100   \n",
   1107        "                          Equity(67 [ADSK])               358   \n",
   1108        "                          Equity(76 [TAP])                588   \n",
   1109        "                          Equity(114 [ADBE])              406   \n",
   1110        "                          Equity(122 [ADI])               769   \n",
   1111        "                          Equity(128 [ADM])              1750   \n",
   1112        "                          Equity(166 [AES])               177   \n",
   1113        "                          Equity(168 [AET])                25   \n",
   1114        "                          Equity(185 [AFL])               843   \n",
   1115        "                          Equity(197 [AGCO])              331   \n",
   1116        "                          Equity(239 [AIG])                66   \n",
   1117        "                          Equity(300 [ALK])               287   \n",
   1118        "                          Equity(328 [ALTR])               47   \n",
   1119        "                          Equity(337 [AMAT])              434   \n",
   1120        "                          Equity(338 [BEAM])               61   \n",
   1121        "                          Equity(353 [AME])               521   \n",
   1122        "                          Equity(357 [TWX])               192   \n",
   1123        "                          Equity(368 [AMGN])              231   \n",
   1124        "                          Equity(410 [AN])                336   \n",
   1125        "                          Equity(438 [AON])               401   \n",
   1126        "                          Equity(448 [APA])               126   \n",
   1127        "                          Equity(455 [APC])              1354   \n",
   1128        "                          Equity(460 [APD])               554   \n",
   1129        "                          Equity(465 [APH])               206   \n",
   1130        "                          Equity(510 [ARG])               268   \n",
   1131        "                          Equity(559 [ASH])               122   \n",
   1132        "                          Equity(607 [ATML])              392   \n",
   1133        "                          Equity(630 [ADP])               625   \n",
   1134        "...                                                       ...   \n",
   1135        "2013-11-25 00:00:00+00:00 Equity(38691 [CFN])              77   \n",
   1136        "                          Equity(38817 [VRSK])            112   \n",
   1137        "                          Equity(38921 [LEA])             170   \n",
   1138        "                          Equity(38936 [DG])              175   \n",
   1139        "                          Equity(38989 [AOL])             100   \n",
   1140        "                          Equity(39053 [CIT])             127   \n",
   1141        "                          Equity(39095 [CHTR])            497   \n",
   1142        "                          Equity(39546 [LYB])             133   \n",
   1143        "                          Equity(40430 [GM])              243   \n",
   1144        "                          Equity(40597 [FLT])             259   \n",
   1145        "                          Equity(40755 [NLSN])             84   \n",
   1146        "                          Equity(40852 [KMI])              28   \n",
   1147        "                          Equity(41047 [HCA])             572   \n",
   1148        "                          Equity(41149 [QIHU])            490   \n",
   1149        "                          Equity(41182 [GNC])             202   \n",
   1150        "                          Equity(41462 [MOS])             527   \n",
   1151        "                          Equity(41636 [MPC])              42   \n",
   1152        "                          Equity(41759 [DNKN])            337   \n",
   1153        "                          Equity(42023 [XYL])              68   \n",
   1154        "                          Equity(42027 [UBNT])            337   \n",
   1155        "                          Equity(42118 [GRPN])             78   \n",
   1156        "                          Equity(42173 [DLPH])            312   \n",
   1157        "                          Equity(42230 [TRIP])            203   \n",
   1158        "                          Equity(42277 [ZNGA])            283   \n",
   1159        "                          Equity(42436 [SLCA])            378   \n",
   1160        "                          Equity(42699 [VNTV])              0   \n",
   1161        "                          Equity(42788 [PSX])              83   \n",
   1162        "                          Equity(43399 [ADT])               3   \n",
   1163        "                          Equity(43694 [ABBV])            201   \n",
   1164        "                          Equity(44931 [NWSA])             46   \n",
   1165        "\n",
   1166        "                                                previous_amount previous_date  \n",
   1167        "2013-11-01 00:00:00+00:00 Equity(2 [AA])                    0.0    2008-10-07  \n",
   1168        "                          Equity(24 [AAPL])             50000.0    2013-04-23  \n",
   1169        "                          Equity(62 [ABT])               3000.0    2013-06-14  \n",
   1170        "                          Equity(67 [ADSK])                30.0    2012-06-19  \n",
   1171        "                          Equity(76 [TAP])               1200.0    2011-08-02  \n",
   1172        "                          Equity(114 [ADBE])             2000.0    2012-04-12  \n",
   1173        "                          Equity(122 [ADI])              1000.0    2010-11-22  \n",
   1174        "                          Equity(128 [ADM])               370.0    2007-02-16  \n",
   1175        "                          Equity(166 [AES])               300.0    2013-02-27  \n",
   1176        "                          Equity(168 [AET])               750.0    2013-09-27  \n",
   1177        "                          Equity(185 [AFL])                 3.0    2010-08-10  \n",
   1178        "                          Equity(197 [AGCO])               50.0    2012-07-26  \n",
   1179        "                          Equity(239 [AIG])              1000.0    2013-08-01  \n",
   1180        "                          Equity(300 [ALK])               250.0    2012-09-26  \n",
   1181        "                          Equity(328 [ALTR])               30.0    2013-08-28  \n",
   1182        "                          Equity(337 [AMAT])             3000.0    2012-03-05  \n",
   1183        "                          Equity(338 [BEAM])                3.0    2013-08-08  \n",
   1184        "                          Equity(353 [AME])               100.0    2011-11-03  \n",
   1185        "                          Equity(357 [TWX])              4000.0    2013-02-06  \n",
   1186        "                          Equity(368 [AMGN])             2000.0    2012-12-13  \n",
   1187        "                          Equity(410 [AN])                250.0    2012-07-19  \n",
   1188        "                          Equity(438 [AON])              5000.0    2012-04-19  \n",
   1189        "                          Equity(448 [APA])                30.0    2013-05-09  \n",
   1190        "                          Equity(455 [APC])              5000.0    2008-08-25  \n",
   1191        "                          Equity(460 [APD])              1000.0    2011-09-19  \n",
   1192        "                          Equity(465 [APH])                10.0    2013-01-17  \n",
   1193        "                          Equity(510 [ARG])               600.0    2012-10-23  \n",
   1194        "                          Equity(559 [ASH])               600.0    2013-05-15  \n",
   1195        "                          Equity(607 [ATML])              200.0    2012-05-02  \n",
   1196        "                          Equity(630 [ADP])                35.0    2011-06-10  \n",
   1197        "...                                                         ...           ...  \n",
   1198        "2013-11-25 00:00:00+00:00 Equity(38691 [CFN])             750.0    2013-08-08  \n",
   1199        "                          Equity(38817 [VRSK])            300.0    2013-06-20  \n",
   1200        "                          Equity(38921 [LEA])             750.0    2013-04-01  \n",
   1201        "                          Equity(38936 [DG])              500.0    2013-03-25  \n",
   1202        "                          Equity(38989 [AOL])             150.0    2013-07-08  \n",
   1203        "                          Equity(39053 [CIT])             200.0    2013-05-30  \n",
   1204        "                          Equity(39095 [CHTR])            321.0    2011-12-29  \n",
   1205        "                          Equity(39546 [LYB])              10.0    2013-05-22  \n",
   1206        "                          Equity(40430 [GM])             5500.0    2012-12-19  \n",
   1207        "                          Equity(40597 [FLT])             200.0    2012-11-27  \n",
   1208        "                          Equity(40755 [NLSN])            500.0    2013-07-30  \n",
   1209        "                          Equity(40852 [KMI])             250.0    2013-10-16  \n",
   1210        "                          Equity(41047 [HCA])              80.8    2011-09-15  \n",
   1211        "                          Equity(41149 [QIHU])             50.0    2012-01-09  \n",
   1212        "                          Equity(41182 [GNC])             250.0    2013-02-14  \n",
   1213        "                          Equity(41462 [MOS])            1200.0    2011-11-17  \n",
   1214        "                          Equity(41636 [MPC])            2000.0    2013-09-26  \n",
   1215        "                          Equity(41759 [DNKN])             15.0    2012-08-09  \n",
   1216        "                          Equity(42023 [XYL])             250.0    2013-08-21  \n",
   1217        "                          Equity(42027 [UBNT])            100.0    2012-08-09  \n",
   1218        "                          Equity(42118 [GRPN])            300.0    2013-08-07  \n",
   1219        "                          Equity(42173 [DLPH])            750.0    2012-09-13  \n",
   1220        "                          Equity(42230 [TRIP])            250.0    2013-02-13  \n",
   1221        "                          Equity(42277 [ZNGA])            200.0    2012-10-24  \n",
   1222        "                          Equity(42436 [SLCA])             25.0    2012-06-13  \n",
   1223        "                          Equity(42699 [VNTV])            137.0    2013-11-24  \n",
   1224        "                          Equity(42788 [PSX])            1000.0    2013-07-31  \n",
   1225        "                          Equity(43399 [ADT])            1000.0    2013-11-20  \n",
   1226        "                          Equity(43694 [ABBV])           1500.0    2013-02-15  \n",
   1227        "                          Equity(44931 [NWSA])            500.0    2013-09-20  \n",
   1228        "\n",
   1229        "[9750 rows x 3 columns]"
   1230       ]
   1231      },
   1232      "execution_count": 6,
   1233      "metadata": {},
   1234      "output_type": "execute_result"
   1235     }
   1236    ],
   1237    "source": [
   1238     "# run_pipeline will show the output of your pipeline\n",
   1239     "pipe_output = run_pipeline(pipe, start_date='2013-11-01', end_date='2013-11-25')\n",
   1240     "pipe_output"
   1241    ]
   1242   },
   1243   {
   1244    "cell_type": "markdown",
   1245    "metadata": {},
   1246    "source": [
   1247     "Taking what we've seen from above, let's see how we'd move that into the backtester."
   1248    ]
   1249   },
   1250   {
   1251    "cell_type": "code",
   1252    "execution_count": 11,
   1253    "metadata": {
   1254     "collapsed": false
   1255    },
   1256    "outputs": [],
   1257    "source": [
   1258     "# This section is only importable in the backtester\n",
   1259     "from quantopian.algorithm import attach_pipeline, pipeline_output\n",
   1260     "\n",
   1261     "# General pipeline imports\n",
   1262     "from quantopian.pipeline import Pipeline\n",
   1263     "from quantopian.pipeline.factors import AverageDollarVolume\n",
   1264     "\n",
   1265     "# Import the datasets available\n",
   1266     "# For use in your algorithms\n",
   1267     "# Using the full dataset in your pipeline algo\n",
   1268     "from quantopian.pipeline.data.eventvestor import BuybackAuthorizations\n",
   1269     "from quantopian.pipeline.factors.eventvestor import BusinessDaysSinceBuybackAuth\n",
   1270     "\n",
   1271     "\n",
   1272     "def make_pipeline():\n",
   1273     "    # Create our pipeline\n",
   1274     "    pipe = Pipeline()\n",
   1275     "    \n",
   1276     "    # Screen out penny stocks and low liquidity securities.\n",
   1277     "    dollar_volume = AverageDollarVolume(window_length=20)\n",
   1278     "    is_liquid = dollar_volume.rank(ascending=False) < 1000\n",
   1279     "    \n",
   1280     "    # Create the mask that we will use for our percentile methods.\n",
   1281     "    base_universe = (is_liquid)\n",
   1282     "\n",
   1283     "    # Add pipeline factors\n",
   1284     "    pipe.add(BuybackAuthorizations.previous_date.latest, 'previous_date')\n",
   1285     "    pipe.add(BuybackAuthorizations.previous_amount.latest, 'previous_amount')\n",
   1286     "    pipe.add(BusinessDaysSinceBuybackAuth(), \"business_days\")\n",
   1287     "\n",
   1288     "    # Set our pipeline screens\n",
   1289     "    pipe.set_screen(is_liquid)\n",
   1290     "    return pipe\n",
   1291     "\n",
   1292     "def initialize(context):\n",
   1293     "    attach_pipeline(make_pipeline(), \"pipeline\")\n",
   1294     "    \n",
   1295     "def before_trading_start(context, data):\n",
   1296     "    results = pipeline_output('pipeline')"
   1297    ]
   1298   },
   1299   {
   1300    "cell_type": "markdown",
   1301    "metadata": {},
   1302    "source": [
   1303     "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>"
   1304    ]
   1305   }
   1306  ],
   1307  "metadata": {
   1308   "kernelspec": {
   1309    "display_name": "Python 2",
   1310    "language": "python",
   1311    "name": "python2"
   1312   },
   1313   "language_info": {
   1314    "codemirror_mode": {
   1315     "name": "ipython",
   1316     "version": 2
   1317    },
   1318    "file_extension": ".py",
   1319    "mimetype": "text/x-python",
   1320    "name": "python",
   1321    "nbconvert_exporter": "python",
   1322    "pygments_lexer": "ipython2",
   1323    "version": "2.7.11"
   1324   }
   1325  },
   1326  "nbformat": 4,
   1327  "nbformat_minor": 0
   1328 }