import quantopian.pipeline.data.morningstar as mstar
from quantopian.pipeline import Pipeline, CustomFilter
from quantopian.research import run_pipeline
import numpy as np
class EPS_NaN(CustomFilter):
# Define inputs
inputs = [mstar.valuation_ratios.pe_ratio]
window_length = 252
def compute(self, today, assets, out, pe):
# The input 'pe' is a Numpy array with data as axis 0 (total rows = window length)
# and axis 1 are all the assets (ie stocks and securities).
# Here we use the built in Numpy methods to check for all NaNs (ie all negative earnings).
is_nan = np.isnan(pe)
out[:] = np.all(is_nan, axis=0)
# Get the basic EPS and some info about where it comes from
filed = mstar.financial_statement_filing.file_date.latest
as_of = mstar.financial_statement_filing.period_ending_date.latest
form = mstar.financial_statement_filing.form_type.latest
pe = mstar.valuation_ratios.pe_ratio.latest
neg_pe = EPS_NaN()
# Create a pipline and add a fundamental factor
pipe = Pipeline()
pipe.add(filed, 'filed' )
pipe.add(as_of, 'as_of' )
pipe.add(form, 'form' )
pipe.add(pe, 'pe' )
pipe.add(neg_pe, 'neg_pe' )
# Print out the pipeline results listing the data and the dates
results = run_pipeline(pipe, '2017-1-7', '2017-1-7')
results
as_of | filed | form | neg_pe | pe | ||
---|---|---|---|---|---|---|
2017-01-09 00:00:00+00:00 | Equity(2 [ARNC]) | NaT | NaT | None | False | NaN |
Equity(21 [AAME]) | 2016-09-30 | 2016-11-14 | 8-K | False | 77.0000 | |
Equity(24 [AAPL]) | 2016-09-24 | 2016-10-25 | 8-K | False | 14.0325 | |
Equity(25 [ARNC_PR]) | 2016-09-30 | 2016-11-09 | 8-K | True | NaN | |
Equity(31 [ABAX]) | 2016-09-30 | 2016-11-09 | 8-K | False | 34.6447 | |
Equity(39 [DDC]) | 2016-10-31 | 2016-12-09 | 6-K | False | 43.1127 | |
Equity(41 [ARCB]) | 2016-09-30 | 2016-11-08 | 8-K | False | 34.0964 | |
Equity(52 [ABM]) | 2016-10-31 | 2016-12-14 | 8-K | False | 37.2202 | |
Equity(53 [ABMD]) | 2016-09-30 | 2016-11-04 | 8-K | False | 118.3608 | |
Equity(62 [ABT]) | 2016-09-30 | 2016-11-03 | 8-K | False | 60.1515 | |
Equity(64 [ABX]) | 2016-09-30 | 2016-10-27 | 6-K | False | 10.2942 | |
Equity(66 [AB]) | 2016-09-30 | 2016-10-26 | 8-K | False | 12.0545 | |
Equity(67 [ADSK]) | 2016-10-31 | 2016-11-29 | 8-K | False | 149.6675 | |
Equity(69 [ACAT]) | 2016-09-30 | 2016-11-09 | 8-K | False | 955.6480 | |
Equity(70 [VBF]) | NaT | NaT | None | True | NaN | |
Equity(76 [TAP]) | 2016-09-30 | 2016-11-01 | 8-K | False | 36.6471 | |
Equity(84 [ACET]) | 2016-09-30 | 2016-11-03 | 8-K | False | 21.6337 | |
Equity(100 [IEP]) | 2016-09-30 | 2016-11-03 | 8-K | False | 33.9701 | |
Equity(106 [ACU]) | 2016-09-30 | 2016-11-04 | 8-K | False | 15.4224 | |
Equity(110 [ACXM]) | 2016-09-30 | 2016-11-08 | 8-K | False | 245.2727 | |
Equity(112 [ACY]) | 2016-09-30 | 2016-11-10 | 8-K | False | 3.6964 | |
Equity(114 [ADBE]) | 2016-12-02 | 2016-12-15 | 8-K | False | 54.0357 | |
Equity(117 [AEY]) | 2016-09-30 | 2016-12-13 | 8-K | False | 57.0000 | |
Equity(122 [ADI]) | 2016-10-29 | 2016-08-17 | 10-Q | False | 25.8406 | |
Equity(128 [ADM]) | 2016-09-30 | 2016-11-01 | 8-K | False | 17.4695 | |
Equity(149 [ADX]) | NaT | NaT | None | True | NaN | |
Equity(153 [AE]) | 2016-09-30 | 2016-11-09 | 8-K | False | 934.1242 | |
Equity(154 [AEM]) | 2016-09-30 | 2016-11-01 | 6-K | False | 130.1714 | |
Equity(157 [AEG]) | NaT | NaT | None | False | 18.1109 | |
Equity(161 [AEP]) | 2016-09-30 | 2016-11-02 | 10-Q | False | 70.2111 | |
... | ... | ... | ... | ... | ... | |
Equity(50541 [KEY_PRI]) | 2016-09-30 | 2016-11-07 | 8-K | True | NaN | |
Equity(50542 [JHMD]) | NaT | NaT | None | True | NaN | |
Equity(50543 [COWZ]) | NaT | NaT | None | True | NaN | |
Equity(50544 [KEG]) | 2016-09-30 | 2016-11-14 | 8-K | False | 281.3263 | |
Equity(50546 [NURE]) | NaT | NaT | None | True | NaN | |
Equity(50547 [YTRA]) | 2016-09-30 | 2016-11-09 | 10-Q | True | NaN | |
Equity(50548 [RXII_W]) | NaT | NaT | None | True | NaN | |
Equity(50549 [BMLP]) | NaT | NaT | None | True | NaN | |
Equity(50550 [WBIY]) | NaT | NaT | None | True | NaN | |
Equity(50552 [FIV]) | NaT | NaT | None | True | NaN | |
Equity(50554 [HEBT]) | NaT | NaT | None | False | 19.3050 | |
Equity(50555 [UUUU_WS]) | NaT | NaT | None | True | NaN | |
Equity(50556 [SAB]) | NaT | NaT | None | True | NaN | |
Equity(50558 [INFR]) | NaT | NaT | None | True | NaN | |
Equity(50559 [VVPR]) | 2016-08-31 | 2016-10-12 | 10-Q | True | NaN | |
Equity(50560 [XK]) | NaT | NaT | None | True | NaN | |
Equity(50561 [XE]) | NaT | NaT | None | True | NaN | |
Equity(50562 [XH]) | NaT | NaT | None | True | NaN | |
Equity(50563 [XM]) | NaT | NaT | None | True | NaN | |
Equity(50564 [XD]) | NaT | NaT | None | True | NaN | |
Equity(50565 [XI]) | NaT | NaT | None | True | NaN | |
Equity(50566 [XU]) | NaT | NaT | None | True | NaN | |
Equity(50567 [XF]) | NaT | NaT | None | True | NaN | |
Equity(50568 [XS]) | NaT | NaT | None | True | NaN | |
Equity(50569 [OUSM]) | NaT | NaT | None | True | NaN | |
Equity(50570 [SPLZ]) | NaT | NaT | None | True | NaN | |
Equity(50571 [UTLZ]) | NaT | NaT | None | True | NaN | |
Equity(50574 [HUNT_W]) | NaT | NaT | None | True | NaN | |
Equity(50575 [HUNT]) | NaT | NaT | None | True | NaN | |
Equity(50576 [WTIU]) | NaT | NaT | None | True | NaN |
8339 rows × 5 columns
results.query('neg_pe').sort_values('pe')
as_of | filed | form | neg_pe | pe | ||
---|---|---|---|---|---|---|
2017-01-09 00:00:00+00:00 | Equity(25 [ARNC_PR]) | 2016-09-30 | 2016-11-09 | 8-K | True | NaN |
Equity(70 [VBF]) | NaT | NaT | None | True | NaN | |
Equity(149 [ADX]) | NaT | NaT | None | True | NaN | |
Equity(451 [APB]) | NaT | NaT | None | True | NaN | |
Equity(542 [ASA]) | NaT | NaT | None | True | NaN | |
Equity(600 [OA]) | NaT | NaT | None | True | NaN | |
Equity(785 [INSI]) | NaT | NaT | None | True | NaN | |
Equity(927 [BKT]) | NaT | NaT | None | True | NaN | |
Equity(1113 [BSD]) | NaT | NaT | None | True | NaN | |
Equity(1517 [CHN]) | NaT | NaT | None | True | NaN | |
Equity(1546 [CIF]) | NaT | NaT | None | True | NaN | |
Equity(1602 [CLSN]) | 2016-09-30 | 2016-11-10 | 10-Q | True | NaN | |
Equity(1668 [CMS_PRB]) | 2016-09-30 | 2016-10-27 | 10-Q | True | NaN | |
Equity(1677 [CMU]) | NaT | NaT | None | True | NaN | |
Equity(2009 [TSI]) | NaT | NaT | None | True | NaN | |
Equity(2036 [CXE]) | NaT | NaT | None | True | NaN | |
Equity(2037 [CXH]) | NaT | NaT | None | True | NaN | |
Equity(2124 [DD_PRA]) | 2016-09-30 | 2016-10-25 | 8-K | True | NaN | |
Equity(2125 [DD_PRB]) | 2016-09-30 | 2016-10-25 | 8-K | True | NaN | |
Equity(2174 [DIA]) | NaT | NaT | None | True | NaN | |
Equity(2244 [DNP]) | NaT | NaT | None | True | NaN | |
Equity(2324 [DSM]) | NaT | NaT | None | True | NaN | |
Equity(2339 [DTF]) | NaT | NaT | None | True | NaN | |
Equity(2349 [DUC]) | NaT | NaT | None | True | NaN | |
Equity(2523 [EMF]) | NaT | NaT | None | True | NaN | |
Equity(3045 [FT]) | NaT | NaT | None | True | NaN | |
Equity(3069 [FUND]) | NaT | NaT | None | True | NaN | |
Equity(3084 [GAB]) | NaT | NaT | None | True | NaN | |
Equity(3092 [GAM]) | NaT | NaT | None | True | NaN | |
Equity(3124 [GCH]) | NaT | NaT | None | True | NaN | |
... | ... | ... | ... | ... | ... | |
Equity(50539 [TIG]) | NaT | NaT | None | True | NaN | |
Equity(50540 [TRVG]) | NaT | NaT | None | True | NaN | |
Equity(50541 [KEY_PRI]) | 2016-09-30 | 2016-11-07 | 8-K | True | NaN | |
Equity(50542 [JHMD]) | NaT | NaT | None | True | NaN | |
Equity(50543 [COWZ]) | NaT | NaT | None | True | NaN | |
Equity(50546 [NURE]) | NaT | NaT | None | True | NaN | |
Equity(50547 [YTRA]) | 2016-09-30 | 2016-11-09 | 10-Q | True | NaN | |
Equity(50548 [RXII_W]) | NaT | NaT | None | True | NaN | |
Equity(50549 [BMLP]) | NaT | NaT | None | True | NaN | |
Equity(50550 [WBIY]) | NaT | NaT | None | True | NaN | |
Equity(50552 [FIV]) | NaT | NaT | None | True | NaN | |
Equity(50555 [UUUU_WS]) | NaT | NaT | None | True | NaN | |
Equity(50556 [SAB]) | NaT | NaT | None | True | NaN | |
Equity(50558 [INFR]) | NaT | NaT | None | True | NaN | |
Equity(50559 [VVPR]) | 2016-08-31 | 2016-10-12 | 10-Q | True | NaN | |
Equity(50560 [XK]) | NaT | NaT | None | True | NaN | |
Equity(50561 [XE]) | NaT | NaT | None | True | NaN | |
Equity(50562 [XH]) | NaT | NaT | None | True | NaN | |
Equity(50563 [XM]) | NaT | NaT | None | True | NaN | |
Equity(50564 [XD]) | NaT | NaT | None | True | NaN | |
Equity(50565 [XI]) | NaT | NaT | None | True | NaN | |
Equity(50566 [XU]) | NaT | NaT | None | True | NaN | |
Equity(50567 [XF]) | NaT | NaT | None | True | NaN | |
Equity(50568 [XS]) | NaT | NaT | None | True | NaN | |
Equity(50569 [OUSM]) | NaT | NaT | None | True | NaN | |
Equity(50570 [SPLZ]) | NaT | NaT | None | True | NaN | |
Equity(50571 [UTLZ]) | NaT | NaT | None | True | NaN | |
Equity(50574 [HUNT_W]) | NaT | NaT | None | True | NaN | |
Equity(50575 [HUNT]) | NaT | NaT | None | True | NaN | |
Equity(50576 [WTIU]) | NaT | NaT | None | True | NaN |
3964 rows × 5 columns