本文作者:admin

中金固收:能否走出低波动的回响

admin 05-21 1
中金固收:能否走出低波动的回响摘要:   炒股就看金麒麟分析师研报,权威,专业,及时,全面,助您挖掘潜力主题机会!  中金 | 固收+:能否走出低波动的回响  来源:中金固定收益研究  中金研究  略显极致的低...

  炒股就看金麒麟分析师研报,权威,专业,及时,全面,助您挖掘潜力主题机会!

  中金 | 固收+:能否走出低波动的回响

  来源:中金固定收益研究

  中金研究

  略显极致的低波动还能延续多久?今年权益市场尤其是小票,整体步入了历史最低波动区间。在低波动环境下,趋势跟踪及低波策略的标的表现突出,转债的波动增强策略暂时出现“失效”。那么当下我们在策略部署上,不可避免要回答的问题是:1)“低波动”环境可能维持多久,是否有定量的方式能够给出预测;2)基于不同的波动“修复”路径,固收+的配置有什么思路?

  图表1:小市值品种的“弹性流失”明显

中金固收:能否走出低波动的回响

  资料来源:Wind,中金公司研究部;注:上图为中证800成分股依据其流通市值(滚动90日均值)进行分类后,计算的滚动90日的年化波动率。数据窗口为2010年5月18日至2023年5月15日

  图表2:趋势策略及低波策略近期的收益效果

中金固收:能否走出低波动的回响

  资料来源:Wind,中金公司研究部;注:上述低波策略指筛选中证800成分股中过去120日波动较低的20%个股;而趋势策略为动量策略,是指筛选中证800成分股中过去60日涨跌幅靠前的20%个股,相对基准为中证800的成分股。策略均为等权,21个交易日换仓,均为后加权。数据窗口为2011年12月30日至2023年5月15日

  图表3:双低高波策略的超额在减弱(净值曲线:左轴;相对双低的超额收益:右轴,单位:%)

中金固收:能否走出低波动的回响

  资料来源:Wind,中金公司研究部;注:双低策略为EasyBall,双低高波策略为EasyBall的选券中进一步加入百周弹性靠前的50%。数据窗口为2017年12月29日至2023年5月15日

  一、“低波动环境”历史上维持多久?

  2010年以来,较低的波动环境主要集中在三个时间段,分别为2014年上半年,2016年2季度到2017年底,以及2019年3季度到2020年1月。

  1)14H1股市是延续2010年以来的颓势,资金在2013年“钱荒”后对于流动性宽松的预期弱,国内经济调整压力较大,市场成交也疲软,股市波动率开始筑底。而后随着政策从定向精准放松到全面放松,市场开始形成趋势而后开启2014-2015年行情;

  图表4:股市波动率当前处于较低水平

中金固收:能否走出低波动的回响

  资料来源:Wind,中金公司研究部;注:上图波动率的计算口径为中证800的成分股,计算其滚动90日日度收益率的标准差并进行年化处理;而下行波动率与上行波动率,则将上述数据对应处理,分别将非下行与非上行的波动率进行nan值处理,计算滚动标准差时最小区间为30日。数据窗口为2010年5月18日至2023年5月15日

  2)2016-2017年市场从“股灾”中缓慢修复,微观交易结构处于长期调整期。在这一背景下,2016年走出横盘震荡的状态,市场波动筑底。2017年受益于企业盈利抬升和外资偏好等因素,走出大盘占优行情。市场波动整体在低位修复。而后受2018年“中美贸易摩擦”而出现明显震荡,企业盈利预期快速恶化,下行波动快速放大。

  3)2019年5月至2020年1月,市场情绪随再度加剧的“贸易摩擦”开始冷却,重现震荡行情。而后随着疫情开始,市场波动再出现快速拔高。

  图表5:市场弹性缺失,低波动已处于极致中

中金固收:能否走出低波动的回响

  资料来源:Wind,中金公司研究部;注:上述数据为滚动90日的年化波动,占比情况为个数占比。我们以中证800成分股为选券池,计算成分股中波动处于低、偏低、中、高四档的个股比例

  复盘这三轮市场来看,类似当前的“极度”低波动环境的持续周期一般在1-2个季度。其中,由微观交易主体自发的波动修复时间会较长,类似2016-2017年;而受政策和外围环境因素影响的波动修复时间较快,例如2014年与2019年。而当下,我们观测到市场的波动率也已下至历史极值,并已维持超过一个季度。因此我们认为,当下波动的修复或是确定性的,但修复的幅度与斜率是不确定的。这里我们通过量化模型来做辅助判断。

  二、如何预测未来的市场波动?

  首先我们需要确定预测市场波动的变量:1)波动率自身的历史数值:由于我们对波动率指标的计算本身就是历史涨跌幅的标准差,因此波动率指标自身是存在显著的滞后性和自相关性。2)振幅:市场振幅虽然仅反映日内情况,但就其趋势而言与波动的相关性高。振幅90日的简单均线与90日波动率走势基本保持一致。3)换手率:虽然市场价量的变化有时并不一致,但换手率档次对波动的带动性仍高。

  图表6:波动自身“不可避免”的自相关

