Py学习  »  Python

【中金固收·固收+】定增基金的新机遇:限售股AAP估值及Python实现方法(下)

中金固定收益研究 • 4 年前 • 618 次点击  
作者

  分析员,SAC执业证书编号:S0080515120002   SFC CE Ref: BOM868

  分析员SAC执业证书编号 S0080517070005   SFC CE Ref:BON965

吴若磊联系人,SAC执业证书编号:S0080119030020

陈健恒分析员SAC执业证书编号 S0080511030011 SFC CE Ref: BBM220


策略观点 ---    

再融资新规落地,定增产品会面临哪些变化?我们在《隐藏价值的角落——限售股AAP估值及Python实现方法》中分析了实践中的一个核心难点问题,即基金参与定增(或通过配售等其他方式得到了限售股份)时如何做后续估值——这影响到我们如何去看待这些产品的净值和折价。在AAP的方法之下,限售股天然会以“折扣价”计入基金资产,而这一“折扣”却与成本无关,仅与股票本身的属性(分红率以及波动率)以及锁定时间有关。

这里,我们希望通过一个详细的分析过程说明,“以前是怎样的”以及“以后会怎样”。当然,这里也可以看做此前报告《隐藏价值的角落——限售股AAP估值及Python实现方法(上)》的延续,因此这里也涉及一些数据处理和分析方法。

首先是信息的处理。基金参与定增的信息会在多个地方出现,包括上市公司的公告(涉及定增具体方案、锁定期等)、基金公司的临时公告(这里会有基金具体买入的数量)、基金公司的定期报告(这里会汇总基金所有的限售股)。

万得数据终端中有一个比较全面的汇总,不过这里有两个问题需要进一步处理:一是有的没有解禁日期,这里需要将参与日与限售期相加,手动得到补充的解禁日期。二是,由于2017年减持规则的变化,定增解禁后一年内只能减持至多一半,另一半要到后一年——也就是对于一个锁定12个月的定增,实际是变成了半个锁12个月+半个锁24个月的定增。这里需要我们进一步识别,对于执行日在上周及以前的、以及解禁日在2017年5月底之后的,要进行上述分段处理。Python语言的实现方法如下:

from dateutil.relativedelta import relativedelta
dfHeld = pd.read_excel(u'基金参与定向增发.xlsx')
dfTemp = pd.DataFrame(columns=dfHeld.columns)
counter = 0
lstAmountColumns = [u'持股数量(万份)',u'成本总额(万元)',u'成本总额占基金资产净值比例(%)',u'账面价值(万元)',u'账面价值占基金资产净值比例(%)']
for i in dfHeld.index:
if pd.isnull(dfHeld.loc[i, u'解禁日期']):
    # 处理第一个问题
dfHeld.loc[i, u'解禁日期'] = dfHeld.loc[i, u'定增截止日期'].to_pydatetime() + relativedelta(months=dfHeld.loc[i, u'锁定期()'])
if not (dfHeld.loc[i, u'解禁日期'] < dt.datetime(2017,5,27) or dfHeld.loc[i, u'定增截止日期'] > dt.datetime(2020,2,13)):
    # 处理第二个问题
dfHeld.loc[i, lstAmountColumns] *= 0.5
dfTemp.loc[counter] = dfHeld.loc[i]
dfTemp.loc[counter, u'解禁日期'] += relativedelta(months=12)
counter += 1

def _heldSetId(dfHeld):
# 注意,这个函数的目的是处理数据表的主键,避免以序号作为index。用基金代码、股票代码和解禁日连接形成。
dfHeld['ID'] = dfHeld[u'基金代码'] + ':' + dfHeld[u'定增股票代码'] + ':' + dfHeld[u'解禁日期'].apply(lambda x: dt2str(x.to_pydatetime()))
dfHeld.set_index('ID', inplace=True)

_heldSetId(dfHeld)
_heldSetId(dfTemp)
dfHeld = dfHeld.append(dfTemp)
dfHeld.sort_index(inplace=True)
dfHeld.to_excel(u'处理后的基金参与定增数据.xlsx')

经过上述处理,可以得到一个能用于查询基金所持定增品种的DataFrame。例如,在2019年2月17日这个时间点,我们想知道九泰锐智的未解禁定增股,就可以通过dfHeld[(dfHeld[u’基金代码’] ==‘161801.OF’) & (dfHeld[u’解禁日期’] > dt.datetime(2020,2,17))] 来获得。

然后需要计算的是对应股票的折价率。详细每一步的计算方法(包括算股息率、波动率以及最后的AAP折扣率)都在《隐藏价值的角落——限售股AAP估值及Python实现方法(上)》给予了具体的分解介绍,这里只需要将他们组合起来,并应用在上面处理好的DataFrame上。因此虽然函数不断,但基本没有太多复杂或不易理解之处,实现如下:

