ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

【零依赖量化数据实战 #33】基金排名·分红·规模全景

【零依赖量化数据实战 #33】基金排名·分红·规模全景 【零依赖量化数据实战 #33】基金排名·分红·规模全景系列《零依赖量化数据实战》零依赖 · 纯 GET · 不 import 任何 SDK适用想用 Python 把基金的排名、分红、规模与其他指标持仓/资产变动/代销机构一次拉齐的量化爱好者不依赖任何行情终端。1. 你将得到什么11 个官方接口的最小可用封装分四组排名/js/pm/*4kfjzq开放债基、fbjz封闭净值、fbpm封闭排名、fzyj复杂业绩均带分类 key。分红/js/jf/*2fbfh分红、fzfh复杂分红带 key。规模/js/gm/*2fbgm封闭规模、fzgm复杂规模带 key。其他指标/js/other/*3jjzc基金持仓、zcbd资产变动、dxjg代销机构带 key。一个对字段名不敏感的排名函数rank_by按候选键如净值/nav/value降序取前 N。2. 端点语义表GET https://api.zhituapi.com/js/pm/kfjzq/kfsjj_hbxjj_hba?token你的token - 开放债基排名 GET https://api.zhituapi.com/js/pm/fbjz/kfsjj_fbqy_ctfj?token你的token - 封闭净值排名 GET https://api.zhituapi.com/js/pm/fbpm/kfsjj_fbqy_ctfj?token你的token - 封闭规模排名 GET https://api.zhituapi.com/js/pm/fzyj/kfsjj_fjgs_wjzqx?token你的token - 复杂业绩排名 GET https://api.zhituapi.com/js/jf/fbfh?token你的token - 基金分红 GET https://api.zhituapi.com/js/jf/fzfh/kfsjj_fjgs_wjzqx?token你的token - 复杂分红 GET https://api.zhituapi.com/js/gm/fbgm/kfsjj_fbqy_ctfj?token你的token - 封闭规模 GET https://api.zhituapi.com/js/gm/fzgm/kfsjj_fjgs_wjzqx?token你的token - 复杂规模 GET https://api.zhituapi.com/js/other/jjzc/2026_2?token你的token - 基金持仓 GET https://api.zhituapi.com/js/other/zcbd/2026_2?token你的token - 资产变动 GET https://api.zhituapi.com/js/other/dxjg/yh?token你的token - 代销机构鉴权token走查询参数/js/*的末段是分类 key如kfsjj_hbxjj_hba、2026_2、yh不同分类对应不同 key拼在路径里。3. 字段名不固定用候选键命中基金排名返回的「净值」可能叫净值/nav/value。统一候选键命中def_hit_key(d,keys):ifnotisinstance(d,dict):returnNoneforkinkeys:ifkindandd[k]isnotNone:returnd[k]low{str(x).lower():xforxind.keys()}forkinkeys:klk.lower()ifklinlow:returnd[low[kl]]returnNone4. 核心模板函数importsys,requests BASEhttps://api.zhituapi.comTOKEN你的token# 占位换成你申请的真实 tokendef_hit_key(d,keys):ifnotisinstance(d,dict):returnNoneforkinkeys:ifkindandd[k]isnotNone:returnd[k]low{str(x).lower():xforxind.keys()}forkinkeys:klk.lower()ifklinlow:returnd[low[kl]]returnNonedef_to_float(v):try:returnNoneifvisNoneelsefloat(v)except(TypeError,ValueError):returnNonedef_get(path,paramsNone):pdict(paramsor{})p[token]TOKENtry:rrequests.get(f{BASE}{path},paramsp,timeout10)exceptExceptionase:returnNone,f网络异常{e}ifr.status_code!200:returnNone,f{r.status_code}{r.text.strip()[:140]}try:returnr.json(),NoneexceptException:returnNone,f非 JSON{r.text.strip()[:140]}# 基金排名/js/pm/{sub}/{key}deffetch_pm(sub,key):return_get(f/js/pm/{sub}/{key})# 基金分红/js/jf/{sub} 或 /js/jf/{sub}/{key}deffetch_jf(sub,keyNone):pathf/js/jf/{sub}ifkey:pathf/{key}return_get(path)# 基金规模/js/gm/{sub}/{key}deffetch_gm(sub,key):return_get(f/js/gm/{sub}/{key})# 其他指标/js/other/{sub}/{key}deffetch_other(sub,key):return_get(f/js/other/{sub}/{key})defrank_by(rows,keys,descendingTrue,topnNone):ifnotisinstance(rows,list):returnrowsdefsc(x):return_to_float(_hit_key(x,keys))or0.0outsorted(rows,keysc,reversedescending)returnout[:topn]iftopnelseoutdefrun_check():# 合成数据仅逻辑校验非真实行情rows[{code:F1,净值:1.2},{code:F2,nav:2.0},{code:F3,value:1.8},]toprank_by(rows,[净值,nav,value],topn2)assert[x[code]forxintop][F2,F3],topforsubin(kfjzq,fbjz,fbpm,fzyj):assertsubin(kfjzq,fbjz,fbpm,fzyj)print(校验通过)if__name____main__:iflen(sys.argv)1andsys.argv[1]--run_check:run_check()else:print(pm.kfjzq -,fetch_pm(kfjzq,kfsjj_hbxjj_hba))print(pm.fbjz -,fetch_pm(fbjz,kfsjj_fbqy_ctfj))print(pm.fbpm -,fetch_pm(fbpm,kfsjj_fbqy_ctfj))print(pm.fzyj -,fetch_pm(fzyj,kfsjj_fjgs_wjzqx))print(jf.fbfh -,fetch_jf(fbfh))print(jf.fzfh -,fetch_jf(fzfh,kfsjj_fjgs_wjzqx))print(gm.fbgm -,fetch_gm(fbgm,kfsjj_fbqy_ctfj))print(gm.fzgm -,fetch_gm(fzgm,kfsjj_fjgs_wjzqx))print(other.jjzc -,fetch_other(jjzc,2026_2))print(other.zcbd -,fetch_other(zcbd,2026_2))print(other.dxjg -,fetch_other(dxjg,yh))跑通示例把上面的代码复制到本地填入你的 token 即可直接运行它会请求对应接口、拉取真实数据并输出归一化后的结构化字典各字段含义见前文各小节。6. 坑与注意事项102 不代表路径对404 102是「证书不存在」鉴权先于路由路径合法与否要靠客户端白名单自查。末段是分类 key/js/*最后一段如kfsjj_hbxjj_hba、2026_2、yh是固定分类 key不是自由参数查文档取对应 key。分红两种形态/js/jf/fbfh无 key/js/jf/fzfh/{key}带 key调用前看清楚。字段名中英文混用「净值」可能叫净值/nav/value务必候选键命中。7. 小结与下篇预告本篇把「基金排名 分红 规模 其他指标」拧成了 11 个零依赖接口的最小封装重点解决了末段分类 key、分红两种形态两个坑配rank_by候选键排名即可一行出榜。下一篇计划写 #34《历史K线收尾北交所K线与沪深VIP历史K线》讲解如何用官方接口补齐系列最后两个端点——北交所历史K线/bj/history/{代码.市场}/{分时级别}/{除权方式}与沪深 VIP 历史/hs/hsstock/vip/{代码.市场}/{分时级别}/{除权方式}数据。8. 免责声明本文仅演示公开数据接口的用法所有代码示例均为演示数据未含任何真实数据文中示例仅为演示用途不构成投资建议亦不承诺收益。
返回列表