分享聚宽量化交易执行选股策略的执行过程:
首先就是需要用不同的函数处理不同的数据,比如上市数据,要用run_query()函数处理,财务与估值数据要用get_fundamentals()函数处理。以及即使用同一个函数处理,参数也会相互影响。
其中securities为股票(单只或者列表),factors(单个或者列表),开始结束日期,count为截止日期前的数据数量,与start_date二选一
比如想选今天的估值数据,要用get_fundamentals(query, date=datetime.today())获取。
另外返回的数据量也有限制,如果要获取所有数据可能需要offset。
以下是代码示例:
security = list(get_all_securities(types=['stock'], date=None).index)
# 过滤去年亏损的股票以及估值过高超过100倍PE的股票
q = query(
valuation.code,
valuation.day,
valuation.pe_ratio,
valuation.ps_ratio,
valuation.pb_ratio,
valuation.market_cap
).filter(
valuation.code.in_(security),
valuation.pe_ratio > 5,
valuation.pe_ratio < 100,
valuation.market_cap > 10
).order_by(valuation.market_cap.desc())
df_valuation = get_fundamentals(q, date='-06-20').set_index('code')
# 过滤掉市值最大的前10%和最小的后10%的股票,这样可过滤掉退市股票以及市值过小的股票
df_valuation = df_valuation.iloc[int(len(df_valuation)/10):int(len(df_valuation)-len(df_valuation)/10), :]
之所以首先处理估值数据,是为了防止获取数据不能超过run_query()函数不能超过4000。这里去掉前10%市值股票是为了用中小市值策略,去掉后10%的股票是为了过滤退市股票,以及流动性不足的股票,那接下来就是针对已经筛选的股票进行下一步筛选。
其实这些功能,一些股票量化交易接口也可以实现,还无需通过复杂的代码流程,因为已经有专业的工程人员设计完成,直接使用更加方便,也可以到这/metatradeapi或联系下方qq名片了解更多。