方法论
本站的每一条曲线都是拟合出来的,而不是画出来的。进去的是一片单只债券构成的点云,出来的是一条线。
推导收益率曲线有几种标准做法。
- Nelson-Siegel-Svensson。几个参数,一个干净的函数形式,由各国央行发布,任何一门固定收益课程都会讲。
- 基准券。曲线上每个期限——2 年、5 年、10 年——各选一只债券,它的收益率就是那个点的收益率。简单、干净:没有模型,没有参数,也没什么可争的。你每天读到的那些标题收益率,大多也来自这里。
在深度好、流动性强的国债曲线上,两种做法都够用。不过它们各有一些已知的毛病。
- 随着时间推移,10 年期基准券会变成 9.95 年、9.90 年、9.85 年……然后基准切换到一只新发行的债券,又回到 10 年。就在那一瞬间曲线动了——不是因为市场动了,而是因为它下面的那只债券被换掉了。
- 只有少数几个期限配有基准券,所以曲线并不真是一条连续的线,而是在离散点上采样得到的。除了简单粗暴的插值之外,没有真正的办法从中取出一个 8.8 年的值。
- 而且,虽然很接近,9.8 年终究不是 10 年。在曲线陡峭的区域,这个差距就是公布数字里的一处偏差——它跟着发行日历走,而不是在平均之后互相抵消。
换到分散的信用债上,它们就彻底失灵了。
- 信用债的样本既稀疏又不均匀。一家发行人可能有十一只债券,其中八只挤在三到七年之间,另外还有一只孤零零的 2045 年到期。既没有 10 年期的券可以指定为基准,也没有 5 年期的。Svensson 至少能在完整的期限区间上优雅地插值,但它应付不了空缺,于是那一只长券最后决定了它下方所有部分的形状。
- 参数是全局的,所以一个坏价格会污染整条线。信用债成交清淡。报价会变陈旧,成交金额小,而一笔偏离市场的成交看上去和真实成交一模一样。最小二乘拟合会给它满额权重;又因为每个参数都作用于所有期限,四年附近的一只异常债券就能把三十年的点抬起来。这个模型里根本没有局部性可言。
- 形状是错的。 Nelson-Siegel 预设了曲线应该长什么样:水平、斜率、一到两个隆起。信用曲线并不总是买账。它们会走平,会出现折点,会在市场担心某个主体时在短端倒挂,会在一簇可赎回债券所在的位置形成台阶。被硬塞进模型之后,这些特征要么消失,要么变成一个谁也没放进去的隆起。
我们在这上面打了很久的补丁:加权方案、约束条件、激进的预筛选。每一次修补都在一条曲线上换来一点精度,同时弄坏另一条。到最后我们清楚了:这是修不好的。
所以我们自己做了一套
这花了很长时间。盯着那些结果不对的曲线,弄明白数据究竟在做什么,然后回过头重来。在我们覆盖的每一种货币、每一个评级区间和每一个行业里,每个交易日、成千上万条曲线地反复。
最后成型的东西,建立在三个想法之上。
- 异常值识别和曲线拟合方法本身同等重要。正如那句老话:垃圾进,垃圾出。
- 层级为王。一条窄口径的曲线,和包含它的那条更宽的曲线,是在彼此知情的前提下拟合的;这样一来,在证据最充分的地方做出的判断,能够带到证据稀薄的地方去。
- 持续迭代。我们目前每天生成大约 5,000 到 10,000 条曲线,数据和曲线形状每天都在变。每一天、每一个边缘情形,都是打磨方法的机会。
我们的数据来源
评级取自我们观察到的、评级机构公开发布的信息中该发行人各项评级的中位数。bondScovery 不是评级机构,也不表达自己的信用意见。
价格反映的是公开可得的收盘市场成交与报价。行业分类、发行人归并,以及在它们之上的其他指标,均为 bondScovery 的独立分析。
发现某条曲线看起来不对?这对我们非常有价值。联系表单会直接送到做这件事的人手里。我们不少像样的改进,都是从有人指着一条线说“这不可能对”开始的。