🚀 AI 一键生成 joinquant 策略代码

JoinQuant 平台获取指定时间段(如2022年1月)上市股票代码的方法

joinquant | 发布时间: 2026/5/27
以下内容由 EasyQuant 生成。

问题描述

请教如何获取某一时间段上市的股票信息

请教如何获取某一时间段上市的股票信息?比如获取2022年1月上市的股票代码?

解决方案

在 JoinQuant (聚宽) 平台上,要获取某一特定时间段(例如2022年1月)上市的股票信息,可以通过调用 get_all_securities API 来实现。

核心思路

  1. 使用 get_all_securities(types=['stock']) 获取平台上所有的股票基本信息,该函数会返回一个 pandas DataFrame。
  2. 返回的 DataFrame 中包含 start_date(上市日期)列。
  3. 利用 pandas 的日期筛选功能,过滤出 start_date 在目标时间段内的股票。
  4. 提取筛选后 DataFrame 的 index,即为所需的股票代码列表。

Python 代码示例

以下是在 JoinQuant 研究环境或策略中获取 2022年1月 上市股票代码的完整代码:

import pandas as pd
from jqdata import *

def get_newly_listed_stocks(start_date_str, end_date_str):
    """
    获取指定时间段内上市的股票代码列表
    :param start_date_str: 起始日期,如 '2022-01-01'
    :param end_date_str: 结束日期,如 '2022-01-31'
    :return: 股票代码列表
    """
    # 获取所有股票信息
    df_all_stocks = get_all_securities(types=['stock'])
    
    # 确保 start_date 列是 datetime 类型以便于比较
    df_all_stocks['start_date'] = pd.to_datetime(df_all_stocks['start_date'])
    
    # 转换输入的日期字符串为 datetime 对象
    target_start = pd.to_datetime(start_date_str)
    target_end = pd.to_datetime(end_date_str)
    
    # 筛选上市日期在目标时间段内的股票
    mask = (df_all_stocks['start_date'] >= target_start) & (df_all_stocks['start_date'] <= target_end)
    new_stocks_df = df_all_stocks[mask]
    
    # 提取股票代码(DataFrame 的 index)
    new_stock_codes = list(new_stocks_df.index)
    
    return new_stock_codes

# 测试:获取 2022年1月 上市的股票
if __name__ == '__main__':
    stocks_2022_01 = get_newly_listed_stocks('2022-01-01', '2022-01-31')
    print(f"2022年1月共上市了 {len(stocks_2022_01)} 只股票。")
    print("股票代码列表:", stocks_2022_01)

API 解析

  • get_all_securities(types=[], date=None)
    • types:传入 ['stock'] 表示只获取股票信息,排除基金、指数等。
    • 返回值:一个 DataFrame,包含 display_name (中文名), name (缩写), start_date (上市日期), end_date (退市日期), type (类型) 等字段。

通过这种方式,您可以灵活地修改 start_date_strend_date_str 参数,获取历史上任意时间段内首发上市的新股列表,非常适合用于次新股策略的股票池构建。