通知设置 新通知
可转债不下修名单 - 铁公鸡一览表
李魔佛 发表了文章 • 0 个评论 • 38 次浏览 • 2024-11-01 08:15
如果可转债公布了某个时间段内的不下修转股价,在溢价率很高的情况下,那么在该时间段内,其溢价率回归的办法只剩拉正股了,而在这上涨阶段中,站在概率面,持有转债的涨幅是会大幅低于正股的。
对于笔者而言,建仓标的会选择排除这些公告了不下修的转债,且对应的转股价值低于70-80的转债。
上市公司为何不下修转股价?
摘录网上比较官方的原因:
第一,下修转股价会稀释现有股东的股权,公司不希望现有股东权益被稀释,选择不下修转股价;
第二,公司可能有长期的战略规划,不希望因为短期的财务压力下修转股价而改变资本结构;
第三,下修转股价可能会被市场解读为公司财务状况不佳或未来盈利前景不明朗,公司为了避免这种负面反应而选择不下修转股价。
“上市公司选择不下修转股价,实际上也是在向市场传递公司对股价的信心。” 业内人士表示,公司不下修转股价,一方面说明公司现金流状况良好,有到期偿还负债的意愿;另一方面,公司可能认为当前的转股价已经反映了公司的合理价值,不需要通过下修来吸引投资者。
不下修转债数据更新至2024-10-30日晚。
文末附原始数据获取方法。
省略若干....
后台回复关键字:不下修列表202410 获取原始excel表格数据
因为文章更新并不频繁,微信并不会把最新的公众号文章及时推送在读者最新的列表中,可以将***公众号设为*****星标,这样就能第一时间收到笔者的最新文章啦。**
获取数据不易,喜欢本文的记得点“**赞”和“在看”哦,欢迎转载本文。**
查看全部
对于笔者而言,建仓标的会选择排除这些公告了不下修的转债,且对应的转股价值低于70-80的转债。
上市公司为何不下修转股价?
摘录网上比较官方的原因:
第一,下修转股价会稀释现有股东的股权,公司不希望现有股东权益被稀释,选择不下修转股价;
第二,公司可能有长期的战略规划,不希望因为短期的财务压力下修转股价而改变资本结构;
第三,下修转股价可能会被市场解读为公司财务状况不佳或未来盈利前景不明朗,公司为了避免这种负面反应而选择不下修转股价。
“上市公司选择不下修转股价,实际上也是在向市场传递公司对股价的信心。” 业内人士表示,公司不下修转股价,一方面说明公司现金流状况良好,有到期偿还负债的意愿;另一方面,公司可能认为当前的转股价已经反映了公司的合理价值,不需要通过下修来吸引投资者。
不下修转债数据更新至2024-10-30日晚。
文末附原始数据获取方法。
省略若干....
后台回复关键字:不下修列表202410 获取原始excel表格数据
因为文章更新并不频繁,微信并不会把最新的公众号文章及时推送在读者最新的列表中,可以将***公众号设为*****星标,这样就能第一时间收到笔者的最新文章啦。**
获取数据不易,喜欢本文的记得点“**赞”和“在看”哦,欢迎转载本文。**
查看全部
如果可转债公布了某个时间段内的不下修转股价,在溢价率很高的情况下,那么在该时间段内,其溢价率回归的办法只剩拉正股了,而在这上涨阶段中,站在概率面,持有转债的涨幅是会大幅低于正股的。
对于笔者而言,建仓标的会选择排除这些公告了不下修的转债,且对应的转股价值低于70-80的转债。
上市公司为何不下修转股价?
摘录网上比较官方的原因:
第一,下修转股价会稀释现有股东的股权,公司不希望现有股东权益被稀释,选择不下修转股价;
第二,公司可能有长期的战略规划,不希望因为短期的财务压力下修转股价而改变资本结构;
第三,下修转股价可能会被市场解读为公司财务状况不佳或未来盈利前景不明朗,公司为了避免这种负面反应而选择不下修转股价。
“上市公司选择不下修转股价,实际上也是在向市场传递公司对股价的信心。” 业内人士表示,公司不下修转股价,一方面说明公司现金流状况良好,有到期偿还负债的意愿;另一方面,公司可能认为当前的转股价已经反映了公司的合理价值,不需要通过下修来吸引投资者。
不下修转债数据更新至2024-10-30日晚。
文末附原始数据获取方法。
省略若干....
后台回复关键字:不下修列表202410 获取原始excel表格数据
因为文章更新并不频繁,微信并不会把最新的公众号文章及时推送在读者最新的列表中,可以将***公众号设为*****星标,这样就能第一时间收到笔者的最新文章啦。**
获取数据不易,喜欢本文的记得点“**赞”和“在看”哦,欢迎转载本文。**
对于笔者而言,建仓标的会选择排除这些公告了不下修的转债,且对应的转股价值低于70-80的转债。
上市公司为何不下修转股价?
摘录网上比较官方的原因:
第一,下修转股价会稀释现有股东的股权,公司不希望现有股东权益被稀释,选择不下修转股价;
第二,公司可能有长期的战略规划,不希望因为短期的财务压力下修转股价而改变资本结构;
第三,下修转股价可能会被市场解读为公司财务状况不佳或未来盈利前景不明朗,公司为了避免这种负面反应而选择不下修转股价。
“上市公司选择不下修转股价,实际上也是在向市场传递公司对股价的信心。” 业内人士表示,公司不下修转股价,一方面说明公司现金流状况良好,有到期偿还负债的意愿;另一方面,公司可能认为当前的转股价已经反映了公司的合理价值,不需要通过下修来吸引投资者。
不下修转债数据更新至2024-10-30日晚。
文末附原始数据获取方法。
省略若干....
后台回复关键字:不下修列表202410 获取原始excel表格数据
因为文章更新并不频繁,微信并不会把最新的公众号文章及时推送在读者最新的列表中,可以将***公众号设为*****星标,这样就能第一时间收到笔者的最新文章啦。**
获取数据不易,喜欢本文的记得点“**赞”和“在看”哦,欢迎转载本文。**
突破10月8日最高点的转债名单 | 高点回落幅度排行榜
李魔佛 发表了文章 • 0 个评论 • 140 次浏览 • 2024-10-23 10:16
倒后镜看10月8日之后的走势,开盘即高点的转债比比皆是,不少还是涨停价开盘。
开盘冲进去的散户被挂在光秃秃的大阴线的顶部。
但也有一些转债已经突破了10月8日高点。
本文简单罗列一下数据。需要原始数据的读者朋友可以公众号后台获取。
价格突破10月8日的可转债红相转债和城地转债相对8日的高点涨幅达到了50%以上,属于一波流涨停冲上去的。
不过整体只有22只突破了8日的高点,占比只有4%,大部分是低于8日的最高价。
涨幅倒序排序
跌幅榜跌幅榜排名下,比较惨的是证券类转债。
由于很多人因为国庆假期港股的券商板块暴涨,8日A股券商开盘出现涨停潮,正股,ETF涨停买不进,于是转向买入没有达到涨停的券商转债(因为转债人比较怂?)。结果截至22日的收盘价格,浙22转债高点下来跌了24%,财通转债高点跌了18%。
相对10月8日高点的涨跌分布统计如下:
统计分布最新转债价格相对8日的高点跌幅的中位数和平均值为 -6.x%,转债持有人的当前市值跟8日高点相比,平均少了6%+。
一天的冲高回落,并不影响整体趋势。9月30日的转债价格中位数为113.798, 而当前(10月22日收盘)转债价格中位数为115, 比节前还略有提升。
所以节前一直持有的转债人,而不是8日冲高进场的,相对于节前的市值,也是稳定提升的。
需要原始excel数据,可后台回复:10月8日回落
查看全部
开盘冲进去的散户被挂在光秃秃的大阴线的顶部。
但也有一些转债已经突破了10月8日高点。
本文简单罗列一下数据。需要原始数据的读者朋友可以公众号后台获取。
价格突破10月8日的可转债红相转债和城地转债相对8日的高点涨幅达到了50%以上,属于一波流涨停冲上去的。
不过整体只有22只突破了8日的高点,占比只有4%,大部分是低于8日的最高价。
涨幅倒序排序
跌幅榜跌幅榜排名下,比较惨的是证券类转债。
由于很多人因为国庆假期港股的券商板块暴涨,8日A股券商开盘出现涨停潮,正股,ETF涨停买不进,于是转向买入没有达到涨停的券商转债(因为转债人比较怂?)。结果截至22日的收盘价格,浙22转债高点下来跌了24%,财通转债高点跌了18%。
相对10月8日高点的涨跌分布统计如下:
统计分布最新转债价格相对8日的高点跌幅的中位数和平均值为 -6.x%,转债持有人的当前市值跟8日高点相比,平均少了6%+。
一天的冲高回落,并不影响整体趋势。9月30日的转债价格中位数为113.798, 而当前(10月22日收盘)转债价格中位数为115, 比节前还略有提升。
所以节前一直持有的转债人,而不是8日冲高进场的,相对于节前的市值,也是稳定提升的。
需要原始excel数据,可后台回复:10月8日回落
查看全部
倒后镜看10月8日之后的走势,开盘即高点的转债比比皆是,不少还是涨停价开盘。
开盘冲进去的散户被挂在光秃秃的大阴线的顶部。
但也有一些转债已经突破了10月8日高点。
本文简单罗列一下数据。需要原始数据的读者朋友可以公众号后台获取。
价格突破10月8日的可转债红相转债和城地转债相对8日的高点涨幅达到了50%以上,属于一波流涨停冲上去的。
不过整体只有22只突破了8日的高点,占比只有4%,大部分是低于8日的最高价。
涨幅倒序排序
跌幅榜跌幅榜排名下,比较惨的是证券类转债。
由于很多人因为国庆假期港股的券商板块暴涨,8日A股券商开盘出现涨停潮,正股,ETF涨停买不进,于是转向买入没有达到涨停的券商转债(因为转债人比较怂?)。结果截至22日的收盘价格,浙22转债高点下来跌了24%,财通转债高点跌了18%。
相对10月8日高点的涨跌分布统计如下:
统计分布最新转债价格相对8日的高点跌幅的中位数和平均值为 -6.x%,转债持有人的当前市值跟8日高点相比,平均少了6%+。
一天的冲高回落,并不影响整体趋势。9月30日的转债价格中位数为113.798, 而当前(10月22日收盘)转债价格中位数为115, 比节前还略有提升。
所以节前一直持有的转债人,而不是8日冲高进场的,相对于节前的市值,也是稳定提升的。
需要原始excel数据,可后台回复:10月8日回落
开盘冲进去的散户被挂在光秃秃的大阴线的顶部。
但也有一些转债已经突破了10月8日高点。
本文简单罗列一下数据。需要原始数据的读者朋友可以公众号后台获取。
价格突破10月8日的可转债红相转债和城地转债相对8日的高点涨幅达到了50%以上,属于一波流涨停冲上去的。
不过整体只有22只突破了8日的高点,占比只有4%,大部分是低于8日的最高价。
涨幅倒序排序
跌幅榜跌幅榜排名下,比较惨的是证券类转债。
由于很多人因为国庆假期港股的券商板块暴涨,8日A股券商开盘出现涨停潮,正股,ETF涨停买不进,于是转向买入没有达到涨停的券商转债(因为转债人比较怂?)。结果截至22日的收盘价格,浙22转债高点下来跌了24%,财通转债高点跌了18%。
相对10月8日高点的涨跌分布统计如下:
统计分布最新转债价格相对8日的高点跌幅的中位数和平均值为 -6.x%,转债持有人的当前市值跟8日高点相比,平均少了6%+。
一天的冲高回落,并不影响整体趋势。9月30日的转债价格中位数为113.798, 而当前(10月22日收盘)转债价格中位数为115, 比节前还略有提升。
所以节前一直持有的转债人,而不是8日冲高进场的,相对于节前的市值,也是稳定提升的。
需要原始excel数据,可后台回复:10月8日回落
宁稳可转债全表数据 - 历史数据更新至2023年06-18日
李魔佛 发表了文章 • 0 个评论 • 1642 次浏览 • 2023-06-19 11:16
包含全字段:
转债代码 转债名称 满足 发行日期 股票代码 股票名称 行业 子行业 转债价格 本息 涨跌 日内套利 股价 正股涨跌 剩余本息 转股价格 转股溢价率 转股价值 距离转股日 剩余年限 回售年限 剩余余额 成交额(百万) 转债换手率 余额/市值 余额/股本 股票市值(亿) P/B 税前收益率 税后收益率 税前回售收益 税后回售收益 回售价值 纯债价值 弹性 信用 折现率 老式双低 老式排名 新式双低 新式排名 热门度
点击查看大图
点击查看大图
数据会定期更新,目前更新到本文发文日期,2023-06-18
查看全部
转债代码 转债名称 满足 发行日期 股票代码 股票名称 行业 子行业 转债价格 本息 涨跌 日内套利 股价 正股涨跌 剩余本息 转股价格 转股溢价率 转股价值 距离转股日 剩余年限 回售年限 剩余余额 成交额(百万) 转债换手率 余额/市值 余额/股本 股票市值(亿) P/B 税前收益率 税后收益率 税前回售收益 税后回售收益 回售价值 纯债价值 弹性 信用 折现率 老式双低 老式排名 新式双低 新式排名 热门度
点击查看大图
点击查看大图
数据会定期更新,目前更新到本文发文日期,2023-06-18
查看全部
宁稳网可转债弹性因子 python回测
李魔佛 发表了文章 • 0 个评论 • 2422 次浏览 • 2022-12-04 18:43
利用文章:
https://t.zsxq.com/08779XPlk
的数据和代码,修改原来的代码
df=df.sort_values('税前收益率',ascending=False)
改为
df=df.sort_values('弹性',ascending=False) # 倒序
df=df.sort_values('弹性',ascending=True) # 正序
还有这里:
df = pd.read_excel(full_path)
df['税前收益率'] = df['税前收益率'].map(convert_float)
df['转股价格']=df['转股价格'].astype(float)
df=df[['转债代码','转债名称','转债价格','税前收益率']]
改为:
df['弹性'] = df['弹性'].map(convert_float)
df['转股价格']=df['转股价格'].astype(float)
df=df[['转债代码','转债名称','转债价格','弹性']]
如果修改持有个数,天数,修改HOLD_NUM ,和FREQ 即可
得到下面的图:
点击查看大图
"1天,大到小" 收益率 -30%,最大回撤34%
"1天,小到大" 收益率15.74%,最大回撤10.43%
'5天,大到小' 收益率-25%,最大回撤30.71%
'5天,小到大' 收益率7.36%, 最大回撤10.47%
可见弹性按照单天弹性值排名,买入最大的10只,无论按1天还是5天轮动,今天收益率是亏损的;
可见弹性按照单天弹性值排名,买入最小的10只,无论按1天还是5天轮动,今天收益率是盈利的;
如果对数据有疑问,可以到公众号后台留言~ 查看全部
https://t.zsxq.com/08779XPlk
的数据和代码,修改原来的代码
df=df.sort_values('税前收益率',ascending=False)
改为
df=df.sort_values('弹性',ascending=False) # 倒序
df=df.sort_values('弹性',ascending=True) # 正序
还有这里:
df = pd.read_excel(full_path)
df['税前收益率'] = df['税前收益率'].map(convert_float)
df['转股价格']=df['转股价格'].astype(float)
df=df[['转债代码','转债名称','转债价格','税前收益率']]
改为:
df['弹性'] = df['弹性'].map(convert_float)
df['转股价格']=df['转股价格'].astype(float)
df=df[['转债代码','转债名称','转债价格','弹性']]
如果修改持有个数,天数,修改HOLD_NUM ,和FREQ 即可
得到下面的图:
点击查看大图
"1天,大到小" 收益率 -30%,最大回撤34%
"1天,小到大" 收益率15.74%,最大回撤10.43%
'5天,大到小' 收益率-25%,最大回撤30.71%
'5天,小到大' 收益率7.36%, 最大回撤10.47%
可见弹性按照单天弹性值排名,买入最大的10只,无论按1天还是5天轮动,今天收益率是亏损的;
可见弹性按照单天弹性值排名,买入最小的10只,无论按1天还是5天轮动,今天收益率是盈利的;
如果对数据有疑问,可以到公众号后台留言~ 查看全部
利用文章:
https://t.zsxq.com/08779XPlk
的数据和代码,修改原来的代码
还有这里:
如果修改持有个数,天数,修改HOLD_NUM ,和FREQ 即可
得到下面的图:
点击查看大图
"1天,大到小" 收益率 -30%,最大回撤34%
"1天,小到大" 收益率15.74%,最大回撤10.43%
'5天,大到小' 收益率-25%,最大回撤30.71%
'5天,小到大' 收益率7.36%, 最大回撤10.47%
可见弹性按照单天弹性值排名,买入最大的10只,无论按1天还是5天轮动,今天收益率是亏损的;
可见弹性按照单天弹性值排名,买入最小的10只,无论按1天还是5天轮动,今天收益率是盈利的;
如果对数据有疑问,可以到公众号后台留言~
https://t.zsxq.com/08779XPlk
的数据和代码,修改原来的代码
df=df.sort_values('税前收益率',ascending=False)
改为
df=df.sort_values('弹性',ascending=False) # 倒序
df=df.sort_values('弹性',ascending=True) # 正序
还有这里:
df = pd.read_excel(full_path)
df['税前收益率'] = df['税前收益率'].map(convert_float)
df['转股价格']=df['转股价格'].astype(float)
df=df[['转债代码','转债名称','转债价格','税前收益率']]
改为:
df['弹性'] = df['弹性'].map(convert_float)
df['转股价格']=df['转股价格'].astype(float)
df=df[['转债代码','转债名称','转债价格','弹性']]
如果修改持有个数,天数,修改HOLD_NUM ,和FREQ 即可
得到下面的图:
点击查看大图
"1天,大到小" 收益率 -30%,最大回撤34%
"1天,小到大" 收益率15.74%,最大回撤10.43%
'5天,大到小' 收益率-25%,最大回撤30.71%
'5天,小到大' 收益率7.36%, 最大回撤10.47%
可见弹性按照单天弹性值排名,买入最大的10只,无论按1天还是5天轮动,今天收益率是亏损的;
可见弹性按照单天弹性值排名,买入最小的10只,无论按1天还是5天轮动,今天收益率是盈利的;
如果对数据有疑问,可以到公众号后台留言~
可转债到期收益率因子回测 YTM回测 vs 双低 低溢价 低价策略
李魔佛 发表了文章 • 0 个评论 • 1755 次浏览 • 2022-11-26 16:51
最近看到有人发的一些可转债高YTM的回测结果图,说高YTM轮动收益达到年化20%。嗯?高TYM实际上大部分是和低价转债是重叠的,理论和实际收益率都应该不会有这么高的。
自从优矿转为收费后,基本就没有登录过了。现在的回测在本地进行了,宁稳网的可转债数据上有YTM这因子数据,所以这次使用宁稳网的数据回测。也不使用什么第三方框架了,直接手写回测,模拟交易过程。
逻辑就是按照交易日期,读取所有excel数据。保存到一个dataframe里面,然后按照日期对YTM排名。 选出排名N名的进行买入,掉出N名的进行卖出。
数据源
采用宁稳的全表数据,里面有YTM因子
YTM收益率曲线
本地使用python编写回测代码,纯手工,不使用第三方框架。 平时我也多次力荐大家手写,别依赖那些第三方框架,什么vnpy,backtrade,一是特别难用,数据要适配,二是不好调试,除非你对它们的源码特别熟悉。本回测代码和宁稳数据放在个人知识星球,大部分人其实只关心回测结果就够了。
下图是2022年1月1日至11月25日的回测数据。持有10个标的,红色的是1天调仓,蓝色的是5天调仓
5天轮动,2022年的收益率为4.29%,最大回撤6.98% 。
1天轮动,2022年的收益率为9.33%,最大回撤5.32% 。
1天轮动的整体收益率要比5天轮动的高5个点,并且最大回撤也小一点。
持仓日志
从持仓以及调仓日志来看,买入的大部分是低价转债,且部分也是之前有瑕疵,爆过雷的转债。
高YTM轮动 vs 双低,低溢价,低价
接着对比一下几个常规的转债策略,双低,低溢价,低价。
回测条件相同,起始时间2022-01-01,结束时间2022-11-25。
持有10只,5天轮动。
在今年的可转债偏弱的行情下,高YTM轮动在这4个策略里面的收益率是最高的。
低溢价一如既然的高波动,一会ICU,一会蹦迪。但笔者觉得跌到前期最大回撤的位置,低溢价可以考虑介入的。
YTM和低价格的今年回测收益率接近,YTM高了一个点左右,最大回撤接近。 而低溢价还在回撤的途中,目前今年的收益率为-25%,如果轮动频率高一些,低溢价收益率会高一些,强赎的转债基本会被轮入低溢价标的,因为最近半年强赎后的转债像进入了死亡螺旋一样,正股转债一起跌;因此排除强赎转债会对低溢价收益率有不少的提升。
完整代码以及数据请开通星球查收。
查看全部
自从优矿转为收费后,基本就没有登录过了。现在的回测在本地进行了,宁稳网的可转债数据上有YTM这因子数据,所以这次使用宁稳网的数据回测。也不使用什么第三方框架了,直接手写回测,模拟交易过程。
逻辑就是按照交易日期,读取所有excel数据。保存到一个dataframe里面,然后按照日期对YTM排名。 选出排名N名的进行买入,掉出N名的进行卖出。
数据源
采用宁稳的全表数据,里面有YTM因子
YTM收益率曲线
本地使用python编写回测代码,纯手工,不使用第三方框架。 平时我也多次力荐大家手写,别依赖那些第三方框架,什么vnpy,backtrade,一是特别难用,数据要适配,二是不好调试,除非你对它们的源码特别熟悉。本回测代码和宁稳数据放在个人知识星球,大部分人其实只关心回测结果就够了。
下图是2022年1月1日至11月25日的回测数据。持有10个标的,红色的是1天调仓,蓝色的是5天调仓
5天轮动,2022年的收益率为4.29%,最大回撤6.98% 。
1天轮动,2022年的收益率为9.33%,最大回撤5.32% 。
1天轮动的整体收益率要比5天轮动的高5个点,并且最大回撤也小一点。
持仓日志
从持仓以及调仓日志来看,买入的大部分是低价转债,且部分也是之前有瑕疵,爆过雷的转债。
高YTM轮动 vs 双低,低溢价,低价
接着对比一下几个常规的转债策略,双低,低溢价,低价。
回测条件相同,起始时间2022-01-01,结束时间2022-11-25。
持有10只,5天轮动。
在今年的可转债偏弱的行情下,高YTM轮动在这4个策略里面的收益率是最高的。
低溢价一如既然的高波动,一会ICU,一会蹦迪。但笔者觉得跌到前期最大回撤的位置,低溢价可以考虑介入的。
YTM和低价格的今年回测收益率接近,YTM高了一个点左右,最大回撤接近。 而低溢价还在回撤的途中,目前今年的收益率为-25%,如果轮动频率高一些,低溢价收益率会高一些,强赎的转债基本会被轮入低溢价标的,因为最近半年强赎后的转债像进入了死亡螺旋一样,正股转债一起跌;因此排除强赎转债会对低溢价收益率有不少的提升。
完整代码以及数据请开通星球查收。
查看全部
最近看到有人发的一些可转债高YTM的回测结果图,说高YTM轮动收益达到年化20%。嗯?高TYM实际上大部分是和低价转债是重叠的,理论和实际收益率都应该不会有这么高的。
自从优矿转为收费后,基本就没有登录过了。现在的回测在本地进行了,宁稳网的可转债数据上有YTM这因子数据,所以这次使用宁稳网的数据回测。也不使用什么第三方框架了,直接手写回测,模拟交易过程。
逻辑就是按照交易日期,读取所有excel数据。保存到一个dataframe里面,然后按照日期对YTM排名。 选出排名N名的进行买入,掉出N名的进行卖出。
数据源
采用宁稳的全表数据,里面有YTM因子
YTM收益率曲线
本地使用python编写回测代码,纯手工,不使用第三方框架。 平时我也多次力荐大家手写,别依赖那些第三方框架,什么vnpy,backtrade,一是特别难用,数据要适配,二是不好调试,除非你对它们的源码特别熟悉。本回测代码和宁稳数据放在个人知识星球,大部分人其实只关心回测结果就够了。
下图是2022年1月1日至11月25日的回测数据。持有10个标的,红色的是1天调仓,蓝色的是5天调仓
5天轮动,2022年的收益率为4.29%,最大回撤6.98% 。
1天轮动,2022年的收益率为9.33%,最大回撤5.32% 。
1天轮动的整体收益率要比5天轮动的高5个点,并且最大回撤也小一点。
持仓日志
从持仓以及调仓日志来看,买入的大部分是低价转债,且部分也是之前有瑕疵,爆过雷的转债。
高YTM轮动 vs 双低,低溢价,低价
接着对比一下几个常规的转债策略,双低,低溢价,低价。
回测条件相同,起始时间2022-01-01,结束时间2022-11-25。
持有10只,5天轮动。
在今年的可转债偏弱的行情下,高YTM轮动在这4个策略里面的收益率是最高的。
低溢价一如既然的高波动,一会ICU,一会蹦迪。但笔者觉得跌到前期最大回撤的位置,低溢价可以考虑介入的。
YTM和低价格的今年回测收益率接近,YTM高了一个点左右,最大回撤接近。 而低溢价还在回撤的途中,目前今年的收益率为-25%,如果轮动频率高一些,低溢价收益率会高一些,强赎的转债基本会被轮入低溢价标的,因为最近半年强赎后的转债像进入了死亡螺旋一样,正股转债一起跌;因此排除强赎转债会对低溢价收益率有不少的提升。
完整代码以及数据请开通星球查收。
自从优矿转为收费后,基本就没有登录过了。现在的回测在本地进行了,宁稳网的可转债数据上有YTM这因子数据,所以这次使用宁稳网的数据回测。也不使用什么第三方框架了,直接手写回测,模拟交易过程。
逻辑就是按照交易日期,读取所有excel数据。保存到一个dataframe里面,然后按照日期对YTM排名。 选出排名N名的进行买入,掉出N名的进行卖出。
数据源
采用宁稳的全表数据,里面有YTM因子
YTM收益率曲线
本地使用python编写回测代码,纯手工,不使用第三方框架。 平时我也多次力荐大家手写,别依赖那些第三方框架,什么vnpy,backtrade,一是特别难用,数据要适配,二是不好调试,除非你对它们的源码特别熟悉。本回测代码和宁稳数据放在个人知识星球,大部分人其实只关心回测结果就够了。
下图是2022年1月1日至11月25日的回测数据。持有10个标的,红色的是1天调仓,蓝色的是5天调仓
5天轮动,2022年的收益率为4.29%,最大回撤6.98% 。
1天轮动,2022年的收益率为9.33%,最大回撤5.32% 。
1天轮动的整体收益率要比5天轮动的高5个点,并且最大回撤也小一点。
持仓日志
从持仓以及调仓日志来看,买入的大部分是低价转债,且部分也是之前有瑕疵,爆过雷的转债。
高YTM轮动 vs 双低,低溢价,低价
接着对比一下几个常规的转债策略,双低,低溢价,低价。
回测条件相同,起始时间2022-01-01,结束时间2022-11-25。
持有10只,5天轮动。
在今年的可转债偏弱的行情下,高YTM轮动在这4个策略里面的收益率是最高的。
低溢价一如既然的高波动,一会ICU,一会蹦迪。但笔者觉得跌到前期最大回撤的位置,低溢价可以考虑介入的。
YTM和低价格的今年回测收益率接近,YTM高了一个点左右,最大回撤接近。 而低溢价还在回撤的途中,目前今年的收益率为-25%,如果轮动频率高一些,低溢价收益率会高一些,强赎的转债基本会被轮入低溢价标的,因为最近半年强赎后的转债像进入了死亡螺旋一样,正股转债一起跌;因此排除强赎转债会对低溢价收益率有不少的提升。
完整代码以及数据请开通星球查收。
可转债 最新的不下修转股价 名单 持续更新
李魔佛 发表了文章 • 0 个评论 • 1492 次浏览 • 2022-09-28 11:24
已公布不下修转股价的可转债列表汇总
数据更新至2022年9月24日。
如果可转债公布了某个时间段内的不下修转股价,在溢价率很高的情况下,那么在该时间段内,其溢价率回归的办法只剩拉正股了,而在这上涨阶段中,站在概率面,持有转债的涨幅是会大幅低于正股的。
现在市场的情况也是这样,如果可转债公布不下修,第二天的开盘会以低开反映出来。
数据来源:巨潮。
文末附获取原始数据方法。
点击查看大图
点击查看大图
点击查看大图
链接: https://pan.baidu.com/s/1TVAR3nftALTWR0VTnagVhg 提取码: 5wde
更多公众号文章代码与数据,可输入:帮助
查看全部
数据更新至2022年9月24日。
如果可转债公布了某个时间段内的不下修转股价,在溢价率很高的情况下,那么在该时间段内,其溢价率回归的办法只剩拉正股了,而在这上涨阶段中,站在概率面,持有转债的涨幅是会大幅低于正股的。
现在市场的情况也是这样,如果可转债公布不下修,第二天的开盘会以低开反映出来。
数据来源:巨潮。
文末附获取原始数据方法。
点击查看大图
点击查看大图
点击查看大图
链接: https://pan.baidu.com/s/1TVAR3nftALTWR0VTnagVhg 提取码: 5wde
更多公众号文章代码与数据,可输入:帮助
查看全部
已公布不下修转股价的可转债列表汇总
数据更新至2022年9月24日。
如果可转债公布了某个时间段内的不下修转股价,在溢价率很高的情况下,那么在该时间段内,其溢价率回归的办法只剩拉正股了,而在这上涨阶段中,站在概率面,持有转债的涨幅是会大幅低于正股的。
现在市场的情况也是这样,如果可转债公布不下修,第二天的开盘会以低开反映出来。
数据来源:巨潮。
文末附获取原始数据方法。
点击查看大图
点击查看大图
点击查看大图
链接: https://pan.baidu.com/s/1TVAR3nftALTWR0VTnagVhg 提取码: 5wde
更多公众号文章代码与数据,可输入:帮助
数据更新至2022年9月24日。
如果可转债公布了某个时间段内的不下修转股价,在溢价率很高的情况下,那么在该时间段内,其溢价率回归的办法只剩拉正股了,而在这上涨阶段中,站在概率面,持有转债的涨幅是会大幅低于正股的。
现在市场的情况也是这样,如果可转债公布不下修,第二天的开盘会以低开反映出来。
数据来源:巨潮。
文末附获取原始数据方法。
点击查看大图
点击查看大图
点击查看大图
链接: https://pan.baidu.com/s/1TVAR3nftALTWR0VTnagVhg 提取码: 5wde
更多公众号文章代码与数据,可输入:帮助
ptrade回测和实盘支持可转债日内tick/分时吗?
李魔佛 发表了文章 • 0 个评论 • 2136 次浏览 • 2022-07-25 07:19
是支持的。
比如下面的部分代码片段,是用于导出可转债的日内分时数据的。最低颗粒,按照一分钟k线获取。 ptrade里面能够获取到的最小频率单位。
def initialize(context):
# 初始化策略
g.code_mapper = date_code_mapper()
log.info(g.code_mapper)
g.error_set=set()
def last_n_day(date,n,origin_fmt,target_fmt):
return (datetime.datetime.strptime(date, origin_fmt) - datetime.timedelta(days=n)).strftime(target_fmt)
def post_fix(code):
return code + '.SZ' if code.startswith('12') else code + '.SS'
def handle_data(context, data):
date=context.blotter.current_dt.strftime('%Y%m%d')
if date not in g.code_mapper:
return
security_list=g.code_mapper.get(date)
for code in security_list:
code=post_fix(code)
try:
df = get_history(1, frequency='1m', field=['open' ,'high','low','close'], security_list=code, fq='pre',include=False)
except Exception as e:
if code not in g.error_set:
log.info(e)
log.info('代码获取数据 出错{}'.format(code))
g.error_set.add(code)
continue
df['ticker']=code
g.result.append(df)
def after_trading_end(context, data):
#engine = DBS
db = DBSelector()
conn = db.get_engine()
date=context.blotter.current_dt.strftime('%Y%m%d%H%M')
if len(g.result)==0:
return
df = pd.concat(g.result)
try:
df.to_sql('minute_info',con=conn,if_exists='append')
except Exception as e:
log.info(e)
g.result=
def before_trading_start(context, data):
g.result=
然后在handle_data里面加入相关的order就可以交易了。(上面的代码主要是保存tick/分时数据到mysql,实际并没有进行交易。) 查看全部
比如下面的部分代码片段,是用于导出可转债的日内分时数据的。最低颗粒,按照一分钟k线获取。 ptrade里面能够获取到的最小频率单位。
def initialize(context):
# 初始化策略
g.code_mapper = date_code_mapper()
log.info(g.code_mapper)
g.error_set=set()
def last_n_day(date,n,origin_fmt,target_fmt):
return (datetime.datetime.strptime(date, origin_fmt) - datetime.timedelta(days=n)).strftime(target_fmt)
def post_fix(code):
return code + '.SZ' if code.startswith('12') else code + '.SS'
def handle_data(context, data):
date=context.blotter.current_dt.strftime('%Y%m%d')
if date not in g.code_mapper:
return
security_list=g.code_mapper.get(date)
for code in security_list:
code=post_fix(code)
try:
df = get_history(1, frequency='1m', field=['open' ,'high','low','close'], security_list=code, fq='pre',include=False)
except Exception as e:
if code not in g.error_set:
log.info(e)
log.info('代码获取数据 出错{}'.format(code))
g.error_set.add(code)
continue
df['ticker']=code
g.result.append(df)
def after_trading_end(context, data):
#engine = DBS
db = DBSelector()
conn = db.get_engine()
date=context.blotter.current_dt.strftime('%Y%m%d%H%M')
if len(g.result)==0:
return
df = pd.concat(g.result)
try:
df.to_sql('minute_info',con=conn,if_exists='append')
except Exception as e:
log.info(e)
g.result=
def before_trading_start(context, data):
g.result=
然后在handle_data里面加入相关的order就可以交易了。(上面的代码主要是保存tick/分时数据到mysql,实际并没有进行交易。) 查看全部
是支持的。
比如下面的部分代码片段,是用于导出可转债的日内分时数据的。最低颗粒,按照一分钟k线获取。 ptrade里面能够获取到的最小频率单位。
然后在handle_data里面加入相关的order就可以交易了。(上面的代码主要是保存tick/分时数据到mysql,实际并没有进行交易。)
比如下面的部分代码片段,是用于导出可转债的日内分时数据的。最低颗粒,按照一分钟k线获取。 ptrade里面能够获取到的最小频率单位。
def initialize(context):
# 初始化策略
g.code_mapper = date_code_mapper()
log.info(g.code_mapper)
g.error_set=set()
def last_n_day(date,n,origin_fmt,target_fmt):
return (datetime.datetime.strptime(date, origin_fmt) - datetime.timedelta(days=n)).strftime(target_fmt)
def post_fix(code):
return code + '.SZ' if code.startswith('12') else code + '.SS'
def handle_data(context, data):
date=context.blotter.current_dt.strftime('%Y%m%d')
if date not in g.code_mapper:
return
security_list=g.code_mapper.get(date)
for code in security_list:
code=post_fix(code)
try:
df = get_history(1, frequency='1m', field=['open' ,'high','low','close'], security_list=code, fq='pre',include=False)
except Exception as e:
if code not in g.error_set:
log.info(e)
log.info('代码获取数据 出错{}'.format(code))
g.error_set.add(code)
continue
df['ticker']=code
g.result.append(df)
def after_trading_end(context, data):
#engine = DBS
db = DBSelector()
conn = db.get_engine()
date=context.blotter.current_dt.strftime('%Y%m%d%H%M')
if len(g.result)==0:
return
df = pd.concat(g.result)
try:
df.to_sql('minute_info',con=conn,if_exists='append')
except Exception as e:
log.info(e)
g.result=
def before_trading_start(context, data):
g.result=
然后在handle_data里面加入相关的order就可以交易了。(上面的代码主要是保存tick/分时数据到mysql,实际并没有进行交易。)
获取可转债历史分时tick数据 【python】
李魔佛 发表了文章 • 0 个评论 • 3272 次浏览 • 2022-06-25 12:29
可转债的历史分时tick数据,基本在很多大平台,优矿,聚宽,米宽等平台都没有提供。
对于想做日内回测的朋友,是一件很痛苦的事情。
那么,接下来,本文结束一种通过第三方平台的数据,来把可转债的分时tick数据获取下来,并保存到本地数据库。
2022-07-05 更新:
如果直接拿历史数据,可以拿到1分钟级别的数据,如上图所示。
如果要拿秒级别的,需要实时采集。
笔者使用sqlite做为内存缓存,盘后统一入到mysql中。
如果盘中每隔3秒使用mysql储存,显然会造成不必要的io阻塞(开个线程存数据也是一个方案)。
使用sqlite的时候,设置为memeory模式,速度比存文件要快很多倍。
待续 查看全部
对于想做日内回测的朋友,是一件很痛苦的事情。
那么,接下来,本文结束一种通过第三方平台的数据,来把可转债的分时tick数据获取下来,并保存到本地数据库。
2022-07-05 更新:
如果直接拿历史数据,可以拿到1分钟级别的数据,如上图所示。
如果要拿秒级别的,需要实时采集。
笔者使用sqlite做为内存缓存,盘后统一入到mysql中。
如果盘中每隔3秒使用mysql储存,显然会造成不必要的io阻塞(开个线程存数据也是一个方案)。
使用sqlite的时候,设置为memeory模式,速度比存文件要快很多倍。
待续 查看全部
可转债的历史分时tick数据,基本在很多大平台,优矿,聚宽,米宽等平台都没有提供。
对于想做日内回测的朋友,是一件很痛苦的事情。
那么,接下来,本文结束一种通过第三方平台的数据,来把可转债的分时tick数据获取下来,并保存到本地数据库。
2022-07-05 更新:
如果直接拿历史数据,可以拿到1分钟级别的数据,如上图所示。
如果要拿秒级别的,需要实时采集。
笔者使用sqlite做为内存缓存,盘后统一入到mysql中。
如果盘中每隔3秒使用mysql储存,显然会造成不必要的io阻塞(开个线程存数据也是一个方案)。
使用sqlite的时候,设置为memeory模式,速度比存文件要快很多倍。
待续
对于想做日内回测的朋友,是一件很痛苦的事情。
那么,接下来,本文结束一种通过第三方平台的数据,来把可转债的分时tick数据获取下来,并保存到本地数据库。
2022-07-05 更新:
如果直接拿历史数据,可以拿到1分钟级别的数据,如上图所示。
如果要拿秒级别的,需要实时采集。
笔者使用sqlite做为内存缓存,盘后统一入到mysql中。
如果盘中每隔3秒使用mysql储存,显然会造成不必要的io阻塞(开个线程存数据也是一个方案)。
使用sqlite的时候,设置为memeory模式,速度比存文件要快很多倍。
待续
强赎日期计数 excel文件
李魔佛 发表了文章 • 0 个评论 • 1776 次浏览 • 2022-06-04 22:54
代码 名称 当前满足天数 强赎目标数 周期 以公告
113568 新春转债 已公告强赎
127043 川恒转债 暂不强赎
123086 海兰转债 暂不强赎
113548 石英转债 暂不强赎
128107 交科转债 已公告强赎
110071 湖盐转债 12 15 30
128111 中矿转债 暂不强赎
127013 创维转债 14 15 30
123092 天壕转债 暂不强赎
128046 利尔转债 19 20 30
127027 靖远转债 暂不强赎
113541 荣晟转债 公告要强赎
123085 万顺转2 暂不强赎
123083 朗新转债 12 15 30
128128 齐翔转2 暂不强赎
128106 华统转债 暂不强赎
113537 文灿转债 暂不强赎
128095 恩捷转债 已满足强赎条件
127007 湖广转债 暂不强赎
123012 万顺转债 暂不强赎
123057 美联转债 暂不强赎
113585 寿仙转债 暂不强赎
110061 川投转债 暂不强赎
113626 伯特转债 暂不强赎
113025 明泰转债 暂不强赎
123078 飞凯转债 暂不强赎
113567 君禾转债 暂不强赎
128017 金禾转债 暂不强赎
128040 华通转债 暂不强赎
128029 太阳转债 暂不强赎
123073 同和转债 暂不强赎
110055 伊力转债 暂不强赎
113525 台华转债 暂不强赎
123060 苏试转债 暂不强赎
127038 国微转债 暂不强赎
123046 天铁转债 暂不强赎
123098 一品转债 暂不强赎
110074 精达转债 暂不强赎
123114 三角转债 暂不强赎
113051 节能转债 暂不强赎
128140 润建转债 暂不强赎
123071 天能转债 暂不强赎
113027 华钰转债 暂不强赎
128091 新天转债 暂不强赎
128085 鸿达转债 暂不强赎
113620 傲农转债 暂不强赎
123052 飞鹿转债 暂不强赎
118000 嘉元转债 暂不强赎
128082 华锋转债 暂不强赎
128109 楚江转债 暂不强赎
113016 小康转债 暂不强赎
123027 蓝晓转债 暂不强赎
128137 洁美转债 暂不强赎
128101 联创转债 暂不强赎
123031 晶瑞转债 暂不强赎
128078 太极转债 暂不强赎
128030 天康转债 暂不强赎
123034 通光转债 暂不强赎
excel原文件:
http://xximg.30daydo.com/webupload/2022-06-04-redeem-info.xlsx
或者关注公众号:可转债量化分析
后台回复:
强赎20220604 查看全部
代码 名称 当前满足天数 强赎目标数 周期 以公告
113568 新春转债 已公告强赎
127043 川恒转债 暂不强赎
123086 海兰转债 暂不强赎
113548 石英转债 暂不强赎
128107 交科转债 已公告强赎
110071 湖盐转债 12 15 30
128111 中矿转债 暂不强赎
127013 创维转债 14 15 30
123092 天壕转债 暂不强赎
128046 利尔转债 19 20 30
127027 靖远转债 暂不强赎
113541 荣晟转债 公告要强赎
123085 万顺转2 暂不强赎
123083 朗新转债 12 15 30
128128 齐翔转2 暂不强赎
128106 华统转债 暂不强赎
113537 文灿转债 暂不强赎
128095 恩捷转债 已满足强赎条件
127007 湖广转债 暂不强赎
123012 万顺转债 暂不强赎
123057 美联转债 暂不强赎
113585 寿仙转债 暂不强赎
110061 川投转债 暂不强赎
113626 伯特转债 暂不强赎
113025 明泰转债 暂不强赎
123078 飞凯转债 暂不强赎
113567 君禾转债 暂不强赎
128017 金禾转债 暂不强赎
128040 华通转债 暂不强赎
128029 太阳转债 暂不强赎
123073 同和转债 暂不强赎
110055 伊力转债 暂不强赎
113525 台华转债 暂不强赎
123060 苏试转债 暂不强赎
127038 国微转债 暂不强赎
123046 天铁转债 暂不强赎
123098 一品转债 暂不强赎
110074 精达转债 暂不强赎
123114 三角转债 暂不强赎
113051 节能转债 暂不强赎
128140 润建转债 暂不强赎
123071 天能转债 暂不强赎
113027 华钰转债 暂不强赎
128091 新天转债 暂不强赎
128085 鸿达转债 暂不强赎
113620 傲农转债 暂不强赎
123052 飞鹿转债 暂不强赎
118000 嘉元转债 暂不强赎
128082 华锋转债 暂不强赎
128109 楚江转债 暂不强赎
113016 小康转债 暂不强赎
123027 蓝晓转债 暂不强赎
128137 洁美转债 暂不强赎
128101 联创转债 暂不强赎
123031 晶瑞转债 暂不强赎
128078 太极转债 暂不强赎
128030 天康转债 暂不强赎
123034 通光转债 暂不强赎
excel原文件:
http://xximg.30daydo.com/webupload/2022-06-04-redeem-info.xlsx
或者关注公众号:可转债量化分析
后台回复:
强赎20220604
敬畏市场 市场里没有永恒的圣杯
绫波丽 发表了文章 • 0 个评论 • 2425 次浏览 • 2021-08-27 19:59
无论回测,还是最近的实际盈利。可转债低溢价策略最近风头还是很猛的
实际上发力时间是在6月中旬
实际上发力时间是在6月中旬
无论回测,还是最近的实际盈利。可转债低溢价策略最近风头还是很猛的
实际上发力时间是在6月中旬
实际上发力时间是在6月中旬