here's one that crashes.
from quantopian.algorithm import attach_pipeline, pipeline_output
from quantopian.pipeline import Pipeline
from quantopian.pipeline.factors import CustomFactor, SimpleMovingAverage, AverageDollarVolume, Latest, RSI
from quantopian.pipeline.data.builtin import USEquityPricing
from quantopian.pipeline.data import morningstar as mstar
from quantopian.pipeline.filters.morningstar import IsPrimaryShare
from quantopian.pipeline.data.psychsignal import stocktwits
from quantopian.pipeline.data.psychsignal import twitter_noretweets as twitter
from quantopian.pipeline.classifiers.morningstar import Sector
from quantopian.pipeline.data import morningstar
import numpy as np
import pandas as pd
import time
class twitter(CustomFactor):
inputs = [twitter.total_scanned_messages]
window_length = 50
def compute(self, today, assets, out, msgs):
out[:] = np.nanmean(msgs[-5:], axis=0)/np.nanmean(msgs, axis=0)
class twitter_bull(CustomFactor):
inputs = [twitter.bullish_intensity]
window_length = 50
def compute(self, today, assets, out, msgs):
out[:] = np.nanmean(msgs[-5:], axis=0)/np.nanmean(msgs, axis=0)
def make_pipeline():
pipe = Pipeline()
initial_screen = filter_universe()
pipe.add(twitter(mask=initial_screen), "twitter_momentum")
pipe.add(twitter_bull(mask=initial_screen), "twitter_bull")
return pipe
def initialize(context):
attach_pipeline(make_pipeline(), 'ranking_example')
context.dont_buy = security_lists.leveraged_etf_list
def before_trading_start(context, data):
output = pipeline_output('ranking_example')
def filter_universe():
common_stock = mstar.share_class_reference.security_type.latest.eq('ST00000001')
not_lp_name = ~mstar.company_reference.standard_name.latest.matches('.* L[\\. ]?P\.?$')
not_lp_balance_sheet = mstar.balance_sheet.limited_partnership.latest.isnull()
have_data = mstar.valuation.market_cap.latest.notnull()
not_otc = ~mstar.share_class_reference.exchange_id.latest.startswith('OTC')
not_wi = ~mstar.share_class_reference.symbol.latest.endswith('.WI')
not_depository = ~mstar.share_class_reference.is_depositary_receipt.latest
primary_share = IsPrimaryShare()
# Combine the above filters.
tradable_filter = (common_stock & not_lp_name & not_lp_balance_sheet &
have_data & not_otc & not_wi & not_depository & primary_share)
high_volume_tradable = AverageDollarVolume(
window_length=21,
mask=tradable_filter
).rank(ascending=False) < 1000
mask = high_volume_tradable
return mask