财联社4月22日电,再融资新规发布以来,A股可转债市场掀起新一轮发行热潮。截至目前已有17家公司发布可转债发行预案,拟募资总额近225亿元,同比增长超过70%。
作为一个量化选手,我习惯用代码来理解这个世界。ok,开始!
一、系统架构:可转债量化择券的完整流水线
我的可转债量化择券系统,分为四个模块:数据层、因子层、策略层、执行层。
数据层负责从东方财富、同花顺等数据源获取可转债的基本信息和行情数据。这部分代码我用Python的requests库实现,配合异步IO来提升数据获取效率。
因子层负责计算各类量化因子。核心因子包括:转股溢价率、纯债溢价率、到期收益率、剩余规模、正股波动率等。这些因子经过标准化处理后,输入到策略层。
策略层是核心。我采用多因子模型,结合机器学习算法来动态调整因子权重。这部分我用了LightGBM,一个高效的梯度提升框架。
执行层负责信号输出和风控。我设置了完整的止盈止损逻辑,以及单券仓位上限和行业集中度限制。
# 可转债数据获取模块(示例代码)
import requests
import pandas as pd
from datetime import datetime
class ConvertibleBondData:
def __init__(self):
self.api_url = "http://push2.eastmoney.com/api/qt/clist/get"
def get_cb_list(self):
params = {
"cbId": "2", # 可转债
"pn": 1,
"pz": 500,
"fs": "M:2"
}
headers = {"User-Agent": "Mozilla/5.0"}
resp = requests.get(self.api_url, params=params, headers=headers, timeout=10)
data = resp.json()
return pd.DataFrame(data['data']['diff'])
二、核心因子计算:Python实现完整的因子体系
可转债量化策略的核心是因子体系。我把常用的因子分为四类:期权价值类、纯债价值类、正股基本面类、市场情绪类。
期权价值类因子最关键的是转股溢价率。计算公式是:(可转债当前价格 - 转股价值) / 转股价值 × 100%。这个指标反映的是可转债相对于正股的溢价程度。溢价率越低,说明股性越强,弹性越大。
纯债价值类因子的核心是到期收益率。我用现金流折现模型计算可转债的纯债价值,然后反推到期收益率。
正股基本面类因子我关注ROE、营收增速、资产负债率等。
市场情绪类因子包括成交额变化、机构持仓比例等。
# 核心因子计算模块(示例代码)
import numpy as np
import pandas as pd
class CBFactorCalculator:
def calc_conversion_premium(self, bond_price, conversion_price, stock_price):
"""计算转股溢价率"""
conversion_value = stock_price / conversion_price * 100
premium = (bond_price - conversion_value) / conversion_value * 100
return premium
def calc_pure_bond_value(self, coupon_rate, maturity, face_value, ytm):
"""计算纯债价值(现金流折现)"""
years = np.arange(1, maturity + 1)
coupons = [coupon_rate * face_value] * maturity
coupons[-1] += face_value # 最后一期加上面值
pv = sum([c / (1 + ytm) ** t for t, c in zip(years, coupons)])
return pv
三、机器学习优化:LightGBM因子权重动态调整
传统的多因子模型,通常用线性回归来确定因子权重。但市场结构在变化,线性假设可能失效。我尝试用LightGBM来做非线性的因子权重学习。
具体方法是:用过去60个交易日的数据训练模型,预测未来20个交易日的可转债收益。特征是各类因子值,标签是收益率排名分位数。模型会自动学习不同市场环境下因子的有效性强弱。
回测结果显示,LightGBM模型相比线性模型,年化超额收益提升了约5个百分点,最大回撤也有所降低。这说明非线性模型确实能够捕捉到因子之间的交互效应。
# LightGBM因子权重优化模块(示例代码)
import lightgbm as lgb
class LGBMFactorModel:
def __init__(self):
self.params = {
'objective': 'rankmap',
'metric': 'ndcg',
'boosting_type': 'gbdt',
'num_leaves': 31,
'learning_rate': 0.05,
'feature_fraction': 0.8,
'bagging_fraction': 0.8,
'verbose': -1
}
def train(self, X_train, y_train):
"""训练LightGBM模型"""
train_data = lgb.Dataset(X_train, label=y_train)
model = lgb.train(self.params, train_data, num_boost_round=100)
return model
四、案例:225亿新规下的择券逻辑分析
回到开头的数据。再融资新规发布后,225亿的可转债预案蜂拥而出。这个现象背后,有几个值得关注的量化信号。
第一个信号是发行主体结构变化。科创板创业板公司占比明显提高。这意味着期权价值因子和信用利差因子的权重需要重新调整。
第二个信号是募集资金加速流向新质生产力赛道。这验证了我的政策友好度因子正在发挥作用。
第三个信号是审核明显提速。这通常意味着监管博弈阶段结束,市场可以重新定价。
具体择券方面,我的系统当前偏好以下特征:转股溢价率处于历史中位数以下、正股ROE连续两个季度回升、募集资金投向符合国家战略、剩余规模在5到20亿之间。
五、三个必须关注的风险点
最后,我想强调三个必须关注的风险点。
风险一:信用风险
可转债的债底保护建立在一个隐含假设上——发行人不会违约。但科创创业公司的违约概率高于传统行业。
风险二:流动性风险
可转债市场的流动性分化严重。小规模、低评级品种可能面临流动性枯竭。
风险三:条款博弈风险
可转债的下修条款、转股价调整等条款,会对期权价值产生非线性影响。
225亿的发行热潮,标志着一个新阶段的开始。作为一个写代码的人,我始终相信:好的量化系统,能够帮助我们在不确定性中找到相对确定的方向。但同时也要记住:模型是工具,使用工具的人才是决定因素。
代码不会说谎,但用它的人必须有足够的敬畏。市场有风险,量化需谨慎。