用十支股票跟踪沪深300(上)

阅读本篇所需:基础数学和Excel。

实际操作所用时长:半天左右。

 

正如标题所示,本文内容关于如何选取沪深300指数成分股中的10支股票,通过一系列计算,从而最终得到与沪深300指数涨跌幅最为接近的最优解,即达到跟踪指数涨跌的目的。

下图为文末最后实际测试的计算结果:

用十支股票跟踪沪深300(上)

   1   

沪深300指数介绍

 

首先快速回顾一下沪深300指数整体运作情况。

沪深300指数是由中国A股市场即沪深两市中,具有流动性好、市值大、公司业绩良好等特点的300家上市公司所组成。其于2005年4月正式编制上线,进而综合反映出沪深两市整体表现。

沪深300指数的成分股选取至少需要满足以下条件:公司整体上经营状况良好,无违规,且最近一年A股日均成交金额与日均总市值排名靠前,最后经过内部评判后,选取综合排名前300名股票组成沪深300指数。

在个股权重计算上,沪深300指数不同于普通加权平均(个股流通市值除以300支组成的总市值),其采用分级靠档加权的方法。整个计算公式可以在中证指数官网上找到,在这里就不细说了。

除此之外,为了使沪深300指数能够持续具有代表性,中证公司每年两次对300支股票样本评选更新,分别在每年的5月和11月进行审核。为了保持稳定,每次调整比例不超过10%。

 2  

股票选取

一般来说,股票指数的涨跌幅是由其成分股的涨跌所决定的,但具体的计算方法并不是把所有成分股的涨跌幅加在一起,并把其结果做为指数涨跌幅,这是因为每只股票的“影响力”不同,中国石油的涨2%对指数的影响肯定远超于任何一家创业板公司同样2%的涨幅。那么每只股票的“影响力”怎么计算,其实就是上面介绍里所说的权重。

沪深300支成分股权重可以在中证指数官网上找到,或是在任何财经网站上都有,因为计算每只股票权重需要历史数据分级靠档,比较麻烦,所以关于权重的数据就直接拿来用不重复计算了。

用十支股票跟踪沪深300(上)

沪深300成分股权重排名前20名

在得到权重后,我们就可以用沪深300支成分股的涨跌幅数据来计算出指数的涨跌幅,具体公式如下:

用十支股票跟踪沪深300(上)

为了验证准确性,以2019年5月16日为例进行相关计算,当日300支成分股涨跌情况截选如下,

用十支股票跟踪沪深300(上)

在求和所有股票涨跌幅×权重后,

用十支股票跟踪沪深300(上)

看到结果与当天实际指数涨幅相差0.03%,这或许与指数修正和一些调整计算有关,不过此方法大体上还是比较准确的。

在了解了指数涨跌幅是如何从成分股涨跌幅计算出来后,接下来就需要选取10支股票。通常来说,权重越大对股指的贡献越大,所以为了保险起见,一般都是从最高权重的依次选取,我们就选取权重排名前十的股票。

确定下来买什么股票后,但还有最大的一个问题摆在眼前。每只股票应该买多少,这就需要下面进行数学计算了。

  3  

计算买入比率

 

在此之前,首先需要选择历史数据的时间跨度及周期,这里我们选择最近三年单日交易数据,因为最近的数据最接近当前的市场状况,尽量避免使用十年前的,时间周期则以日为主,周或月时间间断长,不好反应中间市场发生的变化。在确定下来后,接下来就将权重前十的股票历史数据导入到Excel(如何导入数据到Excel可参考我之前的文章,或者也可以自行网上下载)。

用十支股票跟踪沪深300(上)

上图为截选十支股票的日涨跌幅,所有数据是从2016年4月1日至2019年5月17日。

在获取了它们的涨跌幅之后,接下来可任意设定这十支股票的投资比例(之后再做修改),这里就先平均分配了,各投资10%,总和一定要满足相加为一。

用十支股票跟踪沪深300(上)

