Skip to main content

Featured

关于对24年中国经济形势的一点看法

        今天已经是大年初五,春节也差不多接近尾声了,也是我在老家待的最后一天,刚好饭后闲来无事,终于静下心来有空写一写宏观经济分析。         回顾23年春节前的几个交易日,权益市场比较动荡,中证1000的平值隐含波动率最高冲到了91.48,要知道中证1000的实现波动率中位数也就15左右,而春节前几个交易日的连续大幅下跌和国家队快速出手使得权益市场走出深V形态,历史和隐含波动率也随之快速飙升。                另外伴随着雪球集体敲入、DMA爆仓等各类事件爆发,权益市场一片鬼哭狼嚎,就在大家都在讨论这波大A行情该谁来背锅时,证监会突发换帅。想想之前频繁出现在财经类流量博主文章中的北向、量化、公墓等,这次券商场外衍生品和私募微盘股应该也难逃一劫。都说经济繁荣时,大家都忙着数钱根本没有人在意合不合规,经济衰退时,你连呼吸都是错的,人性就是如此。关于现有微观市场体制的一些问题我之前也写过一些文章,这里不想再赘述,这里只想探讨一下宏观经济形势问题。         经济活动存在周期,这是我们初学经济学时就所熟知的,一个完整的经济周期包含繁荣、衰退、萧条和复苏四个阶段,每个阶段一般没有固定的时间长度和明显的分界线。但是如果回顾国内经济发展的历史情况,我们便可以大致发现国内经济增长开始下滑并不是近两年才开始的,三年疫情只是一场突如其来的黑天鹅,并没有影响整个大经济周期的演变方向。              从上图不难看出,从2001年加入世贸组织后,我国经济增长率同比逐年上升,呈现出快速发展的繁荣景象,也就是当时全球媒体称赞的“中国速度”。直到2008年,美国次贷危机爆发,中国也深受波及,随后政府出台了史上最大规模的“4万亿”扩张政策,虽然帮助中国摆脱了金融危机的泥潭,但也造成了后续非常严重的产能过剩、通货膨...

Total Pageviews

可转债定价研究-----基于修正的LSM模型

        可转换债券(Convertible Bond),是一种债券嵌套衍生品,可简单看作是一个普通债券和一个认股权证组合而成。国内可转债发行最高追溯于1992年,随后便止步不前,1997-2006年随着可转债发行规范文件的出台,可转债市场逐渐发展。2017年,证监会发布《关于修改<上市公司非公开发行股票实施细则>的决定》和《发行监管问答——关于引导规范上市公司融资行为的监管要求》两项监管文件,随后又颁布《上市公司股东、董监高减持股份的若干规定》,政策上收紧了定增融资,使得相对限制较小的可转债成为上市公司融资的替代品,可转债的发展也迎来一个发展机遇期,尤其近两年更是呈现出一个爆发式的增长。

clip_image002

                                                                               数据来源:Wind

        在可转债发行资料中,附加条款是影响其定价的重要要素之一,主要包括:(转股价)向下修正条款、赎回条款、回售条款。由于这些条款的存在,使得可转债的转股权并不是一个简单的美式期权,而是路径依赖的奇异期权,因此不适用BS公式和二叉树等模型来定价。我们知道最小二乘法蒙特卡洛(Least-Squares-Monte Carlo)是对美式期权定价最适用的模型,那么再加上转债条款,则需要对LSM进行调整以实现对可转债的定价,下面我们将逐条分析可转债的附加条款。

l 向下修正条款

        根据厦门大学教授郑振龙-林海在《中国可转换债券定价研究》中的结论,上市公司发行可转债的最终目的是实现每股净资产的增加,因此上市公司不会主动向下修正转股价,只有在面临因股价下跌而带来的债券回售压力时,公司才会行使该权利。

