Vibe-Trading 美股现金流量表获取指南:基于 Tushare us_cashflow 接口的财务数据实战
【免费下载链接】Vibe-Trading"Vibe-Trading: Your Personal Trading Agent"项目地址: https://gitcode.com/GitHub_Trending/vi/Vibe-Trading
本指南以 Vibe-Trading 仓库内置的 Tushare 技能文档为骨架,系统讲解如何通过us_cashflow接口获取美股上市公司的现金流量表数据(含主要美股与中概股),覆盖接口权限、输入/输出参数、Python 调用示例与数据解读,并深入仓库源码印证 token 配置与调用链路,帮助你在量化研究与 Agent 数据管道中直接落地使用。
一、接口概述与适用场景
us_cashflow是 Tushare 数据服务中用于获取美股上市公司现金流量表的接口,在 Vibe-Trading 仓库中的对应文档位于 美股现金流量表.md,属于技能目录agent/src/skills/tushare/references/美股数据/下美股财务数据三件套之一(另外两个为美股利润表与美股资产负债表)。
该接口的主要特征如下:
- 覆盖范围:目前只覆盖主要美股和中概股,例如英伟达(NVDA)等头部标的。
- 数据内容:返回经营活动、投资活动、筹资活动三大现金流板块下的明细科目,以及期初期末现金余额、净利润、折旧摊销、减值拨备等关键行项目。
- 获取方式:按单只股票获取其历史数据,单次请求最大返回10000 行,可循环提取以覆盖全部历史。
- 权限要求:需单独开权限或账户积分达到15000,具体权限说明以 Tushare 官方权限列表为准。
从仓库源码结构看,Tushare 在 Vibe-Trading 中被定义为category:>pip install tushare -i https://pypi.tuna.tsinghua.edu.cn/simple
2.2 配置 TUSHARE_TOKEN 环境变量
注册 Tushare 账号获取 token 后,将其配置为环境变量:
export TUSHARE_TOKEN=your_token在 Vibe-Trading 仓库中,TUSHARE_TOKEN是受官方环境模式(env schema)约束的标准配置项,定义于 env_schema.py:
tushare_token: str = Field(alias="TUSHARE_TOKEN", default="")同时该 token 也属于运行前检查项(见 preflight.py),仓库会校验 token 是否为空或仍为占位符your-tushare-token。仓库自带的示例脚本 stock_data_example.py 展示了标准的初始化方式:
import tushare as ts from src.config.accessor import get_env_config # 读取环境变量中的 token, 或者读取本地记录的 token token = get_env_config().data.tushare_token or ts.get_token() # 初始化pro接口 pro = ts.pro_api(token)2.3 权限开通
us_cashflow属于需要一定积分的接口:需单独开通权限或账户拥有15000 积分。积分不足时会收到权限错误,此时应优先检查账户积分与接口权限状态,而不是排查代码。
三、输入参数详解
us_cashflow的输入参数定义如下(与仓库文档 美股现金流量表.md 完全一致):
| 名称 | 类型 | 必选 | 描述 |
|---|---|---|---|
| ts_code | str | Y | 股票代码(如 NVDA) |
| period | str | N | 报告期,格式 YYYYMMDD,即每个季度最后一天的日期(如 20241231) |
| ind_name | str | N | 指标名(如:新增借款) |
| report_type | str | N | 报告期类型:Q1 一季报、Q2 半年报、Q3 三季报、Q4 年报 |
| start_date | str | N | 报告期开始时间,格式 YYYYMMDD |
| end_date | str | N | 报告期结束时间,格式 YYYYMMDD |
使用要点:
ts_code是唯一必选参数,其他参数均用于缩小查询范围。period使用季度最后一天作为报告期标识,例如获取 2024 年度数据传20241231。ind_name支持指定财务科目名称做定向提取,例如新增借款、经营活动产生的现金流量净额等,返回结果只包含该科目的历年数据,非常适合做单科目时间序列分析。report_type用于区分报告口径(单季/累计),可与start_date、end_date组合实现时间窗过滤。
四、输出参数与数据字段说明
每次调用返回一张 DataFrame,输出字段如下:
| 名称 | 类型 | 默认显示 | 描述 |
|---|---|---|---|
| ts_code | str | Y | 股票代码 |
| end_date | str | Y | 报告期 |
| ind_type | str | Y | 报告期类型(Q1 一季报、Q2 半年报、Q3 三季报、Q4 年报) |
| name | str | Y | 股票名称 |
| ind_name | str | Y | 财务科目名称 |
| ind_value | float | Y | 财务科目值 |
| report_type | str | Y | 报告类型 |
值得注意的字段语义:
- 长表结构:与 A 股
cashflow接口的宽表(每列一个科目)不同,us_cashflow返回的是长表,即每一行是一条"科目 × 报告期"记录,ind_name标识科目、ind_value给出数值。这种结构对按科目过滤、跨报告期拼接(pivot)非常友好。 end_date为报告期截止日(也是财报披露对应季度末日期),ind_type说明报告期类型,report_type说明是单季报还是累计口径。ind_value为 float 类型,样例中以科学计数法展示(如1.523400e+10),实际为美元金额(单位通常为美元)。
五、接口调用示例(Python)
以下为仓库文档提供的完整用法(见 美股现金流量表.md):
pro = ts.pro_api() # 获取美股英伟达 NVDA 股票的 2024 年度现金流量表数据 df = pro.us_cashflow(ts_code='NVDA', period='20241231') # 获取美股英伟达 NVDA 股票现金流量表历年新增借款数据 df = pro.us_cashflow(ts_code='NVDA', ind_name='新增借款')两个调用分别演示了两种典型场景:
- 按报告期取全量科目:
ts_code + period返回该期现金流量表的全部科目,适合重建完整报表。 - 按科目取历史序列:
ts_code + ind_name返回该科目全部历史报告期的取值,适合观察某一资金项目的长期趋势。
5.1 进阶:循环提取全部历史数据
由于接口单次请求最大返回 10000 行,且按单只股票维度取数,当需要覆盖多年份、多科目时,建议按报告期循环请求,并合并结果:
import tushare as ts import pandas as pd pro = ts.pro_api() frames = [] for period in ['20241231', '20240930', '20240630', '20240331']: df = pro.us_cashflow(ts_code='NVDA', period=period) frames.append(df) full = pd.concat(frames, ignore_index=True) print(full.shape)这种"按单只股票 + 报告期循环、分块拼接"的模式与文档中"可循环提取"的提示一致,也是规避单次请求行数上限的标准做法。
六、数据样例解读
以仓库文档给出的 NVDA(英伟达)2025Q1(报告期 20250427)数据为例:
ts_code end_date ind_type name ind_name ind_value report_type 0 NVDA 20250427 Q1 英伟达 现金及现金等价物期末余额 1.523400e+10 单季报 1 NVDA 20250427 Q1 英伟达 现金及现金等价物期初余额 8.589000e+09 单季报 2 NVDA 20250427 Q1 英伟达 现金及现金等价物增加(减少)额 6.645000e+09 单季报 3 NVDA 20250427 Q1 英伟达 筹资活动产生的现金流量净额 -1.555300e+10 单季报 4 NVDA 20250427 Q1 英伟达 筹资业务其他项目 -1.584000e+09 单季报 ... ... ... ... ... ... ... ... 2001 NVDA 20050501 Q1 英伟达 经营业务调整其他项目 0.000000e+00 单季报 2002 NVDA 20050501 Q1 英伟达 减值及拨备 -3.410000e+05 单季报 2003 NVDA 20050501 Q1 英伟达 基于股票的补偿费 2.850000e+05 单季报 2004 NVDA 20050501 Q1 英伟达 折旧及摊销 2.489700e+07 单季报 2005 NVDA 20050501 Q1 英伟达 净利润 6.444400e+07 单季报从样例中可以提炼出几条实战要点:
- 历史深度:数据从 2005 年(甚至更早)即开始覆盖,足以支撑长达二十年维度的现金流趋势研究。
- 科目体系:既包含三大活动的"净额"汇总科目(如"筹资活动产生的现金流量净额"),也包含细分子科目(如"筹资业务其他项目"、"基于股票的补偿费"),以及"净利润"、"折旧及摊销"、"减值及拨备"等与间接法现金流量表编制直接相关的行项目。
- 正负号含义:
ind_value为负值表示现金流出,如筹资活动净流出-1.555300e+10,在分析中需注意符号方向,避免口径误判。 - 单季报口径:
report_type=单季报说明返回的是单季度口径数据,若需年度累计口径,应通过report_type参数(Q4/年报)或ind_type字段过滤。
七、在 Vibe-Trading 中的实际使用与关联数据
7.1 与同系列美股财务接口的组合使用
美股财务数据在 Vibe-Trading 技能库中是成体系的一组接口,除现金流量表外还包括:
- 美股利润表(
us_income):获取营收、毛利、净利润等损益类科目,与现金流量表互为印证。 - 美股资产负债表(
us_balancesheet):获取资产、负债、股东权益科目。 - 美股财务指标数据(
us_fina_indicator):提供 ROE、毛利率、资产负债率等派生比率指标,其中ocf_liqdebt(经营业务现金净额/流动负债)等指标与现金流量数据直接关联。
在构建美股基本面因子时,可以将三张报表与财务指标通过ts_code + end_date对齐后做交叉分析,例如"经营现金流净额/净利润"的利润含金量指标,或"资本开支/经营现金流"的扩张质量指标。
7.2 作为 Agent 技能文档被检索引用
该文档位于agent/src/skills/tushare/references/美股数据/目录,是 Tushare 技能包的一部分。Vibe-Trading 的 Agent 可以通过技能加载机制读取这些接口文档(入口见 SKILL.md 中维护的完整接口列表,其中第 396 行条目即us_cashflow -> 美股现金流量表),从而在对话中按需生成数据获取代码。这意味着一套文档同时服务于"人类开发者手写调用"与"Agent 自动生成调用"两条路径。
7.3 数据源配置与前置检查
若要在 Vibe-Trading 更广的数据链路中使用 Tushare 数据源,需要注意:
TUSHARE_TOKEN配置于 env_schema.py,是市场数据源凭据体系的一部分。- 系统启动预检(preflight.py)会检查 tushare 包是否可导入、token 是否已配置且未使用占位符。
- 通过 Settings API(settings_routes.py)可以在运行时写入或清除
TUSHARE_TOKEN环境变量,并同步到os.environ。
八、常见问题与注意事项
权限错误:返回提示积分不足时,确认账户积分是否达到 15000 或接口是否已单独开通,与本接口代码无关。
单次请求行数限制:单次最多返回 10000 行,按
period/start_date/end_date分片循环请求即可。长表转宽表:如需每列一个科目的宽表,可用 pandas 透视:
wide = df.pivot_table( index=['ts_code', 'end_date'], columns='ind_name', values='ind_value', aggfunc='first', ).reset_index()符号方向:现金流流出科目为负值,做同比/环比分析前先确认符号口径。
报告期类型:
report_type(Q1~Q4)与输出字段ind_type均标识报告口径,注意区分单季报与累计(年报)数据,避免混用。
结语
us_cashflow是 Tushare 在美股财务数据方向上的核心长表接口,单只股票 + 报告期/科目的灵活组合使其既适合完整报表重建,也适合单科目历史序列研究。在 Vibe-Trading 中,它作为标准 contenteditable="false">【免费下载链接】Vibe-Trading"Vibe-Trading: Your Personal Trading Agent"项目地址: https://gitcode.com/GitHub_Trending/vi/Vibe-Trading
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考