本专栏上期文章论述了使用每股收益历史数据分析上市公司普通股东所持股权价值的理论依据、计算指标和实际操作方法,同时也提到了公司每股收益历史时间序列受众多因素复合影响从而单一使用每股收益数据会使模型出现较大的误差。因此,本期将对公司利润表数据维度进行拆解,剖析利润表收益的组成要素,进行多层次的公司获利能力分析。
上市公司的利润表结构
国内上市公司定期发布的财务报表有普通、银行、证券、保险四类结构规范,上市公司按其实际行业采用相应的结构规范发布数据。以普通行业为例,如下树状图,综合收益总额可按利润表结构进行逐级分解剖析;树状图同级节点按确定关系合成父节点。
在实际分析应用过程中,尤其是在全市场利润表批量分析时,为了保证时间序列样本量充足,以及横向对比一致,可将历史上已淘汰或存在时间不长或相对次要的树状图节点进行整合简化,如下图例。
经过拆解处理后,父节点的时间序列模型可按子节点的时间序列模型合成。除简单的加减合成之外,还可以合理加入更多关系模式,以使分析更符合实际需要。例如:
-
固定的配额关系,比如所得税和利润总额的关系;
-
非固定的衍生关系,比如营业成本变化受营业收入规模牵引,可使用营业成本相对营业收入比率建立时间序列模型(而非直接建立时间序列模型)。
依据上述方法构建各维度之间关联关系,建立一个可进行多层次收益分析的联立时间序列集模型。
利润表模型及股权价值计算的代码实现
分析者可直接使用Python库valuequant实现利润表联立时间序列集建模和股权价值计算。valuequant的时间序列集建模功能可按以下4种维度模型描述时间序列集内各时间序列的关联关系:
-
自驱动模型(auto):时间序列模型使用本身样本数据建模;
-
衍生模型(derive):使用本身样本数据和另一个时间序列(base)样本数据的比值建立时间序列模型,再在推演或者指标计算的过程中使用该比值时间序列模型和另一个时间序列(base)模型进行计算;
-
复合模型(compo):使用树状图中子节点的时间序列模型加减合成父节点模型;
-
配额模型(quota):使用另一个时间序列模型乘以固定比率计算获得。
分析者可按需要分析的时间序列集样本数据和维度关系结构在valuequant以下功能中进行选择:
-
ModelSets:使用自定义的时间序列集样本数据表和自定义维度关系结构