量化数据分析

计算N年净利润复合增长率

由hxgre创建,最终由hxgre 被浏览 37 用户

一、定义

净利润N年复合增长率(CAGR,Compound Annual Growth Rate)是衡量一个公司在特定时间段内净利润增长的平均年增长率。它反映了在每年的增长率都保持一致的情况下,净利润从一个初始值增长到最终值的速度。

CAGR的计算公式为:

其中:

  • Vf:是N年后的净利润值
  • Vi:是初始净利润值
  • N:是时间段的年数


除了复合增长率(CAGR),我们更为熟知的简单增长率,其公式为:

从公式来看,CAGR有以下三个特点:

  • 衡量的是在多个时间段内的平均年增长率,假设每年的增长是均匀的;而简单增长率通常是计算两个时间点间的增长量与初始值的比率。
  • 考虑了基数效应,反映了资金时间价值的影响;而简单增长率不考虑时间的因素,也不考虑每年的增长是如何累积的。
  • 适合用于评估长期投资或项目的增长情况;而简单增长率适合用于短期的变化分析。


因此,当我们计算公司收入、利润等指标的增长指标时,一般会采取计算复合增长率(CAGR,Compound Annual Growth Rate)。

二、数据源

我们先看下BigQuant平台上有方法可以获取净利润数据

第一种数据来源是“数据平台 / 财务数据 / 原始数据 ”下面的利润表 -- cn_stock_financial_income_general_pit

原属财务数据属于记录性数据,它会在公司发布财报时相应增加一条记录,比如:

如上图所示,说明 000002.SZ 分别在 2024-03-29、2024-04-30 发布了财务报告,并记录了对应的报告期和相应的财务数据。

这种记录性质的原始财务数据不经过加工处理,很难用于指标计算,比如你在2024年3月29日计算2023年净利润的同比增长率不仅要知道对应的2022年净利润,还要剔除2024年4月30日后发布的任何关于2023年和2022年净利润数据的修改,因为站在2024年3月29日当日,你是不知道后续的数据修改的。

因此,BigQuant 已经为大家对原始财务数据进行了加工,方便用于指标计算,比如:净利润数据我们还可以从以下数据表获取 -- cn_stock_financial_ttm_shift

关于 TTM 的数据介绍,大家可以参考文档:https://bigquant.com/data/datasources/cn_stock_financial_ttm_shift。这里,我们重点介绍这个数据如何使用,比如:我们只看 date = 2024-04-30 这一天的数据如下。

从上图示例数据,可以看出,我们已经在 2024-04-30 这一天计算了截止这一天可以获取的从最新一期至最早一期的净利润TTM数据。这里,我们重点解释两点:

  • 什么叫截止这一天?即前文提及公司很可能在 T 时刻后发布财务更改公告对历史财务数据进行修改,但站在 T 时刻,我们是不知道这些修改后的财务数据的,因此我们加工的这些衍生数据已经消除了未来函数的。
  • 什么叫最新一期?即公司站在 T 时刻的最新一期财务报告,比如 00002.SZ 在 2024年4月30日发布了2024年一季报,则最新一期的财报为2025年一季报(report_date=2024-03-31),对应的shift=0。
  • 什么叫最早一期?即公司上市以来平台可获取到最早一期财务报告,比如 BigQuant 的财务数据是从 2005年1月1日 开始的,所以上市日期早于 2005年1月1日 的股票的最早一期财报一般都是 2005年一季报(report_date=2005-03-31),对应的shift=72。

因此,从分析上面两张数据表,我们很容易确定 cn_stock_financial_ttm_shift 是更好的数据。比如,2024年4月30日00002.SZ发布了2024年一季报,那我们要计算其同比增长率,只需要用 shift = 0 即 report_date=2024-03-31 的净利润 去除以 shift = 4 即 report=2023-03-31的净利润;同样,我们要在这一天计算两年增长率,只需要用 shift = 0 即 report_date=2024-03-31 的净利润 去除以 shift = 8 即 report=2022-03-31的净利润即可。

三、构建过程

  • 获取原数据
  • 根据 date 分组,在每个分组数据中计算其净利润复合增长率

  • 数据转日频

附录

https://bigquant.com/codesharev3/f1cc883e-4ab6-4e3f-b512-7002dc05bdf5

\

{link}