可转债策略及量化回测
几个平台的粗略比较:
- 聚宽
- 转债数据行情从2018-09-13开始
- 强赎信息好像没有
- 用聚宽的数据,溢价率,双低什么的需要自己算
- 可以试用半年,试用期数据量没有什么限制
- 不支撑转债回测
- 编程API友好,文档也不错
- 米筐
- 数据种类最全,强赎回售什么的都有
- 只能试用一个月,而且每天只有50MB
- 平台试用和sdk试用分开申请,在平台上跑好像流量限制不大
- 编程API友好,和聚宽几乎一样,文档也不错
- 有开源的rqalpha回测框架,rqalpha-plus也是基于rqalpha,可扩展,有代码可以hack
- 掘金
- 数据质量不足,缺少转债历史数据
- 回测环境最友好,有本地IDE,编程方便,但是必须在windows下起客户端
- 可转债数据不足,无法回测
- 优矿
- 数据比较全
- 回测可转债的支持好像不太好,需要自己计算持仓,回撤等
- 数据免费,质量也不错
- 编程环境非常友好,方便上手和实验(基于jupyter notebook)
- 集思录
- 双低数据什么都算好了,但是没有历史转股价数据等
- 每一个转债的历史数据有,需要爬
- 适用于手动轮动,生成基于运行当日数据的标的和操作。
要使用聚宽/米筐的数据,需要申请使用,并将用户名密码放在'.auth.json'里。 要使用集思录的数据,需要将用户名和密码放在'.auth.json'里。否则集思录无法获得完整的转债数据。 集思录现在是直接用python的requests获取,比较麻烦。也可以考虑Selenium的方案。
付费的话,直接用米筐或者rqalpha-plus,交易用vnpy或者easytrader(都没试过) 免费的话,最好的组合是用米筐的数据(或者聚宽的可能也可以),用rqalpha + 自己扩展的数据源进行回测。至少对于可转债是可以work的。
.auth.json的格式如下: { "rqdata": { "username": "license", "password": "xxxxxxxxxx" }, "jisilu": { "username": "foo", "password": "bar" }, "jqdata": { "username": "foo", "password": "bar" }, }
持仓信息默认放在'.positions.json'里面 可以自己些计算策略的函数,也可以用library/里的现成的。 要安装library/中的库,在library/目录下运行 pip install -e .
./main.py --cache_dir=/tmp/cache --data_soruce=rqdata --txn_day=2021-08-01 --strategy_cfg=double_low.json
./main.py --cache_dir=/tmp/cache --data_source=jisilu
./main.py --help
./backtest.py --start_date='2018-01-01' --end_date='2021-08-31' --cache_dir="/tmp/cache" --strategy_cfg='[dlh]*.json'
- 增加更多的策略作比较
- 盛唐风物的偏离策略
- 强赎博弈
- 回售博弈
- ...
- 优化现有策略,考虑其他的因子,比如规模,评级等
- 在图上增加最大回撤日期等
- 过滤已经公布强赎的转债: 案例:2019-09-23 127010.XSHE (Done)
- 过滤可交换债(Done)
- Handle call_info not available on some dates (Done)
- 输出Order细节到csv,转换成掘金的格式(Done)
- 过滤停牌转债: 2021-09-08-11-39-20/issues.txt(Done)
- 过滤Q债(只有机构或者合格投资者可以购买)(Done, 目前Q债都是EB债)
- 将rqalpha的输出转换成掘金的格式
- 用run_rq.py来运行,方便传递参数
- ./run_rq.py --file=multi_factors.py --start_date='2021-09-01' --end_date='2021-09-23' --cache_dir='cache'
- 给回测传递参数,选择不同策略(Make conbond library strategy a mod) (Done)
- 看能否利用起rqalpha的incremental mod (Done)
- 过滤低规模转债: 案例:128060(中装转债),2020-02-08公告,规模低于3000万,02-13开始停止交易 (Done)
- 用其他类似的量化平台结果添加测试
- 是否过滤停牌转债导致的不同, 例如2018-01-08 113502
- 是否过滤已公告强赎转债导致的不同, 例如2018-06-19 110039
- 是否过滤规模小于一个亿的转债(避免停止交易), 例如2019-04-29 123013
- 用其他类似的量化平台结果添加测试(自动化比对流程)
- 2019-09-23 113534: 数据源问题,2019-09-23时候的转股溢价率是6%,实际上应该是44+(集思录),2019-09-24转股价下修到底溢价率才下来了
- 2020-08-10 128012: 2020-04-29之后再无成交,价格不变但是溢价率一直降低
- 2021-01-18 113008: 临近到期赎回,需要过滤
- 用其他类似的量化平台结果添加测试(自动化比对流程)
- 2020-08-10 128012: 4月29开始停牌,7月27开始回售后数据源变为不停牌(https://new.qq.com/omn/20210629/20210629A0D0BW00.html)。使用成交量进行过滤。
- 有的标的有的日成交量很低,下单数量超过当日Bar的25%只会部分成交
- 2018-11-26 128033, 9.51万成交额,这种就放着吧,总体影响不大,之后还会被继续平仓
- 根据2021-09-29 diff结果修正
- 2019-09-23 113534: 数据源问题,不需要修正
- 2020-08-10 128012: 2020-04-29之后再无成交,价格不变但是溢价率一直降低,用成交过滤
- 2021-01-18 113008: 临近到期赎回,过滤(30days)
- 多策略回测
- 回测配置放置在json中,可定义过滤条件
- 增加几个回测策略
- 过滤接近强赎触发的转债,强赎公告发布会马上导致溢价的收敛。