def make_pipeline(asset_finder): h2o = USEquityPricing.high.latest / USEquityPricing.open.latest l2o = USEquityPricing.low.latest / USEquityPricing.open.latest c2o = USEquityPricing.close.latest / USEquityPricing.open.latest h2c = USEquityPricing.high.latest / USEquityPricing.close.latest l2c = USEquityPricing.low.latest / USEquityPricing.close.latest h2l = USEquityPricing.high.latest / USEquityPricing.low.latest vol = USEquityPricing.volume.latest outstanding = Fundamental(asset_finder).outstanding outstanding.window_safe = True turnover_rate = vol / Latest([outstanding]) returns = Returns(inputs=[USEquityPricing.close], window_length=5) # 预测一周数据 pipe_columns = { 'h2o': h2o.log1p().zscore(), 'l2o': l2o.log1p().zscore(), 'c2o': c2o.log1p().zscore(), 'h2c': h2c.log1p().zscore(), 'l2c': l2c.log1p().zscore(), 'h2l': h2l.log1p().zscore(), 'vol': vol.zscore(), 'turnover_rate': turnover_rate.log1p().zscore(), 'return': returns.log1p(), } # pipe_screen = (low_returns | high_returns) pipe = Pipeline(columns=pipe_columns) return pipe