def create_high_dollar_volume_pipeline(): pipe = Pipeline() dollar_volume = AverageDollarVolume( window_length=63) # 63 days = 1 quarter pipe.add(dollar_volume, 'dollar_volume') high_dollar_volume = dollar_volume.percentile_between( 95, 100) # top 5% by dollar volume pipe.set_screen(high_dollar_volume) return pipe
def make_pipeline(): dollar_volume = AverageDollarVolume(window_length=1) high_dollar_volume = dollar_volume.percentile_between(N, 100) recent_returns = Returns(window_length=N, mask=high_dollar_volume) low_returns = recent_returns.percentile_between(0, 10) high_returns = recent_returns.percentile_between(N, 100) pipe_columns = { 'low_returns': low_returns, 'high_returns': high_returns, 'recent_returns': recent_returns, 'dollar_volume': dollar_volume } pipe_screen = (low_returns | high_returns) pipe = Pipeline(columns=pipe_columns, screen=pipe_screen) return pipe
def make_pipeline(context): """ A function to create our pipeline (dynamic stock selector). The pipeline is used to rank stocks based on different factors, including builtin factors, or custom factors that you can define. Documentation on pipeline can be found here: https://www.quantopian.com/help#pipeline-title """ # Create a pipeline object. # Create a dollar_volume factor using default inputs and window_length. # This is a builtin factor. dollar_volume = AverageDollarVolume(window_length=1) # Define high dollar-volume filter to be the top 2% of stocks by dollar # volume. high_dollar_volume = dollar_volume.percentile_between(95, 100) # Create a recent_returns factor with a 5-day returns lookback for all securities # in our high_dollar_volume Filter. This is a custom factor defined below (see # RecentReturns class). recent_returns = Returns( window_length=16, mask=high_dollar_volume) # Define high and low returns filters to be the bottom 1% and top 1% of # securities in the high dollar-volume group. low_returns = recent_returns.percentile_between(0, 5) high_returns = recent_returns.percentile_between(95, 100) # Define a column dictionary that holds all the Factors pipe_columns = { 'low_returns': low_returns, 'high_returns': high_returns, 'recent_returns': recent_returns, 'dollar_volume': dollar_volume } # Add a filter to the pipeline such that only high-return and low-return # securities are kept. # pipe_screen = (low_returns & liquidity_filter | high_returns & vol_filter) pipe_screen = (low_returns | high_returns) # Create a pipeline object with the defined columns and screen. pipe = Pipeline(columns=pipe_columns, screen=pipe_screen) return pipe
def make_pipeline(): # universe = make_china_equity_universe( # target_size = 100, # mask = default_china_equity_universe_mask(['000001']), # max_group_weight= 0.01, # smoothing_func = lambda f: f.downsample('week_start'), # ) dollar_volume = AverageDollarVolume(window_length=1) high_dollar_volume = dollar_volume.percentile_between(N, 100) recent_returns = Returns(window_length=N, mask=high_dollar_volume) low_returns = recent_returns.percentile_between(0, 10) high_returns = recent_returns.percentile_between(N, 100) pipe_columns = { 'low_returns': low_returns, 'high_returns': high_returns, 'recent_returns': recent_returns, 'dollar_volume': dollar_volume } pipe_screen = (low_returns | high_returns) pipe = Pipeline(columns=pipe_columns, screen=pipe_screen) return pipe
def initialize(context): ws.send(msg_placeholder % "Simulation Start") pipe = Pipeline() attach_pipeline(pipe, "volume_pipeline") # 100 day average dollar volume factor dollar_volume = AverageDollarVolume(window_length=100) pipe.add(dollar_volume, "100_day_dollar_volume") # filter out only the top stocks by dollar volume high_dollar_volume = dollar_volume.percentile_between(99, 100) pipe.set_screen(high_dollar_volume) # set the global variables context.dev_multiplier = 2 context.max_notional = 1000000 context.min_notional = -1000000 context.days_traded = 0 ws.send(msg_placeholder % "Pipeline filter attached") schedule_function(func=choose_and_order, date_rule=date_rules.every_day())