问题描述
调用get_cb_info函数时需要传入什么参数,为什么文档说无参数?
解决方案
在 ptrade 量化平台中,调用 get_cb_info() 函数时确实不需要传入任何参数。
为什么不需要传参?
这是因为 get_cb_info() 函数的设计初衷是一次性获取全市场所有可转债的基础信息。它返回的是一个包含所有可转债数据的 pandas.DataFrame 对象。由于它是获取全量数据,因此不需要您指定特定的可转债代码或日期。
如果您只需要某一只或某几只特定可转债的信息,您可以在获取到全量的 DataFrame 后,使用 pandas 的数据筛选功能来提取您需要的数据。
返回数据包含哪些信息?
返回的 DataFrame 包含以下关键字段:
bond_code: 可转债代码bond_name: 可转债名称stock_code: 正股代码stock_name: 正股名称list_date: 上市日期premium_rate: 溢价率convert_date: 转股起始日maturity_date: 到期日convert_rate: 转股比例convert_price: 转股价格convert_value: 转股价值
代码示例
以下是如何调用该函数并筛选特定可转债信息的示例:
def initialize(context):
# 设置一只股票作为示例,虽然 get_cb_info 不需要
g.security = '600570.SS'
set_universe(g.security)
def handle_data(context, data):
# 1. 无参数调用,获取所有可转债基础信息
cb_df = get_cb_info()
if not cb_df.empty:
log.info("成功获取全量可转债信息,共 %d 条记录" % len(cb_df))
# 2. 假设我们想查找正股代码为 '600570.SS' 的可转债信息
# 注意:实际中恒生电子可能没有可转债,这里仅为筛选语法示例
target_stock = '600570.SS'
specific_cb = cb_df[cb_df['stock_code'] == target_stock]
if not specific_cb.empty:
log.info("找到对应的可转债信息:\n%s" % specific_cb)
else:
log.info("未找到正股代码为 %s 的可转债" % target_stock)
else:
log.info("获取可转债信息失败或无权限")
注意事项:
此 API 依靠可转债基础数据权限,使用前请与券商确认是否有此权限,无权限时调用会返回空的 DataFrame。