l 赎回条款

        公司倾向于尽可能早地实现转股,因此在公司股价触发赎回条款后,公司会通过赎回条款来促使债券持有人在债券赎回之前进行转股;而对于投资者来说,在赎回条款触发的时点,转股收益通常大于赎回收益(因为赎回条款更倾向于保护发行人),因此可转债持有人的最优选择是在公司赎回前进行转股。

l 回售条款

        回售条款相较复杂,对于可转债持有人来说,回售条款被触发时,按照原转股价直接转股的收益不如直接回售给发行人,但回售条款触发条件相较向下修正条款更为严苛,也就是说:在回售条件触发时,向下修正条款也早已触发。因此上市公司在触发回售条款时一定会执行向下修正条款,通过调低转股价以使得转股收益略大于回售收益,从而引导债券持有人放弃行使回售权利。因此,回售条款不会真的被行使,但回售条款触发之时,正是向下修正条款行使之际。

        通过上述条款分析之后,我们知道如果赎回条款触发,公司一定会执行。而回售条款则和向下修正条款的则互相影响,为了计算触发回售条款情形下公司调整后的转股价,我们需要假设回售日可转债的价值 = 债券价值 + 欧式看涨期权的价值,即:

clip_image004

        其中clip_image006

        然后我们令W=P(P为回售价值),由此求解出的K就是我们要求的调整后的转股价。由于上式无法直接求解析解,因此我们使用牛顿迭代法来估算,具体代码如下:

[sourcecode language='matlab'  padlinenumbers='true' light='true']
1. function K = AdjustX(St,X,r,t,T,sigma,coupon)  

2.     K = X;  

3.     CP = 100 + coupon(ceil(t))*(t-fix(t));  

4.     i = 0;  

5.     I = 0;  

6. while i < (T-t)  

7.         I = I + coupon(T-i)*exp(-r*(T-t-i));  

8.         i = i+1;  

9.     end  

10.     W = blsprice(St,K,r,T-t,sigma)*100/K + (100*exp(-r*(T-t))+I);  

11. while abs(W-CP) > 0.01  

12. if W > CP  

13. return

14. else

15.             K = K - 0.01;  

16.         end  

17.         W = blsprice(St,K,r,T-t,sigma)*100/K + (100*exp(-r*(T-t))+I);  

18.     end  

19. end  
[/sourcecode]

        得到调整后转股价后,我们就可以开始对可转债进行定价了:

        1. 首先利用GARCH模型来计算标的股票的历史波动率σ;

        2. 假设股价服从几何布朗运动,使用蒙特卡洛模拟出N条路径进行预测:

        3. 对于触发回售条款的路径,因为公司会调整转股价到K,因此投资者会放弃回售,因此可转债触发回售时点T之后的时点的转股价全部变为K;

        4. 对于触发赎回条款的M条路径,因为上市公司会在赎回条款触发后立即执行,因此可转债价值取触发赎回时点T的下一个时点(即T+1)的转股价值,再按照无风险利率进行折现到零时刻,在计算其均值记为Vp;

        5. 对于剩下的N-M条路径,已经完全不受任何附加条款影响,因此我们利用LSM的方法直接计算其价值,记为Vq,其中转股与否取决于当期转股价值和继续持有价值的大小,例如到期日的价值V(T) = max(100*St/X, CP),其中CP为到期日赎回价。

        6. 通过路径加权计算可转债的价值;V = Vp * M/N + Vq * (N-M)/N。

        接下来我们用以上方法对隆20转债(113038.SH)进行发行日(2020/07/31)定价,隆20转债具体附加条款如下:

利率

票面利率:第一年为0.3%、第二年为0.4%、第三年为0.8%、第四年为1.5%、第五年为1.8%、第六年为2%。

补偿利率

在本次发行的可转换公司债券期满后五个交易日内,公司将按债券面值的107%(含最后一期利息)的价格赎回未转股的可转换公司债券。

初始转股价格

52.77

初始转股比例

1.895

初始转股溢价

转股价格调整原则