def discRatioTable(dfHeld, start, end=None, dataMode='api'):
'''
输入限售股table,输出这些券对应的LoMD,至少需要限售股代码列、买入日期列和可流通日期列
start: 计算首日,yyyy/mm/dd
end: 计算终日, yyyy/mm/dd,可以不输入,则为None,此时按start计算,也就是只算start这一天。
dataMode:取数据的方法,在家办公可以选择api,另有sql模式
'''

# 先拿到这些股票的vol
lstStocks = list(set(dfHeld[u'定增股票代码']))
nDaysBefore, flag = backToTime(start, list(dfHeld[u'解禁日期'].apply(lambda x: x.strftime('%Y/%m/%d'))))

if flag:
dfAdjClose = priceData(lstStocks, nDaysBefore, end, dataMode)
dfLogPct = logPctData(dfAdjClose)

else:
print u'没有限售股,不必算了'
return None

dfVol = pd.DataFrame(index=dfAdjClose.loc[start:end].index, columns=dfHeld.index)

for col in dfVol.columns:
print col
code = dfHeld.loc[col, u'定增股票代码']
if dfHeld.loc[col, u'解禁日期'] > dt.datetime.strptime(start,'%Y/%m/%d'):
for date in dfVol.index:
days = _deletaTradingDate(date, dfHeld.loc[col, u'解禁日期'].strftime('%Y/%m/%d'))
if days > 0:
dfVol.loc[date, col] = calcVol(dfLogPct, code, date, days)

# 然后是q,股息率
dfDiv = dividendYield(lstStocks, start, end, dataMode)

# 计算discRatio
dfDiscRatio = pd.DataFrame(index=dfVol.index, columns=dfVol.columns)

for col in dfDiscRatio.columns:
strEnd = dfHeld.loc[col, u'解禁日期'].strftime('%Y/%m/%d')
code = dfHeld.loc[col, u'定增股票代码']
for date in dfDiscRatio.index:
t = deltaT(date, strEnd)
if t > 0:
dfDiscRatio.loc[date, col] = aapDisc(dfDiv.loc[date, code], dfVol.loc[date, col], t)

return dfDiscRatio

现在,利用前面这些基础工具,我们可以考虑一个两年前的情况:在2018年8月10日,九泰锐智(历史比较长的一个五年定增基金)参与海达股份定增,成本1000万元、4.66元每股,原锁定12个月。此时基金会面临的是,1年名义锁定期,实际500万元(成本)锁定12个月、500万元锁定24个月。按照上述方法计算,两部分按照AAP估值之下,分别需要9.59%和12%的折扣率,平均下来以5.01元入账——按照当年8月14日该基金公告中的数据计算,其使用的折扣率也和我们这一数字十分接近。当然,无论是当时的账面上,还是到现在来看,该基金都赚钱了,但是,需要强调,这里赚钱的条件有多苛刻

1、4.66元的成本相当于在7月10日(定价基准日)的基础上打了9折,这也是当时的极限——然而如果股价不动,也免不了在交易完成当日形成浮亏(公告出来会显示成本价高于账面价值);

2、好在后来的一个月内,股价有所上涨,到8月10日时,股价已经从5.23元涨至5.62元,4.66元的成本相当于83折;

3、以及,更少人会注意到的是,在股份完全解禁的2020年8月13日,下一天该基金就结束封闭期转为LOF——届时基金要应对申赎,理论上不应该再持有定增股份。也就是说,这几乎是该基金能参与定增的最后时间。

能比较直观地看到,当时的环境下,定增基金想要真的参与一笔定增的难度:1)首先,发行人要能同意9折的价格——但这还不够;2)在定价基准日至实际参与定增的这段时间里,股价要有一定幅度的上涨;3)基金参与要及时,对于5年封闭期的产品来说,第三年末就是最后的机会。

新与旧的不同就在于:而如果这笔投资,都按照新规下的6个月锁定期,其折扣率就会是7.1%,即使站在定价日,93折之下,交易即可达成。更不用说,现在定增价格最多可以打8折。

总结起来,对于定增基金等产品而言,变化之处以及我们的一些判断如下:

1、锁定期大幅缩短,直接降低AAP自带的折扣率,根据我们对当前已有预案且未被否决的公司的测算,在半年锁定期下,平均AAP折扣率为7%、最大为11.9%——这两个数值在过去的规则下分别是12.6%和18.8%;

