Skip to content

状态数据

获取标的的上市日期

get_ipo_date-获取标的的上市日期

获取标的的上市时间:如果当前处于上市状态,则返回该次上市日期;否则返回 None。security品种支持股票和基金。

python
get_ipo_date(security)

参数

参数名类型必填说明
securitystr / list[str]标的代码

返回值

返回类型说明
pandas.Series | pandas.DataFrame返回上市日期数据(按标的索引),未上市/退市等返回 None

举例

python
ipo = get_ipo_date(['sh600000', 'sz000001'])
log.info(ipo)

# 输出示例:
#         ipo_date
# sz000001  1991-04-03
# sh600000  1999-11-10

获取标的在指定日期的状态开始时间

get_latest_status_time-获取标的在指定日期的状态开始时间

获取标的在指定日期处于 *ST / ST / 停牌 / 退市整理期 / 退市 等状态的开始时间。
如果在指定日期处于该状态,则返回该次状态开始时间;否则返回 None。status_type 传不同值时支持不同品种,默认判断 ST。

函数

python
get_latest_status_time(security, date=None, status_type=STATUS_TYPE.ST)

参数

参数名类型必填说明
securitystr / list[str]标的代码
datedatetime.date / datetime.datetime / str / 时间戳指定日期;支持 yyyy-mm-dd、yyyy-mm-dd hh:mm:ss、datetime、时间戳;截取到日期;默认回测时间
status_typeSTATUS_TYPE状态类型:STATUS_TYPE.ST, STATUS_TYPE.STX, STATUS_TYPE.SUSPEND, STATUS_TYPE.PREDELIST, STATUS_TYPE.DELISTED;默认 STATUS_TYPE.ST

返回值

返回类型说明
pandas.Series | pandas.DataFrame返回状态开始时间数据(按标的索引);不处于该状态返回 None

举例

python
t = get_latest_status_time(['sh600000', 'sz000001'])
log.info(t)

# 输出示例:
#         latest_status_time
# sz000001  1991-04-03
# sh600000  1999-11-10

判断标的在指定日期是否上市

is_listing-判断标的在指定日期是否上市

