3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
您好!您遇到的数据差异是非常正常的现象,这主要是因为**“指数成分股”与“全市场挂牌股票”在定义上的区别**。
000002.XSHG(上证A股指数)和 399107.XSHE(深证A股指数)是由指数公司编制的。指数在纳入成分股时,通常会有一定的规则限制。例如:新上市的股票通常需要经过一段时间(如3个月或半年)才会被纳入指数;某些长期停牌、ST/ *ST 股票、或者存在重大违规的股票可能会被剔除出指数。因此,指数成分股的数量总是会少于交易所实际挂牌交易的股票总数。如果您的目的是获取全市场所有的A股股票列表,不应该使用 get_index_stocks,而应该使用 get_all_securities 函数。
get_all_securities 可以获取平台支持的所有标的信息。通过指定 types=['stock'],您可以获取到指定日期下所有上市的A股股票。
在 JoinQuant 的研究环境或回测策略中,您可以使用以下代码获取所有A股:
from jqdata import *
# 获取当前日期(或指定日期,如 '2020-10-15')所有上市的股票信息
# 返回的是一个 pandas.DataFrame
all_stocks_df = get_all_securities(types=['stock'], date=None)
# 提取所有股票代码组成列表
all_a_shares = list(all_stocks_df.index)
print(f"全市场A股总数: {len(all_a_shares)}")
# 如果您需要区分上证和深证,可以通过代码后缀进行过滤:
# .XSHG 代表上交所,.XSHE 代表深交所
sh_stocks = [code for code in all_a_shares if code.endswith('.XSHG')]
sz_stocks = [code for code in all_a_shares if code.endswith('.XSHE')]
print(f"上证A股数量: {len(sh_stocks)}")
print(f"深证A股数量: {len(sz_stocks)}")
get_index_stocks。get_all_securities。使用 get_all_securities 获取的列表将与您在同花顺等软件中看到的挂牌总数基本一致(可能会有极个别退市或刚上市首日的数据同步差异,但总体口径是一致的)。希望这个解答能帮助您顺利进行后续的计算!