Financial KPIs can be used to drive investment decisions. So it was my goal to create a comprehensive set of KPIs across different dimensions that are based on the information which can be determined from EDGAR:
In this document we demonstrate the approach on how to calculate the Growth Parameters
%classpath config resolver maven-public http://software.pschatzmann.ch/repository/maven-public/
%%classpath add mvn
ch.pschatzmann:smart-edgar:LATEST
ch.pschatzmann:jupyter-jdk-extensions:0.0.1-SNAPSHOT
Added new repo: maven-public
import ch.pschatzmann.edgar.reporting.company._
import ch.pschatzmann.display.Displayers
Displayers.setup
true
The simplest approach to determine Growth is to use the filing from 1 year ago to calculate the percent difference. So we compare the reported cumulated values of
The calculation can be done with the method percentChangeMonths: We subtract 12 months to get the values from the previous year!
val values = new CompanyEdgarValuesDB(new CompanySelection().setTradingSymbol("AAPL"))
.setAddTime(true)
.setFilter(new FilterQuarterlyCumulated())
.setParameterNames("NetIncomeLoss", "Revenues","SalesRevenueNet","EarningsPerShareBasic")
.addFormula("Revenue","Edgar.coalesce('Revenues', 'SalesRevenueNet')")
.addFormula("NetIncomeLossIncrease%","Edgar.percentChangeMonths('NetIncomeLoss',-12)")
.addFormula("RevenueIncrease%","Edgar.percentChangeMonths('Revenue',-12)")
.addFormula("EarningsPerShareIncrease%","Edgar.percentChangeMonths('EarningsPerShareBasic',-12)")
.removeParameterNames("Revenues","SalesRevenueNet")
values.getTable
We convert the data to Scala as a preparation so that we can create some charts
import scala.collection.JavaConverters._
val scalaValues = values.toList.asScala
.map(map => map.asScala.toMap)
.toSeq
scalaValues.size
41
val plot = new SimpleTimePlot {
data = scalaValues
columns = Seq("RevenueIncrease%","NetIncomeLossIncrease%","EarningsPerShareIncrease%")
}