从正股冲板到转债成交:一个事件驱动的可转债 Tick 策略

由bqi2tg8b创建,最终由bqi2tg8b 被浏览 3 用户

从正股冲板到转债成交:一个事件驱动的可转债 Tick 策略

标签:可转债、Tick 回测、BigTrader、事件驱动、日内交易 本文仅用于量化研究与策略开发交流,不构成任何投资建议。

一、策略简介

传统可转债策略通常从转债本身出发,例如低价、低溢价率、低余额或者多因子选债。

本文尝试从另一个角度构建策略:

使用正股的涨停事件作为交易信号,在正股盘中触及涨停时,买入与其对应的可转债,并在当日收盘前清仓。

策略使用 BigQuant 的 BigTrader 交易引擎进行 Tick 级回测,同时订阅正股和可转债的 Level 2 快照行情。

完整策略代码:

https://bigquant.com/codesharev3/4db9f615-1684-424c-9ff0-d29f74ffcfe6

需要说明的是,本次回测结果并不理想。本文的重点不是展示一条已经稳定盈利的策略,而是完整说明:

  1. 如何将正股事件映射到对应可转债;
  2. 如何在 Tick 行情中识别正股首次触板;
  3. 如何根据转债卖一价买入、买一价卖出;
  4. 如何处理未成交、部分成交和日内强制平仓;
  5. 如何通过日志还原每一笔交易的触发原因。

二、策略研究思路

2.1 正股与可转债的价格联动

可转债同时具有债券属性和股票期权属性。

当正股价格快速上涨时,可转债的转股价值通常也会提高。普通文本表达为:

转股价值 = 100 ÷ 转股价 × 正股价格

正股涨停通常意味着短时间内出现了较强的买入需求和市场关注度。

但正股与可转债属于两个独立交易标的,二者在投资者结构、盘口深度、交易速度和流动性方面存在差异。因此,可以提出一个待检验的研究假设:

当正股突然触及涨停时,对应可转债的价格可能存在短暂的反应过程。

本文策略尝试捕捉这一过程。

需要强调,这只是策略假设,并不代表正股涨停后买入可转债一定能够获得正收益,最终仍然需要通过历史回测和样本外检验进行判断。

2.2 为什么筛选近期曾经涨停的正股

策略并不是对全部正股的涨停事件进行交易,而是要求:

正股在今日之前的 10 个交易日中,至少有 1 个交易日盘中曾经触及涨停。

这一条件主要用于筛选近期交易较活跃、容易受到市场关注的正股。

这里判断的是“盘中曾经触及涨停”,而不是“收盘仍然封住涨停”。只要当日最高价达到涨停价,就记为一次历史触板事件。

2.3 为什么排除开盘直接封板

默认情况下,策略要求正股在当日必须先出现低于涨停价的成交,随后再从涨停价下方触及涨停。

也就是说,策略默认排除:

开盘直接封住涨停,并且全天没有出现开板交易的股票。

原因在于,这类股票虽然处于涨停状态,但很难确定具体的盘中冲板时点,也不符合本文研究的“从下方首次触板”事件定义。


三、完整交易流程

策略的整体流程如下:

读取正股与可转债对应关系
        ↓
统计正股过去10个交易日的触板次数
        ↓
筛选满足历史触板条件的正股
        ↓
同一正股存在多只转债时
选择上一交易日成交额最大的转债
        ↓
盘前订阅正股与可转债Level 2行情
        ↓
监控正股Tick价格
        ↓
正股首次从涨停价下方触及涨停价
        ↓
生成对应可转债买入信号
        ↓
在转债下一笔有效Tick按卖一价下单
        ↓
当日14:55开始强制平仓
        ↓
未完全成交则撤单、让价并重新下单

四、策略参数

本次回测使用的主要参数如下:

参数 设置
回测区间 2026-06-01 至 2026-06-30
初始资金 100万元
回测频率 Tick
交易市场 可转债
历史观察窗口 10个交易日
最少历史触板次数 1次
最多同时持仓 3只
单只目标仓位 30%
最早入场时间 09:31
停止产生新信号 14:45
强制平仓时间 14:55
买入成本 0.03%
卖出成本 0.03%
是否持仓过夜
是否允许开盘直接封板

组合最多使用约 90% 的资金:

最大目标仓位 = 3 × 30% = 90%