在本次发行之后,若公司发生派送红股、转增股本、增发新股(不包括因本次发行的可转换公司债券转股而增加的股本)、配股以及派发现金股利等情况,则转股价格相应调整。具体的转股价格调整公式如下(保留小数点后两位,最后一位四舍五入):派送股票股利或转增股本:P1=P0/(1+n);增发新股或配股:P1=(P0+A×k)/(1+k);上述两项同时进行:P1=(P0+A×k)/(1+n+k);派送现金股利:P1=P0-D;上述三项同时进行:P1=(P0-D+A×k)/(1+n+k)。其中:P0为调整前转股价,n为派送股票股利或转增股本率,k为增发新股或配股率,A为增发新股价或配股价,D为每股派送现金股利,P1为调整后转股价。当公司出现上述股份和/或股东权益变化情况时,将依次进行转股价格调整,并在中国证监会指定的上市公司信息披露媒体上刊登转股价格调整的公告,并于公告中载明转股价格调整日、调整办法及暂停转股时期(如需)。当转股价格调整日为本次发行的可转换公司债券持有人转股申请日或之后,转换股份登记日之前,则该持有人的转股申请按公司调整后的转股价格执行。

转股期间

20210206至20260730(发行6个月后)

转股代码

191038

特别向下修正条款说明

在本次发行的可转换公司债券存续期间,当公司股票在任意连续三十个交易日中至少有十五个交易日的收盘价低于当期转股价格的85%时,公司董事会有权提出转股价格向下修正方案并提交公司股东大会表决。上述方案须经出席会议的股东所持表决权的三分之二以上通过方可实施。股东大会进行表决时,持有本次发行的可转换公司债券的股东应当回避。修正后的转股价格应不低于本次股东大会召开日前二十个交易日公司股票交易均价和前一交易日均价之间的较高者。若在前述三十个交易日内发生过转股价格调整的情形,则在转股价格调整日前的交易日按调整前的转股价格和收盘价计算,在转股价格调整日及之后的交易日按调整后的转股价格和收盘价计算。

赎回条款

在本次发行的可转换公司债券转股期内,如果公司A股股票连续三十个交易日中至少有十五个交易日的收盘价不低于当期转股价格的130%(含130%),或本次发行的可转换公司债券未转股余额不足人民币3,000万元时,公司有权按照债券面值加当期应计利息的价格赎回全部或部分未转股的可转换公司债券。当期应计利息的计算公式为:IA=B×i×t/365IA:指当期应计利息;B:指本次发行的可转换公司债券持有人持有的可转换公司债券票面总金额;i:指可转换公司债券当年票面利率;t:指计息天数,即从上一个除息日起至本计息年度赎回日止的实际日历天数(算头不算尾)。若在前述三十个交易日内发生过转股价格调整的情形,则在转股价格调整日前的交易日按调整前的转股价格和收盘价计算,在转股价格调整日及之后的交易日按调整后的转股价格和收盘价计算。

回售条款

本次发行的可转换公司债券最后两个计息年度,如果公司股票在任何连续三十个交易日的收盘价低于当期转股价格的70%时,可转换公司债券持有人有权将其持有的可转换公司债券全部或部分按债券面值加上当期应计利息的价格回售给公司。若在前述三十个交易日内发生过转股价格因发生送股票股利、转增股本、增发新股(不包括因本次发行的可转换公司债券转股而增加的股本)、配股以及派发现金股利等情况而调整的情形,则在调整前的交易日按调整前的转股价格和收盘价计算,在调整后的交易日按调整后的转股价格和收盘价计算。如果出现转股价格向下修正的情况,则上述三十个交易日须从转股价格调整之后的第一个交易日起重新计算。本次发行的可转换公司债券最后两个计息年度,可转换公司债券持有人在每年回售条件首次满足后可按上述约定条件行使回售权一次,若在首次满足回售条件而可转换公司债券持有人未在公司届时公告的回售申报期内申报并实施回售的,该计息年度不应再行使回售权,可转换公司债券持有人不能多次行使部分回售权。

                                                                                                                           数据来源:wind

        1. 对隆基股份(601012.SH)使用GARCH模型预测其股价波动率,考虑到金融时间序列的“肥尾效应”,这里我们选用学生t分布来建模,经过笔者反复试验,使用EGARCH(1,1)和GARCH(1,1)的AIC值大于其他模型(EGARCH略大于GARCH),为简化计算,我们选用GARCH(1,1),用发行日前两年的收盘价时间序列建模,从而预测股价的年波动率(文中假设一年有250个交易日)。具体代码如下:

