Hidden Data in SEC Filings

In my last email update I shared that we had some temporary databases available on the platform that contain all of the data from the tables that had iXBRL tags. These are flagged as temporary because we have not finished deciding exactly what to include. It seemed like an easy win when we started but we didn’t know what we didn’t know.

In our first pass we naively assumed that if there was a table with an element that had an iXBRL tag, everything of interest would be tagged and so we could safely focus our work on parsing based on the tags. We discovered that was not the case. In other words, there are plenty of tables where some visible data is not tagged. Once that was confirmed we had to refocus our parsing to then capture all data in the tables, tagged or not. Once we did that we discovered another phenomena – some tables in SEC filing have data that is not visible. This is interesting, Manish Pokhrel manages all of our data collection processes. He sent me a file after he did some digging to develop some estimates of the frequency and also the importance of this issue. Out of the 10-K’s filed so far in 2024 approximately 7.5% have one or more tables that contain data/content that is not visible when the filing is reviewed in a browser. Here is an example – the following screenshot is of the balance sheet that was pulled from this filing. The red box sets off the area of interest.

The underlying html has a row element the follows the Convertible note payable that is not visible. The tr element has a style attribute display with a value of none. Thus, the row is not visible. Manish wrote code to find these and added yellow highlighting to the rows after removing the display attribute. Here is an image of the table after extracting and processing (as viewed with our SmartBrowser).

The difference in this case is that the label in the visible row is more descriptive than the label in the hidden row. But that is not always the case, Manish highlighted cases where the hidden row label is more descriptive than the visible row label.

What is potentially unnerving is when the hidden row adds data that is not visible in the underlying html. An example of that can be found in Blink Charging’s recent 10-K (Search for 19,186 in this filing). Here is the actual table in html form after I modified a row that was hidden in the original.

   December 31, 2023 
   Level 1   Level 2   Level 3   Total 
Assets:                
Alternative fuel credits  $   $32   $   $32 
Total assets  $   $32   $   $32 
                     
Liabilities:                    
Option liability  $293   $   $   $293 
Contingent consideration           1,316    1,316 
Warrant liability           32   32 
Common stock liability   743            743 
Common stock consideration payable   18,118            18,118 
Total liabilities  $19,154   $   $32   $19,186 

 

   December 31, 2022 
   Level 1   Level 2   Level 3   Total 
Assets:                
Alternative fuel credits  $   $32   $   $32 
Total assets  $   $32   $   $32 
                     
Liabilities:                    
Option liability  $409   $   $   $409 
Contingent consideration           1,316    1,316 
Warrant liability           24    24 
Total liabilities  $409   $   $1,340   $1,749 

You can actually highlight the row in yellow above and View Source the value 1,316 is an iXBRL element. In the filing the display attribute is set to none.

When we discovered this it meant that we had to run through the filings again and set additional tests to take into consideration the style attributes of the elements we find – without that test we would have included this row without any understanding that we need to proceed with caution.

We have noted significant variation in the values/labels displayed as we have tried various strategies in the past to make this data more available. This data is included in the filing in many places, one of which is in the FINANCAL_REPORT.xlsx file as well as the ‘r’ files. In this particular case the sheet in the xlsx file that contains this data has the hidden row and it is visible. Fortunately, because the entire table content was pasted into one cell in the xlsx file it would take significant effort to transform it into something useful – here is some content from sheet 34 of the xlsx file that contains this data. I highlighted in red the hidden data.


<row r="6"><c r="A6" s="4" t="inlineStr"><is><t>SUMMARY OF ASSETS AND LIABILITIES MEASURED AT FAIR VALUE RECURRING AND NONRECURRING BASIS</t></is></c><c r="B6" s="4" t="inlineStr"><is><t xml:space="preserve">Assets
and liabilities measured at fair value on a recurring basis are as follows: SUMMARY
OF ASSETS AND LIABILITIES MEASURED AT FAIR VALUE RECURRING AND NONRECURRING BASIS
December
31, 2023
Level
1 Level
2 Level
3 Total
Assets:
Alternative
fuel credits $ - $ 32 $ - $ 32
Total
assets $ - $ 32 $ - $ 32
Liabilities:
Option
liability $ 293 $ - $ - $ 293
Contingent
consideration - - 1,316 1,316
Warrant
liability - - 32 32
Common
stock liability 743 - - 743
Common stock consideration payable 18,118 - - 18,118
Total
liabilities $ 19,154 $ - $ 32 $ 19,186
December
31, 2022
Level
1 Level
2 Level
3 Total
Assets:

