能力范围 · 名录实测

investpy 支持哪些资产:九类资产的函数映射与名录规模

investpy 按资产类别组织接口,一共九类。本站把「资产类别 → 函数名 → 参数枚举 → 随包名录实际数量」做成一张对照表,并把官方 README 声称的数字逐项与本机枚举结果对账,其中有一项差了三千多条。

依据:investpy/__init__.py 导出清单数量取自本机枚举实测时间:2026-10-121.0.8

命名规范

九类资产股票/基金/ETF/指数/债券/商品/货币对/凭证/加密货币
取数据get_X_historical_data()
取名录get_Xs_list() / get_Xs_dict()
按名搜search_Xs() 或 search_quotes()
依据 investpy/__init__.py 的导出清单与 utils/constant.py 的枚举表整理的命名规范示意。九类资产共用同一套后缀,因此学会一类即可类推。
investpy · Nine classes

九类资产:函数映射与当前状态

下表是本页的核心。每一行都能在源码中找到对应的导出项,最后一列是本站 2026-10-12 的实测结果。

资产类别取历史数据取名录按名搜索本机名录可用本机联网取数
股票 stocksget_stock_historical_dataget_stocks_listsearch_stocks可用(39952 条 / 91 国)403
基金 fundsget_fund_historical_dataget_funds_listsearch_funds可用(82219 条 / 62 国)403
ETF etfsget_etf_historical_dataget_etfs_listsearch_etfs可用(11448 条 / 49 国)403
指数 indicesget_index_historical_dataget_indices_listsearch_indices可用(7788 条 / 97 国)403
债券 bondsget_bond_historical_dataget_bonds_listsearch_bonds可用(688 条)403
商品 commoditiesget_commodity_historical_dataget_commodities_listsearch_commodities可用(66 条 / 5 组)403
货币对 currency crossesget_currency_cross_historical_dataget_currency_crosses_listsearch_currency_crosses可用(2031 条 / 142 币种)403
凭证 certificatesget_certificate_historical_dataget_certificates_listsearch_certificates可用(250 条 / 5 国)403
加密货币 cryptosget_crypto_historical_dataget_cryptos_listsearch_cryptos可用(1037 条)403

怎么读这张表:「名录可用」意味着你可以离线拿到这份代码清单,用来做资产字典、代码校验或批量任务的分片;「联网取数 403」意味着价格数据在本机取不到。两者互不替代。

investpy · Reconciliation

README 声称的数字,与随包名录对得上吗?

官方 README 给了一组资产数量。这些数字是否等于你装到的那份名录,很少有人验证过。本站逐国枚举了 1.0.8 随包的全部名录,逐项对账如下。

资产类别README 声称1.0.8 随包实测差值说明
股票39952399520完全一致
基金8222182219−2基本一致,属快照误差
ETF1140311448+45名录比宣传数字还多
指数77977788−9基本一致
债券6886880完全一致
商品66660完全一致
凭证2502500完全一致
货币对20292031+2基本一致
加密货币46971037−3660(约 −78%)差距最显著的一项,名录远少于宣传

两个必须搞清的口径:第一,这些数字是「随包名录的快照」,不是「Investing.com 当前的真实索引」,更不是「你能抓到多少」;第二,名录数量与你实际能取到的产品数量没有必然关系——名录是静态清单,取数要另外请求端点。任何中文教程把这类数字写成「支持抓取 N 个资产」,都属于口径混淆。

investpy · Naming

函数命名规范:学会一类就能类推全部

九类资产共用的后缀只有六种。记住这一张表,就不需要去翻九个模块。

后缀模式股票示例加密货example返回是否联网
get_X_historical_dataget_stock_historical_dataget_crypto_historical_dataDataFrame是
get_X_recent_dataget_stock_recent_dataget_crypto_recent_dataDataFrame是
get_X_informationget_stock_informationget_crypto_informationDataFrame / dict是
get_Xs_overviewget_stocks_overviewget_cryptos_overviewDataFrame(横截面)是
get_Xs_list / get_Xs_dictget_stocks_listget_cryptos_listlist / list[dict]否
get_X_countriesget_stock_countries(加密货币无此项)list否

注意单复数:历史数据用单数(get_stock_...),名录与概览用复数(get_stocks_...),而搜索函数统一用复数(search_stocks)。这类细节在官方文档的 API 索引里也不完整,建议以 investpy/__init__.py 的导出清单为准。

investpy · Distribution

名录在各市场是怎么分布的?

同一份名录,按国家拆开看会得到很不均衡的分布。知道这一点,能避免你以为「某个市场没数据」其实只是名录里数量很少。

