
Vibe-Trading 数据接入实战Tushare fina_mainbz 主营业务构成接口深度指南【免费下载链接】Vibe-TradingVibe-Trading: Your Personal Trading Agent项目地址: https://gitcode.com/GitHub_Trending/vi/Vibe-Trading上市公司主营业务构成按产品、地区、行业三个维度拆分收入与成本是基本面分析与量化研究中最具信息量的结构化数据之一。本文以 Vibe-Trading 仓库内 Tushare 技能包的核心参考文档 主营业务构成.md 为主体完整展开fina_mainbz接口的权限门槛、输入输出参数、代码示例与数据样例并结合仓库内的 Tushare 技能文档、环境变量配置与预检实现说明如何在 Vibe-Trading 环境中完成 Token 配置、接口调用与数据落地。读完本文你将掌握按单只股票拉取全历史主营业务构成、按报告期筛选、按产品/地区/行业三种口径取数以及使用fina_mainbz_vip批量获取某一季度全市场数据的完整方案。一、接口概览主营业务构成数据能回答什么问题fina_mainbzMain Business Composition接口用于获取上市公司主营业务构成数据支持分地区和分产品两种维度同时提供按行业口径的组织方式。其核心价值在于收入质量审计对比bz_sales主营业务收入与bz_profit主营业务利润、bz_cost主营业务成本可以拆解公司利润的真实来源——是依赖核心产品、单一客户还是靠其他项目撑起收入多元化与集中度研究按产品计算收入占比与赫芬达尔指数量化业务集中度风险地区结构分析按地区口径观察国内外收入结构服务出口链、内需链等主题研究行业景气跟踪按行业口径对照申万/中信行业分类辅助判断公司所处赛道的景气位置。在 Vibe-Trading 中该文档收录于 agent/src/skills/tushare/references/股票数据/财务数据/ 目录下与利润表、资产负债表、现金流量表、财务指标等接口文档并列构成完整的 A 股财务数据接口家族接口编号为 81见 SKILL.md 的数据接口列表。二、权限要求与积分门槛接口文档明确标注了访问控制条件这是调用前必须满足的前提项目要求最低积分2000 积分方可调取单次提取行数最大100 行总量限制不限制可通过循环分批获取数据粒度只能按单只股票获取其历史数据同时文档给出一个重要提示如果需要在单个季度获取全部上市公司的数据请改用fina_mainbz_vip接口参数一致需要积攒 5000 积分。积分不达标时的表现通常是接口直接抛出权限异常因此在实际项目中建议先通过 Vibe-Trading 的预检流程确认 Token 与积分状态详见第六节。三、输入参数详解fina_mainbz的请求参数如下其中ts_code为必选名称类型必选描述ts_codestrY股票代码periodstrN报告期每个季度最后一天的日期比如 20171231 表示年报typestrN类型P 按产品、D 按地区、I 按行业请输入大写字母 P 或 Dstart_datestrN报告期开始日期end_datestrN报告期结束日期参数使用要点ts_code格式遵循 Tushare 全局约定即000001.SZ、600000.SH这类代码 交易所后缀格式见 SKILL.md 的参数格式说明日期统一为YYYYMMDD格式如20241231type三选一P产品与D地区为文档明确支持的主口径I表示按行业口径。注意文档强调请输入大写字母小写可能导致参数不识别period与start_date/end_date二选一使用period用于精确定位某个报告期而start_dateend_date用于提取一段报告期区间内的数据适合做跨期对比。两者混用时应以实际返回结果校验未传period或日期范围时默认返回该股票全部历史报告期数据受 100 行/次的限制可能需要分页循环。四、输出参数详解每次调用返回以下字段名称类型描述ts_codestrTS 代码end_datestr报告期bz_itemstr主营业务来源bz_salesfloat主营业务收入元bz_profitfloat主营业务利润元bz_costfloat主营业务成本元curr_typestr货币代码update_flagstr是否更新字段语义与使用提示bz_item是整张表的主键语义字段同一报告期内按不同的拆分口径产品/地区/行业给出不同的主营业务来源条目当typeP时bz_item即产品名如聚丙烯原料药产品保险业务bz_sales/bz_profit/bz_cost单位均为元三者满足收入 − 成本 ≈ 利润的勾稽关系少数条目仅有收入而无利润/成本参考下方数据样例中None的情况此时计算占比时应以收入为主口径curr_type给出货币代码A 股通常为CNY跨境或多币种公司应据此判断是否需要进行汇率归一update_flag表示该条记录是否为新更新/修订数据在增量同步与回填校验场景中有用。五、数据样例解读文档给出的真实样例000627.SZ 天茂集团 2017 年报按产品口径ts_code end_date bz_item bz_sales bz_profit bz_cost curr_type 0 000627.SZ 20171231 其他产品 1.847507e08 None None CNY 1 000627.SZ 20171231 其他主营业务 1.847507e08 None None CNY 2 000627.SZ 20171231 聚丙烯 6.629111e07 None None CNY 3 000627.SZ 20171231 原料药产品 2.685909e08 None None CNY 4 000627.SZ 20171231 保险业务 5.288595e10 None None CNY对样例的观察结论多业务并存该公司同时拥有保险业务、原料药、聚丙烯、其他产品等多条业务线bz_item直接给出各业务线的名称便于做收入贡献排序量级差异悬殊保险业务收入 5.29e10 元约 529 亿元而聚丙烯仅 6.63e7 元约 6600 万元说明这是一家以保险为绝对主业的公司——这一结论可直接支撑业务集中度类的量化因子利润/成本缺失该样例中bz_profit、bz_cost均为None说明部分公司/报告期只披露收入不披露分业务的利润与成本。做因子计算时必须对None做缺失值处理切勿直接求和。六、代码实战从 Token 配置到数据落地6.1 前置准备配置 Tushare TokenTushare 的接入以 Token 为核心凭证。在 Vibe-Trading 中Token 通过环境变量TUSHARE_TOKEN注入其在 环境变量 Schema 中定义为tushare_token: str Field(aliasTUSHARE_TOKEN, default)即配置名TUSHARE_TOKEN、缺省为空字符串。配置方式# 设置环境变量或写入项目 .env 文件 export TUSHARE_TOKENyour_token_here项目启动时preflight.py 的_check_tushare会读取该 Token并校验其非空、非占位符your-tushare-token同时尝试import tushare验证依赖是否安装从而在预检阶段就暴露配置问题。6.2 最小可用调用import os import tushare as ts # 读取环境变量中的 token token os.getenv(TUSHARE_TOKEN) # 初始化 pro 接口实例 pro ts.pro_api(token) # 获取 000627.SZ 按产品口径的主营业务构成 df pro.fina_mainbz(ts_code000627.SZ, typeP) print(df.head())也可以参照仓库 股票数据获取示例脚本 的写法通过项目的统一配置访问器读取 Tokenget_env_config().data.tushare_token在 Vibe-Trading 的 Python 环境下与项目配置体系保持一致from src.config.accessor import get_env_config token get_env_config().data.tushare_token or ts.get_token() pro ts.pro_api(token)6.3 三种口径与报告期筛选# 按产品口径 df_p pro.fina_mainbz(ts_code000627.SZ, typeP) # 按地区口径 df_d pro.fina_mainbz(ts_code000627.SZ, typeD) # 按行业口径 df_i pro.fina_mainbz(ts_code000627.SZ, typeI) # 精确指定报告期2017 年年报 df_2017 pro.fina_mainbz(ts_code000627.SZ, typeP, period20171231) # 报告期区间筛选2017-2019 三个年度的年报 df_range pro.fina_mainbz(ts_code000627.SZ, typeP, start_date20171231, end_date20191231)6.4 分页循环取全量历史由于单次最多返回 100 行而一只股票在多报告期 × 多产品组合下很容易超过 100 行需要按报告期逐期循环获取import tushare as ts import pandas as pd pro ts.pro_api(os.getenv(TUSHARE_TOKEN)) ts_code 000627.SZ # 先取股票的全部报告期示例用 trade_cal / daily 辅助生成或用固定季度序列 periods [20161231, 20171231, 20181231, 20191231] # 按需补充 frames [] for period in periods: part pro.fina_mainbz(ts_codets_code, typeP, periodperiod) if part is not None and not part.empty: frames.append(part) full pd.concat(frames, ignore_indexTrue) print(full)要点period传季度末日期即可命中对应报告期每个报告期的条目数通常远小于 100 行因此按报告期分页是最稳妥的全量方案。6.5 全市场批量取数fina_mainbz_vip如需获取某一季度全部上市公司的数据文档明确要求改用fina_mainbz_vip接口参数与fina_mainbz完全一致但需要5000 积分df pro.fina_mainbz_vip(period20181231, typeP, fieldsts_code,end_date,bz_item,bz_sales)该示例同时展示了fields参数的使用只取需要的列可以减少网络传输与内存占用。fina_mainbz_vip适用于截面研究——例如在某个报告期对全市场所有公司的主营业务构成做横向扫描输出行业集中度因子或收入主要来源标签。七、在 Vibe-Trading 技能体系中的定位与配合主营业务构成不是孤立数据点它在 Vibe-Trading 中与多个技能和模块形成配合Tushare 技能包本文档所在的 agent/src/skills/tushare/ 目录以标准化 API 统一数据资产服务为设计目标见 SKILL.md覆盖股票、基金、期货、数字货币行情与公司财务等基本面数据fina_mainbz是其中股票数据 → 财务数据分类下的 10 个财务接口之一同目录还包含利润表、资产负债表、现金流量表、业绩预告/快报、财务审计意见、财务指标、分红送股、财报披露日期等接口文档A 股 ST 风险预测技能A股ST风险预测技能 遵循tushare 优先、akshare 兜底的数据规范其中利润表、财务指标等接口按ts_codeperiod拉取并做多期对比。主营业务构成数据可进一步补充营收红线判定的证据面——例如判断营收下滑是否由核心产品萎缩导致回测引擎数据加载仓库 backtest/loaders/tushare_fundamentals.py 展示了 Tushare 财务类接口如fina_indicator、income在回测框架中如何被建模为表 Schema 列 Schema并支持点-in-timePIT截断查询。fina_mainbz输出的字段bz_sales、bz_profit、bz_cost同样可以采用相同的 Schema 化方式接入因子库。八、常见问题与边界条件积分不足fina_mainbz需 2000 积分fina_mainbz_vip需 5000 积分。积分不足时接口报权限错误可参考官方积分获取办法提升积分或改用免费数据源兜底如仓库 AKShare 技能 中描述的tushare 不可用时回退 akshare策略type大小写文档要求传大写P或D小写可能被拒绝或返回空建议调用前做type.upper()归一化100 行上限多报告期全量数据必须分页循环否则数据被截断单只股票限制普通接口无法按季度做全市场截面扫描截面场景必须使用fina_mainbz_vip利润/成本字段缺失bz_profit、bz_cost可能为None因子计算需显式处理缺失值fillna(0)或按口径剔除单位bz_sales等字段单位为元与部分其他接口如市值为万元不一致跨接口拼表时务必统一量纲。九、总结fina_mainbz是 A 股财务数据接口中颗粒度最细、维度最灵活的一类——它把一家公司的收入从一个总数拆解为产品/地区/行业 × 报告期的二维网格为业务集中度、多元化溢价、地区结构与收入质量等研究提供直接数据支撑。本文以 主营业务构成.md 为骨架完整覆盖了 2000 积分权限门槛、输入输出参数表、按产品/地区/行业三种口径的取数方式、单只股票历史数据的分页循环以及fina_mainbz_vip的全市场批量方案并结合 Vibe-Trading 的 Token 配置、preflight 预检与技能体系说明了落地路径。实践中建议将本接口与利润表income、财务指标fina_indicator配合使用形成总量 结构的完整基本面分析闭环。【免费下载链接】Vibe-TradingVibe-Trading: Your Personal Trading Agent项目地址: https://gitcode.com/GitHub_Trending/vi/Vibe-Trading创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考