【指数数据处理】 —— 指数的成分股参考日调整
By 关小A
2021.09.03
问题
万德仅在每月月末有准确的指数成分数据,因此提取T日的指数成分时,必须将date调整为最近的指数是准确的日期。
从2013年12月起,指数定期调整的生效日为每年的6、12月的第二个周五后的第一个交易日。另外指数会有非常偶尔的临时调整(50、300和500在13年12月后均没有临时调整)。为了保证临时调整不影响指数成分的选取,我们为T日的成分股列表参考日(consti_date)设定如下算法:
-
取比T小或相等的调整日里最大的一个,记作adj_date
-
如果比T小或相等的月末里最大的一个月末,记作M1。如果M1 > adj_date,则取M1
-
不然,则取比adj_date大的月末里最小的一个,M2
结论
这种方法取到的consti_date大部分情况下都是上个月月末,在每个月的月末,和6月和12月的[adj_date, 月末],取到的是本月月末。
误差
当且仅当临时调整发生在(consti_date, T] 或者 (T, consti_date]之中时,成分股会有误差。该误差会不会再下月初消失呢?
-
当T不在6月或12月的[adj_date, 月末],consti_date ≤ \leq ≤ T。如果临时调整日发生在(consti_date, T]之间,会造成T日的成分股有误差。当T_new来到下个月月初时,consti_date_new至少是T日所在月份的月末(或者说T_new日所在月份的月末)。这时临时调整日一定在(consti_date_new, T_new]之外(当然更加在(T, consti_date_new]之外)。所以当T不是在调整月份的下旬时,前进到下个月误差会自动消除。
-
当T在6月或12月的[adj_date, 月末]时,consti_date ≥ \geq ≥ T,下一个关注点区间是(consti_date, T_new],显然和consti_date没有重合,所以前进到下个月,误差也会自动消除。
因此,等到下个月月初,这种误差会自动更正。