Beispiel #1
0
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