问题描述
未来是否有将可转债接入 get_price() 查询接口?或者应该用什么 symbol 作为查询参数?我尝试使用 '123015.XSHE' 但是提示“找不到标的”。现在是用过 query 获得的日级行情:
p = bond.run_query(
query(bond.CONBOND_DAILY_PRICE).filter(bond.CONBOND_DAILY_PRICE.code == 123015,
bond.CONBOND_DAILY_PRICE.date == '2021-06-08'))
同理,可转债是否支持 tick 级交易,包括使用 subscribe 函数订阅行情?
解决方案
JoinQuant 可转债行情支持现状解析
针对您在 JoinQuant(聚宽)平台上获取可转债行情遇到的问题,以下是详细的解答和当前的解决方案:
1. get_price() 接口是否支持可转债?
目前,JoinQuant 的核心行情接口 get_price() 暂不支持直接查询可转债的行情数据。
根据 JoinQuant API 文档,get_price 以及 get_all_securities 支持的标的类型(types)主要包括:股票 (stock)、基金 (fund, etf, lof 等)、指数 (index)、期货 (futures) 和期权 (options)。可转债尚未被纳入这些标准行情接口的查询范围内。
因此,当您尝试传入 '123015.XSHE' 时,系统会提示“找不到标的”。
当前的正确做法:
正如您所尝试的,目前获取可转债日线行情和基本面数据的唯一官方途径是通过 bond.run_query 查询底层数据库。您的代码是正确的:
from jqdata import *
# 获取可转债日线行情
p = bond.run_query(
query(bond.CONBOND_DAILY_PRICE).filter(
bond.CONBOND_DAILY_PRICE.code == '123015',
bond.CONBOND_DAILY_PRICE.date == '2021-06-08'
)
)
print(p)
(注:建议 code 字段传入字符串格式,以防部分代码前导零丢失)
2. 可转债是否支持 Tick 级数据与 subscribe 订阅?
目前不支持。
根据 JoinQuant API 文档的明确说明:
get_ticks()接口:目前仅支持“股票、期货、50ETF期权、股票指数及场内基金”的 tick 数据。subscribe()接口:目前仅支持订阅“股票、期货、中证指数、场内基金”的 tick 事件。
由于可转债尚未接入标准的高频行情推送系统,因此您无法使用 subscribe('123015.XSHE', 'tick') 来触发 handle_tick 事件,也无法通过 get_current_tick() 或 get_ticks() 获取其高频快照。
3. 未来规划与建议
随着可转债市场的日益火热,量化社区对可转债高频数据和标准接口(如 get_price)的呼声越来越高。虽然目前聚宽官方尚未公布将可转债全面接入 get_price 和 Tick 级订阅的具体时间表,但您可以:
- 关注官方更新:密切关注 JoinQuant 社区的更新公告,官方通常会根据用户需求逐步扩充数据源。
- 使用日频策略:在当前限制下,建议将可转债策略的频率控制在日频,利用
bond.run_query获取每日收盘后的数据进行盘后分析和次日调仓。 - 本地化处理:如果您有极强的高频可转债交易需求,可能需要考虑使用 JQData (jqdatasdk) 结合第三方可转债高频数据源在本地环境中进行回测和实盘模拟。