devlog · · 3 min read
Similar concepts: one row, still as reported
Why a line a company filed under a different accounting concept over the years stays on a single row, and why it is still as reported.
What is an accounting concept?
In an annual report filed with the SEC, every line of the financial statements has several attributes. Two of them matter here: its label and its accounting concept.
The label is the text you read in the table, such as “Net sales”. It is written for people, and the company words it as it likes.
The accounting concept is written for software. Filings come in a format called XBRL, where each line is tagged with a concept that tells a computer what it is. Most concepts come from US GAAP, the official dictionary shared by all US companies, and start with us-gaap_, such as us-gaap_SalesRevenueNet. When none of them fits, a company can create its own, prefixed with its own name: NVIDIA, for example, files some lines under concepts starting with nvda_, which no other company uses.
Take Apple’s revenue. In every annual report since 2009, the line reads the same: “Net sales”. But behind that label, Apple filed it under three different concepts over the years:
us-gaap_SalesRevenueNet 2009 → 2017 · $ in millions | Fiscal year | 2009 | … | 2010 | 2011 | 2012 | … | 2015 | 2016 | 2017 |
|---|---|---|---|---|---|---|---|---|---|
| Net sales | 36,537 | … | 65,225 | 108,249 | 156,508 | … | 233,715 | 215,639 | 229,234 |
us-gaap_Revenues 2018 only · $ in millions | Fiscal year | 2018 |
|---|---|
| Net sales | 265,595 |
us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax 2019 → 2025 · $ in millions | Fiscal year | 2019 | … | 2020 | 2021 | 2022 | 2023 | 2024 | 2025 |
|---|---|---|---|---|---|---|---|---|
| Net sales | 260,174 | … | 274,515 | 365,817 | 394,328 | 383,285 | 391,035 | 416,161 |
So what would a unified table of Apple’s revenue since 2009 look like, the kind Before Invest builds?
Three rows, or one
Here is Apple’s unified revenue table since 2009:
| Fiscal year | … | 2009 | 2010 | … | 2017 | 2018 | 2019 | … | 2025 |
|---|---|---|---|---|---|---|---|---|---|
| Net sales | … | 36,537 | 65,225 | … | 229,234 | – | – | … | – |
| Net sales | … | – | – | … | – | 265,595 | – | … | – |
| Net sales | … | – | – | … | – | – | 260,174 | … | 416,161 |
All the numbers are there, and they are all correct, but Apple’s revenue is now spread over three rows. A fundamental analysis based on this table would be tedious at best: you can’t get a sense of how revenue has evolved at a glance, and you can’t chart it. Left as they are, these three rows lose much of their value.
The same problem comes up in every company.
To solve it, we built into our engine a system that spots these similar concepts, company by company and year after year, in order to bring them together on a single row:
| Fiscal year | … | 2009 | 2010 | … | 2017 | 2018 | 2019 | … | 2025 |
|---|---|---|---|---|---|---|---|---|---|
| Net sales | … | 36,537 | 65,225 | … | 229,234 | 265,595 | 260,174 | … | 416,161 |
us-gaap_SalesRevenueNetus-gaap_Revenuesus-gaap_RevenueFromContractWithCustomerExcludingAssessedTax
This is the only change Before Invest makes to the statements companies file with the SEC, and it touches no data: every value is still the one Apple filed for that year, which is why the table is still as reported. We chose to bring these rows together wherever possible, so that tables going back to 2010 stay readable and support a complete, consistent fundamental analysis.
Finding them is the hard part
Adding or removing one of these groupings is easy. We built the engine so that a pair of concepts can be added or removed in a moment, and every table on the site is rebuilt instantly to match, with nothing to redo by hand.
Finding them is another story. Most of these pairs are specific to a single company, and many involve concepts the company created itself, like NVIDIA’s nvda_ ones. They have to be identified one by one, company by company and statement by statement.
It is careful work, and it is almost certainly imperfect. Some similar concepts have surely not been found yet, and the engine will keep being refined to find as many as possible. If, during your own analysis, you come across two rows that are obviously the same line, you can tell us with the “Report a bug” button on any company page. And if you ever see two rows grouped together that you think should not be, you can report it the same way.
Vincent Lagache · Founder