前段时间很多朋友给我私信,让我出一个QMT
可转债双低轮动策略的文章,
今天我就给大家简单的介绍如何用QMT实现可转债双低策略。
首先来给大家介绍什么是双低可转债,
简单来说,“双低”指的是价格低,并且溢价率也低的可转债。可转债的价格越低,
说明他的债性越好,正股下跌时会更加抗跌,转股溢价率低,
说明可转债的股性越强,正股上涨时才能跟着涨。
市面上比较主流的双低值,是用以下公式来计算的:
双低 = 可转债价格 + 转股溢价率 * 100
介绍完双低可转债,接下来介绍可转债双低轮动策略。
策略筛选出目前市面上价格和转股溢价率最低的10-20只可转债,这里我们选择10只,等权重买入,然后按照一定的周期进行轮动,这里我们选择10个交易日轮动一次,卖出涨的好的债券,买入市面上新低的债券。也就是保持持有的债券依旧符合双低原则。
我们今天只介绍最简单的可转债双低策略,并不考虑强赎以及一年内到期情况,主要的目的是为了做教学。
这个策略说起来简单,一共有四个要素,低价格、低转股溢价率、10只可转债,以及定期轮动。但是有两个难点需要去处理,首先就是低转股溢价率,由于QMT是没有可转债转股价格等数据的,也就无法计算转股溢价率,因此需要从其他途径获取,一般我们都会从集思录爬取可转债相关数据,我也搞了一个python爬虫代码,
通过cookie来爬取集思录页面的数据,
有需要爬虫代码的朋友可以找我。但有时候集思录会修改数据源,
我们还得跟着修改代码,有时候会很麻烦。因为我有可转债的数据源,
因此我把可转债的数据放到了我个人博客上,
我每天晚上8点前会把数据放到我的网站上,
这样我们新手朋友就没必要去研究集思录的爬虫,可以直接用我网站的数据。但是我的网站并不是实时更新的数据,每天只更新一次,所以大家如果要用的话要千万小心。这份数据包含了转股溢价率,以及双低值也算好了,大家可以直接使用。有需要的朋友可以来问我要网站链接,这样就不用劳心劳累的去爬集思录。
解决完数据问题以后,我们再来看第二个问题,定期轮动。
由于QMT没办法做到定期10天跑一次策略,需要我们自行处理,这里我用了一种方法,我把2022年所有的交易日保存到一个excel表格里,
然后读取这个表格到一个列表,每隔10取一个元素,
这样我们就得到了一个新的列表,里面的日期都是间隔10个交易日,
通过这种方法来进行轮动。
解决完问题后,我们来看看具体的可转债双低轮动策略的
源代码。
首先还是导入第三方库pandas和numpy。然后初始化函数inti。初始化证券账户accID,读取交易日的表格,放到trade_date这个变量里,然后对这个列表进行切片,每隔10个切一次,这样就得到了一个新的列表,里面日期都是每隔10个交易日。这个path,就是我的个人博客,里面放了可转债的数据。接下来两个变量,用来标识是否已经买入和卖出,因为我们的策略是到了轮动那天,只买卖一次,因此我们用两个变量来进行控制。这个num代表轮动10只可转债。
接下来进入handlebar函数,前三行,我用来获取当前的日期,并打印。接下来判断当前时间,是否在这个列表里,如果在,说明当前是轮动日,就执行买卖操作。
如果还没有卖出持仓的话,获取持仓,轮询所有持仓,
调用order_target_value函数把持仓可转债给卖出。最后把卖出标识置为True。
卖出后,如果没有买的话,网站路径加上当前时间,加上后缀.xlsx,就是我上传的当天的可转债的excel文件的链接,可以用read_excel这个链接来获取可转债数据,这里我们只取代码、最新价、转股溢价率以及双低,我这个数据源已经跟大家计算好了可转债双低的数值,就不用大家自行计算了。然后把中文换成英文的列。然后对可转债数据进行处理,首先去除未上市以及停牌的,我这份数据源里,如果可转债未上市或者停盘,那么可转债的价格为0。接下来去除沪深的可交债。然后对双低进行从小到大进行排序。接下来获取可用资金。轮训双低前10的可转债,然后按照等权重进行下单。
接下来两个函数,是用来获取可用资金以及持仓的,这两个函数之前视频有讲过,这里不再赘述,大家可以直接把这两个函数代码复制到自己的策略里。
好了,今天可转债双低轮动策略就介绍到这里,这个策略仅用来教学,大家请勿直接使用,由于没有可转债历史数据,因此策略无法进行回测。