股本结构
按证券代码查询时由服务端推断市场,无需 market 参数。某个市场没有对应数据能力时会报错。
所有股本字段单位均为股;总股本、流通 A 股与自由流通股本回答不同的问题。
返回表以 (order_book_id, date) 为索引。
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. 一只股票的全部股本字段
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]
结果解读:所有数值的单位都是股。单日查询仍保留证券与日期两层索引;可流通股本(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 等)读取的数值同一口径。