能力范围 · 名录实测
investpy 支持哪些资产:九类资产的函数映射与名录规模
investpy 按资产类别组织接口,一共九类。本站把「资产类别 → 函数名 → 参数枚举 → 随包名录实际数量」做成一张对照表,并把官方 README 声称的数字逐项与本机枚举结果对账,其中有一项差了三千多条。
命名规范
investpy/__init__.py 的导出清单与 utils/constant.py 的枚举表整理的命名规范示意。九类资产共用同一套后缀,因此学会一类即可类推。九类资产:函数映射与当前状态
下表是本页的核心。每一行都能在源码中找到对应的导出项,最后一列是本站 2026-10-12 的实测结果。
| 资产类别 | 取历史数据 | 取名录 | 按名搜索 | 本机名录可用 | 本机联网取数 |
|---|---|---|---|---|---|
| 股票 stocks | get_stock_historical_data | get_stocks_list | search_stocks | 可用(39952 条 / 91 国) | 403 |
| 基金 funds | get_fund_historical_data | get_funds_list | search_funds | 可用(82219 条 / 62 国) | 403 |
| ETF etfs | get_etf_historical_data | get_etfs_list | search_etfs | 可用(11448 条 / 49 国) | 403 |
| 指数 indices | get_index_historical_data | get_indices_list | search_indices | 可用(7788 条 / 97 国) | 403 |
| 债券 bonds | get_bond_historical_data | get_bonds_list | search_bonds | 可用(688 条) | 403 |
| 商品 commodities | get_commodity_historical_data | get_commodities_list | search_commodities | 可用(66 条 / 5 组) | 403 |
| 货币对 currency crosses | get_currency_cross_historical_data | get_currency_crosses_list | search_currency_crosses | 可用(2031 条 / 142 币种) | 403 |
| 凭证 certificates | get_certificate_historical_data | get_certificates_list | search_certificates | 可用(250 条 / 5 国) | 403 |
| 加密货币 cryptos | get_crypto_historical_data | get_cryptos_list | search_cryptos | 可用(1037 条) | 403 |
怎么读这张表:「名录可用」意味着你可以离线拿到这份代码清单,用来做资产字典、代码校验或批量任务的分片;「联网取数 403」意味着价格数据在本机取不到。两者互不替代。
README 声称的数字,与随包名录对得上吗?
官方 README 给了一组资产数量。这些数字是否等于你装到的那份名录,很少有人验证过。本站逐国枚举了 1.0.8 随包的全部名录,逐项对账如下。
| 资产类别 | README 声称 | 1.0.8 随包实测 | 差值 | 说明 |
|---|---|---|---|---|
| 股票 | 39952 | 39952 | 0 | 完全一致 |
| 基金 | 82221 | 82219 | −2 | 基本一致,属快照误差 |
| ETF | 11403 | 11448 | +45 | 名录比宣传数字还多 |
| 指数 | 7797 | 7788 | −9 | 基本一致 |
| 债券 | 688 | 688 | 0 | 完全一致 |
| 商品 | 66 | 66 | 0 | 完全一致 |
| 凭证 | 250 | 250 | 0 | 完全一致 |
| 货币对 | 2029 | 2031 | +2 | 基本一致 |
| 加密货币 | 4697 | 1037 | −3660(约 −78%) | 差距最显著的一项,名录远少于宣传 |
两个必须搞清的口径:第一,这些数字是「随包名录的快照」,不是「Investing.com 当前的真实索引」,更不是「你能抓到多少」;第二,名录数量与你实际能取到的产品数量没有必然关系——名录是静态清单,取数要另外请求端点。任何中文教程把这类数字写成「支持抓取 N 个资产」,都属于口径混淆。
函数命名规范:学会一类就能类推全部
九类资产共用的后缀只有六种。记住这一张表,就不需要去翻九个模块。
| 后缀模式 | 股票示例 | 加密货example | 返回 | 是否联网 |
|---|---|---|---|---|
get_X_historical_data | get_stock_historical_data | get_crypto_historical_data | DataFrame | 是 |
get_X_recent_data | get_stock_recent_data | get_crypto_recent_data | DataFrame | 是 |
get_X_information | get_stock_information | get_crypto_information | DataFrame / dict | 是 |
get_Xs_overview | get_stocks_overview | get_cryptos_overview | DataFrame(横截面) | 是 |
get_Xs_list / get_Xs_dict | get_stocks_list | get_cryptos_list | list / list[dict] | 否 |
get_X_countries | get_stock_countries | (加密货币无此项) | list | 否 |
注意单复数:历史数据用单数(get_stock_...),名录与概览用复数(get_stocks_...),而搜索函数统一用复数(search_stocks)。这类细节在官方文档的 API 索引里也不完整,建议以 investpy/__init__.py 的导出清单为准。
名录在各市场是怎么分布的?
同一份名录,按国家拆开看会得到很不均衡的分布。知道这一点,能避免你以为「某个市场没数据」其实只是名录里数量很少。
| 资产类别 | 数量最多的市场(本机枚举) | 覆盖国家数 | 看点 |
|---|---|---|---|
| 股票 | united states 4582 · japan 3705 · china 3339 · south korea 2145 · india 1711 | 91 | 覆盖广但不均衡,小市场条目很少 |
| 基金 | luxembourg 14105 · united states 12777 · canada 5402 · brazil 5200 · china 4413 | 62 | 注册地集中(卢森堡第一),不代表投资市场集中 |
| ETF | germany 2217 · united states 2164 · united kingdom 1147 · italy 970 | 49 | 德国条目数超过美国,与交易所挂牌方式有关 |
| 指数 | world 1515 · united states 1378 · china 819 · euro zone 371 | 97 | 存在「world」这类跨市场分类,需自行排除 |
| 债券 | 按发行国组织,共 688 条 | 74 | 多为主权收益率曲线,不是可交易个券清单 |
| 凭证 | france / germany / italy / netherlands / sweden | 5 | 只覆盖 5 个欧洲市场,中文场景基本用不到 |
| 加密货币 | Bitcoin / Ethereum / Binance Coin / Tether / Cardano … | 不适用 | 按名称而非国家组织,数量只有 1037 条 |
行情之外的三类接口:日历、指标与新闻
除了九类资产,investpy 还导出经济日历与技术指标函数。它们的参数枚举同样藏在源码里,官方文档也没有完整收录。
| 函数 | 关键参数与合法取值 | 返回 | 注意点 |
|---|---|---|---|
economic_calendar | time_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_indicators | product_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 到底支持多少种资产?
为什么 README 说 4697 个加密货币,我数出来只有 1037?
len(get_cryptos_list()) 的实际返回为准,并注意它同样是历史快照。名录清单可以用来做什么?
新增的资产会自动出现在名录里吗?
为什么有些资产的 country 参数是 None?
pair_type 属于这两类时 country 被置为 None)。因为它们的交易不绑定单一国家。写通用处理逻辑时要把这两种情况单独处理,不要假设 country 一定有值。