Vibe-Trading 数据管线实战Tushare 每日指标 daily_basic 接口完整指南【免费下载链接】Vibe-TradingVibe-Trading: Your Personal Trading Agent项目地址: https://gitcode.com/GitHub_Trending/vi/Vibe-TradingVibe-Trading 将 Tushare 作为 A 股行情与基本面数据的核心数据源之一而daily_basic每日指标是该体系中连接价格与基本面的关键接口它以每日频率提供全市场股票的换手率、量比、PE/PB/PS、股息率、股本与市值等 18 个重要指标是选股分析、报表展示和量化因子构建的基础数据。读完本文你将掌握该接口的输入输出全貌、两种 Python 调用方式、全历史数据循环提取策略以及它在 Vibe-Trading 回测引擎中如何被合并进 OHLCV 因子面、如何处理积分限额与单位口径。一、接口总览一个接口看懂全市场每日基本面daily_basic在 Tushare 文档体系中的完整定义为获取全部股票每日重要的基本面指标可用于选股分析、报表展示等。其关键约束如下项目说明接口名daily_basic每日指标更新频率每个交易日 15 点17 点之间更新当日数据单次返回上限最大 6000 条记录历史提取方式按日线循环按trade_date逐日遍历可提取全部历史积分门槛至少 2000 积分才可调取5000 积分以上无总量限制数据范围仅覆盖 A 股股票不含 ETF、指数、港股、美股、加密资产调试方式可通过 Tushare 官网的数据工具webclient在线调试和查看返回样例在 Tushare 技能文档 的接口清单中daily_basic的 ID 为 32归类于「股票数据 行情数据」与 历史日线ID 27、复权因子ID 28同属行情数据族是三者在每日截面上的基本面补全角色。需要特别强调的是它的定位差异daily返回的是 OHLCV 纯价格与成交量数据而daily_basic返回的是由价格、股本、财务数据三者复合计算出的每日截面指标如 PE 总市值 / 净利润因此二者必须按ts_code trade_date对齐使用才能构成完整的量化研究数据面。二、输入参数详解接口支持两种查询维度按单只股票ts_code或按单日全市场trade_date两者为二选一关系。完整输入参数如下名称类型必选描述ts_codestrY二选一股票代码如600230.SH、000001.SZtrade_datestrY二选一交易日期按单日返回全市场数据start_datestrN开始日期格式YYYYMMDDend_datestrN结束日期格式YYYYMMDD日期格式约定所有日期一律为YYYYMMDD紧凑格式例如20181010。这一点与仓库内 Tushare loader 的实现完全一致——在 tushare 行情 loader 中start_date/end_date统一通过start_date.replace(-, )把YYYY-MM-DD转换为YYYYMMDD后再传给接口。参数组合的实际语义仅传ts_code返回该股票全部历史的每日指标仅传trade_date返回指定交易日全部股票单日截面全市场约 5000 条注意不要超过单次 6000 条上限传ts_code start_date end_date返回单只股票指定区间内的每日指标传start_date end_date不带 ts_code理论上按日期区间提取但实践中更推荐逐日循环以规避单次 6000 条上限。三、输出参数18 个字段的完整口径接口输出 18 个字段按行情活跃度 → 估值 → 股本 → 市值四组理解最为清晰行情活跃度组字段类型描述ts_codestrTS 股票代码trade_datestr交易日期closefloat当日收盘价turnover_ratefloat换手率%turnover_rate_ffloat换手率自由流通股口径%volume_ratiofloat量比估值组字段类型描述pefloat市盈率总市值 / 净利润亏损股该字段为空pe_ttmfloat市盈率TTM 滚动口径亏损股为空pbfloat市净率总市值 / 净资产psfloat市销率ps_ttmfloat市销率TTMdv_ratiofloat股息率%dv_ttmfloat股息率TTM%股本组字段类型描述total_sharefloat总股本万股float_sharefloat流通股本万股free_sharefloat自由流通股本万市值组字段类型描述total_mvfloat总市值万元circ_mvfloat流通市值万元使用上有三个必须记住的口径细节亏损企业的pe/pe_ttm为空值NaN做因子计算前需要显式处理缺失不能直接当 0 处理股本、市值字段均带单位股本单位是万股、市值单位是万元做亿元化市值、每股收益等复合计算时必须先换算close与 历史日线 接口的收盘价一致可用于与daily表做交叉校验。四、Python 调用两种标准姿势在初始化 pro 接口后daily_basic支持pro.daily_basic()与pro.query()两种等价写法。import tushare as ts pro ts.pro_api() # 方式一属性式调用按单日提取全市场截面指定字段 df pro.daily_basic( ts_code, trade_date20180726, fieldsts_code,trade_date,turnover_rate,volume_ratio,pe,pb ) # 方式二query 式调用效果等价 df pro.query( daily_basic, ts_code, trade_date20180726, fieldsts_code,trade_date,turnover_rate,volume_ratio,pe,pb )两点实战建议务必用fields显式指定所需字段。Tushare 对积分按字段 频率计量只取需要的列既省积分、又省带宽提取单只股票全历史时只传ts_code即可如pro.daily_basic(ts_code600230.SH, fieldsts_code,trade_date,total_mv,circ_mv,turnover_rate)。在 Vibe-Trading 中token 的获取与传递遵循统一规范Tushare 技能文档 要求通过环境变量TUSHARE_TOKEN配置并在 股票数据获取示例 中展示了get_env_config().data.tushare_token or ts.get_token()的降级读取模式tushare 行情 loader 则在初始化时从统一配置中心读取 token 并调用ts.pro_api(token)。五、数据样例解读以trade_date20180726提取的截面数据为例仅展示前几行ts_code trade_date turnover_rate volume_ratio pe pb 0 600230.SH 20180726 2.4584 0.72 8.6928 3.7203 1 600237.SH 20180726 1.4737 0.88 166.4001 1.8868 2 002465.SZ 20180726 0.7489 0.72 71.8943 2.6391 3 300732.SZ 20180726 6.7083 0.77 21.8101 3.2513 4 600007.SH 20180726 0.0381 0.61 23.7696 2.3774 5 300068.SZ 20180726 1.4583 0.52 27.8166 1.7549从样例中可以观察到的数据特征同一交易日、不同个股的pe差异巨大6.3 到 348说明daily_basic是全市场横截面数据天然适合做分位数筛选、行业对比和因子排序turnover_rate从 0.03% 到 23% 跨度明显可用于流动性分层如剔除换手过低的僵尸票、或识别异动票代码后缀.SH/.SZ与 ts_code 规范一致可直接与 股票列表 接口的主键对齐。六、Vibe-Trading 中的实战深化6.1 回测引擎如何把每日指标合并进因子面在 Vibe-Trading 的 A 股回测数据加载链路中daily_basic不是独立拉取的而是作为基础字段增强挂载在日线数据之上。核心实现在 tushare 行情 loader 的_merge_basic_fields方法中调用方通过fetch(..., fields[pe, pb, total_mv, ...])声明需要的附加基本面列loader 将日期转为YYYYMMDD后对每只股票调用self.api.daily_basic(ts_codecode, start_datesd, end_dateed, fieldsts_code,trade_date, ,.join(fields))返回结果按trade_date设为索引并排序逐字段对齐合并进已有的 OHLCV DataFrame从而在回测中实现价格与基本面在同一时间轴上的对齐该合并发生在缓存单元内部tushare 行情 loader因此命中缓存时附加列也一并命中无需重复调用。6.2 数据边界仅限 A 股股票同一个方法中明确写死了适用边界tushare 行情 loader对于 ETFfund_daily、指数index_daily、港股hk_daily、美股与加密资产代码会跳过daily_basic的增强逻辑因为该接口只覆盖 A 股股票。这也解释了为什么 Tushare 技能文档 中大盘指数另有独立的 大盘指数每日指标 接口index_dailybasic——两者字段结构相似但服务对象完全不同。6.3 积分与限流仓库的背退重试策略daily_basic有 2000 积分起步、5000 积分无总量限制的门槛而 Tushare 对每个接口还有每分钟调用频率约束。Vibe-Trading 的 loader 为此实现了专门的重试机制tushare 行情 loader通过识别异常文本中的特征词每分钟频率rate limit等区分限流与真失败命中限流时按5s → 20s → 40s的退避序列等待合计约 65 秒足以跨过一个分钟配额窗口非限流错误如代码不存在立即抛出避免把坏请求拖成两分钟的静默挂起。这意味着批量提取全市场历史数据时应当遵循按 trade_date 逐日循环 控制每分钟请求节奏的策略配合该退避机制即可稳定跑完全历史。6.4 单位口径与换算万元、万股背后的坑仓库中 A股 ST 前置筛选技能 对daily_basic的单位口径给出了明确提示total_mv单位为万元换算成亿元需要 ×1e4 再 ÷1e8即除以 1e4total_share单位为万股换算成股需要 ×1e4。该技能文档还专门警告不要与 akshare 东方财富口径的总市值元混淆。一个完整换算示例取自该技能的市值退市预警逻辑basic pro.daily_basic(ts_codets_code).sort_values(trade_date, ascendingFalse).head(1).iloc[0] total_mv_yi basic[total_mv] * 1e4 / 1e8 # 万元 → 亿元6.5 基本面筛选作为因子输入的典型用法基本面筛选技能 将daily_basic定义为 A 股基本面筛选的核心数据源在技能配置中通过extra_fields声明所需字段典型组合为pe, pb, pe_ttm, ps_ttm, dv_ttm, total_mv, circ_mv, roe其中roe来自财务指标接口daily_basic贡献其余估值与市值字段随后按这些字段设定过滤阈值即可实现低 PE 低 PB 高股息 适中市值一类的选股逻辑。而 tushare 加载器测试 与 tushare 基本面提供者测试后者以as_of2024-04-30的方式验证了按日期截面查询daily_basic的行为则为这一数据链路提供了回归保障。6.6 全历史提取的推荐流程综合单次 6000 条上限与按日更新的特性推荐的全市场历史提取流程为import tushare as ts pro ts.pro_api() def fetch_all_history(start_date, end_date): frames [] for trade_date in pd.date_range(start_date, end_date, freqD).strftime(%Y%m%d): df pro.daily_basic( trade_datetrade_date, fieldsts_code,trade_date,turnover_rate,turnover_rate_f,volume_ratio, pe,pe_ttm,pb,ps,ps_ttm,dv_ratio,dv_ttm, total_share,float_share,free_share,total_mv,circ_mv ) if df is not None and not df.empty: frames.append(df) time.sleep(0.3) # 控制请求节奏规避每分钟频率限制 return pd.concat(frames, ignore_indexTrue)注意trade_date按自然日遍历会包含非交易日接口对无数据日期返回空 DataFrame直接跳过即可更优雅的做法是先通过 交易日历 接口拿到真实交易日序列再遍历。七、常见坑位清单亏损股 PE 为空pe/pe_ttm在净利润为负时为 NaN做截面排序或因子计算前必须fillna或剔除单位陷阱total_mv万元、total_share万股、free_share万均为非标准单位跨系统对接如与 akshare 的元口径前务必统一单次上限按trade_date取全市场单日截面通常不会超限但按日期区间不加ts_code时极易撞到 6000 条上限应改为逐日循环仅限股票ETF、指数、港股等代码请求daily_basic无数据需按标的类型路由到fund_daily/index_daily/hk_daily等对应接口积分门槛低于 2000 积分无法调取20005000 积分有总量限制应优先用fields裁剪字段、按需增量更新更新时间当日数据 1517 点才入库盘后立即拉取会拿到前一日截面。八、延伸阅读每日指标接口原始文档字段表与调用参数的权威出处Tushare 技能文档环境安装、token 配置与全部 200 接口索引tushare 行情 loaderdaily_basic合并进回测因子面的完整实现基本面筛选技能基于daily_basic字段的选股过滤实践A股 ST 前置筛选技能市值单位换算与市值退市预警的实战口径股票数据获取示例token 读取与接口调用的最小可运行范式【免费下载链接】Vibe-TradingVibe-Trading: Your Personal Trading Agent项目地址: https://gitcode.com/GitHub_Trending/vi/Vibe-Trading创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考