Shortcuts

股本结构#

按证券代码查询时由服务端推断市场,无需 market 参数。某个市场没有对应数据能力时会报错。

所有股本字段单位均为股;总股本、流通 A 股与自由流通股本回答不同的问题。 返回表以 (order_book_id, date) 为索引。

函数 / 类

解决的问题

get_shares()

查询总股本、流通股本与自由流通股本的历史变化

get_turnover_rate()

查询逐交易日的换手率

get_shares — 查询总股本、流通股本与自由流通股本的历史变化#

libfinance.get_shares(order_book_ids, start_date=None, end_date=None, fields=None, as_of=None)[源代码]#

获取证券逐交易日的股本(证券层级:股类值优先于公司层级)。

参数
  • order_book_ids – 单个代码或代码列表,可混合市场,如 "600000.XSHG"、"AAPL.US"

  • start_date – 开始日期;省略为 end_date 前 92 天

  • end_date – 结束日期;省略为交易日历的最后一个交易日

  • fields – 统一股本字段,省略为全部:free_float_shares、issued_shares、 preferred_shares、restricted_shares、shares_outstanding、tradable_shares

  • as_of – 知识截止时点(日期或 ISO 时间戳),只用当时已知的股本;省略取最新

返回

pandas.DataFrame,以 (order_book_id, date) 为索引、每个字段一列;某市场不发布的字段为 NaN。

示例

1. 一只股票的全部股本字段

print(lf.get_shares("600000.XSHG").head())
输出#
                          free_float_shares  issued_shares  preferred_shares  restricted_shares  shares_outstanding  tradable_shares
order_book_id date                                                                                                                  
600000.XSHG   2026-07-09       1.033437e+10   3.330584e+10               0.0                0.0                 NaN     3.330584e+10
              2026-07-10       1.033437e+10   3.330584e+10               0.0                0.0                 NaN     3.330584e+10
              2026-07-13       1.033437e+10   3.330584e+10               0.0                0.0                 NaN     3.330584e+10
              2026-07-14       1.033437e+10   3.330584e+10               0.0                0.0                 NaN     3.330584e+10
              2026-07-15       1.033437e+10   3.330584e+10               0.0                0.0                 NaN     3.330584e+10
show(lf::get_shares("600000.XSHG"));
输出#
order_book_id  date        free_float_shares  issued_shares  preferred_shares  restricted_shares  shares_outstanding  tradable_shares
600000.XSHG    2026-07-09  10334374982        33305838300    0                 0                  NaN                 33305838300
600000.XSHG    2026-07-10  10334374982        33305838300    0                 0                  NaN                 33305838300
600000.XSHG    2026-07-13  10334374982        33305838300    0                 0                  NaN                 33305838300
600000.XSHG    2026-07-14  10334374982        33305838300    0                 0                  NaN                 33305838300
600000.XSHG    2026-07-15  10334374982        33305838300    0                 0                  NaN                 33305838300
...
[61 rows x 8 columns]

2. 多只股票、限定窗口与字段

print(lf.get_shares(["000001.XSHE", "600000.XSHG"], "2024-06-24", "2024-06-28",
                    fields=["issued_shares", "tradable_shares"]))
输出#
                          issued_shares  tradable_shares
order_book_id date                                      
000001.XSHE   2024-06-24   1.940592e+10     1.940555e+10
              2024-06-25   1.940592e+10     1.940555e+10
              2024-06-26   1.940592e+10     1.940555e+10
              2024-06-27   1.940592e+10     1.940555e+10
              2024-06-28   1.940592e+10     1.940555e+10
600000.XSHG   2024-06-24   2.935218e+10     2.935218e+10
              2024-06-25   2.935218e+10     2.935218e+10
              2024-06-26   2.935218e+10     2.935218e+10
              2024-06-27   2.935218e+10     2.935218e+10
              2024-06-28   2.935218e+10     2.935218e+10
show(lf::get_shares({"000001.XSHE", "600000.XSHG"}, "2024-06-24", "2024-06-28",
                    {"issued_shares", "tradable_shares"}), 0);