中金固收:能否走出低波动的回响

  资料来源:Wind,中金公司研究部;注:波动率计算为过去90日指数涨跌幅的标准差,并进行年化处理。数据窗口为2009年12月31日至2023年5月5日。

  图表7:振幅的密切相关与来自成交量的交投驱动

中金固收:能否走出低波动的回响

  资料来源:Wind,中金公司研究部

  其次我们来确定选择一个相对简单的机器学习模型,来辅助预测波动。这里我们采用LSTM模型来做预测构建。LSTM模型本就适合对具备一定记忆性的时间序列进行预测。在如下代码中,我们尽可能将参数设定放开,以适应各类投资者自行训练的需要。

  代码示意1:LSTM模型的构建

  class LSTMvol(nn.Module):    def __init__(self, input_size, hidden_size, num_layers, output_size):        super(LSTMvol, self).__init__()        self.hidden_size = hidden_size        self.num_layers = num_layers        self.lstm = nn.LSTM(input_size, hidden_size, num_layers, batch_first=True)        self.fc = nn.Linear(hidden_size, output_size)    def forward(self, x):        x = x.unsqueeze(1)        device = torch.device(‘cuda’ if torch.cuda.is_available() else ‘cpu’)        h0 = torch.zeros(self.num_layers, x.size(0), self.hidden_size).to(device)        c0 = torch.zeros(self.num_layers, x.size(0), self.hidden_size).to(device)        out, _ = self.lstm(x, (h0, c0))        output = self.fc(out[:, -1, :])        return output

  资料来源:中金公司研究部

  代码示意2:模型训练情况

  # 获取中证800的换手率、振幅以及波动情况_, dfIdx = w.wsd(“000906.SH”, “turn,swing,volatilityratio”,                 “20091231”, “2023-05-17”, “CalculationTime=90;AnnualCoefficient=252”,                  usedf=True)# 预测的目标为未来21日的波动情况dfIdx[‘Targets’] = dfIdx[‘VOLATILITYRATIO’].shift(-21)data = dfIdx.copy().dropna().values.astype(np.float32)train_size = int(len(data)*0.7)train_data = data[:train_size, :]test_data = data[train_size:, ]device = torch.device(‘cuda’ if torch.cuda.is_available() else ‘cpu’)model = LSTMvol(input_size=3, hidden_size=16, num_layers=2, output_size=1)criterion = nn.MSELoss()optimizer = torch.optim.Adam(model.parameters(), lr=0.001)for epoch in range(1000):    inputs = train_data[:, :-1]    labels = train_data[:, -1:]    inputs = torch.from_numpy(inputs).to(device)    labels = torch.from_numpy(labels).to(device)    outputs = model(inputs)    loss = criterion(outputs, labels)    optimizer.zero_grad()    loss.backward()    optimizer.step()    if (epoch+1) % 10 == 0:        print(‘Epoch [{}/{}], Loss: {:.4f}’.format(epoch+1, 1000, loss.item()))

  资料来源:Wind,中金公司研究部

  图表8:模型训练情况

中金固收:能否走出低波动的回响

  资料来源:Wind,中金公司研究部

  最后我们来利用这个模型对于未来一段时间的波动进行预测。当前(5月17日)中证800的波动率约为12.7%,我们模型预期未来1个月,未来3个月和未来半年的波动率分别为13.39%,15.59%与21.59%。结合当前市场环境,在不出现明显超预期事件的情况下,我们与模型预期保持一致,认为市场5月往后大概率会出现一定波动修复,幅度略快于2017年的波动修复,因为微观交易结构其实“受损”情况也远好于2016年初;但或明显慢于2014年与2020年。

  图表9:模型对未来波动率的预测

中金固收:能否走出低波动的回响

  资料来源:Wind,中金公司研究部

  三、基于波动率修复的固收+策略

  3.1 波动修复下的行业轮动

  依据以上模型对于市场波动逐步修复的判断,我们认为在策略层面可适度倾向轮动策略,尤其是行业轮动策略(参考《固收+2023年展望:“反拥挤”与行业轮动》)。因为从历史来看,纵向波动的修复,往往同步于个股与行业层面的分化。通过行业轮动策略,我们能相对容易跟住相关行业的Beta行情。以我们当前行业轮动组合为例,当前组合相对侧重的板块有电新、电力及公用、农林牧渔与食品饮料。

  图表10:波动修复过程中,个股往往同步出现分化