剩余资金可以为价格变化、订单取整和交易费用提供一定缓冲。


五、候选正股与可转债映射

5.1 获取正股和转债对应关系

策略首先读取可转债基础信息,获得以下字段:

  • 可转债代码;
  • 可转债名称;
  • 对应正股代码;
  • 正股名称;
  • 转债上市日期;
  • 转债退市日期。

随后根据回测日期,排除尚未上市或已经退市的转债。

5.2 计算历史触板次数

策略使用正股未复权日行情中的:

  • 最高价;
  • 收盘价;
  • 涨停价。

如果当日最高价达到涨停价,则认为该正股当天盘中曾经触板。

随后对每只正股计算:

今日之前10个交易日内的触板次数。

代码中使用了 shift(1),将当天数据严格排除在历史窗口之外,避免把今天正在发生的涨停事件提前用于候选股筛选。

5.3 一只正股对应多只转债时如何处理

部分上市公司可能同时存在多只尚未退市的可转债。

如果全部订阅和交易,可能产生重复持仓。因此,策略采用一个简单的流动性规则:

选择上一交易日成交额最大的可转债。

这里的成交额使用上一交易日数据,而不是当天尚未完整结束的数据。

这一处理同时解决了两个问题:

  1. 避免同一正股触板后重复买入多只转债;
  2. 优先选择相对活跃、盘口流动性可能更好的转债。

六、盘前行情订阅

Tick 数据量较大,因此策略不会直接回放全部股票和全部可转债行情。

每天开盘前,策略只订阅:

  1. 当天符合条件的候选正股;
  2. 候选正股对应的可转债;
  3. 账户中可能存在的历史遗留持仓。

核心逻辑可以概括为:

subscriptions = (
    set(context.today_candidates.keys())
    | set(context.cbond_to_stock.keys())
    | set(context.carryover_bonds)
)

context.subscribe(
    sorted(subscriptions),
    bigtrader.SubscribeFlag.L2Snapshot
)

显式订阅 Level 2 快照的原因是,策略需要读取:

  • 正股最新成交价;
  • 转债卖一价;
  • 转债买一价。

如果只订阅普通行情,部分环境下可能无法取得买一价和卖一价字段。


七、正股触板信号

7.1 记录正股是否曾低于涨停价

对每一笔正股 Tick,策略先判断最新成交价是否低于当日涨停价。

如果低于涨停价,则记录:

context.seen_below_limit.add(instrument)

这个状态表示:

该正股今天至少曾经在涨停价下方成交。

7.2 识别首次触板

当正股最新成交价达到涨停价,并且此前已经在涨停价下方成交时,策略确认发生首次冲板事件。

普通文本表达为:

触板条件 = 最新成交价 ≥ 涨停价 ×(1 - 容差)

代码中设置了很小的价格容差,主要用于处理浮点数比较误差。

同一只正股每天只触发一次,触发后会被加入:

context.triggered_stocks

从而避免正股反复开板、回封时重复产生买入信号。


八、可转债买入执行

正股触板后,策略不会直接使用正股 Tick 给转债下单,因为此时不一定已经收到对应转债的最新盘口。

策略会先把转债加入待买入列表:

context.pending_cbonds[cbond] = stock

随后分为两种情况:

  1. 已经收到过该转债当日 Tick:立即尝试买入;
  2. 尚未收到转债 Tick:等待下一笔转债行情。

当取得有效卖一价后,策略按照卖一价提交限价买单。

ask1 = tick_ask1(tick)

context.order_target_percent(
    instrument,
    POSITION_PCT,
    limit_price=ask1
)

这里没有直接使用最新成交价,而是使用卖一价,目的是让回测中的买入价格更加接近实际可成交价格。

同时,策略限制:

  • 最多持有3只转债;
  • 每只目标仓位30%;
  • 同一只转债不重复下单;
  • 已经持有的转债不再买入。

九、日内平仓与订单追价

9.1 14:55强制清仓

策略不持仓过夜。

当时间达到14:55后,系统停止处理新的买入信号,并对全部持仓发起清仓。

首次卖出使用转债买一价:

bid1 = tick_bid1(tick)

与直接使用最新成交价相比,买一价更接近当时能够主动卖出的盘口价格。

9.2 为什么需要撤单追价

可转债的盘口深度可能不足。

