3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 JoinQuant 聚宽 API 中,get_price 函数对停牌日期数据的处理主要由 skip_paused 和 fill_paused 两个参数控制。
以下是具体的处理逻辑:
默认设置:skip_paused=False 且 fill_paused=True。
pre_close)进行填充。0。设置:skip_paused=True。
security 为列表),设置此选项可能会导致不同股票返回的数据行数不一致(如果返回的是 Panel 结构或需要索引对齐的 DataFrame,可能会有限制或报错,建议配合 panel=False 使用)。设置:skip_paused=False 且 fill_paused=False。
NaN。# 1. 默认情况:使用前值填充 (价格为前一日收盘价, volume为0)
df_default = get_price('000001.XSHE', start_date='2015-01-01', end_date='2015-02-01')
# 2. 跳过停牌:结果中不包含停牌日
df_skip = get_price('000001.XSHE', start_date='2015-01-01', end_date='2015-02-01', skip_paused=True)
# 3. 使用 NaN 填充:保留日期,但数据为 NaN
df_nan = get_price('000001.XSHE', start_date='2015-01-01', end_date='2015-02-01', fill_paused=False)
Q: 为什么 get_price 默认不跳过停牌日期?
A: 主要是为了在获取多只股票数据时保持时间轴(Index)的一致性。如果跳过停牌,不同股票的行数可能不同,导致数据对齐困难。
Q: 停牌期间的 volume 和 money 字段是多少?
A: 在默认模式(前值填充)下,停牌期间的 volume(成交量)和 money(成交额)通常为 0。
Q: 如果我想计算收益率,停牌填充的数据会有影响吗?
A: 会有影响。如果使用前值填充,停牌期间的价格不变,计算出的日收益率为 0。如果使用 skip_paused=True,则计算的是复牌日相对于停牌前一日的收益率。
Q: fill_paused 参数对哪些字段生效?
A: fill_paused 主要影响价格字段(open, close, high, low)。如果设置为 True(默认),则用 pre_close 填充;如果为 False,则用 NaN 填充。