很简单的逻辑与思路:先将生成2或多个指数的股票池,然后利用query函数进行筛选。
下面代码中的index可以扩展到多个,cap的条件也可以换成各种财务指标,例如ROE、ROI、EV/EBITDA等,以便于筛选出成长性好、未来现金流稳定的公司。
代码如下:
def generate_stocks_pool(index_1,index_2,cap_l,cap_h):
#获取指数成分列表
stocks= get_index_stocks(index_1)+get_index_stocks(index_2)
#设定筛选条件,并按市值从小到大排列
q = query(
valuation.symbol,
valuation.market_cap
).filter(
valuation.market_cap.between(cap_l,cap_h),
valuation.symbol.in_(stocks),
).order_by(
valuation.market_cap
)
df_stocks_pool = get_fundamentals(q)
return df_stocks_pool
n个指数的情况只需要在函数中加上参数,stocks列表增加一个加号即可。