2、不过定价定增还是有些难,AAP折扣平均要11.9%,最大达到接近19%,需要一定程度上考虑谈判和择券能力;

3、定增打折的上限提升至20%,也减少了交易因规则而不能达成的几率,但这里要看市场情况;

4、一个不太受到市场强调的是,缩短锁定期不仅降低风险,也大幅提高了定增基金的周转效率。以往的锁定期下,竞价定增实际锁定2年,5年期定增基金最后参与定增的时间是第3年末,而现在,只要其距离转LOF时限不超过半年,就可以再进行操作。同时,它们可以参与多轮定价定增了(以前只能在第一年参与一次,难度很大);

5、以及,以前存在着的18个月封闭期定增基金,它们理论上也可以参与2、3轮竞价定增了(以前基本无法参与);

6、老基金的优劣势:距离转LOF不足6个月的基金,已经没有更多办法,同时老项目无法改变锁定期;但由于定增市场的投资者在过去2年大幅减少,要重新培育。因此最近的几个月之内可能存在供大于求(项目多、资金少),可能有利于拿到更多折扣和项目,我们认为这是这些产品最主要的优势所在。




固收+ 市场跟踪---    

1、分级A市场方面,春节后分级A市场表现不俗,近十个交易日分级A指数上涨0.86%,其中主流的R+3.0%品种大涨0.99%。但并非源自节后首日股市的大幅下跌(当日分级A表现也并不强),而更多来自后来股市反弹带来的配对转换价值。

由于目前分级A已经普遍没有折价,其价格运行逻辑开始出现一些变化,即便是R+3.0%分级A,其一定程度上也要与股市同向变动(而非具备对冲效果),除了折价归零以外,针对日益上涨的分级B的“门票价值”也开始上涨。结合股市的结构特点,我们近期相对看好的品种包括创业板A和深成指A。

2、打新基金:

近期,科创板热情再度回归,新股涨幅整体上行,因此我们筛选的打新基金样本池近1月多数表现出了正增长,部分基金净值增长为负可能受到底仓的拖累。

3、市场情绪高涨,对于新股破发的预期也进一步降低,近10个交易日来看,战略配售基金平均上涨1.54%,折价率变化不大,因此主要归因于净值上涨。

再融资新规的正式落地显著提振市场情绪,定增基金表现强势,近10日平均涨幅达到11.51%。根据再融资新规,定增锁定期缩短且解禁后也不再受减持规则约束,对于定增基金来说,减持受限是导致隐含折价的主要因素。近期隐含折价率无明显变化,目前九泰锐益、九泰泰富均在12%左右。在新规利好定增市场的条件下,若定增规模能尽快恢复,未来此类产品有望扩容。

4、转债市场表现依然强势,春节后虽然也随股市跳空低开,但跌幅明显更小,且后续反弹迅速,早早填补缺口。近十个交易日来看,中金转债指数上涨3.6%,创业板转债则显然更为活跃,涨幅超过10%的品种不少。

我们在近期调整了对转债市场的看法,目前估值已经来到历史上较高的水平,隐含了股市大幅上涨的预期。但正股层面看依然有明显的结构特征,中小创上行趋势、大盘震荡走势,因而存在一定程度的错配,因此我们对转债指数及大盘转债的观点偏谨慎。近期我们建议以动量策略为主,偏向中小创及高价高弹性品种,与此同时绝对仓位可以有所下降。

5、ABS市场方面,受疫情影响各类ABS发行节奏明显放缓,特别是银行间市场,节后仅有2单ABS发行。交易所方面受影响相对较小,发行量基本与2019年同期持平,房地产供应链和消费金融资产仍然是发行的主力。对于存量产品而言,疫情所带来的短期现金流波动较为明显,特别是商业地产类ABS,而实质性的信用违约风险则相对较弱。

价格方面,在超预期的供给暂未出现之前,价格继续维持在低位。

6、REITs市场方面,国内共有6支基金主要投资于REITs领域。其中,上投摩根、南方、广发的三只基金别分跟踪了3个较为主流的REITs指数;诺安、嘉实、鹏华的三只基金则为主动投资。

近期,美国REITs市场情绪良好,整体上行,主要指数均表现不俗,各基金净值均出现了正增长。其中上投摩根富时REITs和南方道琼斯美国精选净值均上涨1.82%,广发美国房地产上涨2.75%。主动型基金中,诺安和嘉实两只基金分别上涨1.20%和3.71%,而鹏华美国房地产净值增长4.20%,涨幅最为显著。从重仓券来看,该只REITs基金与其他基金也有较大的区别。


本文所引为报告部分内容,报告原文请见20202 21金固定收益研究发表的研究报告





Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/55082
 
618 次点击