有了设定的权重,便可计算历史数据中,此资产组合每日涨跌幅如何。

用十支股票跟踪沪深300(上)

在Excel中按照此公式进行计算,得到每日资产组合收益情况:

用十支股票跟踪沪深300(上)

下面,就需要跟历史实际发生的沪深300指数进行比较,我们计算两者之差的绝对值,之后求和。记住只求和到2019年4月1号之前,因为要留一个月的数据反过来查验结果是否接近。

用十支股票跟踪沪深300(上)

用十支股票跟踪沪深300(上)

在做完以上所有步骤后,万事俱备只欠东风,进入关键的最后一步。用Excel中的solver程序算出最优解,是基于数学中的拉格朗日算法。首先需要点击Excel中的option选项添加solver程序,加载完后打开它,整体页面显示如下:

用十支股票跟踪沪深300(上)

页面框整体有三部分需要输入,数字1部分是要输入的最值,这里是要求和误差绝对值最小,数字2为改变值,对应的则是改变十支股票投资比率的部分,最后数字3部分是要添加的条件,本次运算的条件为:投资比率相加为1,每只股票投资比率必须大于等于0,即只做多,不做空。

所有条件输入完后,点击solve电脑开始计算,电脑背后计算的其实是一共:730+10+1+1=742组联立方程。等几秒钟,然后十支股票的最佳投资比率就直接显示出来了:

用十支股票跟踪沪深300(上)

因为本文不构成任何投资性建议,所以隐藏了部分结果。授之以鱼不如授之以渔,希望读者自行尝试,看有什么不同。

 

 测试 

在得到了十支股票的投资比率后,我们需要检验在实际情况中,这个投资组合的表现是否接近沪深300指数的涨幅。前面提到过,在计算历史数据时,最后一个月的数据没有考虑进去,那这一个月的就可以拿来检验,即2019年4月1号至2019年5月17号。

用十支股票跟踪沪深300(上)

还是跟之前同样的方法,计算在电脑给出的最优投资比率下,股票组合涨幅如何,上图的表格展示了部分结果。

把这一个月的十支股票组合涨幅跟沪深300指数涨幅画成折线图会更直观一些:

用十支股票跟踪沪深300(上)

这就是文章一开始展示的结果。

除了大致上的走势接近外,还可以具体计算一些细节,用Excel中的correl函数计算两组涨跌幅的相关性,两者高达0.959。还可以找出哪一天股票组合的涨幅与指数涨幅相差最大,结果显示,在2019年4月16号这一天,沪深300指数涨幅2.77%,股票组合涨幅4.60%,相差1.83%为最大,其他日子平均相差仅为0.4%。

那么,十支股票的跟踪效果不错,如果跟某大型沪深300ETF基金来比呢,也并没有相差多少。

用十支股票跟踪沪深300(上)

某大型基金

用十支股票跟踪沪深300(上)

本文十支股票组合

所以整体来看,此方法性价比还是很高的,只需要有Office办公软件里的Excel就能全部完成。但是在实际操作中要考虑很多问题,比如买股票的股数必须是100的整数倍,这就意味着假如总资产不多的话,在最后计算出来的十支股票投资比率上便无法精确到小数点位,假设总资产10万,贵州茅台的权重为7.41%,意味买入7410元,但以目前900块一股计算,最少要进90000,所以股数上的限制无法完成7.41%的权重。还有就是买卖交易中的费用也要考虑进去,买得股票越多,交易越频繁,成本也就越高。

总之,这不是一项简单的工程,实际操作中遇到的情况需要全部考虑到位,并且在计算方法和选取股票上还要进一步的优化,这些就需要在下一篇中再做细致研究了。

本文不构成任何投资性建议,投资有风险。

 

本文由 产业新干线 作者:NovaLink 发表,其版权均为 产业新干线 所有,文章内容系作者个人观点,不代表 产业新干线 对观点赞同或支持。如需转载,请注明文章来源。

发表评论