[sourcecode language='matlab'  light='true']
1. function Fvol_GARCH = Vol(code,B,E,Exchange)  

2.     w = windmatlab;    

3.     %Modeling Interval  

4.     begintime = B;  

5.     endtime = E;  

6.     [w_wsd_data,w_wsd_codes,w_wsd_fields,w_wsd_times,w_wsd_errorid] = w.wsd(code,'close',begintime,endtime,'Priceadj=B',['tradingcalendar=',Exchange],'Days=Trading');    

7.     data = [w_wsd_times,w_wsd_data];  

8.     data = rmmissing(data);    %clear NAN  

9.     prices = data(:,2);  

10.     LogReturns = diff(log(prices));  

11.     tradingDays = 250;  

12.

13.     %Define GARCH & EGRACH  

14.     function vol = fun(LogReturns)  

15.         md1 = garch('Offset',NaN,'GARCHLags',1,'ARCHLags',1,'Distribution','t');  

16.         opts = optimset('fmincon');  

17.         opts.Algorithm = 'interior-point';    % 'sqp'

18.         GARCH = estimate(md1,LogReturns,'option',opts);  

19.         vol = sqrt(GARCH.Constant/(1 - GARCH.GARCH{1} - GARCH.ARCH{1}))*sqrt(tradingDays);   

20.

21. %         figure  

22. %         subplot(2,1,1)  

23. %         plot(V1(:,1:100))  

24. %         title('GARCH Simulated Conditional Variance')  

25. %         subplot(2,1,2)  

26. %         plot(Y(:,1:100))  

27. %         title('GARCH Simulated Returns')  

28.     end  

29.

30.     %Estimated Volatility & Historical Volatility  

31.     Fvol_GARCH = fun(LogReturns);  

32. end  
[/sourcecode]

        经过运行代码计算得到隆基股份的预测年波动率为48.31%;

        2. 使用Monte Carlo生成N条股价预测路径,函数输入参数数据日期选用发行日前一日(2020/07/30),S0取收盘价57.32,转股价为57.22,无风险利率取1年期国债到期收益率2.2350%,T取隆20转债期限6Y,步数nStep取1500(250*6),路径N取1000。实现代码如下:

[sourcecode language='matlab'  light='true']
1. function s = sPath(S0,r,sigma,T,nStep,nPath)  

2.     dt = T/nStep;          %设定步长

3.     s = zeros(nPath ,nStep);  

4.     s(:,1) = S0;            %初始化S0  

5. for j = 1:nPath  

6. for i = 1:nStep-1  

7.             s(j,i+1) = s(j,i) * exp((r-0.5*sigma^2)*dt + sigma*sqrt(dt) *randn);  

8.         end  

9.     end  

10.     figure  

11. for j = 1:nPath  

12.         plot(1:length(s(j,:)),s(j,:))  

13.         hold on;  

14.     end  

15.     hold off;  

16.     title('Simulation');  

17.     xlabel('Step')  

18.     ylabel('Stock Price')  

19. end  
[/sourcecode]

        股价模拟结果如下:

clip_image008

        3. 查找触发回售条款的m条路径,并计算调整后转股价,再查找调整转股价后触发赎回条款的路径,并取触发赎回条款后一节点的转股价值折现作为该条路径的现金流,记为p。

        4. 在剩余的N-m条路径上使用LSM进行定价,LSM回归时只采用价内路径,即当期转股价值大于持有到期价值,得到回归方程后依次比对当期转股价值(IntrinsicValue)和预测的持有价值(ContinuationValue),得出每条路径上的最优转股时刻,再将此时刻的转股价值cashflows折现到期初,最终将cashflows矩阵和赎回路径的p矩阵取平均值即得到可转债的理论价格。

        第3步和第4步实现函数代码如下:

