问答交流

请求修复表cn_stock_factors_base中的北交所数据

由xxbiao创建,最终由xxbiao 被浏览 3 用户

# 查询代码 cn_stock_factors_base

import dai

sql = """
SELECT instrument, date, suspended
FROM cn_stock_factors_base
WHERE instrument LIKE '%.BJ'
"""

# 查询数据
df = dai.query(sql, filters={"date": ["2024-08-01", "2024-08-01"]}).df()


print(f"共{len(df)}只, '92'开头共{df['instrument'].str.startswith('92').sum()}只")

#结果
#共249只, '92'开头共7只

#使用默认的基础选股,过渡停牌会联表查询 cn_stock_factors_base, 从而产生不正确结果

import dai

sql = """
CREATE TABLE _t_8ff57be0c63a4efeade77dfd3c0c8dad AS SELECT
    date,
    instrument
FROM
    cn_stock_bar1d
    JOIN cn_stock_basic_info USING (instrument)
    JOIN cn_stock_status USING(date, instrument)
    JOIN cn_stock_factors_base USING(date, instrument)
WHERE
    (cn_stock_bar1d.instrument LIKE '%.BJ')
    AND cn_stock_basic_info.list_sector IN (4,)
    AND cn_stock_status.st_status IN (0,)
    AND cn_stock_factors_base.suspended IN(0,)
QUALIFY
    1 = 1
ORDER BY date, instrument;
SELECT
    c_rank(total_market_cap)*1 as score,
    date,
    instrument,
    total_market_cap
FROM cn_stock_prefactors
    JOIN _t_8ff57be0c63a4efeade77dfd3c0c8dad USING(date, instrument)
QUALIFY
    st_status = 0
    AND list_days >= 40
    AND is_risk_warning == 0
    AND COLUMNS(*) IS NOT NULL
ORDER BY date, instrument
"""

dai.query(sql, filters={"date": ["2024-08-01", "2024-08-01"]}).df()

\

{link}