判断标的在指定日期是否上市。change 传不同值时可判断是否为指定日期新变化的状态。日期默认当天。security`品种支持股票、基金,债券。

函数

python
is_listing(security, date=None, change=False)

参数

参数名类型必填说明
securitystr / list[str]标的代码
datedatetime.date / datetime.datetime / str / 时间戳指定日期;支持 yyyy-mm-dd、yyyy-mm-dd hh:mm:ss、datetime、时间戳;截取到日期;默认回测时间
changebool是否判断在指定日期新变化的状态:True 表示判断是否在指定日期新变化的状态;False 表示判断当前是否是此状态(但不一定是新变化的状态);默认 False

返回值

返回类型说明
pandas.DataFrame返回一个 DataFrame:索引为标的代码,字段 is_listing的取值通常为 1/0(是否上市)

举例

python
ret = is_listing(security=['sh688888', 'sh688599'], date='1999-11-10')
log.info(ret)

# 输出示例:
#          is_listing
# sh688888          1
# sh688599          0

判断标的在指定日期是否处于指定状态

is_status-判断标的在指定日期是否处于指定状态

判断标的在指定日期是否处于 ST / ST / 停牌 / 退市整理期 / 退市 等状态。status_type 传不同值时支持不同品种;change传不同值时可判断是否为指定日期新变化*的状态。默认判断 ST。

函数

python
is_status(security, date=None, change=False, status_type=STATUS_TYPE.ST)

参数

参数名类型必填说明
securitystr / list[str]标的代码
datedatetime.date / datetime.datetime / str / 时间戳指定日期;支持 yyyy-mm-dd、yyyy-mm-dd hh:mm:ss、datetime、时间戳;截取到日期;默认回测时间
changebool是否判断在指定日期新变化的状态:True 表示判断是否在指定日期新变化的状态;False 表示判断当前是否是此状态(但不一定是新变化的状态);默认 False
status_typeSTATUS_TYPE / list[STATUS_TYPE]状态类型:STATUS_TYPE.ST, STATUS_TYPE.STX, STATUS_TYPE.SUSPEND, STATUS_TYPE.PREDELIST, STATUS_TYPE.DELISTED;默认 STATUS_TYPE.ST;可传 list 同时判断多种

返回值

返回类型说明
pandas.DataFrame返回一个 DataFrame:索引为标的代码;
- 判断单个状态时,列名为 is_status
- 判断多个状态时,列为 status_type 对应的状态名(如 ST、停牌等),取值通常为 1/0(是否处于该状态)

举例

python
ret = is_status('sz000001', status_type=STATUS_TYPE.ST)
log.info(ret)

# 输出示例:
#           is_status
# sz000001          0


ret = is_status('sz000001', status_type=[STATUS_TYPE.ST, STATUS_TYPE.SUSPEND])
log.info(ret)

# 输出示例:
#           ST  停牌
# sz000001    0    0

💡 排除停牌和ST的股票

先获取候选股票列表,再用 is_status 批量判断状态,过滤掉 ST(含 *ST)和停牌的标的:

python
# 获取全部主板股票列表
all_stocks = get_all_securities(type=[13, 14]).index.tolist()

# 批量查询停牌和ST状态
status = is_status(all_stocks, status_type=[STATUS_TYPE.ST, STATUS_TYPE.STX, STATUS_TYPE.SUSPEND])

# 排除任一状态为 1 的股票
filtered_list = status[status.max(axis=1) == 0].index.tolist()

计算标的截至到指定日期的上市天数

get_listing_days-计算标的截至到指定日期的上市天数
计算标的截至到指定日期的上市天数:如果指定日期处于上市状态,则返回这次上市天数;否则返回 0。天数类型默认自然日;security 品种支持股票、基金、期权、债券。

函数

python
get_listing_days(security, date=None, day_type=DAY_TYPE.NORMAL)

参数

参数名类型必填说明
securitystr / list[str]标的代码
datedatetime.date / datetime.datetime / str / 时间戳指定日期;支持 yyyy-mm-dd、yyyy-mm-dd hh:mm:ss、datetime、时间戳;截取到日期;默认回测时间
day_typeDAY_TYPE天数类型:DAY_TYPE.TRADE, DAY_TYPE.NORMAL;默认 DAY_TYPE.NORMAL(自然日)

返回值

返回类型说明
pandas.DataFrame返回一个 DataFrame:索引为标的代码;列为 get_listing_days;值为截至指定日期的上市天数(int)。若指定日期不处于上市状态则为 0。

举例

python
ret = get_listing_days(security=['sh600000', 'sz000001'], day_type=DAY_TYPE.TRADE)
log.info(ret)

# 输出示例:
#          get_listing_days
# sz000001            10022
# sh600000            12033

计算标的截至到指定日期最近一次指定状态持续天数

get_latest_status_days-计算标的截至到指定日期最近一次指定状态持续天数
计算标的截至到指定日期最近一次 ST / *ST / 停牌 / 退市整理期 等状态持续天数:

  • 如果当前处于该状态(如 ST / *ST / 停牌 / 退市整理期),返回这次状态持续天数;

  • 否则返回 0。
    status_type 传不同值时支持不同品种;默认截至到当前;天数类型默认交易日;默认判断 ST。

函数

python
get_latest_status_days(security, date=None, day_type=DAY_TYPE.TRADE, status_type=STATUS_TYPE.ST)

参数

参数名类型必填说明
securitystr / list[str]标的代码
datedatetime.date / datetime.datetime / str / 时间戳指定日期;支持 yyyy-mm-dd、yyyy-mm-dd hh:mm:ss、datetime、时间戳;截取到日期;默认回测时间
day_typeDAY_TYPE天数类型:DAY_TYPE.TRADE, DAY_TYPE.NORMAL;默认 DAY_TYPE.TRADE(交易日)
status_typeSTATUS_TYPE状态类型:STATUS_TYPE.ST, STATUS_TYPE.STX, STATUS_TYPE.SUSPEND, STATUS_TYPE.PREDELIST;默认 STATUS_TYPE.ST

返回值

返回类型说明
pandas.DataFrame返回一个 DataFrame:索引为标的代码;列为 latest_status_days;值为截至指定日期最近一次该状态持续天数(int)。若当前不处于该状态则为 0。

举例

python
ret = get_latest_status_days(security=['sh600000', 'sz000001'], day_type=DAY_TYPE.TRADE)
log.info(ret)

# 输出示例:
#          latest_status_days
# sz000001              10022
# sh600000              12033

计算标的在设定时间区间内处于指定状态的天数

count_status_days-计算标的在设定时间区间内处于指定状态的天数
计算标的在设定时间区间内处于 ST / *ST / 停牌 / 退市整理期 等状态的天数。status_type 传不同值支持不同品种;天数类型默认交易日;默认判断 ST。

函数

python
count_status_days(security, start_date, end_date=None, day_type=DAY_TYPE.TRADE, status_type=STATUS_TYPE.ST)
参数名类型必填说明
securitystr / list[str]标的代码
start_datedatetime.date / datetime.datetime / str / 时间戳区间开始日期;支持 yyyy-mm-dd、yyyy-mm-dd hh:mm:ss、datetime、时间戳;截取到日期
end_datedatetime.date / datetime.datetime / str / 时间戳区间结束日期;支持 yyyy-mm-dd、yyyy-mm-dd hh:mm:ss、datetime、时间戳;截取到日期;默认回测时间
day_typeDAY_TYPE天数类型:DAY_TYPE.TRADE, DAY_TYPE.NORMAL;默认 DAY_TYPE.TRADE(交易日)
status_typeSTATUS_TYPE状态类型:STATUS_TYPE.ST, STATUS_TYPE.STX, STATUS_TYPE.SUSPEND, STATUS_TYPE.PREDELIST;默认 STATUS_TYPE.ST

返回值

返回类型说明
pandas.DataFrame返回一个 DataFrame:索引为标的代码;列为 status_days;值为区间内处于指定状态的天数(int)。
python
ret = count_status_days(
    security=['sh600000', 'sh600011', 'sz000001'],
    start_date='1999-11-10',
    end_date='1999-11-20',
    day_type=DAY_TYPE.TRADE,
    status_type=STATUS_TYPE.ST
)
log.info(ret)

# 输出示例:
#          status_days
# sh600000          4
# sh600011          3
# sz000001          0

计算股票在设定时间区间内指定状态变化次数

count_status_change-计算股票在设定时间区间内指定状态变化次数
计算股票在设定时间区间内转变成 ST / *ST 的次数。security 品种仅对股票有效,默认判断 ST。 如果传入的开始时间股票状态为 ST,则记为 1 次。

函数

python
count_status_change(security, start_date, end_date=None, status_type=STATUS_TYPE.ST)

参数

参数名类型必填说明
securitystr / list[str]标的代码
start_datedatetime.date / datetime.datetime / str / 时间戳区间开始日期;支持 yyyy-mm-dd、yyyy-mm-dd hh:mm:ss、datetime、时间戳;截取到日期
end_datedatetime.date / datetime.datetime / str / 时间戳区间结束日期;支持 yyyy-mm-dd、yyyy-mm-dd hh:mm:ss、datetime、时间戳;截取到日期;默认回测时间
status_typeSTATUS_TYPE状态类型:STATUS_TYPE.ST, STATUS_TYPE.STX;默认 STATUS_TYPE.ST

返回值

返回类型说明
pandas.DataFrame返回一个 DataFrame:索引为标的代码;列为 status_change;值为区间内指定状态变化次数(int)。

举例

python
ret = count_status_change(
    security=['sh600000', 'sh600011', 'sz000001'],
    start_date='1999-11-10',
    end_date='1999-11-20'
)
log.info(ret)

# 输出示例:
#          status_change
# sh600000            4
# sh600011            3
# sz000001            0