A股量化策略回测实战:从行情数据到绩效评估(第 18 篇):成长策略

发布时间:2026/10/26 23:56:01
A股量化策略回测实战:从行情数据到绩效评估(第 18 篇):成长策略

A股量化策略回测实战:从行情数据到绩效评估(第 18 篇):成长策略

前言

盈利质量看"现在赚不赚",成长看"将来赚得多不多"。高成长公司往往享受估值溢价,成长因子是动量/趋势之外另一大收益来源。本篇用hicw真实的成长能力数据(营收增速、利润增速),做高成长选股,并讨论成长的可持续性与"增速陷阱"。

一、接口原始字段梳理

1)hicw/cz成长能力

字段来自官网说明(零编造),共 11 个,关键是:

字段含义
dm, mc代码、名称
zyzzl营业收入增长率
jlrzzl净利润增长率
jzczzl净资产增长率
zzczzl总资产增长率
y, q, yq年、季、年月标识

路径:{BASE}/hicw/cz/{licence}(可按y/q取报告期)。本篇用zyzzl(营收增速)、jlrzzl(净利增速)做成长分。

二、自研衍生统计指标

  • 营收增速排名rank(zyzzl):业务扩张能力。
  • 净利增速排名rank(jlrzzl):盈利扩张能力。
  • 成长综合growth = z(营收增速) + z(净利增速)(z-score 合成)。
  • 质量过滤:净利增速高但营收不增(靠非经常性收益),质量差;两者同高才优。
  • 剔除负增长/异常值:增速极端(如 >500%)可能是低基数反弹,需配合绝对值。

三、数据表设计

CREATETABLEIFNOTEXISTSgrowth_factor(yqTEXTNOTNULL,dmTEXTNOTNULL,zyzzlREAL,jlrzzlREAL,growthREAL,PRIMARYKEY(yq,dm));

四、完整代码

4.1 成长打分(z-score)

importsqlite3,json,time,math BASE="https://api.biyingapi.com"LICENCE="YOUR_LICENCE_HERE"DB_PATH="backtest.db"defbiying_api_get_retry(url,timeout=15,max_retry=3):importurllib.request last=Noneforiinrange(max_retry):try:req=urllib.request.Request(url,headers={'User-Agent':'Mozilla/5.0'})withurllib.request.urlopen(req,timeout=timeout)asr:returnjson.loads(r.read().decode('utf-8','ignore'))exceptExceptionase:last=eifi<max_retry-1:time.sleep(1+i)raiselastdeffetch_cz(y=None,q=None):url=f"{BASE}/hicw/cz/{LICENCE}"ify:url+=f"?y={y}"+(f"&q={q}"ifqelse"")data=biying_api_get_retry(url)returndataifisinstance(data,list)elsedata.get('data',[])def_zscore(vals):n=len(vals)ifn<2:return[0.0]*n m=sum(vals)/n var=sum((x-m)**2forxinvals)/(n-1)sd=math.sqrt(var)ifvar>0else1.0return[(x-m)/sdforxinvals]defgrowth_score(rows):"""营收+净利增速 z-score 求和(纯计算)。"""rev=[float(r['zyzzl'])forrinrowsifr.get('zyzzl')isnotNone]pro=[float(r['jlrzzl'])forrinrowsifr.get('jlrzzl')isnotNone]zr,zp=_zscore(rev),_zscore(pro)out={}idx=0forrinrows:ifr.get('zyzzl')isnotNoneandr.get('jlrzzl')isnotNone:out[r['dm']]=zr[idx]+zp[idx]idx+=1returnoutdefdemo_growth():rows=[{'dm':'A','zyzzl':30.0,'jlrzzl':40.0},{'dm':'B','zyzzl':5.0,'jlrzzl':8.0},{'dm':'C','zyzzl':50.0,'jlrzzl':60.0},]print("成长分:",growth_score(rows))if__name__=='__main__':demo_growth()

五、关键业务说明

  • 营收与净利要同看:净利高增但营收停滞,可能是卖资产/理财等非经常性收益,不可持续;营收净利双增才健康。
  • 增速陷阱:超高增速(>100%)常因前一年基数低(如疫情后复苏),并非真成长;应看"绝对值+持续性"。
  • 成长需与估值平衡:高成长股往往贵(高 PE),纯成长策略易买在顶部;与价值结合(GARP)更稳(第 19 篇)。
  • 报告期前视:财务数据披露滞后,回测要用"当时已披露"的报告期,不能拿未发布的财报。

六、拓展练习

  1. 把成长分与第 16 篇价值分合成 GARP 分数(成长/PE 或 PEG 思路)。
  2. 用多期增速算"稳定性",剔除一次性高增长。
  3. 接第 25 篇组合,做季度调仓的高成长组合。
  4. 把成长分作为第 10 篇投票器的"基本面票",平衡技术噪音。

下篇预告

系列第 19 篇:质量综合打分策略—— 价值、盈利、成长都是单因子,下一篇把它们统一 z-score 合成一个综合质量分,做出可回测的多因子选股模型。

免责申明:本篇全部代码与回测结果仅作为量化编程与策略研究的学习演示,所有回测均为方法演示,不构成任何投资建议。市场有风险,投资需谨慎。