Vibe-Trading 中 Tushare IPO 新股上市数据接口实战指南:基于 new_share 的 A 股打新研究
2026/9/18 5:02:53 网站建设 项目流程

Vibe-Trading 中 Tushare IPO 新股上市数据接口实战指南:基于 new_share 的 A 股打新研究

【免费下载链接】Vibe-Trading"Vibe-Trading: Your Personal Trading Agent"项目地址: https://gitcode.com/GitHub_Trending/vi/Vibe-Trading

本篇技术指南以 Vibe-Trading 仓库内置的 Tushare 数据技能文档(IPO新股上市.md)为核心,完整讲解new_share接口的权限门槛、输入输出参数、调用示例与返回数据解读,并结合仓库源码说明如何在 Vibe-Trading 的数据链路中配置 token 并获取 A 股新股发行数据。读完本文,你将掌握用 Tushare 拉取新股上市列表、分析发行规模与定价的全套可运行方案。

接口概览:new_share 是什么

new_share是 Tushare 提供的新股上市列表接口,描述为"获取新股上市列表数据",位于股票数据 → 基础数据分类下,接口 ID 为 123(见 Tushare 技能总览 中的数据接口列表)。

该接口返回每只新股的申购代码、上网发行日期、上市日期、发行总量、发行价格、市盈率、个人申购上限、募集资金与中签率等核心打新要素,是构建 A 股打新日历、新股收益归因和次新股研究的基础数据来源。

限量与积分门槛(重要前提)

使用该接口前必须确认账户权限满足以下两条硬性约束:

  • 限量:单次调用最大返回 2000 条,总量不限制。即通过按日期区间分多次请求,可以拉取全量历史新股发行数据。
  • 积分:用户需要至少 120 积分才可以调取该接口。积分获取办法需在 Tushare 官方积分说明文档中查看(Tushare 平台按用户贡献与充值发放积分,不同积分等级对应不同接口权限,本仓库不负责积分发放)。

从源码实现看,Tushare 在 Vibe-Trading 中是 A 股数据的默认路由来源之一:market_data.py 中的detect_source()在无法匹配其他数据源模式时返回"tushare",且项目中 A 股数据源默认优先使用 Tushare(见 env_schema.py 的MARKET_DATA_ORDER_A_SHARE注释)。因此积分与 token 是否就绪,直接影响 A 股数据的可用性。

环境准备:token 配置与预检

在调用new_share前,需要完成 Tushare 依赖与 token 的配置。仓库内 Tushare 技能文档(SKILL.md)给出了标准流程:

# 安装 tushare(推荐使用清华 PyPI 镜像) pip install tushare -i https://pypi.tuna.tsinghua.edu.cn/simple # 配置 token 环境变量(在 Tushare 官网注册后获取) export TUSHARE_TOKEN=your_token

Vibe-Trading 对 token 的管理方式如下:

  1. 配置字段:env_schema.py 中定义了tushare_token: str = Field(alias="TUSHARE_TOKEN", default=""),即通过环境变量TUSHARE_TOKEN注入,允许为空。
  2. 预检机制:preflight.py 的_check_tushare()会检查 token 是否配置:未配置或为占位符your-tushare-token时返回not_configured,影响提示为 "A-share data unavailable";已配置但未安装包时返回skipped;配置完好则返回ready
  3. 脚本示例:股票数据获取示例 展示了两种取 token 的方式——优先从项目配置get_env_config().data.tushare_token读取,否则回退到ts.get_token(),随后初始化pro = ts.pro_api(token)

初始化完成后,即可通过pro对象调用new_share接口。

输入参数详解

new_share仅有两个可选输入参数,均为日期区间限定,格式为YYYYMMDD

名称类型必选描述
start_datestrN上网发行开始日期
end_datestrN上网发行结束日期

要点说明:

  • 两个参数都可省略:不传时返回全量新股列表(受单次 2000 条上限约束)。
  • 日期严格遵循 Tushare 统一格式YYYYMMDD(如20180901),与仓库内 Tushare 技能文档的"参数格式说明"一致:日期一律使用该八位数字格式,股票代码使用ts_code格式(如000001.SZ600000.SH),返回格式为 pandas DataFrame。
  • 建议按区间分批请求以规避 2000 条上限并降低服务端压力,例如逐月或逐季度拉取后拼接。

输出参数详解

接口共返回 12 个字段,覆盖申购、发行、上市三个阶段的关键信息:

名称类型默认显示描述
ts_codestrYTS股票代码
sub_codestrY申购代码
namestrY名称
ipo_datestrY上网发行日期
issue_datestrY上市日期
amountfloatY发行总量(万股)
market_amountfloatY上网发行总量(万股)
pricefloatY发行价格
pefloatY市盈率
limit_amountfloatY个人申购上限(万股)
fundsfloatY募集资金(亿元)
ballotfloatY中签率

字段含义与使用提示:

  • ts_code / sub_codets_code是 Tushare 统一股票代码(带交易所后缀,如002939.SZ601162.SH),可用于与行情接口(如dailydaily_basic)做关联;sub_code是申购代码,部分新股申购代码与上市代码一致(如002939.SZ),沪市新股常带 78/73 前缀(如780162732583)。
  • ipo_date / issue_dateipo_date为上网发行日(申购日),issue_date为上市日期。数据示例中部分记录issue_dateNone,表示截至数据快照时尚未上市,做新股日历排期时需注意该空值。
  • amount / market_amount:单位均为万股。amount为发行总量,market_amount为上网发行(面向公众投资者)的数量,二者差值体现网下配售比例。
  • price / pe:发行价格与发行市盈率。A 股主板新股发行市盈率长期接近 23 倍窗口(见下文数据示例),银行股等大盘金融股发行 PE 通常显著偏低。
  • limit_amount:单账户个人申购上限(万股),用于计算顶格申购市值门槛。
  • funds:募集资金(亿元)。部分记录为 0.000 时表示尚未公布或数据缺失。
  • ballot:中签率,是衡量新股申购热度与中签概率的关键指标,可用于次新股打新收益回测。

