3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 ptrade 量化交易平台中,可以通过调用 get_cb_info() API 获取全市场可转债的基础信息与实时/日频衍生数据(包括转股溢价率 premium_rate、转股价值 convert_value 等)。
get_cb_info() 函数无需入参,直接返回包含可转债基础指标的 pandas.DataFrame 对象。其中关键字段包括:
bond_code: 可转债代码bond_name: 可转债名称premium_rate: 转股溢价率(例如 5.2 表示 5.2%)convert_value: 转股价值maturity_date: 到期日注意:使用该接口需向券商确认是否开通可转债基础数据权限。
实现低溢价率选股的步骤如下:
get_cb_info() 获取当前可转债列表 DataFrame。premium_rate 升序排列,提取前 N 只溢价率最低的可转债作为目标持仓。以下策略在 ptrade 交易/研究模块中可直接运行,展示了每日开盘后自动获取可转债数据、按溢价率排序并进行调仓轮动的逻辑:
import pandas as pd
def initialize(context):
# 设置调仓频率:每个交易日 09:35 执行选股轮动
run_daily(context, check_and_rebalance, time='09:35')
g.hold_count = 5 # 持有溢价率最低的前5只转债
def check_and_rebalance(context):
# 1. 获取可转债基础信息
cb_df = get_cb_info()
if cb_df is None or cb_df.empty:
log.warn("未能获取到可转债信息或返回为空")
return
# 2. 过滤异常及空值,并按转股溢价率升序排序
cb_df = cb_df.dropna(subset=['premium_rate'])
cb_sorted = cb_df.sort_values(by='premium_rate', ascending=True)
# 3. 获取溢价率最低的前 N 只可转债代码
target_bonds = cb_sorted.head(g.hold_count)['bond_code'].tolist()
log.info("今日目标低溢价率可转债列表: %s" % target_bonds)
# 4. 卖出不在目标列表中的持仓
current_positions = get_positions()
for bond in list(current_positions.keys()):
if bond not in target_bonds:
order_target(bond, 0)
log.info("卖出非目标转债: %s" % bond)
# 5. 买入/调整目标转债(平分可用资金)
if len(target_bonds) > 0:
cash_per_bond = context.portfolio.cash / len(target_bonds)
for bond in target_bonds:
# 如果尚未持仓或仓位不足则买入
if get_position(bond).amount == 0:
order_value(bond, cash_per_bond)
log.info("买入低溢价率转债: %s, 金额: %.2f" % (bond, cash_per_bond))
def handle_data(context, data):
pass
双低值 = 可转债价格 + 溢价率 * 100 进行综合打分。get_snapshot() 获取日内成交量,剔除每日成交额过低(如低于 1000 万)的冷门转债,防止无法平仓。