Quantopian's community platform is shutting down. Please read this post for more information and download your code.
Back to Community
Industry Mean PE Ratio mixed with Stocktwits

I'm having difficulties running the below code and run into error message: BadBinaryOperator: Can't compute Latest < list. What I'm trying to do is combined the factors in "make_factors" then rank them based on their industry mean pe ratio to start.

def make_factors():  
        class Intraday(CustomFactor):  
            inputs = [USEquityPricing.close, USEquityPricing.open]  
            window_length = 6  
            window_safe = True  
            def compute(self, today, assets, out, close, open):  
                x = np.cumprod(open[:] / close[:], axis=0)[-1] - 1  
                out[:] = preprocess(x)  
        class Reversion_Volume(CustomFactor):  
            inputs = [USEquityPricing.volume]  
            window_length = 14  
            window_safe = True  
            def compute(self, today, assets, out, volumes):  
                x = -volumes[-1] / np.mean(volumes, axis=0)  
                out[:] = preprocess(x)  
        class BullBearIntensity(CustomFactor):  
            inputs = [stocktwits.bull_minus_bear]  
            window_length = 4  
            window_safe= True  
            def compute(self, today, assets, out, bull_minus_bear):  
                x= np.nanmean(bull_minus_bear, axis = 0)  
                out[:] = preprocess(x)  
        class PsychSignalMessages(CustomFactor):  
            inputs = [stocktwits.bull_scored_messages,stocktwits.bear_scored_messages,stocktwits.total_scanned_messages]  
            window_length = 30  
            def compute(self, today, assets, out, bull_msgs, bear_msgs, ts):  
                x = np.nanmean(((bull_msgs + bear_msgs)/ts), axis = 0)  
                out[:] = preprocess(x)  


        factors = [  
            Intraday,  
            Reversion_Volume,  
            BullBearIntensity,  
            PsychSignalMessages,  
        ]  
        return factors

def IndustryAVG():  
        class IndustryMeanPE(CustomFactor):  
            inputs = [Fundamentals.pe_ratio, Fundamentals.morningstar_industry_group_code]  
            window_length = 252  
            def compute(self, today, assets, out, pe_ratio, industry_codes):  
                df = pd.DataFrame(index=assets, data={"pe_ratio": pe_ratio[-1], "industry_codes": industry_codes[-1]})  
                out[:] = df.groupby("industry_codes").transform(np.mean).values.flatten()  
        indavg = [  
            IndustryMeanPE,  
        ]  
        return indavg  
def make_pipeline():  
    universe = QTradableStocksUS()  
    factors = make_factors()  
    beta = SimpleBeta(target=sid(8554),regression_length=260,  
                      allowed_missing_percentage=1.0  
                     )  
    indavg = IndustryAVG()  
#____________________________Combined Alphas___________________________  
    combined_alpha = None  
    for f in factors:  
        if combined_alpha == None:  
            combined_alpha = f(mask=universe).rank(mask=indavg)  
        else:  
            combined_alpha += f(mask=universe).rank(mask=indavg)  
    #combined_alpha_sma = None  
    #for f in factors:  
        #if combined_alpha_sma == None:  
            #combined_alpha_sma = SimpleMA([f(mask=universe)],window_length=FACTOR_AVG_WINDOW)  
        #else:  
            #combined_alpha_sma += SimpleMA([f(mask=universe)],window_length=FACTOR_AVG_WINDOW)  
    pipe = Pipeline(columns = {  
        'combined_alpha':combined_alpha,  
        'beta':beta,  
    },  
    screen = universe)# & screens)  
    return pipe