资产类别数量最多的市场(本机枚举)覆盖国家数看点
股票united states 4582 · japan 3705 · china 3339 · south korea 2145 · india 171191覆盖广但不均衡,小市场条目很少
基金luxembourg 14105 · united states 12777 · canada 5402 · brazil 5200 · china 441362注册地集中(卢森堡第一),不代表投资市场集中
ETFgermany 2217 · united states 2164 · united kingdom 1147 · italy 97049德国条目数超过美国,与交易所挂牌方式有关
指数world 1515 · united states 1378 · china 819 · euro zone 37197存在「world」这类跨市场分类,需自行排除
债券按发行国组织,共 688 条74多为主权收益率曲线,不是可交易个券清单
凭证france / germany / italy / netherlands / sweden5只覆盖 5 个欧洲市场,中文场景基本用不到
加密货币Bitcoin / Ethereum / Binance Coin / Tether / Cardano …不适用按名称而非国家组织,数量只有 1037 条
investpy · Non-quote APIs

行情之外的三类接口:日历、指标与新闻

除了九类资产,investpy 还导出经济日历与技术指标函数。它们的参数枚举同样藏在源码里,官方文档也没有完整收录。

函数关键参数与合法取值返回注意点
economic_calendartime_zone 需形如 GMT +8:00(源码共 31 个合法值)DataFrame写成 'GMT 8' 会抛 ERR#0108,本机实测已复现
economic_calendar(筛选)importance ∈ {1,2,3};categories 8 类;time_filter ∈ {time_remaining, time_only}同上重要性等级 1/2/3 的含义需结合对方页面理解
technical_indicatorsproduct_type ∈ 8 个单数值;interval ∈ 9 个粒度DataFrame写成 stocks(复数)会抛 ERR#0119,本机实测已复现
moving_averages同上DataFrame与 technical_indicators 共用端点
pivot_points同上DataFrame三个支撑位与三个阻力位,口径由对方定义
search_events——未导出:源码中该 import 被注释,顶层 API 里不存在,不要按「支持事件搜索」写代码

本机实测补充:上面这些接口同样依赖 Investing.com 端点,因此在本站实测中也不可用;其中 economic_calendar 与 technical_indicators 的报错是参数校验类的 ValueError(发生在联网之前),说明参数写错会先于网络问题暴露出来——这一点对排查方向很有用。

FAQ

investpy 常见问题:还能装吗、还能取数吗、换什么

investpy 到底支持多少种资产?
按接口组织方式算是九类:股票、基金、ETF、指数、债券、商品、货币对、凭证、加密货币。每类都有取数、概览、名录与搜索函数。注意「九类」是接口分类,不是「九个市场」;同一类里覆盖的国家数从 5 个(凭证)到 97 个(指数)不等。
为什么 README 说 4697 个加密货币,我数出来只有 1037?
本站逐条枚举了 1.0.8 随包的名录,确实是 1037 条,而 README 写的是 4697,差约 3660 条。可能的原因是 README 数字取自更早或更宽的口径,而随包名录是发布时生成的快照。不要以 README 数字作为编程依据,请以 len(get_cryptos_list()) 的实际返回为准,并注意它同样是历史快照。
名录清单可以用来做什么?
在本机实测中名录函数是几乎完全可用的部分,适合做:资产字典与代码校验、批量任务的分片清单、离线环境下的代码枚举、以及写测试用的固定样本。但不要用它判断「某资产现在能不能取到数据」——名录存在不等于端点可达。
新增的资产会自动出现在名录里吗?
不会。名录随包发布,是安装时的静态文件,不会联网更新。除非升级包版本,否则新上市或新上架的资产不会出现。这也是为什么把名录当作长期字典使用时,需要定期核对上游变化。
为什么有些资产的 country 参数是 None?
源码中对加密货币与商品两类会跳过国家映射(pair_type 属于这两类时 country 被置为 None)。因为它们的交易不绑定单一国家。写通用处理逻辑时要把这两种情况单独处理,不要假设 country 一定有值。
这些名录数据现在还能拿到吗?
能。本站在 2026-10-12 的实测中,19 个名录与枚举函数(含九类资产的名录、国家清单、币种清单、商品分组)全部成功返回,不需要联网,也不需要 API Key。这与联网取数的失败是两件独立的事。

知道有哪些资产之后,下一步是想办法拿到数据

名录可以离线用,行情则受端点状态影响。中国市场场景请直接看 A 股与港股页;要换数据源请看迁移选型。