Notebook

Fundamental Basic EPS Example¶

In [1]:
import quantopian.pipeline.data.morningstar as mstar

from quantopian.pipeline import Pipeline, CustomFilter
from quantopian.research import run_pipeline

import numpy as np
In [10]:
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)
        
In [11]:
# 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()
In [12]:
# 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
Out[12]:
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

In [13]:
results.query('neg_pe').sort_values('pe')
Out[13]:
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

In [ ]:
 
In [ ]: