可转债策略

可转债策略开发Log


1,量化可转债-2309

20230904至20231025,基于公募基金转债历史持仓和主要分析指标,研究了可转债的因子策略和组合
file_excel=0可转债分析模板-20200331.xlsx ;path_excel=C:\rc_2023\rc_202X\0固收投资策略和产品\可转债策略和数据-公募季度持仓
file_ppt=乐盈3号10月路演PPT-修改数据来源-20231012.pptx ;path_ppt=C:\rc_2023\rc_202X\0固收投资策略和产品
file_python=test_1_strategy_convertible_bond_indi.py,test_2_strategy_convertible_bond_indi.py,test_3_strategy_convertible_bond_indi_statistics.py ;;path_python=C:\rc_2023\rc_202X\0固收投资策略和产品\可转债策略和数据-公募季度持仓


file_excel= ;path_excel=
file_ppt= ;path_ppt=
file_python= ;;path_python=

可转债数据管理


1,季度数据整理

分析指标-提取Wind-api指标
步骤:1,Wind导出季末基金持仓转债;
DATA:数据来源:Wind终端导出的数据,数据来源:Wind--可转债--持有人信息--基金季度公告披露;Wind--可转债--持有人信息--可转债公告披露
OUTPUT:file=基金季度公告披露-20240331.xlsx ; path=C:\rc_2023\rc_202X\data_pms\wind_terminal\bond_convertible

2,分析指标计算

步骤2,对于操作sheet内的转债列表,提取对应的指标。
操作sheet=基础筛选,file=0可转债组合监控.xlsx; 备份file=0可转债研究-基本面事件.xlsx【这里的模板没有mv_stock列】 | 2020~2023.6历史数据:sheet=分析,file=0可转债分析模板-20200331.xlsx
INPUT:1,最新/季度指标:sheet=基础筛选,file=0可转债组合监控.xlsx; ||
OUTPUT:file=score_bond_convert_20240331.xlsx 主要是打分分数,score_all_bond_convert_20240331.xlsx 打分和指标 ; path=C:\rc_2023\rc_202X\data_pms\bond_convertible

3,标准化打分

对主要指标计算score
OUTPUT:file=score_all_bond_convert_20240331.xlsx,score_all_bond_convert.xlsx ; path=C:\rc_2023\rc_202X\data_pms\bond_convertible

输入季末日期

OUPUT:df_score= ;

可转债季度多因子


1,季末转债策略信号

通过input-file里3类参数计算个券权重:weight 默认权重,股债混合;weight_bond 纯债类转债打分权重;weight_stock 股性转债打分权重
input:转债指标参数管理文件sheet=weight_indi,file=C:\rc_2023\rc_202X\ciss_web\CISS_rc\db\bond_convert\bond_convert_manage.xlsx
OUTPUT:file=score_bond_convert_20231231.xlsx;stra_bond_convert_20231231.xlsx ; path= C:\rc_2023\rc_202X\data_pms\bond_convertible

输入季末日期

OUPUT:df_score= ;


代码文件地址:C:\rc_2023\rc_202X\data_pms\wind_terminal\bond_convertible\quote\0list_code.xlsx

序号 指标 指标名称 默认权重 债性权重 股性权重


2,季末量化转债组合权重

多个因子的量化可转债组合权重
OUTPUT:file=port_all_bond_convert_20231231.xlsx ; path= C:\rc_2023\rc_202X\data_pms\bond_convertible
notes:这里更多是从综合指标角度筛选,对于纯债性转债,需要单独选择。

输入季末日期

OUPUT:df_score= ;


3,季末单因子量化转债组合权重

单一因子的量化可转债组合权重:
量化可转债多因子3 , convertbond_factor_3f
量化可转债正股因子 , convertbond_factor_stock
量化可转债双低 , convertbond_factor_2low
量化可转债低价 , convertbond_factor_lowprice
OUTPUT:file=stra_convertbond_factor_3f.xlsx,port_convertbond_factor_3f_20231231.xlsx ; path= C:\rc_2023\rc_202X\data_pms\bond_convertible
notes:为了统一导入PMS,策略文件还需要保存到 path= C:\rc_2023\rc_202X\data_pms\strategy

