两边差异较大的原因是因为你在两边编写的策略逻辑是不同的
从你的代码的1-2选股模块来看,其中获取数据的请求是:
q = query(valuation.code,valuation.circulating_market_cap,indicator.eps).filter(valuation.code.in_(price_list1)).order_by(valuation.circulating_market_cap.asc())
也就是拿了流通市值以及eps这两个因子,并以流通市值排序,这之后又做了针对eps的筛选,只保留了eps大于0的股票。
聚宽的字典里对indicator.eps的定义是,也就是实际上是单季度的eps:
每股收益(摊薄)=净利润/期末股本;分子从单季利润表取值,分母取季度末报告期股本值;净利润指归属于母公司股东的净利润(元)。
所以实际上单季度的归母净利润大于0能达到一样的筛选条件
================================
而在果仁那边的话,除了基本的ST、次新筛选以外,你只是选择了收盘价最小的10%,并以流通市值从小到大排序,而忽略了对EPS的筛选,不知道是不是你在写文章的时候记漏了这一点。
为了省事,我直接拿归母净利润来代替eps做筛选,在果仁那边的策略链接,这个是公开的,你应该能直接看到:https://guorn.com/stock/strategy?sid=1233980.R.253626506551064&category=stock
这样子的话大体上收益比较接近了
=================
剩余还有一部分没有解释的收益主要出于两点:
第一点是果仁默认单边千分之二的交易成本,你在聚宽的回测里面只设置了万3的佣金和千一的印花税,换成单边交易成本的话是千分之0.8。我大概看了一下单边千1的交易成本可能会造成3%左右的年化收益损失
还一点就是你在每周轮动以外单独设置的涨停开板提前卖出,这个在果仁确实没法实现,不过这个对因子轮动来说也只是锦上贴花了
2022-11-14