3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在可转债量化套利交易中,当可转债转换为正股的折价(即转股溢价率为负)达到一定阈值时,投资者可以通过买入可转债并申报转股,次日卖出正股来获取无风险或低风险套利收益。本文将详细介绍如何在 ptrade 平台中实现可转债转股溢价率的监控,并调用 debt_to_stock_order 接口进行自动化转股申报。
get_cb_info()用于获取当前市场中可转债的转股价、转股价值及溢价率等关键参数。
bond_code: 可转债代码stock_code: 正股代码premium_rate: 溢价率convert_price: 转股价convert_value: 转股价值debt_to_stock_order(security, amount)用于提交可转债的转股申报。
security (str): 可转债代码(如 '110033.SS')。amount (int): 申报转股的数量(以张数或面值为单位,通常转股申报委托输入张数/数量,请根据券商柜台规范设置,负数/正数按接口说明,通常申报数量为正整数张数)。None。get_cb_info() 获取可转债数据。premium_rate < -1.5%)。debt_to_stock_order 进行转股申报。以下为完整的 ptrade 可转债转股溢价监控与自动化转股申报策略代码:
def initialize(context):
# 设置套利阈值:当转股溢价率小于 -1.5% 时触发转股
g.threshold_premium = -1.5
# 设置监控的目标可转债代码(也可以通过 get_cb_info 动态全市场筛选)
g.cb_code = '110033.SS'
set_universe(g.cb_code)
# 定时在尾盘 14:50 执行溢价率监控与转股申报
run_daily(context, check_and_convert, time='14:50')
def check_and_convert(context):
# 1. 获取全市场或指定可转债基础信息
df_cb = get_cb_info()
if df_cb.empty:
log.warning("获取可转债基础信息失败或无数据")
return
# 过滤出目标可转债数据
cb_data = df_cb[df_cb['bond_code'] == g.cb_code]
if cb_data.empty:
log.info("未查询到目标可转债 %s 的基础信息" % g.cb_code)
return
premium_rate = cb_data['premium_rate'].values[0]
log.info("可转债 %s 当前溢价率为: %.2f%%" % (g.cb_code, premium_rate))
# 2. 判断溢价率是否达到转股套利条件
if premium_rate < g.threshold_premium:
# 查询当前账户中该可转债的持仓情况
position = get_position(g.cb_code)
if position.enable_amount >= 10: # 确保有可用持仓(最少10张)
convert_amount = position.enable_amount
log.info("触发转股条件,开始对 %s 申报转股,数量: %d 张" % (g.cb_code, convert_amount))
# 3. 执行债转股委托
order_id = debt_to_stock_order(g.cb_code, convert_amount)
if order_id:
log.info("转股申报成功,订单编号: %s" % order_id)
else:
log.error("转股申报失败")
else:
log.info("溢价率满足要求,但可转债可用持仓不足")
def handle_data(context, data):
pass
get_cb_info() 和 debt_to_stock_order() 需要券商开通相应的可转债与基础数据权限,实盘运行前请先通过模拟环境或极小单量测试流程。