Hi, I compute F score as follows in pipeline, but doesn't work. error says filter cannot be add.
How to do it? thanks.
return_on_assets = Latest([sharadar.Fundamentals.slice(dimension='ARY', period_offset=0).ROA], mask=tradable_stocks)
total_assets = Latest([sharadar.Fundamentals.slice(dimension='ARY', period_offset=0).ASSETS], mask=tradable_stocks)
operating_cash_flows = Latest([sharadar.Fundamentals.slice(dimension='ARY', period_offset=0).NCFO], mask=tradable_stocks)
leverages = Latest([sharadar.Fundamentals.slice(dimension='ARY', period_offset=0).DE], mask=tradable_stocks)
current_ratios = Latest([sharadar.Fundamentals.slice(dimension='ARY', period_offset=0).CURRENTRATIO], mask=tradable_stocks)
shares_out = Latest([sharadar.Fundamentals.slice(dimension='ARY', period_offset=0).SHARESWA], mask=tradable_stocks)
gross_margins = Latest([sharadar.Fundamentals.slice(dimension='ARY', period_offset=0).GROSSMARGIN], mask=tradable_stocks)
asset_turnovers = Latest([sharadar.Fundamentals.slice(dimension='ARY', period_offset=0).ASSETTURNOVER], mask=tradable_stocks)
#######
previous_return_on_assets = Latest([sharadar.Fundamentals.slice(dimension='ARY', period_offset=-1).ROA], mask=tradable_stocks)
previous_leverages = Latest([sharadar.Fundamentals.slice(dimension='ARY', period_offset=-1).DE], mask=tradable_stocks)
previous_current_ratios = Latest([sharadar.Fundamentals.slice(dimension='ARY', period_offset=-1).CURRENTRATIO], mask=tradable_stocks)
previous_shares_out = Latest([sharadar.Fundamentals.slice(dimension='ARY', period_offset=-1).SHARESWA], mask=tradable_stocks)
previous_gross_margins = Latest([sharadar.Fundamentals.slice(dimension='ARY', period_offset=-1).GROSSMARGIN], mask=tradable_stocks)
previous_asset_turnovers = Latest([sharadar.Fundamentals.slice(dimension='ARY', period_offset=-1).ASSETTURNOVER], mask=tradable_stocks)
# 计算 F score
have_positive_return_on_assets = return_on_assets > 0
have_positive_operating_cash_flows = operating_cash_flows > 0
have_increasing_return_on_assets = return_on_assets > previous_return_on_assets
have_more_cash_flow_than_incomes = (operating_cash_flows / total_assets) > return_on_assets
have_decreasing_leverages = leverages < previous_leverages
have_increasing_current_ratios = current_ratios > previous_current_ratios
have_no_new_shares = shares_out <= previous_shares_out
have_increasing_gross_margins = gross_margins > previous_gross_margins
have_increasing_asset_turnovers = asset_turnovers > previous_asset_turnovers
f_scores = (
have_positive_return_on_assets
+ have_positive_operating_cash_flows
+ have_increasing_return_on_assets
+ have_more_cash_flow_than_incomes
+ have_decreasing_leverages
+ have_increasing_current_ratios
+ have_no_new_shares
+ have_increasing_gross_margins
+ have_increasing_asset_turnovers
)
return Pipeline(
columns={
'f_scores':f_scores,
},
)