在我昨天文章的计算中,中债 - 30 年期国债财富 (总值) 指数的历史表现看起来是不如中证沪 30 年国债。
但昨晚盘后我再直接用 Wind 对比这两组年度数据的时候,却发现结果是反的 —— 实际上中债指数的历史回报高于中证的。
查了半天底层数据,才发现真是隔行如隔山,平常研究 A 股多,一旦跨界债券领域,就踩了一个大坑 ——交易日不对齐。
首先要普及一个知识,30 年国债这类债券指数的成分债券,除了在上证所这样交易所上市之外,还有一个交易场所是全国银行间债券市场。
而全国银行间债券市场的开市日期,与沪深两地证交所,是不完全同步的 ——在一些 A 股休市的日期,全国银行间债券市场也是交易的。
中债 - 30 年期国债财富 (总值) 指数是中央国债登记结算有限责任公司中债金融估值中心编制并发布,只要有债券交易,哪怕 A 股休市,也会有指数更新。最明显的例子就是今年 2 月 4 日是周日,周日 A 股惯例是不开市的,但是因为银行间市场是开市的,所以那天中债 - 30 年期国债财富 (总值) 指数有更新。
而上证 30 年期国债指数,是 “从上海证券交易所上市的债券中,选取符合中国金融期货交易所 30 年期国债期货近月合约可交割条件的国债作为指数样本”,所以上证所休市的时候 (比如 2 月 4 日),他就没数据了。
在计算各类指数的收益数据 (比如年化收益、波动率) 之类,采用的都是 empyrical 这个 python 的统计包,这个包是以日涨跌幅数据作为基础数据来计算的。
问题就来了,当你用 python 接口从 Wind 调用数据的时候,需要交易所日历。因为一直研究 A 股,至多是偶尔用到港交所和美股,所以在这次计算两个 30 年国债指数时,压根没意识到必须要切换到银行间债券交易市场的交易所日历,才能提取完整的数据。
是的,因为我用的上证所交易日历,所以提取出来数据会漏了那些上证所休市但银行间债券市场开市的日期,导致中债 - 30 年期国债财富 (总值) 指数的日涨跌幅数据漏了好几天,所以算出来的结果就全然不靠谱了。
下图是直接用两个指数的收盘值,以 2011 年 1 月 4 日为基点,绘制的走势对比,可以看到其实中债 - 30 年期国债财富 (总值) 指数其实还是比中证的两个 30 年国债指数强上这么一点点的。
最后的最后,还是要反思一下,魔鬼在细节之中 (The devil is in thedetails),以后遇到不熟悉的市场类别,数据还是要多校对。其实如果我直接提取年涨跌幅数据,就能规避交易日日历造成的误差,这两个数据的确就能校验出错误了。返回搜狐,查看更多