get_cb_info返回的DataFrame包含哪些字段?
get_cb_info返回的可转债数据包含哪些信息,如何解析这些字段?
问题描述
解决方案
在 ptrade 量化交易平台中,get_cb_info() 函数用于获取可转债的基础信息。该函数正常调用后会返回一个 pandas.DataFrame 类型的数据,其中包含了市场上可转债的核心基础数据。
get_cb_info 返回的 DataFrame 字段详解
返回的 DataFrame 包含以下关键字段,您可以根据这些字段进行可转债策略的编写和数据分析:
| 字段名 | 数据类型 | 字段含义 |
|---|---|---|
| bond_code | str |
可转债代码(如 '110033.SS') |
| bond_name | str |
可转债名称 |
| stock_code | str |
对应的正股股票代码 |
| stock_name | str |
对应的正股股票名称 |
| list_date | str |
可转债上市日期 |
| premium_rate | float |
溢价率(衡量可转债价格相对于其转股价值的溢价程度) |
| convert_date | str |
转股起始日(从该日期起可以转换为正股) |
| maturity_date | str |
到期日 |
| convert_rate | float |
转股比例(每张可转债可转换的股票数量) |
| convert_price | float |
转股价格(转换为正股时每股的价格) |
| convert_value | float |
转股价值(当前正股价格乘以转股比例) |
注意事项
- 权限要求:此 API 依靠可转债基础数据权限,使用前请与券商确认是否有此权限。如果无权限,调用将返回空的 DataFrame。
- 异常处理:获取失败时也会返回空的 DataFrame,因此在解析数据前,建议先检查 DataFrame 是否为空(如
if not df.empty:)。
代码示例:如何获取并解析这些字段
以下是一个在 ptrade 策略中调用 get_cb_info 并解析特定字段的示例:
def initialize(context):
# 设置策略操作的标的(此处仅为示例,get_cb_info 会返回全市场数据)
g.security = '600570.SS'
set_universe(g.security)
def handle_data(context, data):
# 获取可转债基础信息
cb_df = get_cb_info()
# 检查是否成功获取到数据
if not cb_df.empty:
log.info("成功获取可转债基础信息,共 %d 条记录" % len(cb_df))
# 示例 1:打印前 5 条记录的所有信息
log.info(cb_df.head())
# 示例 2:筛选出溢价率小于 5% 且转股价值大于 100 的可转债
# 注意:实际使用时需确保 premium_rate 和 convert_value 字段没有缺失值(NaN)
target_cbs = cb_df[(cb_df['premium_rate'] < 0.05) & (cb_df['convert_value'] > 100)]
if not target_cbs.empty:
log.info("符合低溢价、高转股价值条件的可转债代码列表:")
# 提取符合条件的可转债代码列表
target_codes = target_cbs['bond_code'].tolist()
log.info(target_codes)
else:
log.warning("获取可转债信息失败或无权限,返回了空 DataFrame。")
通过上述字段,您可以轻松计算双低指标(价格 + 溢价率)、监控转股期等,从而构建丰富的可转债量化交易策略。