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\no5ZP3vMKmkQt2oUqIFugzbOfpIRbCAYEBlmeCZTU5X/7LVG2wn37AAAAAAAAQAKKNACcZjKZLMWZ\n5s2b66uvvtLly5e1ePFitW3bVgEBAane9trlC9W8bdcUXw/J/6BqPPyI7sTFacOPS6xea9C8tQoU\nKqrzZ04q/u5d1WrQzGb9Hs8O0UNFimvq+Ne1ae0Pioq8ppsxN7R941r939svq+/gUU7FW7F6HUnS\noq+mKDrquqKuR2jWlPF223Yf+KqCcgTr60/Gae/2TboVE62Du7dr1ZI5dtunNVaz2azoqOvavXWj\nxgzprzmfT1CrDt016DXrZ7D0eHaI8hcoZInrZswN7d2+SbM+Ga/8BQqp+8BXnTomSTlzfFIj8b2y\nfeNau4UDV+1btXoJV44smTVV0TeidPbkMa1ZOt9l+2GPs+c/seB07OBeq+WT3hys/bu2as7nE9S2\nZmGb/5LLk+8BPTtijA7t2aEvJ47W9Yiruh5xVdMmvK3De3dq0Mj3rZ6vk+jogT2SpLqNW7rqEAAA\nAAAAAGR4JnPym+ADgB1Jb3dWtmxZ9e7dW2FhYSpevHiK6yxcuFChoaE2D45PSdIvjKvWaagxn397\nzzaJkm5/1eLZ+mzcKA0ZM1lNHu9gt58b1yO1YMbH2rzhJ125eF7Zg3OpTKXq6vrUCypbuYbDfUkJ\nzzSZ8dEY7dr8q6KjIlWwSAl1G/CSPhg5yO46p48f1Vcfj9GBXVtlMmVRpZr1NGDoaD3TrqFMWbJo\n+Xbr54ykJVZJCsgWqJD8BVShem091rGHylSsZrddxNVwzZ06Sdt+W6PIq1eUM0+I6jRqrh7PDbW6\ndVbyfhL3LaXlzhwfR453cteuXFbfx2orT74H9NXKzVbPfXHVvkmyFCl2b92o27duqkrtBnpu5Bj1\na13X4WPh7HLJ8fMvSXfi4jSgXQPlL1BIH8z4r4DpyK3l7B3nP7f8poVffaJjh/ZJkkqXr6Ku/V9U\ntbqN7G5jaN92unLpvL5ctkm+fn737TOpD0Y8pwK5s2nhQturdwB4n8T5nY8RgPcwmUxasGCBunZN\n+Y+dAADwFvw+CVijSAPAIfPnz9fevXsVFhbm8G3MnC3SZFZXL19Un8dqKWeevJqz5k+jw0E6tv33\ndXrv5X4aNnaKGrVs67F+f1n1vT588yW9+dFM1W74qNPrU6QB0hc+VAPehyINACA94fdJwBq3OwPg\nkG7dumns2LGpes4M/tO2ZmGdP3PSatn+XVslSVVqPWxARMhIajd8VINGjdOUsSO15ZefPdLn5g0/\n6fNxozTotbGpKtAAAAAAAABkZhRpAMDDPh//us6fPaVbN2O0Z9vv+nryWAUGZU/Ts1+ARI917KF3\np8zVsnnTPdLf8m9n6L3Pv9VjnXp6pD8AAAAAAICMxNfoAAAgMxnz+bf6cfFsDe/XXlGREcoenFOV\na9VXj2dfVaFipYwODxlEmYrVNG7aIo/05al+AAAAAAAAMiKKNADgQVXrNFTVOg2NDgMAAAAAAACA\nF+B2ZwAAAAAAAAAAAAagSAMAAAAAAAAAAGAAijQAAAAAAAAAAAAGoEgDAAAAAAAAAABgAIo0AAAA\nAAAAAAAABqBIAwAAAAAAAAAAYACKNAAAAAAAAAAAAAagSAMAAAAAAAAAAGAAijQAAAAAAAAAAAAG\noEgDAAAAAAAAAABgAIo0AAAAAAAAAAAABqBIAwAAAAAAAAAAYACKNAAAAAAAAAAAAAbwNToAABnf\nT0vmGh0CAC924dwpFchdzugwAAAAAAAAPI4iDQC3KViwoHx8fDTl/ZFGhwLAy7Vr3dLoEAAAAAAA\nADyOIg0At2nQoIHu3LljdBgA0mDhwoUKDQ2V2Ww2OhQAAAAAAIAMh2fSAAAAAAAAAAAAGIAiDQAA\nAAAAAAAAgAEo0gAAAAAAAAAAABiAIg0AAAAAAAAAAIABKNIAAAAAAAAAAAAYgCINAAAAAAAAAACA\nASjSAAAAAAAAAAAAGIAiDQAAAAAAAAAAgAEo0gAAAAAAAAAAABiAIg0AAAAAAAAAAIABKNIAAAAA\nAAAAAAAYgCINAAAAAAAAAACAASjSAAAAAAAAAAAAGIAiDQAAAAAAAAAAgAEo0gAAAAAAAAAAABiA\nIg0AAAAAAAAAAIABKNIAAAAAAAAAAAAYgCINAAAAAAAAAACAASjSAAAAAAAAAAAAGIAiDQAAAAAA\nAAAAgAEo0gAAAAAAAAAAABiAIg0AAAAAAAAAAIABKNIAAAAAAAAAAAAYgCINAAAAAAAAAACAASjS\nAAAAAAAAAAAAGIAiDQAAAAAAAAAAgAEo0gAAAAAAAAAAABiAIg0AAAAAAAAAAIABKNIAAAAAAAAA\nAAAYgCINAAAAAAAAAACAASjSAAAAAAAAAAAAGMDX6AAAAID3OHr0qE6fPm35ed++fZKktWvXWrWr\nXbu2cubM6dHYAAAAAAAAMhqT2Ww2Gx0EAADwDsHBwYqKirpvuwEDBmjatGkeiAiA0dq3b6/jx49b\nfo6KitL58+dVpkwZq3YvvPCCBg4c6OnwgExn6tSpmjJlitWyo0ePqkCBAsqRI4dlWalSpfT99997\nOjwAAO5r4cKFCg0NFV9LAwm4kgYAAFg0a9ZMP/zwg+7cuZNiG5PJpKZNm3owKgBGOnLkiA4fPmyz\nfP/+/VY/X7582VMhAZna5cuXbcafJJ06dcrq57t373oqJAAAAKQBz6QBAAAWvXv3vu+XOoGBgerQ\noYOHIgJgtH79+snX995/22UymdSrVy8PRQRkbj169JDJZLpnG19fX/Xr189DEQEAACAtuJIGAABY\ntG7dWkFBQbpx44bd1/39/dWhQwcFBAR4ODLAS8T8Kt3cbnQUHhX22HWNHJly8dZkMqlmtUIqmn2R\ndMWDgQGZVImcUo0qBbVr77kUbxNz9+5ddWsVKV2Z6OHoAC+TJYeUm1txAgC8G1fSAAAAi4CAAHXu\n3Fn+/v52X4+NjVX37t09HBXgRe5eNzoCjytcMJfq1iyiLFns/+V+liwm9e5a08NRAZlb79Ca9xyT\n9WoVUeGCuTwcFeCF4u//rEUAAIxGkQYAAFjp3r27YmNj7b6WO3dutWjRwsMRATBa79CaKd5eyWw2\nq1vHah6OCMjcunWsds+HLfcOpXAKAACQXlCkAQAAVpo1a6aQkBCb5f7+/goLC7vvsykAZDxdnqxi\nd7lPlixq0qCk8oUEeTgiIHPLnze7HqlfQj5ZbD/Sm0wmdW5rf8wCAADA+1CkAQAAVnx8fNS9e3eb\nW57FxsYqLCzMoKgAGClvSJCaNSolHx/rq2nMMqsXtzoDDNGra02ZZX01jY9PFjV/pLTyUjgFAABI\nNyjSAAAAG2FhYTa3PCtYsKAaNGhgUEQAjNaraw0lv7uSr28WdWxTyZiAgEyuU9vK8vW1/kgfH29W\nzy41DIoIAAAAqUGRBgAA2KhXr54KFSpk+dnPz089e/ZM8ZkUADK+9q0ryc/Xx/Kzr28WtW5RXsE5\nAgyMCsi8gnME6PHm5awKNVn9fdThCQqnAAAA6QlFGgAAYMNkMql3797y8/OTJMXFxXGrMyCTy5E9\nq9o+VsHyhfDdu/Hq2Zm/2AeM1LNzDd29Gy8poXDatlUFBQX632ctAAAAeBOKNAAAwK6uXbsqLi5O\nklSyZElVrVrV4IgAGK1H5+q6cyfhC+HAbP56omV5gyMCMrc2rSooMFtCUebOnXj14FZnAAAA6Q5F\nGgAAYFfVqlVVrlw5SVLfvn2NDQaAV3js0XKWL4Q7PFFJAVl9DY4IyNwCsvqqfeuKkqSgQH+1albW\n4IgAAADgLD5VAQCQjq1fv17Hjh1z2/bLli2rw4cPS5KmTZvmtn7cJSAgQN26dZO/P7d+geet33hM\nx/4ONzoMl6taqYA2bz+l3LmyadqsLUaH43Itm5RVsSK5jQ4DbnDy9DWt/uWI0WG4XJ7cgZISxuas\nBTsMjsb1Spf4//buO0yL6m4D8LMUBVREEcWCLUrsBUVRUVEDlog1YomxxF6DsWD5sDc0ttiJLfYa\nC/au2BCxxpIYNWIBBFGqStvvD2TDsoVd3GWAve/r4sruO+c95zfznkNknndm2mSLzr+ql74nTJic\nO+9/Oz/+NLFe+qd+NJu/afbYeZ3MN1/jmTcGgLlASWlpaWnRRQAAs6Zp06aZNGlS0WXM0e67777s\nsssuRZfBvGJMv2RCzU7yNm3bq+zWYMw99txl3dzed6+iy6Ae7HnQbbnz/reLLoNaatKkUSYO7VMv\nff/j4fey634310vf1K/7btonu2y/Zs0atz6ufosBau3uu+/O7rvvHqelYSpX0gDAXGzSpEnpdf5V\n6dy1e9GlzJG6r9dOiEVhJk2aYn3OZfr0OiyTJg8uugzqyeQpU9L5N9unV5+riy6FGnrpqX7pc+Lh\n9db/tCC936Av6m0M6t7U/77zJQgA5h2eSQMAAAAAAFAAIQ0AAAAAAEABhDQAAAAAAAAFENIAAAAA\nAAAUQEgDAAAAAABQACENAAAAAABAAYQ0AAAAAAAABRDSAAAAAAAAFEBIAwAAAAAAUAAhDQAAAAAA\nQAGENAAAAAAAAAUQ0gAAAAAAABRASAMAAAAAAFCAJkUXAADMXt3Xa1fltiZNm2aZ5VfKbvsdkc22\n2bGQmvoN+mK2jQtzkqrWZkNaEx+//05uvOycnNv37rLXSqdMybOP3Jdbrrog334ztMrjcfLBPbL/\nn07JyquvPbvKpQGwLq3LGZkT5gQA1DVX0gBAA9Nv0Bfl/uE87feHBn6eS297LI0bN8mFpxyZN199\nYbbWBA1dVWuzoXjygTvS+4i9ssNeB5S99tZrL+bovbbJUw/emW+/GVrt+7vv+cf0PnzPPHH/7fVd\nKg2IdWldzsicMCcAoK65kgYASJKUNGqU5X716xx03Ok58cBdc/f1TlUiGwAAIABJREFUf02HjTYv\nuiygDk37BvjsPKFYkzEHvfxcrji7V44/98p06rJ12evXXnBq9jv6pHTqsnW1VwEmyUZbbJOffvwh\nF/f+UxZbfMmst8kWdbMDUM+sS2ZkTgBAw+JKGgCgnBXar5YkGfzpxwVXAjQEkyZOzBXnnJhV1lo/\nm3brXm7blfc8Xe5E4Mx02XbntF9j3Vx57kmZNGlSXZcKDYZ1yYzMCQCoP0IaAKBSU6ZMLroEoAF4\n5ZlHM2LY1+my7U4VtjVuXPsL/zffZqcMH/pVXnnm0booDxok65IZza1z4uuho3PJJZekQ4cO2XTT\nTet1LACYVW53BgCU8+m/3k+SrLxaxQe6vj2gf/rdeWPef2tAJvz0Y9qt0D677ntYNtt6h3Ltpr/V\nxY2PDsg1ff4v7wx8JfM3a551N9w0Bx9/RhZaeJFq6zhm7+3ynw/fK/t9027dc8J5V/2SXYN50qys\ny2k/d91pjxzd+8Ky10eNHJHbrr04r7/4VEaNHJGWi7ROx85b5feHHZdFWrcpazdu7Jjcce3Fee2F\nJzJy+LA0a9YiSy//q6y61nrp3K172q++To3HHPDik0mSlVZbq06OR/ufH0Y94MUnKxwDmF2sy/Ks\nS3NiRvU5J777/ofc1+/d3HTnG3nl9c/TqFGjTJ48OW3btq3TcQCgrghpAIAkSemUKRn82ce57qIz\nslDLVtn3qJMqtOl9+F7p1GXr9H2gf3768Yf89czjc+HJR2TBlguXe35Nv0FflP0j/++Xn599jzo5\ni7ZZIjdffl4evfeWNG7SJD1Pv7jaek697O/pfdie6bjpVpXWAkw1K+uysmcOfD9yRI7dp3sm/PRj\n/nzWZVl1rfXyyb/ez8W9/5S3X++fy257PAss1DJJcslpPTPg+Sdz0HGnp9tOe6ZJk6YZ9vXg/P3y\n83PsPt3L+p/ZmEnyyUdTg+HFl1ymTo5Hm5/7+fTnfqEI1mV51qU5MaO6nhMjvh2X2+59M3fe/3YG\nDPoijRqVZMqU0pSWlmbyZFeHAzBnc7szAGjguq/XLt3Xa5cdOi6XI3v8Jsss/6tccc8zWWnVNStt\nf9Cxp6dlq0XTpu3SOeSEM5Mkd1//1yr733rnvdJuhZWywIILZdd9D0+SvPXai9XW9M2QL9PrgF2y\n+bY7CWigBmq7Litz2zUX5ZshX2afI0/Mup02S7MWC2T1dTfIgceelmFffZF/3HxNWdv3Br6SJGnd\npm2aNW+RJk2bZunlfpVDe51d69q/HT40SbLAgi1r/d7KLNhy4an9fjO0TvqDWWVd/o91OZU58T91\nMSfGjZ+Qm+8alO12vz5Lrn5m/ty7Xwa++cXPwcyUlJaW1kmtAFDfXEkDAA1cv0FT/zH7+X8+ypk9\n98+LTzyYtTfonK477l5p2+kttewKSZLBn35cZf+/WnWNsp8XbbNEkuS7Ed9U2f6rzz/J/x22V9q0\nXSq77X9krfYFGqJZWZeVef3Fp5Ik622yRbnX1+iwYdn2PxxxQpJk4622y9MP3Z3zex2axZZYKutu\ntFk6dNosnbpsU+W3sKvy048/JEmaNG1aq/dVpWmTpuX6hSJYl+VZl+bEjH7pnOh784Ac2POejBn7\nU9lVMzPz448/pm/fvrM0HlC3Bg0aVHQJMEcR0gAAKSkpyfIrr5rDTjonZ/5pv9x42Tnp3PW3ad5i\nwbI248aMzn1/vzqvPvd4RnwzJD+OH1e2bcyo76rse/o+pv3DvrpvNp58cI+MHzc2I4Z9nRcefyCb\nb1PxAbXAVLO6LiszauS3SZJ9t16v0u1Dvvy87OejT/1LOm76m7zw+AN5d+DLeeqBO/PUA3emTdul\n838XX58Vf716jcedv1nz/Dh+XCZNnJim881Xq5orM3HSxLJ+oQjWZUUNfV2aExX90jnxzIv/C7dq\nEtAkybhx43LIIYfM0nhA3Vt22WWLLgHmGEIaAKBMx85bZbV1OuaDtwfmwduuyx4H9Szbdn6vQ/P2\ngP7Z8+Bj0n3PP2ahlq2SlH/YbF049MRzMn7smFx6+p9z9fmnZPV1N8xiSyxZp2PAvKIu12Wr1ovl\n22+G5o7n/ll2G5qqlJSUZOMtt83GW26b0ilT8sE7b+Tu6/+aN199IZedcWwuu/3xGo/buk3bfPX5\nJxk3dnRaLbpYreue0djRo6b2u7gHRFMM67Kihr4uzYmKfumcOK/3dhkybHRuv/etjBg5Lk2bNs7E\nidU/e6Z169YZMmTILI0HAPXJM2kAgHL+cPjUW2Q8cGvfsn9AJ8mH77yRJNn5DweXnVyYOGFCnY+/\n0RbbZKvuu6VTl60zbszoXHbGse4pDtOZ/qRebdfltG8sT5o0KT/9+EP22uJ/z57q1GXrJMl7g16t\n8L7333o9x+27Q7kaRgybeqKrpFGjrL7uBjnh/KuTJF98Vv7WPdWNmSS/WmXqN7m/GfJllXXXxvCf\n+1nx16vVSX9QE9Zl9RriujQnqvdL58SKyy2ay87dMcM+Oi39Hz48++25fhZoMV9KSpKmTRrXSY0A\nMLsIaQCActZYr1PW2XDTjBs7ptzDZ1dfd4MkyT03XJlxY0ZnzOjvc/OV59dbHUeecn4WXqR13h7Q\nP/3uvKHexoG5WW3X5fIrr5ok+fj9t/L6i09nlbXXL9v2+0OPzVLLrpBrzj8lLz/9SMaM+i4/jB+b\ngf2fziWn9cx+R59crq/Lzzo+gz/5dyZOmJDvR47IfTddlSTpsNHmNR4zSTbYrGuS5D8fvDsrh6CC\nf7//TpJkw8261Ul/UFvWZUUNfV2aExXV1Zxo1KgknTutkL4X/y7f/ueMPHjr/tltp7XSbP4mKSkp\nSeNGJXVRLgDUq5JSX00FgLlWSUlJep1/VTp37V7j91R1a43pHyD7r3++Ve6bmPsedWK67rB7rr/0\n7Lz56gsZN2ZUll52xexx0J/S58TDK/Qx4xgze32PzVfLuLFjyl4/sc81Ob/XoRVqvPiWR7LyamvV\naD+njXfXXXelR48eNX4PVGtMv2TCv2rUtGSx42u1Pmtz25tpa2fUyBE1XpdJ8vEH7+bys47P14M/\ny/Irr5pjzrgkSy+3Ytn2saNH5a7rL8urzz2eb4cNyYItW6X9Guumxx+PzK/X7FDW7sN3BuaJf9yR\n9958NSO/GZr5mzXP4ku1S+eu22fHvQ4s94yBmY05aeLEHLTjJll8yWXS5/p/1Pi4VPXQ6+P22zHf\nfjMkf3vw5Vo/4LpPr8Oy5AKDc/f1f6jV+5g79DjglgwZt2x69bm6xu+xLotdly891S99Tjw8pSMu\nrPF7auPuB97J7gfeWmXdlTEniv+7uvt67XLXdXunx05rV9lmxLfjcs9D7+aWuwfltTcGp7S0NG3b\ntnW7MwDmSEIaAJiLzUpI05AIaahz9RjSNGQDX3omZ/XcP8efe2U27Tbrx+v5x+7Pxb3/lN6X3piO\nnbeq9fuFNPO2WQlpGrI5YV3OiSFNQzYnzImkZiHN9AaP65G77rorkyZNykknnVTr8QCgvjUpugAA\nAKBh69h5qxx+8nm58twT03S++cqeuVAbrz73eK4+7+QcftK5s3TSDyjPumRGc+ucWHbZZXP88cfP\nlrEAYFYIaQAAgMJts8vvs+KvV8+Nl50zSyf+Hrrj+px19R1pv/o69VAdNEzWJTMyJwCg7glpAACA\nOUL71dfJeX3vmaX3zur7gOpZl8zInACAutWo6AIAAAAAAAAaIiENAAAAAABAAYQ0AAAAAAAABRDS\nAAAAAAAAFEBIAwAAAAAAUAAhDQAAAAAAQAGENAAAAAAAAAUQ0gAAAAAAABRASAMAAAAAAFAAIQ0A\nAAAAAEABhDQAAAAAAAAFENIAAAAAAAAUQEgDAAAAAABQACENAAAAAABAAZoUXQAA8Mu88/rLGTtm\ndNFlAJWwPucuQ7/6PEu2Lym6DOrR0K8+z+P/uK3oMqihTz58b7aMY04AAEUS0gDAXGyZZdo5sVCN\nxo0bZ+mlly66DBqoZZZaxPqcC+24xeZFl0A9abd0q9zz4Iv5zzknFl0KtdBu6UXrre+ll1w4jRs3\nypXmxFylceNGWXrJhYsuAwDqTElpaWlp0UUAAPOGkpKS3HXXXenRo0fRpUD9GNMvmfCvoqsAgCq9\n/9GwrNH5L/nnS8dl9VWWKLqc4rU+rugKAKBankkDAAAAAABQACENAAAAAABAAYQ0AAAAAAAABRDS\nAAAAAAAAFEBIAwAAAAAAUAAhDQAAAAAAQAGENAAAAAAAAAUQ0gAAAAAAABRASAMAAAAAAFAAIQ0A\nAAAAAEABhDQAAAAAAAAFENIAAAAAAAAUQEgDAAAAAABQACENAAAAAABAAYQ0AAAAAAAABRDSAAAA\nAAAAFEBIAwAAAAAAUAAhDQAAAAAAQAGENAAAAAAAAAUQ0gAAAAAAABRASAMAAAAAAFAAIQ0AAAAA\nAEABhDQAAAAAAAAFENIAAAAAAAAUQEgDAAAAAABQACENAAAAAABAAYQ0AAAAAAAABRDSAAAAAAAA\nFEBIAwAAAAAAUAAhDQAAAAAAQAGENAAAAAAAAAVoUnQBAAAAAMyar4aMyof//qbs9/9+8V2S5NU3\nPs+QYaPLXl+1/eJZesmFZ3t9AED1hDQAAAAAc6ld9r05r785uMLrB/W8p9zvG663bF574qjZVRYA\nUENudwYAAAAwl+raZeU0bdq42jZNmzRO1y7tZ1NFAEBtCGkAAAAA5lJ779YhEydOrrbNxEmTs/du\nHWZTRQBAbQhpAAAAAOZSq6y8eNZYtW1KSkoq3d6oUUnWWm3J/HqlNrO5MgCgJoQ0AAAAAHOxfXZf\nL40bVx3S/GH39WZzRQBATQlpAAAAAOZie+y8TiZPLq102+TJpdlr13Vnc0UAQE0JaQAAAADmYu2W\nbpWNOi6XRo3KX03TuHGjbLLBclmqbcuCKgMAZkZIAwAAADCX+0OPDqlww7PS0uzdw63OAGBOJqQB\nAAAAmMv12HHtlMxwJU1Jo5L02HHtgioCAGpCSAMAAAAwl1t0kRbpunn7NGky9VRPkyaN0q1L+yzS\nqnnBlQEA1RHSAAAAAMwDfr/bupk8uTRJMnlyaX6/W4eCKwIAZkZIAwAAADAP2GGb1dO0aeMkSdOm\njdN969UKrggAmBkhDQAAAMA8YKEF58/O262eJNnlt2tkoQXnL7giAGBmmhRdAAAAzKue7f+f/Oez\nEUWXAUADssgiLab+b6vm6XvzawVXU7eazd80e+y8Tuabr3HRpQBAnRHSAABAPdl6t79l0qQpRZcB\nQAN09Y2vFl1CvVhwgfmyy/ZrFl0GANQZIQ0AANSTSZOm5LzrzkrXHbcsuhQAmOut32YTX34AYJ7j\nmTQAAAAAAAAFENIAAAAAAAAUQEgDAAAAAABQACENAAAAAABAAYQ0AAAAAAAABRDSAAAAAAAAFEBI\nAwAAAAAAUAAhDQAAAAAAQAGENAAAAAAAAAUQ0gAAAAAAABRASAMAAAAAAFAAIQ0AAAAAAEABhDQA\nAAAAAAAFENIAAMAcYv02m9TqD3OnD976MIfsdGS9jzPg+YE5ZKcjs9kKXbPZCl1z6M5H5fUXBtb7\nuLVV2fGYMmVK+t35aLZba6cazfXa7mt9t/+l/Ryy05H54K0PK+2jum0zM2XKlNx30wPZc/N9s+ly\nW6Xbat1z2pFn592B781Sf5Wpz/k9u9ZObedfVealv6trekzqa+4CwLxMSAMAAHOIN4a/nDeGv1zh\n98r+8D8Hbn9YDtz+sKLLqJEHbu2XI3brmT0P7lGv4zx852M5YreeWWnVX+WhQffmoUH35lerrJgj\ndjsmj97zRL2OXRuVHY/Xnns9v99i/zx028P5ZsjwmfZR232t7/Z1UeceB+2Ww3/XM/ff8lCFfqrb\nNjNXnds35x1/YVZbd5U88vb9ufXp6zNq5Kj8cbtDa91XZepzfs+utVPb+dcQ1OaY1NfcBYB5WZOi\nCwAAAPglpkwpLbqEGnnlmddyzp/75Jy+Z6TLdpvV2zgjhn2bPr3+krU6rpHjzu2ZkpKSJMlx5/bM\nB29/mPNP+Es6demYRdssWm811ERVx+PCky/JUb0PS5ftNpvpVQi13df6bl9XdW7x283z4w8/5dTD\nz8wSSy2ejbfqVNZXddtmZtrJ8WPOPCoLtlwwLRdpmRP6/DkvPfVKjfuoSn3O79m1dpLazb+GojbH\npL7mLgDMy1xJAwAAcyFX0/zPDY9ekxsevaboMqo1ccLEnHNsn6zVcc1022mreh3rwdv65YfxP2aH\nvbYvCwOSpKSkJDvstX3Gjx2fB297pM7GG/rlsPz9r7dmj832qfF7qjsed/e/tcYn4mu7r/Xdvq7q\nTJJtf9cta6y3Ws497oJMmjipxtuqM3HCxCTJyBHflb22VLslf/HfJ/U5v2fn2klqN/8aitoek/qY\nuwAwLxPSAADATKy77rrZYIMNcvm1D2fY8DGF1uKb3XOnZx9+PsO++ibb7Nq13sca8MIbSZI11lut\nwrZpr732/IBfNMbo70bnH39/IAd1PzzdO+yaK8+9Nq2XqPmVOdUdj8ZNGte4n9rua323r6s6p9lm\n124Z+uWwPPvw87XaVpXtdts6SXJJ78tTWlp3V6DV5/yenWsnqd38ayhm5ZjU9dwFgHmZ250BAMBM\nfPLJJxk7dmzefHNQevYqzeYbr5h9dl8/O/92jSzcslmhtc0Y2kz7RvxNl92SK86+psLr07e/+6Xb\ncknvv+adge+ldMqUdNh43fQ848is0H75Svt/YODduez0K/PGS4MyZtTYcv2OHPFdru1zXfo/8XJG\njvgui7Rulc5dN86hJx6Y1ou3Lutj7Oix6XvBDXn+sRczYuiINFugeZZfadms1XHNdN1xy6zeYbVa\ntZu+vhmvBvj2m29zbZ/r89JTr2TkiO+y6GKLpHO3TXJorwPK3Z5q+j4eefv+9DnxorzRf1CaNW+W\nDbt0zHHn9MzCiy4808+iOi88/lKSZLV1Vql03Onrr+qzq6n//vu/SZIlllqiwra2S7ed2ubjwbXq\nM0l++vGnvPD4S3n83ifyyrMDMmnipKy69q9zzFlHZeudf1Puc56Zyo7HrKjtvtZ3+7qqc5rV1lk1\nydTj1W3n39R4W1XW79wh9954f/o/+XKuOPuaHNW7bp7lVFefZ037rq+1MzvVNnCf2b7Macekrucu\nAMzLXEkDAAA1UFpamsmTp2TKlNK8+MqnOajnPVl0pVOz0TZXpO/Nr2XM2J/qfMz122xS4c+M3hj+\nck65uFeSZL75mub9Nz9IknTZbrMsutgi6fvQleVOyk3/89nHnJ8Dj9svj//zoVx0S5989O6/c8Bv\nD83XXwyptP15x1+YPxyxZx7/50P5650Xlb0+cvjI7NvtwDz3yIs59bKT8+zHj+fcv52Z155/Pftv\ne0hZoJMkpx15dm6/9q7seUiPPPPx43ninw/ltL+ekq8+/zr7bn1QrdtVdcLx22++zT7dDkz/J1/O\nGVf2zrP/fiynX/F/eeGx/tl364MycvjISvu44uyrc1Tvw/Louw9ky+5d8ti9T+bS066o0P8ftzs0\nB/y25ie4//Xev5MkS7ZrW27c2nx2NTVm9NTj3WKB5hW2TXttzPeja9TXlMlT8upzA3LqEWel6yq/\nzckHnZpPPvos+x61d+579Y7c8vQN2euQ3WsV0CSVH49ZUdt9re/2dVXnNNOOz7TjVdNtlfnbX27M\nqYedmT/23CdNmjbJ3/96a26/5q6y7V9/MaTC3zdn9TyvRn3X1edZ2dU9s3PtzE5vDH+5Vn9q0t+c\ndEzqcu4CwLxOSAMAALU0eUppJv0c2Lz+5uAcdtw/0nrl07LdHtfn5rsGZfwPE+tknJqeqNv5Dzvk\nd/vvnAkTJub4/U7Op//6b475/Qk5+rQj0mGjdars/8Bj98vaG6yVFgs0zwabrZ+jeh+W0d+PSd8L\nrq+0/R977pu1Oq6Z+ZvNn4236lRWzzV9rs+QL4bmyP87JJ222CAtFmiedTutnT+fdXS+Hjwkt1xx\n2//26aU3kySLL9kmzVs0S9P5mma5lZbNCef/ufy+17BdVa45/7oM++qbHHXq4em46XppsWCLsn0c\n8sXQXNOn8n3c+Q87ZIX2y2fBlgtmn6N+nyR57fnXK7QrLZ1Sq9tFDR8yPEmy4MILVRhvVj672WWb\nNXbIUT3+nFeefjW/3X3b3PDotXnwjXty2EkHZbmVlp3lfqs6HpTXstXU4/PNz8erpttm9NSDz+ba\nPtflgGP3y+GnHJLTLz8lJSUlueTUy/PwnY8l+d+zaR5994G0abtY3hj+cnpfelKN6qzu83zz1bdz\nyiGnZ5s1dshGS3dJ9w675uSDT8s/bn4wgz/5IhMnTMx3336fJx94Jvt0PaDGfc/pa6cIc9Ixqau5\nCwANgdudAQB16plnnsn3339fdBlQpyZNqvrhxlOmlP78v5Pz5HP/zmNPf5SjT3ogv/9dh9lVXpLk\nuHN65pMPP81br72TvbbYN384Ys9sv8e21b5nzfXXKPf7BpuvnyR57bmKoUSSrN5h1Upf7//E1NsR\nbbzVRuVen3ZS8MUnXs7hpxySJNlq+y556I5H0uuP/5clll48nbpskE5bbJgu225aLoSqabuq9H9y\napuOm65X6T6+9OTLSY6v8L5V1vp12c9tllgsSTJi2LcV2t34WN+Z1jC9H3+YeqVV06YV/wk2K59d\ndRZquWBGjvgu48f9kIUWXrDctvHjfpjaplXLWvXZdL6mmW/++TLf/E1nua7pVXc8aqO2+1rf7euq\nzmma/Hx8fvzhx1ptm9FNl92SJNl+9+2STH0myOjvxuSCky7OmT3PTctWC2WzbTonSZ5+6NlssHnH\nmfY5veo+z177n5IDjt0vfzr9iLRq3SpDBg/JW6+9k9dfGJgbL705w4eOSKtFF876ndfL8ecdU6u+\n63rtzAvmlGNSV3MXABoCIQ0AUGfatWuXvn1rd+IS5gaNG9fsocmTJ09Jkowa/WOuuuGVeqmlqoCi\nSdMm6XPD2ene4XeZOGFittttm5n2NePJ4latWyVJvvu28qC1WfPKn78zcsR3SaZedVGZL//7VdnP\nvS87KZ27bZLH73syb7w0KA/e9nAevO3htF1miVx8S5+0X2PlWrWryrR9aDXDs2Sm7eO0mmfUYsEW\nZT83nW9qIFEXD1hv1nz+jB/3QyZOnJT55isfdMzKZ1ed5dsvn5Ejvsuwr4dV+IyHfjV0apuVa3YV\nzGPvPZgBLw7M4/c+mftvfjC3XX1nlltp2Wz7u27ZZtduWWb5pWepxuqOR23Udl/ru31d1TnNpIlT\nA+LK1l5122b02c/PxGm9+P+exdTjwF3z/Xej0veC63Pigb1zxd0XZ/n2y+fGS27ORbecP9M+p1fd\n53nHCzdnsSX+dzu85VZaNsuttGx22rv7L+67rtfO7FTXz6SZZk45JnU1dwGgIXC7MwCgzgwePDil\npaX++DPP/WnRosVM5/98TacGOYsvtmB6Hb1F/vnScfW95Cq4/dq707hxo0yZMiW9Dvi//DC++m8p\njxo5qtzv3/8cbCzyc5BRU63bTD3x++zHj1d6i7aXBj9T1rakpCRbbr95LrjxnDz9r0fzt35XZaMt\nNszQL4fl9KPOqXW7qiy62CJT96mKfZy2fXZps2SbJMnYUWMq3V7bz646G/58tdA/B31QYdv7b36Y\nJOnUZcMa9dW4SeNsvGWnnHnVqXnyw4dzbt8zsuyK7XLdRTdlp449st82B+XOv91T7hk/NTGz41FT\ntd3X+m5fV3VOM/r7qcdn8Z+PV023zWhaWPnf/3xe7vWDj/9jdj/wd5nw04Qcs3evHLbL0dmwywZZ\nq+OaM+1zetV9ntMHNLNidq6dulbdbSrr+pk005sTjkldzV0AaAiENAAAMIuaNJn6n9OLtGqeQ/ff\nKP0fPjxDPjg155+6XVZfZYl6HXvGb2H3u/PRPPPQc7nn5duz4ior5NOPPsu5x/apto93Xn+v3O+v\nv/BGkqTTFhvUqpYu222WJBn08psVtr312jvZb5uDytX9zdffJEkaNWqUdTutnfOuOzNJ8t+fv+1f\nm3ZV2XTrqbduGvjiG+Ven7aPm25du2+x/1K/XrN9kmTIF0MrbJuVz646O+y1fZq3aJaHbn+kwraH\nbn8kLRZonh322q7W/TZr3izddv5NLrntgjzxz4dy0oXHp0mTJrnolMuyzZo75sgeFW9VVZXqjkdt\n1HZf67t9XdU5zbTjU9mVY9Vtm9G0NXr9RTdV2HbcuT2z5fZdMm7MuHzy4afZ5DcbVWgzM3X1eda2\n77peO/OCOeWY1NXcBYCGQEgDAAC10LhRSUpKStK8WdPssfM6eei2/TPkg1Nz2bk7pnOnFdKoUcls\nr+nNV9/O5WdclUtvvzBLLL14+lx/dpq3aJbH7n0y9954f5Xvu/em+/P2gHczftwPGdh/UK44++q0\nbLVQDj6h4sO7q3PICQdk2RXbpU+vi/JMv+cyauSojB87Pv2ffDmnHXFWjj718HLtz+p5fj796LNM\nmDAxI4ePzN8vvzVJ0mnLDWepXWUO7XVAlmzXNpefdXUG9h+U8WPHl+3jku3a5pBa7uOM/rjdoTng\nt4fVuP1mP4dCH7z9UbnXZ/Wzq06btovlhD7H5t2B7+WiUy7L9yNH5fuRo/KXky/Ne2/8MydecFxa\nL/7Lrm5YeNGFs+t+O+W6h69Ovzfvy+EnHZzhQ0fU+P1VHY/aqu2+1nf7ZGrAOGOIOqufyQdvT73K\nZvOfnxdT020zOrTXgVlxlRXy1IPP5uSDT8tn//5vJk2clOFDR+SeG/6RQa+8lTXXXz1Jctafzs3r\nM4SbM1NXn2dt+q6PtVPX/rjdoTlw+5r/PfFLzUnHpK7mLgA0BCWlpaW//AbLAAAwD1t44YUzevTo\nlJSUZLONVsjeu3XIrt3XyiKtmlf7vpLFjs95152VrjtuWaNTLHgVAAAJVklEQVRxZuUZBdO/Z8vt\nu+TAY/fLXlvsV2nbGcd56M17c+GJl2TQK2+ldMqUrLvROjnmzKOyQvvlq62pslvvjP5+TK6/+KY8\n98gL+WbI8LRs1TJrdFg1+/fct+zkb5K88/q7uf+Wh/Lmy2/nm6HD06x5syzVrm1+s9NW2euQHmXP\nKKhpuxnrm762kcNH5po+16f/Ey9l5Ijvsuhii2TTbpvk0BMPzKJt/vdsjqr6qK7v/bc9OCUljXLD\no9dUOBaVmThhYnbs2CNLtWub6x6+ukL/Nf3sauO1517PDZfenI/emXpye9V1VskBx+xb64fC14fK\njsf0qloLVR2L2u5rfbafVntltdZ23P23PTjDvh6eBwfeXfaMpJpsq8wP43/M7dfcmWceei6DP/0y\nkyZNymJLtE6HjdbJ7/bfJWt1XCMXnXJZ7uh7d9l7Fmy5YJ7/5ImZ9j2zz/OXKGLt1Hb+VaW2f0/8\nEnPaManLuTtjHXddt3d67LR2zd/UevbffhQAakNIAwAAM3HaaaelVatW2f23i2ap1sNr/L7ahjSz\nS3Unkak/Lz31So75/Qk5p+8Z6bbTVkWXUzjHo3qP3ftkTj38zFxy2wXp3HXjGm8rSn1+nubK3KU+\n566QBoB5UZOiCwAAgDndGWecMfWHMf2SCTUPaWB6nbtunJP+cnzOO+6CzDdf07LnhDRUjkfVnnvk\nhZx/wl9y0oXHVTiRXd22ItXn52muzD3mxrkLAEUT0gAAAMwmu+yzY369xsq57IyrnGiO41GVO/re\nk6vuvTSrd1itVtuKVp+fp7kyd5hb5y4AFMntzgAAoKbG9Esm/KvGzefE251V95wV5lw1fV6RzxPK\ns3YqmpuPidudATAvciUNAAA0IHPiSTdmzucGs8baqcgxAYA5S6OiCwAAAAAAAGiIhDQAAAAAAAAF\nENIAAAAAAAAUQEgDAAAAAABQACENAAAAAABAAYQ0AAAAAAAABRDSAAAAAAAAFEBIAwAAAAAAUAAh\nDQAAAAAAQAGENAAAAAAAAAUQ0gAAAAAAABRASAMAAAAAAFAAIQ0AAAAAAEABmhRdAAAAzMsGvvhG\nxowaU3QZAAAAzIGENAAAUE+WWXqR/OPmB4suAwDmCY0bN8rSSy5cdBkAUKeENAAAUE++eOfkoksA\nAABgDuaZNAAAAAAAAAUQ0gAAAAAAABRASAMAAAAAAFAAIQ0AAAAAAEABhDQAAAAAAAAFENIAAAAA\nAAAUQEgDAAAAAABQACENAAAAAABAAYQ0AAAAAAAABRDSAAAAAAAAFEBIAwAAAAAAUAAhDQAAAAAA\nQAGENAAAAAAAAAUQ0gAAAAAAABRASAMAAAAAAFCAJkUXAAAAANM88tSH6fv3ARkwaHBGfj8+i7Zq\nkY7rLpMD9t4gO223RtHlAQBAnXIlDQAAAIWbOHFy9j70jvz+kNuz5aa/ysCnj87Yz8/JwKePzlab\nrZx9j7gru+53c374cWLRpQIAQJ0pKS0tLS26CAAAmCuM6ZdM+FfRVcA86dBj78sNtw/MK48dmfXX\nWabC9gGDBqfzb6/MHjuvk1uu3vMXjVWy2PFJktIRF/6ifubW8aFBaX1c0RUAQLVcSQMAAEChBgwa\nnGv//lr222P9SgOaJNlwvWWzz+7r5dZ73kz/1z6bzRUCAED9ENIAAABQqGtuejVJ8rsd1qq23W47\nrJ0k+dvNA+q9JgAAmB2aFF0AAAAADVv/V6deGbPmam2rbbfW6ksmSV4e8N+y16bdOiwpf/uwmrw+\n7ecD9t4g1126W4Xt7798XP7cu19eef2/mTKlNJtvvGL+cmb3rNp+8XobHwCAhsWVNAAAABTq66Gj\nkyStF1mg2natF22RJBkybHTZa1U916Umr5eOuDClIy4sF5BMv/2gY+5N72N/k6/f750Hb90vb777\nVTbZ7or8d/B39TY+AAANi5AGAACAuUpJyewZ5//+vFU22XD5LLjA/Nlqs5Vz/qnb5bvvf8jpFzw5\newoAAGCeJ6QBAACgUEsu0TJJMvL78dW2+3bk1O1LtV243mtKko06Llfu999svnKS5Mnn/j1bxgcA\nYN4npAEAAKBQm260QpLk3feHVNvuvQ+mbt9s4xXqvaYkabVw83K/L9Z66u3Yhn87draMDwDAvE9I\nAwAAQKEO3a9TkuS+fu9V2+7uB9/5uf1G5V4v+fn+ZxMnTi57bdToH39xXdOu3JlmxLfjkiRtWi84\nW8YHAGDeJ6QBAACgUJ3WXy6H7NspN94xMG+8/WWlbQYMGpyb7xqUQ/btlI7rtiu3re3iCyVJhgwb\nU/baW+99VeV4LZo3TTI1VBn/w8S0Xvm0Stu9/Ppn5X5/+oWPkyTdtmg/W8YHAGDeJ6QBAACgcJef\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 }