输入季末日期

OUPUT:df_score= ;


可转债动量策略



0,数据如代码列表

20240523,quote目录从C:\rc_2023\rc_202X\data_pms\wind_terminal\bond_convertible\ 转到 C:\rc_2023\rc_202X\data_pms\wind_terminal\


代码文件地址:C:\rc_2023\rc_202X\data_pms\wind_terminal\bond_convertible\quote\0list_code.xlsx

>
序号 代码 名称 类型 日最优参数 期末净值 最大回撤 年化收益率 是否日频 是否30分钟 是否属于组合 备注
0 159992.SZ 创新药ETF 行业 1 1 nan nan
1 512480.SH 半导体ETF 行业 1 1 nan nan
2 510880.SH 红利ETF 风格 0 1 nan nan
3 161028.OF 新能源车LOF 行业 1 0 nan 基金代码作为列名导入df会报错,不能识别 161028.OF 这样的字符串!!!!!!!!
4 159869.SZ 游戏ETF 行业 1 0 nan nan
5 510300.SH 沪深300ETF 市场 1 0 nan nan
6 513010.SH 恒生科技30ETF 风格 1 1 nan nan
7 159967.SZ 创业板成长ETF 风格 1 1 nan nan
8 588080.SH 科创板50ETF 市场 1 1 nan nan
9 510500.SH 中证500ETF 市场 1 1 nan nan
10 512100.SH 中证1000ETF 市场 1 1 nan nan
11 513050.SH 中概互联网ETF 市场 1 0 nan nan
12 513100.SH 纳指ETF 市场 1 0 nan nan
13 513500.SH 标普500ETF 市场 1 0 nan nan
14 510380.SH 国寿300ETF 转债 1 0 nan nan
15 889033.WI 万得可转债等权指数 转债 1 1 nan nan
16 110059.SH 浦发转债 转债 1 0 nan nan
17 110076.SH 华海转债 转债 1 1 nan nan
18 113588.SH 润达转债 转债 1 1 nan nan
19 113604.SH 多伦转债 转债 1 1 nan nan
20 123025.SZ 精测转债 转债 1 1 nan nan
21 127053.SZ 豪美转债 转债 1 1 nan nan
22 128036.SZ 金农转债 转债 1 1 nan nan
23 123054.SZ 思特转债 转债 0 1 nan nan
24 127030.SZ 盛虹转债 转债 1 0 1.0 nan
25 118024.SH 冠宇转债 转债 1 0 1.0 nan
26 113643.SH 风语转债 转债 1 0 1.0 nan
27 123120.SZ 隆华转债 转债 1 0 1.0 nan
28 118013.SH 道通转债 转债 1 0 1.0 nan
29 113627.SH 太平转债 转债 1 0 1.0 nan
30 127054.SZ 双箭转债 转债 1 0 1.0 nan
31 113063.SH 赛轮转债 转债 1 0 1.0 nan
32 127076.SZ 中宠转2 转债 1 0 1.0 nan
33 118019.SH 金盘转债 转债 1 0 1.0 nan
34 127046.SZ 百润转债 转债 1 0 1.0 nan
35 127050.SZ 麒麟转债 转债 1 0 1.0 nan
36 113068.SH 金铜转债 转债 1 0 0.0 23.8才上市
37 113637.SH 华翔转债 转债 1 0 1.0 nan
38 111000.SH 起帆转债 转债 1 0 1.0 nan
39 118038.SH 金宏转债 转债 1 1 0.0 23.8才上市
40 113047.SH 旗滨转债 转债 1 1 1.0 nan
41 110091.SH 合力转债 转债 1 1 0.0 23.1才上市
42 113661.SH 福22转债 转债 1 1 1.0 22.12才上市
43 123170.SZ 南电转债 转债 1 1 1.0 22.12才上市
44 111002.SH 特纸转债 转债 1 1 1.0 nan
45 128142.SZ 新乳转债 转债 1 1 1.0 nan
46 110090.SH 爱迪转债 转债 1 1 1.0 nan
47 123101.SZ 拓斯转债 转债 0 0 nan nan
48 123161.SZ 强联转债 转债 0 0 nan nan
49 113656.SH 嘉诚转债 转债 0 0 nan nan
50 113657.SH 再22转债 转债 0 0 nan nan
51 110079.SH 杭银转债 转债 0 0 nan nan
52 113062.SH 常银转债 转债 0 0 nan nan
53 127032.SZ 苏行转债 转债 0 0 nan nan
54 128132.SZ 交建转债 转债 0 0 nan nan
55 113655.SH 欧22转债 转债 0 0 nan nan
56 128134.SZ 鸿路转债 转债 0 0 nan nan
57 118004.SH 博瑞转债 转债 0 0 nan nan
58 123099.SZ 普利转债 转债 0 0 nan nan
59 113654.SH 永02转债 转债 0 0 nan nan
60 113054.SH 绿动转债 转债 0 0 nan nan
61 113666.SH 爱玛转债 转债 0 0 nan nan
62 128141.SZ 旺能转债 转债 0 0 nan nan
63 113659.SH 莱克转债 转债 0 0 nan nan
64 127083.SZ 山路转债 转债 0 0 nan nan
65 113636.SH 甬金转债 转债 0 0 nan nan
66 113050.SH 南银转债 转债 0 0 nan nan
67 127068.SZ 顺博转债 转债 0 0 nan nan
68 127026.SZ 超声转债 转债 0 0 nan nan
69 127064.SZ 杭氧转债 转债 0 0 nan nan
70 111003.SH 聚合转债 转债 0 0 nan nan
71 118033.SH 华特转债 转债 0 0 nan nan
72 127043.SZ 川恒转债 转债 0 0 nan nan
73 127056.SZ 中特转债 转债 0 0 nan nan
74 123145.SZ 药石转债 转债 0 0 nan nan
75 111010.SH 立昂转债 转债 0 0 nan nan
76 127040.SZ 国泰转债 转债 0 0 nan nan
77 111009.SH 盛泰转债 转债 0 0 nan nan
78 127045.SZ 牧原转债 转债 0 0 nan nan
79 110089.SH 兴发转债 转债 0 0 nan nan
80 113046.SH 金田转债 转债 0 0 nan nan
81 110085.SH 通22转债 转债 0 0 nan nan
82 127052.SZ 西子转债 转债 0 0 nan nan
83 127016.SZ 鲁泰转债 转债 0 0 nan nan
84 113061.SH 拓普转债 转债 0 0 nan nan
85 113044.SH 大秦转债 转债 0 0 nan nan
86 113053.SH 隆22转债 转债 0 0 nan nan
87 132026.SH G三峡EB2 转债 0 0 nan nan


