Financial-condition grades for SEC filers
How a grade is made, left to right.
Assay grades the financial condition of every eligible company listed on a US exchange, every night, from the accounts each company filed with the SEC. Every company gets one letter. The letter says where the company stands among the companies in its own sector: A is the strongest fifth, E the weakest fifth, C the middle. Half of every sector sits at C or better by construction. A letter is a rank, not a score.
The rank comes from fourteen accounting inputs in three groups: profitability, solvency, and growth and financing. Each input becomes a percentile among the graded companies of the sector, the three groups are averaged with equal weight, and that average is the rank. No share price enters the letter. A company needs at least 7 of the 14 inputs and a sector with at least 100 graded companies to get a letter. The method page lists every input with its formula and its source.
Every figure on a company page was read from an SEC filing, and the bracketed number beside it opens that filing on sec.gov. Only facts the SEC had received by the rescan date are used, so a page for a past date shows what could have been known on that date and nothing filed later. Share prices come from Alpaca's end-of-day feed. They are shown next to the grade for context and never move the letter.
The scoreboard gives the letter, the rank among the sector's graded companies, the three group scores, the size band and any warnings. Warnings appear only when a check triggered: dilution, a short cash runway, a late filing, distress, degenerate inputs or thin data. The fourteen inputs follow, each with its value, its percentile, the peer median and the receipt. The peer curve shows where the company sits in its sector, and the rescan chart shows the letter it held at every past rescan. Every past rescan opens the page as it was computed that day.
The grade is not a return forecast and not investment advice. Across free data since 2015, no accounting input used here showed a return premium with a confidence interval that excluded zero, so the site makes no return claim and shows price measures without a verdict. What the grade has been tested against is failure: whether a company filed a bankruptcy notice, an 8-K Item 1.03, within a year. On that outcome the failure model scores 0.877 AUC out of sample, which means it ranks a company that went on to fail above one that did not about 88 times in 100. The reliability table gives the figure for each size band with its interval.
The job runs every night at 03:00 New York time. It downloads the SEC's bulk XBRL archives, recomputes every company from scratch, checks every percentile and letter against the published receipts before the new pages replace the old, records the rescan, and rebuilds the site. Rescans are kept daily for 92 days and monthly back to January 2012. The run log lists every run with its log. Today the SEC file lists 10,435 tickers, 3,545 of them eligible and 2,204 graded; the coverage page gives the reason for every exclusion.
Pages are static files with one small script for tooltips and charts, no cookies and no trackers. The code is Python with nothing beyond the standard library, and it is public.
Code: github.com/ekruges/assay · ezrakruger.cc