接口示例与完整可运行代码

官方接口示例(原样保留):

pro = ts.pro_api() df = pro.new_share(start_date='20180901', end_date='20181018')

结合仓库的 token 管理与异常处理习惯(参照 stock_data_example.py),给出可直接运行的完整版本:

import os import datetime import tushare as ts import pandas as pd # 方式一:从 Vibe-Trading 配置读取 token try: from src.config.accessor import get_env_config token = get_env_config().data.tushare_token or os.getenv('TUSHARE_TOKEN') or ts.get_token() except ImportError: # 方式二:直接使用环境变量或本地缓存 token token = os.getenv('TUSHARE_TOKEN') or ts.get_token() pro = ts.pro_api(token) # 按区间获取新股上市列表 df = pro.new_share(start_date='20180901', end_date='20181018') print(df.head()) print(df.shape) # 行数应不超过 2000 print(df.dtypes) # 检查各字段类型 # 字段裁剪:只保留核心打新要素 cols = ['ts_code', 'sub_code', 'name', 'ipo_date', 'issue_date', 'amount', 'market_amount', 'price', 'pe', 'limit_amount', 'funds', 'ballot'] print(df[cols].to_string())

如需拉取全量历史数据,可用日期循环分批请求再拼接:

frames = [] start = datetime.date(2010, 1, 1) end = datetime.date.today() step = datetime.timedelta(days=90) cur = start while cur < end: nxt = min(cur + step, end) part = pro.new_share(start_date=cur.strftime('%Y%m%d'), end_date=nxt.strftime('%Y%m%d')) if part is not None and not part.empty: frames.append(part) cur = nxt full = pd.concat(frames, ignore_index=True).drop_duplicates('ts_code') print(full.shape)

数据示例解读

官方数据示例(2018 年 9~10 月期间新股)展示了一批典型记录,以下为部分摘录与分析:

ts_codesub_codenameipo_dateissue_dateamount(万股)pricepefunds(亿元)ballot
002939.SZ002939长城证券20181017None31034.06.3122.9819.5820.16
002940.SZ002940昂利康20181011201810232250.023.0722.995.1910.03
601162.SH780162天风证券201810092018101951800.01.7922.860.0000.25
002936.SZ002936郑州银行201809072018091960000.04.596.5027.5400.25
300760.SZ300760迈瑞医疗201809272018101612160.048.8022.9959.3410.08

从数据中可以读到以下规律:

  • 发行市盈率:非金融新股发行 PE 普遍贴近 22.86~22.99 倍(当时主板的发行市盈率约束窗口),而银行股(郑州银行 6.50 倍、长沙银行 6.97 倍)受行业估值中枢影响显著低于窗口。
  • 发行规模与中签率:发行总量越大(如天风证券 51800 万股、郑州银行 60000 万股),中签率越高(均为 0.25);发行量小的个股(如昂利康 2250 万股)中签率低至 0.03。
  • 募集资金:迈瑞医疗单笔募集 59.341 亿元,为样本中的募资大户;天风证券 funds 为 0.000 属于缺失值,分析时需做空值处理。
  • 上市日期缺失:长城证券issue_date为 None,说明截至数据快照时尚未上市,需后续补拉或结合stock_basiclist_date交叉验证。

在 Vibe-Trading 中的定位与扩展阅读

  • 技能体系:本文档隶属于tushare数据源技能(agent/src/skills/tushare/SKILL.md),该技能以标准化 API 方式统一对外服务数据资产,new_sharestock_basic(股票列表)、trade_cal(交易日历)、daily(历史日线)等同属"股票数据/基础数据"与"行情数据"分类,可组合构建新股上市后行情追踪流程。
  • 数据路由:Vibe-Trading 的 market_data.py 默认将未匹配符号路由到tushare,且 A 股数据源排序默认以 tushare 优先(见 env_schema.py),因此 token 就绪后new_share可作为新股基础数据的稳定来源。
  • 预检保障:运行前可通过 preflight.py 的 Tushare 检查确认 token 与依赖包状态,避免运行时才发现 A 股数据不可用。

注意事项小结

  1. 积分门槛:至少 120 积分才可调用,未达标账户会报权限错误,应先确认积分等级。
  2. 单次限量:单次最多 2000 条,全量数据需按日期区间分批拉取;建议以 90 天左右为步长循环请求。
  3. 日期格式:输入日期必须为YYYYMMDD八位数字字符串。
  4. 空值与缺失issue_datefunds等字段可能出现None或 0.000,分析前需处理。
  5. 数据更新:该接口属于基础数据类接口,新股发行数据按交易所披露节奏入库,做实时打新日历时应结合当日更新频率确认数据新鲜度。
  6. 单位口径:发行量与申购上限单位为万股、募集资金单位为亿元、中签率为百分比数值(如 0.16 表示 0.16%),统计汇总前务必统一量纲。

【免费下载链接】Vibe-Trading"Vibe-Trading: Your Personal Trading Agent"项目地址: https://gitcode.com/GitHub_Trending/vi/Vibe-Trading

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询