1,择时策略

功能:输入代码和频率等相关参数,测试该转债择时策略的有效性。
转债波动的特征:经常涨1~2个月后跌2~3个月,如果股价高于150,连续跌4+月也正常。
INPUT:1,转债数据文件|默认文件是日频率:file=511380.SH,511380.SH_15min.xlsx ;path=C:\rc_2023\rc_202X\data_pms\wind_terminal\bond_convertible\quote
INPUT:2,证券代码列表文件;file=0list_code.xlsx;path=C:\rc_2023\rc_202X\data_pms\wind_terminal\bond_convertible\quote
分析指标-策略算法文件py:1,file=
OUTPUT:file= ; path=D:\CISS_db\bond_convert ;C:\rc_2023\rc_202X\data_pms\bond_convertible\timing

1.1,择时策略:粗筛变量和参数 |含交易信号signal

Notes:1,若选择2+指标数量前,需要先完成单指标信号和绩效的计算,因为需要先从单指标绩效文件中提取有相对收益或风险的指标。

输入转债代码
测算指标数量|默认1:
输入每个指标对应参数数量
1.2,择时策略:计算收益率和净值

主流择时策略均显示了显著的超额收益和更低回撤,如510300,513010,159967,588080,510500,512100
金农转债-128036.SZ是很典型的A股转债品种,上市初期价格下跌到80多元,也暴涨到200+,大部分时间在108~139之间波动。 日频率下,转债+41.45%,mdd-33.93%;前20的策略平均收益率+60%,mdd-33.93%。30分钟频率下,转债+9.99%,mdd-33.87%;前20的策略平均收益率+70%,mdd-24%。

