应朋友的要求,把可转债双低轮动策略进行了量化,他准备实盘使用。开发测试了一个月,终于完成。本来今天是跑实盘的,结果一运行报没有权限的错误,原来极速柜台的可转债的交易权限要另外申请,负责审批的人休假了,下周才能办理,无奈只能先仿真盘跑着。
第一部分:策略逻辑
一、获得{应轮入的可转债列表}
1、获取所有可转债列表
2、剔除所有[不合法]的可转债
3、计算每个可转债的双低值
4、剔除所有[不符合轮动条件]的可转债,获得{可轮动的可转债列表}
5、按双低值升序排序{可轮动的可转债列表}
6、取前{轮动池大小}个债券作为{应轮入的可转债列表}
二、处理轮出
IF 不在{应轮入的可转债列表}中 THEN
IF [符合轮出条件] THEN
轮出平仓
ELSE
保持持仓
ELSE
保持持仓
三、处理轮入
IF [存在可轮入可转债] THEN
开仓所有可轮入债券
名词解释:
不合法: 在黑名单中的、未上市的、已退市的
转股价值=可转债面值/转股价×股票价格;
可转债溢价率=可转债价格/转股价值-1;
双低值=可转债价格+可转债溢价率*100
不符合轮动条件: 到期时间不足、可转债价格过高或过低、双底排序值过高或过低
轮动池大小:持仓可转债的最大数量
符合轮出条件: 不合法或排名不在前{轮动池大小}中且盈利达到指定值且轮出最小差值达到指定值
存在可轮入可转债: {应轮入的可转债列表}中有未持仓的且持仓债券的数量小于轮动池大小
第二部分:策略回测参数
轮动债券个数 20
轮动检查频率 1天
轮出最小双低差值 1
轮入限制
债券到期时间最小值 180天
债券最高价格 130
轮出限制 债券到期时间最小值 30天
参数说明:
轮出最小双低差值:{应轮入的可转债列表}中的最小双低值-应轮出的可转债的双低值 > 1,才轮出,以避免无意义的轮动。
第三部分:策略回测结果
2018-01-02至2023-09-08策略回测统计,交易成本按0.1%计算:
平均年化收益 18.03%
索提诺比率 8.38
夏普比率 2.56
最大回撤 -13.01%
最大回撤(按月) -8.48%
特别申明,本人不是特别懂可转债,只是比较擅长写代码,对量化交易比较感兴趣,对各个量化交易平台有所了解,严格按朋友给的逻辑编写回测的。
第一部分:策略逻辑
一、获得{应轮入的可转债列表}
1、获取所有可转债列表
2、剔除所有[不合法]的可转债
3、计算每个可转债的双低值
4、剔除所有[不符合轮动条件]的可转债,获得{可轮动的可转债列表}
5、按双低值升序排序{可轮动的可转债列表}
6、取前{轮动池大小}个债券作为{应轮入的可转债列表}
二、处理轮出
IF 不在{应轮入的可转债列表}中 THEN
IF [符合轮出条件] THEN
轮出平仓
ELSE
保持持仓
ELSE
保持持仓
三、处理轮入
IF [存在可轮入可转债] THEN
开仓所有可轮入债券
名词解释:
不合法: 在黑名单中的、未上市的、已退市的
转股价值=可转债面值/转股价×股票价格;
可转债溢价率=可转债价格/转股价值-1;
双低值=可转债价格+可转债溢价率*100
不符合轮动条件: 到期时间不足、可转债价格过高或过低、双底排序值过高或过低
轮动池大小:持仓可转债的最大数量
符合轮出条件: 不合法或排名不在前{轮动池大小}中且盈利达到指定值且轮出最小差值达到指定值
存在可轮入可转债: {应轮入的可转债列表}中有未持仓的且持仓债券的数量小于轮动池大小
第二部分:策略回测参数
轮动债券个数 20
轮动检查频率 1天
轮出最小双低差值 1
轮入限制
债券到期时间最小值 180天
债券最高价格 130
轮出限制 债券到期时间最小值 30天
参数说明:
轮出最小双低差值:{应轮入的可转债列表}中的最小双低值-应轮出的可转债的双低值 > 1,才轮出,以避免无意义的轮动。
第三部分:策略回测结果
2018-01-02至2023-09-08策略回测统计,交易成本按0.1%计算:
平均年化收益 18.03%
索提诺比率 8.38
夏普比率 2.56
最大回撤 -13.01%
最大回撤(按月) -8.48%
特别申明,本人不是特别懂可转债,只是比较擅长写代码,对量化交易比较感兴趣,对各个量化交易平台有所了解,严格按朋友给的逻辑编写回测的。