即使按照买一价卖出,也可能只成交一部分,订单状态变为部分成交。如果策略只发送一次卖单,剩余仓位可能无法在收盘前卖出。

因此,本策略增加了清仓追价机制:

  1. 首次按照买一价挂出卖单;
  2. 20秒后仍未完全成交,则撤销旧订单;
  3. 将卖出限价向下调整0.003元;
  4. 最多进行3次限价重试;
  5. 仍未完全平仓时,使用市价单兜底。

这一部分的主要目的并不是提高收益,而是避免回测中出现异常隔夜持仓。

9.3 处理历史遗留持仓

如果因为行情中断、回测结束或者其他异常情况留下隔夜仓位,策略会在下一个交易日开盘后自动启动清仓流程。

因此,日内平仓和异常持仓使用的是同一套订单处理机制。


十、交易日志与可审计性

高频策略仅查看最终收益曲线通常是不够的。

为了判断策略是否按照预期执行,代码会记录以下信息:

  • 哪只正股在什么时间触及涨停;
  • 正股的涨停价;
  • 过去10个交易日触板次数;
  • 正股对应多少只候选转债;
  • 最终选择了哪只转债;
  • 转债上一交易日成交额;
  • 买入挂单价格;
  • 实际成交价格和成交数量;
  • 当前账户可用资金;
  • 当前持仓数量;
  • 卖出原因;
  • 实际平仓盈亏;
  • 是否发生撤单和让价重试。

例如,一笔买入日志会同时记录:

正股触及涨停价;
过去10个交易日满足历史触板条件;
同一正股对应的候选转债数量;
选中上一交易日成交额最大的转债;
买入成交价格、数量、手续费和账户状态。

这些日志可以帮助排查以下常见问题:

  1. 信号是否确实由正股首次触板产生;
  2. 买入的是不是正确的对应转债;
  3. 是否发生重复下单;
  4. 是否使用了有效卖一价;
  5. 平仓订单是否出现部分成交;
  6. 是否存在隔夜持仓。

十一、回测结果

建议在此处插入 BigTrader 的“收益概况”截图。

【插入图1:策略累计收益曲线和回测指标】

本次回测区间为2026年6月1日至2026年6月30日,初始资金为100万元。

主要结果如下:

指标 回测结果
累计收益率 -6.58%
年化收益率 -55.83%
基准收益率 2.79%
阿尔法 -0.58
贝塔 0.11
夏普比率 -4.86
胜率 28.06%
盈亏比 0.53
收益波动率 17.10%
信息比率 -4.13
最大回撤 8.04%

从结果看,这一版策略在当前样本中没有获得正收益。

累计收益率为-6.58%,夏普比率为-4.86,说明策略承担波动后并没有获得相应的风险补偿。

胜率只有28.06%,盈亏比为0.53,意味着策略不仅盈利交易比例较低,而且平均盈利也不足以覆盖平均亏损。

需要注意,回测区间只有一个月,因此年化收益率、阿尔法和夏普比率都会受到短样本的明显影响。相比单纯关注年化指标,更应该检查每笔交易的收益分布、入场延迟和盘口成交情况。


十二、如何理解这次负收益

12.1 正股涨停不等于转债继续上涨

正股触及涨停时,可转债可能已经提前上涨。

如果转债价格在正股冲板之前已经充分反映预期,那么触板后再买入就可能处于短期高位。

因此,策略可能面临:

正股信号出现时,可转债价格反应已经基本完成。

12.2 只判断触板,没有判断封板质量

当前策略只判断正股是否达到涨停价,没有进一步判断:

  • 涨停封单金额;
  • 封单持续时间;
  • 开板次数;
  • 买一队列变化;
  • 触板前短期成交量;
  • 触板速度;
  • 是否属于快速回封。

因此,普通的触板、弱势冲板和强势封板都会被同等处理。

12.3 没有判断转债是否已经过度上涨

当前版本没有加入转债端的价格过滤条件,例如:

  • 转股溢价率;
  • 当日涨幅;
  • 转债相对正股的涨幅差;
  • 买卖价差;
  • 当前盘口深度;
  • 转债成交额;
  • 转债短期波动率。

如果转债在买入前已经大幅上涨,后续出现回落的概率可能提高。

12.4 收盘前统一平仓可能不是最佳退出方式

策略在正股触板后买入,并统一持有到14:55。

