def make_pipeline(asset_finder): hs300 = ts.get_hs300s()['code'] private_universe = private_universe_mask(hs300.tolist(), asset_finder=asset_finder) #private_universe = private_universe_mask(['000001','000002','000005'],asset_finder=asset_finder) ###################################################################################################### returns = Returns(inputs=[USEquityPricing.close], window_length=5, mask=private_universe) # 预测一周数据 ###################################################################################################### ep = 1 / Fundamental(mask=private_universe, asset_finder=asset_finder).pe bp = 1 / Fundamental(mask=private_universe, asset_finder=asset_finder).pb bvps = Fundamental(mask=private_universe, asset_finder=asset_finder).bvps market = Fundamental(mask=private_universe, asset_finder=asset_finder).outstanding totals = Fundamental(mask=private_universe, asset_finder=asset_finder).totals totalAssets = Fundamental(mask=private_universe, asset_finder=asset_finder).totalAssets fixedAssets = Fundamental(mask=private_universe, asset_finder=asset_finder).fixedAssets esp = Fundamental(mask=private_universe, asset_finder=asset_finder).esp rev = Fundamental(mask=private_universe, asset_finder=asset_finder).rev profit = Fundamental(mask=private_universe, asset_finder=asset_finder).profit gpr = Fundamental(mask=private_universe, asset_finder=asset_finder).gpr npr = Fundamental(mask=private_universe, asset_finder=asset_finder).npr rev10 = Returns(inputs=[USEquityPricing.close], window_length=10, mask=private_universe) vol10 = AverageDollarVolume(window_length=20, mask=private_universe) rev20 = Returns(inputs=[USEquityPricing.close], window_length=20, mask=private_universe) vol20 = AverageDollarVolume(window_length=20, mask=private_universe) rev30 = Returns(inputs=[USEquityPricing.close], window_length=30, mask=private_universe) vol30 = AverageDollarVolume(window_length=20, mask=private_universe) illiq22 = ILLIQ(window_length=22, mask=private_universe) illiq5 = ILLIQ(window_length=5, mask=private_universe) rsi5 = RSI(window_length=5, mask=private_universe) rsi22 = RSI(window_length=22, mask=private_universe) mom5 = Momentum(window_length=5, mask=private_universe) mom22 = Momentum(window_length=22, mask=private_universe) sector = get_sector(asset_finder=asset_finder, mask=private_universe) ONEHOTCLASS, sector_indict_keys = get_sector_by_onehot( asset_finder=asset_finder, mask=private_universe) pipe_columns = { 'ep': ep.zscore(groupby=sector).downsample('month_start'), 'bp': bp.zscore(groupby=sector).downsample('month_start'), 'bvps': bvps.zscore(groupby=sector).downsample('month_start'), 'market_cap': market.zscore(groupby=sector).downsample('month_start'), 'totals': totals.zscore(groupby=sector).downsample('month_start'), 'totalAssets': totalAssets.zscore(groupby=sector).downsample('month_start'), 'fixedAssets': fixedAssets.zscore(groupby=sector).downsample('month_start'), 'esp': esp.zscore(groupby=sector).downsample('month_start'), 'rev': rev.zscore(groupby=sector).downsample('month_start'), 'profit': profit.zscore(groupby=sector).downsample('month_start'), 'gpr': gpr.zscore(groupby=sector).downsample('month_start'), 'npr': npr.zscore(groupby=sector).downsample('month_start'), 'vol10': vol10.zscore(groupby=sector).downsample('week_start'), 'rev10': rev10.zscore(groupby=sector).downsample('week_start'), 'vol20': vol20.zscore(groupby=sector).downsample('week_start'), 'rev20': rev20.zscore(groupby=sector).downsample('week_start'), 'vol30': vol30.zscore(groupby=sector).downsample('week_start'), 'rev30': rev30.zscore(groupby=sector).downsample('week_start'), 'ILLIQ5': illiq5.zscore(groupby=sector).downsample('week_start'), 'ILLIQ22': illiq22.zscore(groupby=sector).downsample('week_start'), 'mom5': mom5.zscore(groupby=sector).downsample('week_start'), 'mom22': mom22.zscore(groupby=sector).downsample('week_start'), 'rsi5': rsi5.zscore(groupby=sector).downsample('week_start'), 'rsi22': rsi22.zscore(groupby=sector).downsample('week_start'), #'rsi22': rsi22.zscore(groupby=sector, mask=rsi22.percentile_between(1, 99)), ####################################################################################################################### # 'ILLIQ5-2' : illiq5.zscore(groupby=quantiles([illiq5],bins = 10,mask = private_universe)).downsample('week_start'), # 'ILLIQ22-2': illiq22.zscore(groupby=quantiles([illiq22],bins = 10,mask = private_universe)).downsample('week_start'), # 'ILLIQ5-2': illiq5.zscore(groupby=market.quantiles(bins=10, mask=private_universe)).downsample('week_start'), # 'ILLIQ22-2': illiq22.zscore(groupby=market.quantiles(bins=10, mask=private_universe)).downsample('week_start'), ############################################################################################################################# 'returns': returns.downsample('week_start'), } pipe = Pipeline( columns=pipe_columns, screen=private_universe, ) i = 0 for c in ONEHOTCLASS: pipe.add(c, sector_indict_keys[i]) i += 1 return pipe