Vibe-Trading 数据技能实战:Tushare `suspend_d` 每日停复牌信息接口解析与量化应用
Vibe-Trading 数据技能实战Tusharesuspend_d每日停复牌信息接口解析与量化应用【免费下载链接】Vibe-TradingVibe-Trading: Your Personal Trading Agent项目地址: https://gitcode.com/GitHub_Trending/vi/Vibe-Trading导读本指南围绕 Vibe-Trading 仓库内 tushare 数据技能中的suspend_d每日停复牌信息接口文档系统讲解该接口的输入输出参数、调用方式、返回数据结构并结合仓库内的事件驱动技能corporate-events说明停复牌数据在 A 股量化研究中的典型应用场景。读者将掌握通过ts.pro_api()提取全市场停复牌列表、按股票代码与日期区间回溯停牌历史、以及将停复牌信号接入组合构建与风险控制流程的具体方法。一、接口概览suspend_d能提供什么suspend_d是 tushare 提供的按日期方式获取股票每日停复牌信息的 Pro 接口在仓库中登记于 tushare 技能接口列表归属于股票数据 / 行情数据分类。其核心能力是回答三个问题某一天有哪些股票停牌suspend_typeS某一天有哪些股票复牌suspend_typeR某只股票在一段时间内的停复牌事件历史按ts_code 起止日期查询。该接口按交易日 事件类型组织数据适合做截面cross-section扫描和事件时间线event timeline回溯而非像daily历史日线那样提供连续的价格序列。接口基础属性属性值接口名suspend_d更新频率不定期返回格式pandasDataFrame输入参数个数5均为可选输出字段4 个二、输入参数详解suspend_d的全部入参均为可选参数必选列均为 N这意味你可以只传其中一个维度如只传trade_date来扫描全市场也可以组合多个维度进行精确过滤。名称类型必选描述ts_codestrN股票代码TS 代码格式可输入多值trade_datestrN交易日日期YYYYMMDDstart_datestrN停复牌查询开始日期end_datestrN停复牌查询结束日期suspend_typestrN停复牌类型S-停牌R-复牌参数使用要点日期格式统一为YYYYMMDD这与 tushare 技能文档约定的全局参数规范一致SKILL.md 中明确日期YYYYMMDD如 20241231。传入2020-03-12或20200312之外的带分隔符格式不会被识别。ts_code支持多值可一次传入多只股票代码格式如000001.SZ,600000.SH便于批量跟踪持仓停复牌状态。trade_date与start_date/end_date是两种查询口径前者查询指定某一天的停复牌事件后者查询某时间段内发生的全部事件。若同时给定以区间查询为主、单日过滤为辅实际使用中建议按需选择其一避免参数冲突。suspend_type用于区分事件方向S表示当天进入停牌状态R表示当天恢复交易。忽略该参数时返回停复牌两类事件的混合结果。三、输出参数与数据结构每次调用返回一个 pandasDataFrame共 4 个字段名称类型默认显示描述ts_codestrYTS 代码如000029.SZ、600074.SHtrade_datestrY停复牌日期suspend_timingstrY日内停牌时间段如09:30-10:00suspend_typestrY停复牌类型S-停牌R-复牌其中suspend_timing是全日停牌与日内临时停牌的关键区分字段当日 26 只停牌股票中300819.SZ、300821.SZ两条记录带有09:30-10:00的时间段说明它们是日内临时停牌如盘中重大事项、股价异动核查其余记录该字段为None空值表示从开盘起全天停牌。解析该字段时要注意None的判空处理不能直接当作字符串。四、接口用法与实战代码4.1 基础调用文档给出的最小可用示例如下import tushare as ts pro ts.pro_api() # 提取2020-03-12的停牌股票 df pro.suspend_d(suspend_typeS, trade_date20200312)4.2 初始化与 Token 管理仓库标准姿势直接调用ts.pro_api()依赖本地已保存的 token。在 Vibe-Trading 仓库中更推荐的做法是从环境配置中读取 token参见 stock_data_example.py 的初始化方式import os import tushare as ts from src.config.accessor import get_env_config # 优先读取仓库环境配置中的 tushare_token兜底使用本地记录的 token token get_env_config().data.tushare_token or ts.get_token() pro ts.pro_api(token)离线环境下的环境变量配置方式SKILL.mdpip install tushare -i https://pypi.tuna.tsinghua.edu.cn/simple export TUSHARE_TOKENyour_token4.3 按场景扩展调用在基础示例之上可以按以下维度扩展查询能力# 场景一查询某一天全部复牌股票 df_resume pro.suspend_d(suspend_typeR, trade_date20200313) # 场景二查询单只股票在时间区间内的停复牌历史 df_stock pro.suspend_d( ts_code300104.SZ, start_date20200101, end_date20201231 ) # 场景三查询区间内全部停牌事件不带类型过滤返回 S/R 混合 df_range pro.suspend_d(start_date20200310, end_date20200314) # 场景四指定返回字段减少带宽与内存开销 df_cols pro.suspend_d( trade_date20200312, suspend_typeS, fieldsts_code,suspend_timing )4.4 返回数据样例解读以suspend_typeS, trade_date20200312的调用为例返回DataFrame前若干行为索引ts_codesuspend_typetrade_datesuspend_timing0000029.SZS20200312None1000502.SZS20200312None2000939.SZS20200312None3000977.SZS20200312None4000995.SZS20200312None5002260.SZS20200312None6002450.SZS20200312None7002604.SZS20200312None8300028.SZS20200312None9300104.SZS20200312None10300216.SZS20200312None11300592.SZS20200312None12300819.SZS2020031209:30-10:0013300821.SZS2020031209:30-10:0014600074.SHS20200312None15600145.SHS20200312None16600228.SHS20200312None17600310.SHS20200312None18600610.SHS20200312None19600745.SHS20200312None20600766.SHS20200312None21600891.SHS20200312None22601127.SHS20200312None23601162.SHS20200312None24603002.SHS20200312None25603399.SHS20200312None对该样例的实用解读当日全市场 26 只股票处于停牌状态其中24 只为全天停牌suspend_timingNone2 只为日内临时停牌300819.SZ、300821.SZ时间段09:30-10:00覆盖沪深两市多个板块000/002/300开头为深市600/601/603开头为沪市可用于观察当日停牌面的行业与板块分布ts_code中的后缀.SZ/.SH分别对应深交所与上交所字段格式与 tushare 全局 TS 代码规范一致。五、停复牌数据在量化流程中的应用5.1 数据正确性治理剔除停牌日停牌期间股票没有连续成交其价格序列存在缺口直接进入因子计算或回测会产生虚假信号。从源码结构看仓库的量价因子基座已针对停牌 bar做了专门处理见 agent/src/factors/base.py 中关于 suspended bars 的处理逻辑。实践中可以用suspend_d生成的停牌日历对日线数据做如下对齐import pandas as pd # 拉取某区间停牌事件构造 (ts_code, trade_date) 停牌掩码 sus pro.suspend_d(start_date20200101, end_date20201231) sus_mask set(zip(sus[ts_code], sus[trade_date])) # 过滤掉因子/收益序列中的停牌日 clean df_daily[ ~df_daily.apply( lambda r: (r[ts_code], r[trade_date]) in sus_mask, axis1 ) ]5.2 事件驱动研究停复牌节奏信号仓库的 corporate-events 技能 明确指出 A 股并购重组研究需关注筹划重大资产重组公告 → 停牌 → 复牌的节奏并提示停牌制度改革后复牌首日涨跌幅受限创业板/科创板 20%。suspend_d为这一事件链提供了机械化的事件时间戳# 提取某标的全年停复牌时间线 df_ev pro.suspend_d(ts_code600074.SH, start_date20200101, end_date20201231) # 按 trade_date 排序后即可还原: 停牌日(S) - 复牌日(R) 的交替节奏 timeline df_ev.sort_values(trade_date)结合R类事件可构建复牌首日涨跌幅受限策略的观察样本为事件窗口收益统计如公告后 3 日、20 日窗口提供事件日期来源。5.3 组合风控持仓停牌监控对实盘组合而言持仓股票突然停牌会带来流动性风险与估值不确定性问题。可按日扫描持仓代码的停牌状态holdings [000029.SZ, 300104.SZ, 600074.SH] df_hold pro.suspend_d(ts_code,.join(holdings), trade_datetoday_str) suspended_now set(df_hold[df_hold[suspend_type] S][ts_code]) print(f今日停牌持仓: {suspended_now})该结果可作为交易执行前的拦截信号对停牌中的标的跳过撮合、暂停目标权重调整避免产生挂单永不成交的无效订单。六、使用注意事项与限制更新不定期suspend_d的更新频率为不定期与daily每日收盘后、stk_limit每日涨跌停价格每个交易日 8:40 左右更新等固定节奏接口不同。用于盘前风控时应以当日实际返回结果为准不能假设盘前必有当日数据。接口权限tushare Pro 接口普遍与用户积分挂钩如stk_limit需 2000 积分且有分钟级流控suspend_d同样需要账户具备相应访问等级具体以 tushare 官方积分规则为准。suspend_timing空值语义None表示全天停牌而非数据缺失解析时需区分无该字段信息与全日停牌两种含义。事件类型区分S停牌与R复牌是两条独立记录统计停牌次数时应先按suspend_type分组避免把复牌事件误计入停牌计数。历史覆盖与 tushare 其他行情接口一样数据回溯能力受账户权限与积分档位影响大区间历史回溯建议按start_date/end_date分片循环拉取控制单次请求数据量。七、小结suspend_d是 A 股停复牌事件研究的基础数据源输入侧通过trade_date/start_date/end_date控制时间维度、ts_code控制标的维度、suspend_type控制事件方向输出侧用suspend_timing区分全天停牌与日内临时停牌。在 Vibe-Trading 仓库中它既服务于因子层的数据清洗剔除停牌 bar也与 corporate-events 的事件驱动研究形成配套——从停牌日历到重组节奏事件链再到持仓风控拦截覆盖了从数据治理到策略构建的完整链路。建议读者在 tushare 技能目录 基础上结合 股票数据获取示例脚本 快速上手并优先用fields参数精简返回列降低调用开销。【免费下载链接】Vibe-TradingVibe-Trading: Your Personal Trading Agent项目地址: https://gitcode.com/GitHub_Trending/vi/Vibe-Trading创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考