[sourcecode language='matlab'  light='true']
1. function price = pricing(S0,X,T,r,sigma,n,nPath,coupon1,coupon2)  

2.     %coupon是债券息票矩阵

3.     s = sPath(S0,r,sigma,T,n*T,nPath);  

4.     X = X*ones(nPath,n*T);  

5.     p = zeros(nPath,1);  

6.     AI = zeros(1,n*T);   %应计利息现值

7.     FI = zeros(1,n*T);   %持有至到期利息现值

8.     FI(1,:) = coupon2(T);  

9.

10. for i = n:n*T  

11. if mod(i,n) == 0  

12.             AI(1,i) = coupon1(floor(i/n))*exp(-r*(i/n)) + AI(1,i-1);  

13. else

14.             AI(1,i) = AI(1,i-1);  

15.         end  

16.     end  

17.

18. for i = n*T-1:-1:1  

19. if mod(i,n) == 0  

20.             FI(1,i) = FI(1,i+1)*exp(-r/n) + coupon2(i/n);  

21. else

22.             FI(1,i) = FI(1,i+1)*exp(-r/n);  

23.         end  

24.     end  

25.

26. for j = 1:nPath  

27.

28. for k = T-2:T-1    %回售期

29. for i = (1+k*n):(k+1)*n-30  

30. if s(j,i:i+29) < (X(j,i+29)*0.7)         %触发回售条件

31.                     X(j,(i+30):end) = AdjustX(s(j,i+29),X(j,i+29),r,(i+30)/n,T,sigma,coupon1);   %修正股价

32. break

33.                 end  

34.             end  

35.         end  

36.

37. for i= 0.5*n:n*T-30    %转股期

38. if  sum(s(j,i:i+29) >= 1.3*X(j,i),2) >= 15    %触发赎回条件

39.                 p(j,1)=( 100/X(j,i+30).*s(j,i+30) )*exp(-r*((i+30)/n)) + AI(1,i+30);  

40. break

41.             end  

42.         end  

43.     end  

44.

45. for m = 1:nPath  

46. if p(m,1) > 0  

47.             s(m,:) = 0;     %剔除触发赎回条款路径的股价

48.         end  

49.     end  

50.

51.     M = 100*s(:,end)./X(:,end);    %期末转股价值

52.     CP = 100 + coupon2(:,end);     %期末赎回价值

53.     cashflows=max(CP,M);           

54.

55. for j = 1:nPath  

56. if M(j,1) == 0  

57.             cashflows(j,1) = 0;    %剔除触发回售条款路径的现金流

58.         end  

59.     end  

60.

61.

62.     Xtime = n*T*ones(nPath,1);    %最优执行时点初始化为期末n*T时点