中金固收:能否走出低波动的回响

  资料来源:Wind,中金公司研究部

  图表11:中证800行业轮动等权策略(左轴)及其超额(右轴,单位为%)

中金固收:能否走出低波动的回响

  资料来源:Wind,中金公司研究部;注:其中行业轮动策略为选取行业景气度前10且较前次换仓时有所提升的行业,并进行个股等权配置,基准为中证800成分股的等权指数。数据窗口为2012年12月31日至2023年5月15日

  图表12:固收+行业轮动

中金固收:能否走出低波动的回响

  资料来源:Wind,中金公司研究部;注:股票端采用上述行业轮动策略,个股权重为低波权重分配,每21个交易日换仓,采取股二债八的固定比例

  图表13:四大板块当前的景气度变化情况

中金固收:能否走出低波动的回响

  资料来源:Wind,中金公司研究部;注:行业景气度测算仅参考市场分析师对行业各公司未来一年净利润增长预期判断,数据窗口为2012年12月31日至2023年5月15日

  3.2 波动修复下的“确定性溢价”

  而若对波动修复更趋审慎,那么结合2016-2017年的市场经验,我们认为策略如何把握“确定性溢价”是第二条路径。因为弱波动修复仍是依照微观交易结构自身出发的,这一过程中宏观环境没有给出明确主线,持币者的风险偏好抬升较慢,往往持续偏好于基本面相对更稳固,增长能力确定性更高的标的。因此,具体策略上,一方面在4月发布的《固收+高股息:当前的困扰与对破局的思考》中,我们提出的“红利精选策略”或能提供一定参考。而另一方面,在价值风格的极致行情遭遇短期调整的背景下,我们认为可以适度降低对红利因子的倚重,而将盈利确定性和成长性作为主要目标。具体而言,我们同样要求ROE与净利润增长保持5%的增速,再对于净利润增速边际变化、现金能力进行排序择优。最后我们选取过去一段时间的低波高动量品种。

  代码示意3:“确定性溢价”模型

  def absRating(obj, codes, date, tempCodes, dfAssetBook):    date = nt._offset(obj, date)    # 增:ROE与净利润增长至少保持5%增速    srs = obj.DB[‘NetIncome’].loc[date, tempCodes] /           obj.DB[‘NetAsset’].loc[date, tempCodes] > 0.05    srs &= obj.DB[‘NetIncome’].loc[:date,            tempCodes].tail(251).pct_change(periods=250).iloc[-1] > 0.05    srs &= obj.DB[‘inCon’].loc[date, tempCodes] == 1    tempCodes = srs[srs].index    # 提升:净利润增速变化和现金能力    srs = (obj.DB[‘NetIncome’].loc[:date,            tempCodes].pct_change(periods=121).diff(periods=120).iloc[-1]).rank()    srs += (obj.DB[‘OpCashFlow’].loc[date, tempCodes] /             obj.DB[‘NetIncome’].loc[date, tempCodes]).rank()    return srs.sort_values(ascending=False).head(100).indexdef revMom1MUp(obj, codes, date, tempCodes, dfAssetBook):    didx = obj.DB[‘Close’].index.get_loc(date)    srs = obj.DB[‘Close’].iloc[didx-181:didx][tempCodes].pct_change(          ).std().rank(ascending=False)    srs += obj.DB[‘Close’].iloc[didx-21:didx][tempCodes].pct_change(periods=20          ).iloc[-1].rank() * 2    return srs[srs >= srs.quantile(0.5)].index

  资料来源:Wind,中金公司研究部

  图表14:“确定性溢价”组合的表现

中金固收:能否走出低波动的回响

  资料来源:Wind,中金公司研究部;注:数据窗口为2012年12月31日至2023年5月15日

  图表15:固收+“确定性溢价”组合的表现

中金固收:能否走出低波动的回响

  资料来源:Wind,中金公司研究部;注:数据窗口为2012年12月31日至2023年5月15日

  图表16:价值“极致”行情后的休整

中金固收:能否走出低波动的回响

  资料来源:Wind,中金公司研究部;注:数据窗口为2018年3月2日至2023年5月17日

  图表17:确定性溢价组合标的

中金固收:能否走出低波动的回响

  资料来源:Wind,中金公司研究部

阅读
分享