但不同事件的有效持续时间可能不同。

有些转债可能在触板后的几十秒内完成价格反应,继续持有反而会暴露于:

  • 正股开板;
  • 转债溢价率回落;
  • 日内资金撤离;
  • 尾盘流动性下降。

因此,固定尾盘平仓可能没有利用信号的实际半衰期。


十三、当前策略的主要优点

虽然回测结果为负,但这一版策略仍然完成了较完整的事件驱动交易框架。

13.1 严格使用历史信息

过去10个交易日的触板次数通过滞后处理计算,严格排除了当天数据。

转债筛选使用上一交易日成交额,也没有使用当天收盘后才能获得的信息。

13.2 正股信号与转债执行分离

策略分别处理:

  • 正股触板事件;
  • 转债盘口更新;
  • 可转债订单执行。

这比在正股 Tick 回调中直接使用未知的转债价格下单更合理。

13.3 使用买一价和卖一价

买入使用卖一价,卖出使用买一价,使回测价格比直接使用最新成交价更加保守。

13.4 处理部分成交

通过撤单、让价重试和市价兜底,降低了未成交订单导致异常隔夜持仓的概率。

13.5 日志较为完整

每一笔交易都能够追溯到对应正股、历史筛选条件、转债选择依据和实际成交情况,便于后续诊断。


十四、下一步优化方向

14.1 加入封板质量过滤

可以在正股触板后继续观察数秒,而不是立即买入。

例如要求:

正股价格达到涨停价
        +
连续若干秒没有开板
        +
涨停买一队列保持稳定
        +
封单金额达到最低标准

这样可以减少弱势冲板和瞬间触板信号。

14.2 加入转债相对滞后指标

策略真正需要捕捉的不是“正股涨停”,而是:

正股已经出现强势事件,但转债尚未完全反应。

可以构造以下指标:

正股短期涨幅 - 转债短期涨幅

或者比较正股冲板前后,转债相对于理论转股价值的变化。

如果转债已经同步大涨,则不再追入;只有转债反应明显落后时才产生买入信号。

14.3 加入流动性硬过滤

可以进一步要求:

  • 上一交易日成交额达到最低标准;
  • 当日买卖价差不超过指定比例;
  • 卖一档挂单数量足够;
  • 转债价格处于合理区间;
  • 排除长期没有有效盘口的转债。

14.4 使用事件退出而不是固定尾盘退出

后续可以比较多种退出规则:

  1. 正股开板后立即退出;
  2. 转债达到止盈比例后退出;
  3. 转债达到止损比例后退出;
  4. 持有超过一定分钟数后退出;
  5. 转债相对正股的价格差收敛后退出;
  6. 14:55仅作为最后的强制平仓条件。

14.5 延长回测区间

一个月的数据不足以评价策略稳定性。

更严谨的检验应覆盖:

  • 上涨市场;
  • 下跌市场;
  • 可转债活跃阶段;
  • 可转债低迷阶段;
  • 不同涨停制度和不同流动性环境。

同时可以按照年份或者月份输出:

  • 触发事件数量;
  • 实际成交数量;
  • 平均持有时间;
  • 单笔平均收益;
  • 胜率;
  • 盈亏比;
  • 最大单笔亏损;
  • 不同时间段的策略表现。

十五、总结

本文构建了一套基于正股涨停事件的可转债 Tick 策略。

策略的核心逻辑是:

先使用历史触板条件筛选活跃正股,再监控正股当日首次冲板事件,随后按照对应可转债的实际盘口价格完成日内交易。

相较于传统可转债双低或者多因子轮动策略,这套方法具有明显的事件驱动特征,交易信号来自正股,交易标的是可转债。

从本次回测看,简单地在正股触板后买入可转债,并不能直接形成有效策略。当前版本在2026年6月取得-6.58%的累计收益,说明信号定义、买入时点和退出机制仍需要继续优化。

但负收益结果同样具有研究价值。它说明:

  1. 正股触板并不代表转债随后一定继续上涨;
  2. 需要识别转债是否已经提前反应;
  3. 需要区分强势封板和普通触板;
  4. 高频策略必须重视盘口、价差、部分成交和订单管理;
  5. 完整交易日志比单纯观察收益曲线更有助于发现问题。

欢迎大家从信号定义、盘口执行和风险控制等角度提出修改建议。

{link}