We have wondered about visible discrepancies when comparing original htm tables to tables from the rfiles and the xlsx this deep dive helps us better understand why these exist.

The ultimate question is what are we going to do about this? We are still talking about it internally. The option we are leaning towards is to ignore the data when there is a display attribute with a value of none. Another option that we are considering is collecting this data and adding another field to the database to indicate that is was hidden. The first option adds less complexity but it does run the risk that there is data that was accidentally hidden that should be available.

These are the kinds of issues that slow us down significantly. I like to think that each time we finish wrestling with something like this we are better than we were. But it sure throws off our schedules. I often think of this Helmuth von Moltke was a Field Marshall and brilliant war strategist in the 19th Century. He first coined the term “no plan survives contact with the enemy”. He was absolutely right and his ideas are still used in war directEDGAR planning. (Note this was lifted from the Google page that displays the results of a search for “plans don’t survive first contact with the enemy”. I am not sure how to cite this since Google does not give any attribution to that snippet.

RDATE vs Filing Date

As I describe elsewhere we use what we call the DEID to name filing we pull from EDGAR and then we use that DEID as the prefix when we create artifacts from filings. The DEID is structured by concatenating the CIK, the RDATE, the CDATE and an FValue with dashes. CIK-RDATE-CDATE-F##.

One of the most common questions we get relates to mapping the RDATE to the filing date. The R in RDATE is an abbreviation for REVEAL – and it really should have been DDATE (for dissemination date). We access the RDATE from the header file associated with each filing. I saw something today that was really interesting and provides a concrete example of why we use the date from the header file rather than the SEC promulgated FILING-DATE (which is also in the header file).

Here is a screenshot from one of our dashboards, I just caught this because I was checking on some work to assign to an intern – notice the FILED DATE (June 3, 2024) and the EDGAR UPDATED TIME STAMP (June 5, 2024, 3:26 p.m.)

We get the EDGAR UPDATED TIME STAMP field from the feed we use – but that value is also used to populate the Accepted field that is in the landing page for that filing as you can see in this shot:

The DEID we will create for this filing will be 1589149-R20240605-C20240603-F24. The CDATE represents the Period of Report value if reported in the header, otherwise it is the RDATE.

Why is the SEC reporting this with a Filing Date of 2024-06-03? I can only speculate but based on everything I have in my system (including the daily-index from yesterday and the day before) this filing was not available to be consumed by a user until about an hour ago (I am writing this at 4:23 p.m. EDT).

I went to the daily index file for 6/3 (Daily Index) to check for the filing and confirm that it was not present. I saved a copy to my computer at 4:28 p.m. and it was not listed. But we have observed in the past that the SEC updates the daily index at times – so I wonder if it will be updated tonight to add the entry for that filing. I will be checking tomorrow to determine if that happens.

For the record – here is a screenshot of the current index state on the SEC index archive:

Finally, this is the current view of the header file:

It will be interesting to follow-up on this tomorrow. If you are in fact intrigued by these kind of issues – download the current master index – iff you are reading this on 6/5/2024 and then check back after 10:30 PM EDT to see if it has been updated.

Update 1 6/6/2024 I expected this to show up in the 6/3 Daily Index – it is not there. It has an interesting presentation in the 6/5/2024 Daily Index:

1589002|Lewis Raymond H JR|3|20240605|edgar/data/1589002/0001834622-24-000070.txt
1589149|Greenwave Technology Solutions, Inc.|DEF 14A|20240603|edgar/data/1589149/0001493152-24-022324.txt
1589706|Chwick Jane|4|20240605|edgar/data/1589706/0001866550-24-000047.txt

Notice that the date is 20240603.