若要画净值图,按如下方式运行服务器 python manage.py runserver --nothreading --noreload

输入转债代码
测算指标数量|默认1:
输入每个指标对应参数数量

是否画净值图|1=是已有单策略信号文件|没有需要先算上一步

2,择时策略改进-持有期

功能:在择时策略结果的基础上进行改进,按ma-x的信号,每次买入后x/2 ~ x 天内不能卖,避免来回买卖
持有期,如最少持有3~100个交易日后才能卖出,卖出后x/2个交易日才能买入
INPUT:转债数据文件|默认文件是日频率:file=511380.SH,511380.SH_15min.xlsx ;path=C:\rc_2023\rc_202X\data_pms\wind_terminal\bond_convertible\quote
分析指标-策略算法文件py:1,file=
OUTPUT:file= ; path=D:\CISS_db\bond_convert ;C:\rc_2023\rc_202X\data_pms\bond_convertible\timing


2.1,择时策略:粗筛变量和参数 |含交易信号signal

Notes:1,若选择2+指标数量前,需要先完成单指标信号和绩效的计算,因为需要先从单指标绩效文件中提取有相对收益或风险的指标。

输入转债代码
测算指标数量|默认1:
输入每个指标对应参数数量
交易组合类参数:1,买入和卖出持有期,如3~100个交易日

2.2,择时策略:计算收益率和净值

若要画净值图,按如下方式运行服务器 python manage.py runserver --nothreading --noreload

输入转债代码
测算指标数量|默认1:
输入每个指标对应参数数量
交易组合类参数:1,买入和卖出持有期,如3~100个交易日
是否画净值图|1=是已有单策略信号文件|没有需要先算上一步

3,区间震荡策略 oscillate within the range

功能:对品种在无趋势期间,采取区间内低买高卖的策略
小结:可转债日线频率,即便用3周更短线的策略,依然会面临基础资产波动小+在1.0 +/-8%左右波动,导致的缺乏赚钱机会。可能更适合的方式是在30分钟频率下,通过8~16个周期内做短波段来赚钱。
小结:截至231123,2周以内的小区间震荡策略,对于转债个券和指数上,并没有明显优于标的本身的收益和回撤;
中证1000ETF,优。512100.SH,osci2_p_ma_40__-0.045策略净值1.1558,mdd=0,持有时间1.05%;同期512100基金净值0.9047,mdd=-22.81%,超额收益比较显著。
转债等权889033.WI,良。没有明显优于标的本身的收益和回撤,但也没有很差
INPUT:转债数据文件|默认文件是日频率:file=511380.SH,511380.SH_15min.xlsx ;path=C:\rc_2023\rc_202X\data_pms\wind_terminal\bond_convertible\quote
分析指标-策略算法文件py:1,file=
OUTPUT:file= ; path=D:\CISS_db\bond_convert ;C:\rc_2023\rc_202X\data_pms\bond_convertible\timing

区间内震荡的逻辑

确定股票目前处于震荡状态:ma8和ma40的近10日平均or最大偏离幅度不超过一定比例。 震荡或无趋势的定义:(ma_short - ma_long)/ma_long 偏离幅度 小于 5% ;
osci1,区间的上下沿-买入:连续10个交易日收盘价低于ma8后第一天突破,买入;卖出:连续10个交易日收盘价高于ma8后第一天突破,买入;
========
osci2,区间的上下沿-买入:close/ma8连续扩大3天; 卖出:close/ma8连续收窄3天;
========
osci3,区间的上下沿-买入:ma8或16_up,负值(ma下跌)连续超过8天后第一天转负; 卖出:ma8或16_up,正值(ma上升)后第一天转负;
主要上下区间(算法:q25-std+1%,q75+std-1%):p_ma8,-5%,+5%;p_ma16,-7%~7%;p_ma40,-10%,10%;p_ma60-12%,12%.ma_up_8,-0.3,0.3%,ma_up_16,-0.2,+0.2%;ma_up_40,-0.15%,0.15%;ma_up_60, -0.13%,0.13%.


