Quantopian's community platform is shutting down. Please read this post for more information and download your code.
Back to Community
Getting Pipeline to Work With MorningStar earnings_ratios

I'm trying to write a program that takes finds all stocks with P/Es between 9.5 and 14. When the code gets to pe_ratios = earnings_ratios(inputs = [USEquityPricing.close]), it gives an error that says Object() type takes 0 arguments.

Can anyone help me to understand what I'm doing wrong?

from quantopian.algorithm import attach_pipeline, pipeline_output  
from quantopian.pipeline import Pipeline  
from quantopian.pipeline.data.builtin import USEquityPricing  
from quantopian.pipeline.factors import AverageDollarVolume  
from quantopian.pipeline.data.morningstar import earnings_ratios

def initialize(context):

    pipe = Pipeline()  
    attach_pipeline(pipe, name='Pipeline')  
    pe_ratio =earnings_ratios(inputs=[USEquityPricing.close])  
    pipe.add(pe_ratio, 'pe_ratio')  
    pipe.set_screen(pe_ratio < 14.0 and pe_ratio > 9.0)  
    schedule_function('rebalance', date_rules.month_start)  
def rebalance(context, data):  
    context.Pandas_PE = pipeline_output('Pipeline')  
    print context.Pandas_PE  
2 responses

Your pe_ratio line should be:

pe_ratio = morningstar.valuation_ratios.pe_ratio.latest  

Do what Ann said, and change your import statement to reflect this. Also the schedule_function should not have the function name in quotes.
This version works:

from quantopian.algorithm import attach_pipeline, pipeline_output  
from quantopian.pipeline import Pipeline  
from quantopian.pipeline.data import morningstar

def initialize(context):  
    pipe = Pipeline()  
    attach_pipeline(pipe, name="Pipeline")  
    pe_ratios = morningstar.valuation_ratios.pe_ratio.latest  
    pipe.add(pe_ratios, "pe_ratio")  
    pipe.set_screen((9.0<=pe_ratios<=14.0))  
    schedule_function(rebalance, date_rules.month_start(),time_rules.market_open())  
def rebalance(context, data):  
    context.Pandas_PE = pipeline_output("Pipeline")  
    print context.Pandas_PE