63.     discountfactor = exp(-r/n*(1:n*T)');  

64.

65. for step = n*T-1:-1:0.5*n  

66.         Inmoney = find( 100./X(:,step).*s(:,step) > 100+FI(:,step) );    %找出n*T-1时点的价内路径

67.         y = cashflows(Inmoney).*discountfactor(Xtime(Inmoney)-step);     %价内路径对应的n*T时点现金流折现到前一时点记为Y  

68.         x = s(Inmoney,step);    %价内路径对应的n*T-1时点股价记为X  

69.         RegresMat = [ones(length(x),1),x,x.^2];      %最小二乘法回归

70.         a = RegresMat\y;  

71.         IntrinsicValue = 100*s(Inmoney,step)./X(Inmoney,1);   %n*T-1时点转股价值

72.         ContinuationValue = RegresMat*a;          %回归方程所得继续持有价值

73.         Exercise = find(IntrinsicValue > ContinuationValue);  

74.         k = Inmoney(Exercise);  

75.         cashflows(k) = IntrinsicValue(Exercise);  

76.         Xtime(k) = step;  

77.     end  

78.

79.     price = mean(cashflows.*discountfactor(Xtime)+p(:,1));  

80.

81. end  
[/sourcecode]

        3次模拟运算分别得到价格 [134.8204,134.4602,134.6621],由于可转债的上市日通常略晚于发行起息日,因此一般用上市首日收盘价作为发行价。查找隆20转债上市日2020/09/08收盘价为134.6,与理论定价非常接近。

        为了继续研究定价模型的准确性,我们选取债券评级为3A的10支可转债进行发行日定价,可转债具体资料见附录,定价结果如下:

证券简称

上市日收盘价

模型定价结果

偏差

紫金转债

137.89

130.4053

-7.48

南航转债

117

120.6076

3.61

核能转债

102.71

123.5268

20.82

本钢转债

100.066

111.6287

11.56

川投转债

114.05

113.5433

-0.51

隆20转债

134.6

134.6476

0.05

冀东转债

120.62

125.2793

4.66

交建转债

100.65

129.8735

29.22

希望转债

115.04

131.59

16.55

淮矿转债

117.03

127.2698

10.24

        通过对比定价,我们发现部分可转债价格被低估,如下图所示:

clip_image010

        图中蓝线以左(价值被低估)的可转债占多数,这也是国内可转债市场目前普遍存在的问题,笔者认为主要有两方面原因:一方面是由于可转债条款的复杂性,投资者对于可转债的价值判断还缺少认识;另一方面是可转债(T+0)和A股(T+1)的交易机制差异,使得可转债在转股时需要承担隔夜风险,由此造成投资者转股意愿不高,客观上造成了可转债理论价格与实际价格的偏离。

        目前国内监管制度对于发行可转债公司的限制较为严苛,一定程度上保障了可转债市场的稳定发展,但另一方面也相对制约了可转债市场规模的进一步扩大,因此未来可转债的发展更多需要完善的发行制度作为保障。除此之外,国内针对可转换债券的投资者教育也相对比较匮乏,客观上也导致了目前可转债市场的投资者鲜有个人投资者。最后值得一提的是,近几年国内债市违约率不断上升,3A城投神话接连被打破,市场避险情绪阶段性抬升,可转债市场也受到一定负面影响。但长期来看,由于具有融资成本低、流通性高以及抗波动性的特点,未来可转换债券较普通公司债会更受上市公司和投资者青睐。而从监管的角度来看,企业发行可转债可以大大降低债券市场违约的信用风险,对于整个债券市场的稳定发展也能起到一定的积极作用。

参考文献:

1. 郑振龙,林海:“中国可转换债券定价研究”,《厦门大学学报(哲学社会科学版)》,2004年第2期;

2. 郑振龙,林海:“可转换债券发行公司的最优决策”,2003/05/18;

3. Francis A.Longstaff,Eduardo S.Schwartz:“Valuing American Options by Simulation:A Simple Least-Squares Approach”;

4. 长江证券:“可转债定价模型在中国的具体实现”,2008/04/10;

5. 郑振龙,黄薏舟:“波动率预测:GARCH 模型与隐含波动率”;

6. 万得:“wind可转债定价算法说明”;

7. 蔡振宇:“基于拓展的LSM模型的可转债定价研究”,金融硕士专业学位论文,2020/05/20;

8. 罗鑫,张金林:“基于蒙特卡洛方法的含转股价向下修正条款的可转债定价研究”,《金融理论与实践》,2020年第10期;

9. 姚爱萍,丁晓文:“基于修正GARCH模型的可转债定价研究”,《当代金融研究》,2020年第3期;

10. 马林,黄中翔,刘天昀,张慧媛:“可转换债券定价和实证研究”,《金融实务》,2020年第8期;

11. 广发证券:“可转债的波动率套利策略研究”,2013/09/02;

12. 国金证券:“可转债周报”,《固定收益定期报告》,2019/06/08

Popular Posts