输出#
order_book_id  date        issued_shares  tradable_shares
000001.XSHE    2024-06-24  19405918198    19405546950
000001.XSHE    2024-06-25  19405918198    19405546950
000001.XSHE    2024-06-26  19405918198    19405546950
000001.XSHE    2024-06-27  19405918198    19405546950
000001.XSHE    2024-06-28  19405918198    19405546950
600000.XSHG    2024-06-24  29352177224    29352177224
600000.XSHG    2024-06-25  29352177224    29352177224
600000.XSHG    2024-06-26  29352177224    29352177224
600000.XSHG    2024-06-27  29352177224    29352177224
600000.XSHG    2024-06-28  29352177224    29352177224
[10 rows x 4 columns]

3. 单日截面:开始日等于结束日

print(lf.get_shares(["000001.XSHE", "600000.XSHG"], "2024-06-28", "2024-06-28",
                    fields=["tradable_shares", "free_float_shares"]))
输出#
                          tradable_shares  free_float_shares
order_book_id date                                          
000001.XSHE   2024-06-28     1.940555e+10       8.160428e+09
600000.XSHG   2024-06-28     2.935218e+10       1.080215e+10
show(lf::get_shares({"000001.XSHE", "600000.XSHG"}, "2024-06-28", "2024-06-28",
                    {"tradable_shares", "free_float_shares"}), 0);
输出#
order_book_id  date        tradable_shares  free_float_shares
000001.XSHE    2024-06-28  19405546950      8160427512
600000.XSHG    2024-06-28  29352177224      10802152115
[2 rows x 4 columns]

输出由 docs/_shared/update_examples.py 运行示例脚本生成:数据版本 sha256:6feda8ca,2026-10-09。 下载示例脚本: 06_shares.cpp · 06_shares.py

结果解读:所有数值的单位都是股。单日查询仍保留证券与日期两层索引;可流通股本(tradable_shares)与自由流通股本(free_float_shares)含义不同。

get_turnover_rate — 查询逐交易日的换手率#

libfinance.get_turnover_rate(order_book_ids, start_date=None, end_date=None)[源代码]#

获取日频换手率。

A 股换手率 = 当日未复权成交量 ÷ 当日生效的自由流通股本(没有时用流通股本); 美股换手率 = 当日未复权成交量 ÷ 当日已发行股数。结果是小数(0.01 即 1%)。 A 股结果与 factors-daybar 的因子(如 system/broker-daybar/TURN20)读取的换手率同一口径。

参数
  • order_book_ids – 单个代码或代码列表,如 "600000.XSHG"、"AAPL.US"

  • start_date – 开始日期;只给一个日期时取那一天

  • end_date – 结束日期;两个都省略时各市场分别取最近两周内最后一个有行情的交易日

返回

pandas.DataFrame,以 (order_book_id, date) 为索引,一列 turnover_rate。停牌日没有行; 没有股本数据的证券或日子为 NaN。

示例

import libfinance as lf

lf.get_turnover_rate(["600000.XSHG", "AAPL.US"], "2026-09-01", "2026-09-30")       # 两个市场同一查询
lf.get_turnover_rate("600000.XSHG", end_date="2026-09-30")                        # 只给一个日期:那一天
lf.get_turnover_rate(["600000.XSHG", "AAPL.US"])                                   # 都不给:各市场最近一个交易日

结果解读:

  • 单位是小数:0.0123 即 1.23%。

  • 分母:A 股使用当日生效的自由流通股本(free_float_shares),没有时用流通股本(tradable_shares); 美股使用当日已发行股数。这些股本来自 get_shares() 的底层数据。

  • 分子:未复权成交量,所以送转、拆股前后的换手率可以直接比较。

  • 缺失:停牌日没有行;没有股本数据的证券或日子为 NaN。

  • 一致性:A 股结果与 factors-daybar 中依赖换手率的因子(system/broker-daybar/TURN20、system/barra-cne5-descriptor/STOM 等)读取的数值同一口径。