3.1,区间内震荡:计算策略信号

输入转债代码测算指标数量|默认1:输入每个指标对应参数数量区间内观测日期

3.2,区间内震荡:计算收益率和净值

若要画净值图,按如下方式运行服务器 python manage.py runserver --nothreading --noreload

输入转债代码
测算指标数量|默认1:
输入每个指标对应参数数量
区间内观测日期
已有单策略信号文件|没有需要先算上一步

4,代码组合回测-给定指标参数

功能:1,对所有样本池证券,用同一种固定的策略指标及参数测算;2,对不同证券,用给定的不同策略指标及参数测算
INPUT:0,list_code 证券代码列表文件;file=0list_code.xlsx;path=C:\rc_2023\rc_202X\data_pms\wind_terminal\bond_convertible\quote
转债回撤步骤:1,每40天调整转债样本池;2,每个交易日计算样本池内品种的交易信号;3,根据权重分配,计算组合收益率
INPUT:1,转债数据文件|默认文件是日频率:file=511380.SH,511380.SH_15min.xlsx ;path=C:\rc_2023\rc_202X\data_pms\wind_terminal\bond_convertible\quote
2,导入证券对应策略及参数的excel表格

OUTPUT:file= ; path=D:\CISS_db\bond_convert ;C:\rc_2023\rc_202X\data_pms\bond_convertible\timing
notes:小结:可转债日线频率,即便用3周更短线的策略,依然会面临基础资产波动小+在1.0 +/-8%左右波动,导致的缺乏赚钱机会。可能更适合的方式是在30分钟频率下,通过8~16个周期内做短波段来赚钱。
notes:由于不同资产交易日不同,可能会出现证券x在某个日期前无收盘价,此时日收益率用 交易费率0.1%或 0 替代。
notes:240419,平滑了交易信号,如【0,1,1】才能买入,和【1,0,0】才能卖出,def tool_signal_lazy,file=indicator_momentum.py


4.1,给定单一指标及参数、时间区间,按list_code 回测

证券池:导入file=0list_code里 if_port=是否属于组合=1的代码。
选股因子权重及打分:引入季度总分数据;无【后期可考虑加入 】
调仓频率:3日、8日、15日、30日
Notes:不同转债起始时间不同,都有净值的区间一般从 20211122;20211122开始有7个转债有历史数据

step1:计算组合内所有个券在区间内的交易信号

notes:

起始日期输入单策略含指标数量:1~3

指标1名称:
指标1区间:
指标1参数:

指标1名称:
指标1区间:
指标1参数:

指标1名称:
指标1区间:
指标1参数:

组合名称前缀,port_ 或port_index 开头:

OUTPUT: port_str_mid= ||


step2:根据交易信号,计算组合净值和绩效的


notes:todo,调仓频率,单券权重上限,组合权重上限,目前还没用

输入组合名称/组合参数
起始日期结束日期输入最大持仓数量,1~100
调仓频率:
单券权重上限
组合权重上限


O,计算结果和图表

OUPUT:

OUPUT:df_stra_ma= ;


插入净值图png,还未成功

Table=组合绩效分析-PERFORMANCE EVALUATION

评估指标和参数需要关注:1,指标在某一参数下的绩效较好,需要观察相近参数策略是否具有类似表现,避免单一参数对应的特定时点交易没有可复制性。
2,关注持仓时间占比,若超过80%,收益可能更多来自于持有而非策略择时。
3,同样表现下,优先选择最大回撤更小的、再选择参数最接近0.0的。例如,最大回测每减小1%,累计收益可以减少2%
notes:

组合名称 期末净值 最大回撤 年化收益率 日均收益率 单日最大跌幅 持有时间占比 持有期间胜率 最新1年 前1年 前2年


N,策略研发规划

TODO:计划研发的其他策略:
策略名:转债期权定价;来源:中金固收;介绍:“甜点”是期权定价的视角下,性价比较高、容易获利的品种。这个指标我们可以通过观察数量,来评价彼时转债市场的难易程度。
“甜点”个券为:(转股价值*delta*0.05+theta+0.5*((转股价值*正股波动率)^2)*gamma)/转债价格 > 0.05的个券