山西证券 Tushare 数据技能
把自然语言财经数据请求转为可执行的 Tushare 工作流:环境校验 → 理解任务 → 解析标的 → 选接口 → 校验参数 → 取数 → 整理 → 解释 → 交付。
典型场景
本 skill 只负责取数与数据交付;若用户要求对标的进行分析/评估/对比/深度研究,应使用 sxsc-tushare-analysis skill。
- 获取单只股票/指数/ETF 的行情、估值、活跃度数据
- 多标的数据的批量取数(业绩、估值、涨幅、ROE 等字段)
- 获取财务数据(利润趋势、ROE、毛利率、现金流)
- 获取资金流数据(北向、主力、龙虎榜、板块吸金)
- 获取板块轮动、指数成分股数据
- 获取宏观数据(CPI / PPI / GDP / PMI / 利率 / 货币供应量)
- 数据导出(CSV / Parquet)供回测或后续分析
核心工作流
每次执行按这个顺序:
- 环境校验 — 检查
scripts/env_check.json缓存是否存在:- 有 → 直接读取,取
mode字段(sdk/http)决定取数方式。 - 无 → 先运行
python scripts/check_env.py生成缓存,再读取。 - 退出码非 0(token 缺失)→ 停下,先提示用户配置
SXSC_TUSHARE_TOKEN,不得进入取数。
- 有 → 直接读取,取
- 理解任务 — 识别用户要解决什么问题(见下方"任务分类")。
- 解析标的 — 名称/代码 → 标准
ts_code(如600519.SH);市场、时间窗、字段按默认值补全。 - 查表选接口 — 先查
references/API接口对应表.md拿到pro.api_name与对应文档路径,禁止凭记忆写接口。 - 校验参数 — 日期
YYYYMMDD、起止顺序、冲突裁决、未来日期裁剪(规则见下方"关键默认值"第 71–73 行)。 - 取数执行 — 按第 1 步的
mode选择方式:sdk:参考scripts/下模板(stock_data_demo.py、fund_data_demo.py、index_sector_demo.py、fin_report_demo.py、moneyflow_demo.py)的 SDK 函数,走references/调取数据.md的 Python SDK 节。http:参考模板中的 HTTP 函数(http_call),走references/调取数据.md的 HTTP 协议节(无 SDK 依赖)。
- 结构化交付 — 一句话结论 → 口径 → 关键指标/表 → 风险/限制 → 文件路径。
关键原则:先想"这是什么任务、走哪条工作流",再想"用哪个接口"。永远不要先翻接口名。取数前先确认环境就绪(第 1 步),token 缺失时任何取数都无意义。
任务分类
| 任务类型 | 典型表达 |
|---|---|
| 行情/趋势数据 | 取最近行情、涨跌、K线、量能数据 |
| 基本资料 | 什么公司、什么时候上市、行业 |
| 财务数据 | 拉财报、利润、ROE、现金流 |
| 估值数据 | 取 PE/PB、股息率数据 |
| 资金流/市场行为数据 | 取北向、主力、龙虎榜、板块吸金数据 |
| 板块/指数/主题数据 | 取板块成分股、指数成分、概念数据 |
| 涨跌停/情绪数据 | 取涨停梯队、连板、活跃度数据 |
| 公告/新闻/研报 | 公告、催化、新闻面(受限:仅告知边界 + 替代路径) |
| 宏观/跨市场 | CPI、PMI、利率、港股、美股 |
| 数据导出/研究准备 | 拉 CSV、回测数据表、Parquet |
若用户要求对标的进行分析/评估/对比/深度研究,应切换至
sxsc-tushare-analysisskill。
关键默认值
| 模糊中文 | 默认口径 |
|---|---|
| "最近"/"近期" | 近 20 个交易日 |
| "最近一段时间"/"最近三个月" | 近 60 个交易日 |
| "今年" | 当年 1 月 1 日至今 |
| "财报"/"业绩" | 最近 8 个季度 + 最近年度 |
| "资金流最近如何" | 近 5–20 个交易日 |
| "宏观最近如何" | 最近 6–12 期 |
| 行业分类 | 申万/中信(更稳定) |
| 概念分类 | 同花顺/东方财富(主题更热) |
| 证券代码 | 600519.SH / 000001.SZ 标准格式 |
裸代码(如 000001)能按规则补全就补全并说明,不能补全就最小澄清。
日期冲突(trade_date 与 start_date/end_date 同给)先裁决再调用。
未来日期自动裁剪到最近可用日期并提示用户。
What this skill is NOT for
- 买卖建议、替代投资顾问
- 自动下单或交易执行
- 实时行情(仅 T-1 日数据)
- 回测引擎、组合优化系统的实现
- 无 token / 无权限时伪造数据
环境校验
执行任取数任务前,先检查环境是否可用(结果缓存到 scripts/env_check.json,避免每次重复校验):
python scripts/check_env.py # token_set=true 则直接复用缓存,否则实时检测
python scripts/check_env.py --force # 强制重新校验并覆盖缓存
python scripts/check_env.py --check # 只校验不写缓存
校验项:
| 项 | 必需 | 缺失后果 |
|---|---|---|
SXSC_TUSHARE_TOKEN 已设置 |
是 | 无法执行 skill,返回非零退出码,需先配置环境变量 |
sxsc_tushare 库已安装 |
否 | 有 → 走 SDK 方式(sxsc_tushare);无 → 走 HTTP 协议方式 |
- 退出码非 0 表示 token 缺失,先解决环境再取数。
- 缓存仅存储 token_set 状态与 SDK 安装信息,不保存 token 本身或其哈希;token_set=true 时直接复用缓存。
- 取数方式按校验结果
mode字段选择:sdk用references/调取数据.md的 Python SDK 节,http用 HTTP 协议节。
References 快速索引
| 用途 | 路径 |
|---|---|
| 接口名 ↔ 文档映射 | references/API接口对应表.md |
| 安装与 HTTP 调取 | references/调取数据.md |
| 股票调用模板 | scripts/stock_data_demo.py |
| 基金调用模板 | scripts/fund_data_demo.py |
| 指数/行业调用模板 | scripts/index_sector_demo.py |
| 财务三表调用模板 | scripts/fin_report_demo.py |
| 资金流/龙虎榜调用模板 | scripts/moneyflow_demo.py |
Code Examples
初始化与日线
import sxsc_tushare as sx
import os
token = os.getenv('SXSC_TUSHARE_TOKEN') or 'YOUR_TOKEN_HERE'
sx.set_token(token)
pro = sx.get_api(env='prd') # 'prd' 仿真, 'qa' 生产
# 股票列表
pro.stock_basic(exchange='', list_status='L',
fields='ts_code,symbol,name,area,industry,list_date')
# 日线行情(ah_vol/ah_amount 为盘后成交量/额,2026-07-06 起有数据,需显式用 fields 指定)
pro.daily(ts_code='600519.SH', start_date='20250101', end_date='20251231')
# 取盘后数据示例:
# pro.daily(trade_date='20260707', fields='ts_code,open,close,ah_vol,ah_amount')
错误处理
try:
df = pro.daily(ts_code='600519.SH', start_date='20250101', end_date='20251231')
except Exception as e:
print(f"获取数据失败:{e}")
空结果不一定是失败:可能是非交易日、标未上市、参数错误、权限不足 —— 区分清楚再下结论。