StockTools is a free stock research site: company workspaces built from SEC filings, trackers for insider, fund and congressional trades, screeners and calculators, with the source and the date beside the figures. Start with a company workspace, the full list of tools or the earnings calendar.
Anyone can call their data accurate. This page states the specific rules that decide what gets published, what gets withheld, and what happens when a source disagrees with itself. Each one is enforced in code, and where a rule has already caught us being wrong, that case is named.
Coverage, as counted
Companies with a stored snapshot
142newest written 2026-11-09 18:44 UTC
Dividend histories derived from filings
142including companies that turn out to declare none
Equities ranked on the market-wide board
2,951session of 2026-11-06
Filter removals on public record
46across 12 sessions
Form 4 trades in the insider dataset
149 by insiders of 82 companiesfiled in the 45 days before 2026-11-09 18:11 UTC
Funds with their latest 13F filing
64 funds, 37,148 positionswritten 2026-11-09 18:52 UTC
Congressional trade reports filed in a week
17the week before our last read of the compiled file, built 2026-11-07 06:03 UTC
Counted 2026-11-09 20:37 UTC from the same stores the product reads, and recounted at most once an hour, so the figures cannot drift away from what the site actually holds.
Last changed 2026-11-05.
Six rules
1. Derive by arithmetic. Abstain on contradiction.
A derived figure must be arithmetic on values the filer actually filed. Never a cadence assumption, never an average, never a projection. The case that produced the rule: standalone fourth-quarter dividend facts frequently do not exist in XBRL, because many calendar-year filers report only a nine-month and a full-year cumulative. That quarter is reconstructed as the filed full-year figure minus the filed nine-month figure. Two filed numbers, one subtraction.
The abstention half matters more. Some filers tag every cumulative period with the quarterly rate rather than the running total, and a naive subtraction against those invents a quarter that was never declared. So the nine-month figure is checked against the quarters the filer reported itself, and when they disagree we publish nothing for that period. The filer’s own quarters can refuse a derived value; they never build one. Reconstructed points are labelled derived and are not called estimated, because nothing was estimated.
2. A missing input is not a correction.
When a price feed returns nothing, that is an absence of new information, not evidence that the old price was wrong. Snapshot writes carry the last good value forward with its own timestamp instead of overwriting it with null. The whole price-derived group moves together, because carrying a price while recomputing a market cap against fresh share counts would mix vintages into a number that never existed at any moment. Staleness stays visible rather than becoming an empty cell.
3. What the filters removed is published.
Daily bars are raw traded prices, so a split or a bad print can look exactly like a huge move. Two guards decide what reaches the movers board, and both are thresholds we chose rather than facts about the market. Every name they remove is recorded with the reason and the number behind it, and those records accumulate across sessions. A strong filter quietly becomes censorship if nobody outside the codebase can see what it took out. Read the exclusion log.
4. Counts are computed, never typed.
Every count shown as proof, on the homepage and on this page, is computed from the underlying registry or database at build time. A typed number is correct on the day it is written and silently wrong afterwards, and a proof figure that drifts is worse than no figure. For the same reason no headline number on this site depends on a scroll-triggered animation to exist, which would make it invisible to anything reading the page rather than looking at it.
5. Say what is not covered.
Coverage boundaries are stated at the point of the claim rather than in a footnote. Rankings over the covered set say so in the heading and give both denominators, and market-wide boards are labelled market-wide only when they really are. The distinction is the difference between two honest claims and one dishonest one.
6. No placeholder dates.
An event sits on a calendar day only when it carries a date that day can stand behind: the filing date of a results 8-K, a date the company stated (labelled by source), or the midpoint of our estimated window, labelled as an estimate. An event with none of these is listed apart and counted, and is never given a day to fill a square. One shared check places every calendar (earnings and offerings), and a guard fails if an undated event lands on a day.
What can still go wrong
The rules narrow the ways a number here can be wrong. They do not close them.
The company can be wrong. We show what it filed. When it amends a report, the amendment replaces the original only after our next run, and until then the page shows the first version.
A pipeline can fail. The page then keeps the last good data under its original date, so a figure can be older than it looks at a glance. The date beside it is the check, and the ingestion ledger lists every failure.
We can misread a filing. Filings are long documents with uneven tagging. A reading that fails one of our checks is withheld; a wrong reading that passes them stays wrong until someone notices. Tell us when you see one.
A filter can drop a real move. The movers guards are thresholds we chose, and the 7 August 2026 case below is one they got wrong. The exclusion log shows everything they remove.
A projection can miss. An earnings date the company has not announced is projected from its own filing history, and companies move their dates. The confidence backtest measures by how much.
A price is not live. A stock price here is the close of the latest completed session, so anything that has happened since is not in it.
Another provider can be wrong. FINRA, Cboe, FRED and the rest are shown as they publish. We name the source and the date; we do not audit their numbers.
One meaning for each word
A word on this site means the same thing on every page that uses it. These are the ones a reader could read two ways.
Relative volume. The last session’s shares over the average of the 20 sessions before it, on the volume tool and in the scan builder alike. Under 20 earlier sessions, no multiple is shown.
Volume against its own history. The share of a stock’s earlier sessions, up to 252, with lighter volume than the last one. Under 60 earlier sessions, nothing is shown. Each stock is ranked against itself, so about 5% of stocks read 95 or more on any session by arithmetic.
Unusual volume. On the preset scan, a last session at 3 times or more the median of the 20 sessions before it.
Volume by period. A period’s average session against the average session in the 252 sessions before it, so a period is never compared with itself. That is a different comparison from relative volume, and the table says so.
What changed in a report. On a 10-Q or 10-K: revenue, net income and operating cash flow against the same period a year earlier, both taken from that filing. A figure is left out when the filing has no period within ten days of the same length. Operating cash flow in a 10-Q is usually year to date, and the line says so.
Health scores. The Piotroski, Altman and Beneish scores are not assessed for a bank or insurer, because all three were derived on non-financial companies. The fair-value band gives the same reason.
52-week high or low. The highest or lowest close of the last 252 sessions, the last one included. Closes, not intraday prints.
P/E. The last close divided by diluted earnings per share over the last four filed quarters, or the last fiscal year when quarters are missing. It is printed only when those earnings are above zero: a loss reads “loss, no P/E”, and a company with no diluted EPS on file reads “no EPS filed”.
Above or below an average. Only the sign of the distance between the last close and a moving average of closes: above when the close is higher, below when it is lower, with the distance printed in percent beside it. There is no threshold and no reading of what the position means.
Your growth against the filed rate. Beside the fair-value sliders, the difference in percentage points between the stage-1 growth you set and the company’s realized growth over filed years: higher or lower is only its sign, and within 0.05 of a point it reads as a match. It is not a judgment of either number.
Higher or lower in the restatement ledger. Only the sign of the later filed value minus the value first filed for the same period, with the size printed beside it in currency and percent. There is no threshold, and a change is never read as good or bad; changes under 0.05% and stock split ratios are counted but not listed.
A figure we do not have. Where a figure cannot be computed, the cell says why in words where the figure would be: no stored close, no prior close, no share count, no EPS filed, loss, no P/E, not scored, inputs not filed, not reported, not meaningful for this kind of company, nothing computable, or unknown when the filings cannot answer. It is never a bare dash, and a withheld sample names its floor.
Delayed and end of day. Prices and volume here are end-of-day bars unless a page says otherwise. Options figures come from a feed about 15 minutes behind, and open interest updates once a day, before the open.
Numbers inside guides
Data pages carry a source and a date beside each figure. The guides are prose, so they follow a rule a sentence can carry. We audited every guide in November 2026: of about 1,250 sentences holding a figure, almost all were worked arithmetic, conventions such as a 14-period RSI, or published rules such as a tax rate. The figures with no owner were claims about market history or research, such as a long-run return or an average decline, and 15 of those sentences named nobody.
A claim about market history or research names its originator in the same sentence: an author, an institution, a dataset, or us when we measured it. Where we computed the figure from someone else's table, the guide's source list says so and dates it.
A made-up figure says it is made up. Worked examples are marked as examples, so a round number in a sum is not read as a fact about the market.
A figure we cannot attribute comes out. We removed the unattributed claims or replaced them with a sourced figure; none was kept by softening its wording.
Each guide prints its split under its date, before its first number. A check runs over every guide in the build and fails when a history or research claim names no originator.
Pages nobody maintains
A design concept or a frozen copy, or a page that reads no data and whose code has not changed in 90 days, carries a dated archive notice naming the page to use instead, and leaves search and the sitemap. Every page on the site, by when it last changed, is listed with the rule.
Sample floors: when a rate is withheld
A rate from a handful of cases reads as far more certain than it is. On each surface below, a rate under its floor is not printed: the page shows the count and withholds the percentage. Some tools mark a small-sample rate as low confidence and print it anyway; these surfaces print no percentage below the floor, and the count stays on the page so you can see how close it is. Each floor is read from the code that enforces it.
What is withheld below the floor
Floor
Where
A rate or an average in your trading journal: win rate, profit factor, stops logged, any table bucket (average R counts only trades with a stop)
Company facts in XBRL from 10-K and 10-Q reports, 8-K filings, filing full-text searchFetched from sec.gov and data.sec.gov directly. No filings vendor sits between us and the filer.
A 10-Q is due 40 or 45 days after the quarter ends and a 10-K 60 to 90 days after the year ends, depending on company size.
SEC Form 4
Purchases and sales of a company’s stock by its officers, directors and 10% ownersRead from the filing itself, so the trade date and the filing date both show.
Due within two business days of the trade.
SEC Form 13F
Quarterly holdings of the institutional managers we track, and each company’s institutional holdersA record of what a fund held on the quarter’s last day, not what it holds today.
Quarterly, due within 45 days after the quarter ends.
Databento (EQUS.SUMMARY)
Daily open, high, low, close and volume for the whole US equity market, plus instrument definitionsRaw traded prices, not adjusted. That is why the movers guards exist.
End of day, not real-time: every price is the close of the latest completed session.
Congressional disclosures
House and Senate periodic transaction reports, plus the congress-legislators rosterFiled on a lag that is measured on the disclosure-decay page rather than glossed over.
Members must report a trade within 45 days, and some report later.
FINRA
Consolidated short interest, twice a month, and daily short sale volumeFINRA is the owner and source of this data. It is free here and not for redistribution.
Short interest is 9 to 26 days old when we read it; short volume is each session’s own file.
Cboe
Options open interest and quotes for max pain, implied moves and GreeksThe accuracy page scores the output against what the underlying actually did.
About 15 minutes behind the market.
FRED and the US Treasury
Macroeconomic series, the economic release calendar and the daily par yield curveSt. Louis Fed, cited by series where used; first prints are kept beside revisions.
As current as each agency’s latest release.
Wikidata and Wikimedia Commons
Company logosFetched once and stored by us. Never hotlinked, because a render-time logo puts a third party in the page load and hands them every visitor’s IP.
Not time-sensitive.
These are the main sources. The data sources page lists every host we read, with its cost, its schedule and when a read last worked. To take the filing data yourself, data access lists every free export, feed and the MCP connector, with the terms that come with each. When a source changed what it publishes underneath one of our series, the source breaks page dates it and says what we did.
Where we score ourselves in public
A methodology is only worth as much as its error record. Three surfaces publish ours, each one measuring something that could embarrass us:
Does max pain work? scores our own max-pain output against what the underlying actually did, rather than asserting the calculation is useful.
Disclosure decay measures whether congressional trades still perform once the public can see them, which is the question that decides whether the whole tracker is worth reading.
The exclusion log lists every name our own filters removed from the market board, with the margin by which each one failed.
The ingestion ledger shows when every pipeline last ran and how fresh each dataset is, failures included.
The refusal ledger is the dated record of every computation we declined, with the reason.
Every AI prompt, published: the exact instructions, versions and model behind each AI read, and the format each must answer in.
The AI figure check compares every figure a stored AI read states with the figure our code derived from the filings, and lists each disagreement; the settled scenarios write down each filed outcome a read names and settle it when the next 10-Q or 10-K lands.
The claim log records each dated claim we publish once, with its time and source, and appends corrections instead of editing; every figure with a source token also carries a machine-readable attestation, and that page counts how many do.
The confidence backtest asks whether our own high/medium/low labels on projected earnings dates actually predict accuracy, walk-forward with no lookahead. It prints its own weak spots beside the result: scoring starts at a company's fifth report, which leaves the low label with few or no scored points, so the bottom of the scale goes largely untested; and when one label covers most of the sample, the page says the tiers are badly unbalanced, because a label that almost never changes carries little information even when it is accurate.
The earnings date parser’s eval counts what the parser decided on real scheduling filings, every refusal by its reason, and the fair value band audit counts which stocks get a band and why the rest do not. Each page is dated to its last stored run and says what it has not measured. The band’s calibration record keeps each band’s low and high from the day it is set and scores later closes against it, abstaining until a label has enough scored snapshots.
The settlement referee grades every dated claim on this site under one rule and publishes what it refused to grade, with the reason. A hit rate whose denominator is picked by the grader is not a measurement, so the abstention count sits beside every figure.
Fund holdings come from SEC Form NPORT-P rather than a data licence, so the page publishes how old each fund’s holdings are and what share of them we could not match to a ticker.
The liquidation map reads public positions account by account, and no list of all accounts exists, so every map prints the share of open interest it covers and coins below the floor are withheld by name.
Where a company is incorporated is read off the cover of its latest periodic report, not EDGAR’s company directory. The two disagree on a few companies, and each disagreement is named on the page rather than resolved silently.
The File Drawer lists every validation test we have run on our own methods and on claims we checked, with the control, the sample and the result, including the tests that found nothing and the ones that killed a feature.
Parser disagreements keeps every distinct reading our code makes of a filing, with the parser version behind it, and lists the readings of one document that disagree, both figures side by side.
The restatement ledger lists every headline figure a later 10-Q or 10-K printed with a different value for the same period, the first and later filing for each, and counts the far larger number that were simply repeated.
Coverage: US filers and foreign filers on EDGAR. We cover companies that file with the SEC: US filers, and foreign companies that file a 20-F or 40-F. Those reporting under IFRS get their annual figures in the currency filed; the page lists what is mapped and what is not. We do not cover companies that file only abroad.
The abstention rate measures how often we decline to answer at all, counted server-side against attempts — and any ticker can be checked for its own refusals from that page.
What an earnings date label means
The earnings calendar tags each company with one of four states, worked out from the company's own SEC filings rather than taken from a vendor's calendar:
REPORTED, with a date: in the last 20 days the company filed an 8-K under Item 2.02 that we read as the quarter's results rather than a pre-announcement. The date is that filing's, and the next window is projected from it.
WINDOW OPEN NOW: today falls inside the projected window, which runs from five days before the projected date to five days after it.
EXPECTED: the projected window is still ahead.
CADENCE UNCLEAR: no projection, on purpose. Either the company has fewer than three results filings, or fewer than two gaps of 75 to 110 days between them, or its last window passed with no new results filing. The calendar shows the last report date instead of a guess.
The projected date is 52 weeks after the same quarter's report a year earlier, moved to that report's weekday. With less than a year of history it is the last report plus the median gap between reports, moved to the company's usual weekday when it has one. Where a date has been announced, the calendar shows it instead and labels where it came from: the company's own filing, its own site, or a third party, which is never called confirmed. A company that is on the calendar only because a date was announced shows as EXPECTED. The confidence backtest measures how often a projection lands within a week of the real report.
When we have been wrong
On 7 August 2026 the guard that rejects malformed price bars was scanning the entire comparison window instead of the two bars actually being compared. It removed a stock that rose 137.9% on $285.5M of turnover, the second largest gain in the market that session, because of a stub bar two sessions earlier that played no part in the calculation. The exclusion log is how it was found. The guard was narrowed to the two bars that form the comparison and the board was rebuilt the same day, which put the name back where the arithmetic had always placed it.
The correction is on this page for the same reason the log exists: a filter nobody can inspect is indistinguishable from a broken pipeline, and an accuracy record with no error case in it has not been tested.
What we deliberately do not do
No price targets and no recommendations, with one labelled exception. We analyse securities; we do not advise people, and nothing here accounts for anyone’s circumstances. The exception is the AI Trade Planner, which labels stocks and computes price levels by a formula published in full.
No blended composite scores, outside one named tool. Quality tests gate what is eligible for a ranking and are never mixed into the rank itself, because a blended number cannot be explained in a sentence. The AI Trade Planner’s conviction score is the exception, and its five weights are printed so it can be.
No undenominated claims. A percentage without its denominator, a precision figure without a sample, or a rating without the body that issued it are all the same failure, and none of them appear here.
No simulated or hypothetical performance presented as a result. Where a figure is measured, it says what it was measured over.
Sources we declined
The site runs on public and official data on its providers' terms. These are the sources that would have broken that rule, or cost more than the feature was worth, and what we do instead.
Real-time and intraday stock quotes. The cheapest licensed route we priced on 2026-10-12 was 1,500 USD a month on an annual contract, and the exchanges’ own feeds cost more and charge per reader. Stock prices here are end-of-day closes instead.
Quotes taken from a portal’s undocumented API. Showing them to the public is redistribution nobody licensed. Two of our own fetches did exactly that, calling Nasdaq’s quote API under a browser’s User-Agent; both were removed on 2026-10-12, and the build now fails on any User-Agent that claims to be a browser.
Consensus forecasts. Survey and analyst consensus is licensed data. The economic calendar prints the result as the agency first published it, beside its value today.
A corporate-actions feed. The movers guards tell a split from a real move by its volume instead, and every name they remove is published.
Licensed scores and panels. ESG ratings, foot traffic and card spending are sold under licence and cannot be computed from filings, so none appear here.
Historical options open interest. The vendor we checked has none at any price tier, so the max pain history is our own snapshot after each weekday close and starts when our recording did.
What waits on a licence or a constraint
Intraday price alerts. Stock prices are end of day, so an alert can only fire on a session close. Alerts on a line drawn on a chart do exactly that.
Intraday trade tapes for readers. Our Databento licence covers end-of-day display; showing intraday data needs Databento’s written confirmation first, so the trade review tool stays private to the site owner.
Prices in the AI connector. Our end-of-day prices are licensed for display on our own pages. Passing them to other applications is redistribution, so the connector returns no prices, market caps or moves.
FINRA short data and congressional trades in the AI connector. FINRA’s terms restrict redistribution, and the congressional records come from a third party’s compiled dataset, not ours to pass on.
New tools on Cboe’s option quotes. Cboe’s site terms allow personal, non-commercial use, and more needs its consent. We kept the existing max pain suite and build nothing new on the feed.
A declared next dividend, and a same-evening market read. Both came from Nasdaq’s undocumented quote API and went with it on 2026-10-12. Dividend pages show the filed history and a labelled projection.
Valuation multiple history, at risk rather than blocked. It is built on Tiingo’s adjusted closes, and Tiingo’s free plan does not allow display, so it runs under a dated exception while the owner chooses a licence or another source.
Every source we do read, with how often we read it and how far behind it runs, is on the data sources page; computations we declined at run time are on the refusal ledger.
One jurisdiction for company figures
A company publishes its results twice: once on its investor-relations site, and once in the report it files with its regulator. Only the filed version carries legal weight. The company answers for what it files, and a correction has to be filed and dated in public.
For US-listed companies that regulator is the Securities and Exchange Commission, and every figure a company reports about itself is read here from the filed version: revenue, earnings, cash flow, share counts and dividends from 10-K and 10-Q reports, report dates from 8-K filings, insider trades from Form 4, fund holdings from Form 13F and Form NPORT-P, executive pay from proxy statements. We fetch them from sec.gov ourselves, with no filings vendor in between, and name the filing next to the figure. Where a company's reports are filed only outside the US, they are outside what we can see, and the page says so rather than estimating around the gap.
Everything else is not a filing and is not presented as one. End-of-day prices come from Databento, short interest and short volume from FINRA, delayed option quotes from Cboe, trading halts from Nasdaq, NYSE and Cboe, economic series from FRED, the US Treasury, the World Bank and the IMF, crypto prices from CoinGecko and Hyperliquid, headlines from TickerTick, and congressional trades from members' STOCK Act reports as compiled by an open-source project. In all, 33 providers outside the SEC feed this site, and the data sources page lists each one with its licence, how often we read it and how far behind it runs.
What we do not use
Filings made only to regulators outside the US.
Private companies, or any company that files nothing with the SEC: there is no filing to read.
Analyst estimates or consensus forecasts presented as our own figures.
Real-time prices. Stock prices are the closes of completed sessions; the options tools use Cboe quotes delayed about 15 minutes, and crypto prices are a few minutes old.
What the check does not cover. Reading a figure from the filing proves it matches what the company filed. It does not prove the company got it right: auditing is the auditor's job, and when a company amends a report, the amendment replaces the original here only after our next run. Figures from the other providers are shown as each one publishes them, with the provider and the date named; we do not audit their numbers.
Where we stand on AI crawlers
Our robots.txt allows the named AI search and assistant crawlers — OAI-SearchBot, ChatGPT-User, ClaudeBot, Claude-SearchBot, PerplexityBot, Google-Extended, Applebot-Extended, CCBot and the rest — to read this site in full. Being cited in an AI answer is a distribution channel we want, not a leak to plug, and a site whose reasoning is published has more to gain from being read than to lose.
One agent is refused: Bytespider gets Disallow: /, for behaviour rather than for what it is. The distinction matters — this is not a blanket AI block dressed up as a policy, and User-agent: * is Allow: /. The file is public, so the claim is checkable rather than asserted — and we measure the rest of the category the same way, from their own robots.txt, with our own row in the table.
Educational information, not investment advice.
Methodology FAQ
What happens when the data is incomplete?
We show less rather than filling the gap. A derived figure must be arithmetic on values the filer actually filed, never a cadence assumption, an average or a projection, and when a filer’s own numbers contradict each other we publish nothing for that period. Abstention is a designed outcome here, not a failure.
Do you adjust prices for splits?
No. Daily bars are raw traded prices, which is exactly why a split or a bad print can look like a huge move. Rather than license a corporate-actions feed, we use the signature that separates them: a mechanical price change moves price without unusual volume, while real news brings volume. Every name that rule removes is published on the movers page.
Are any numbers on this site estimated or modelled?
Reconstructed quarterly dividends are the only derived figures, and they are subtraction on two filed cumulative totals rather than an estimate. They are labelled as derived and are never called estimated, because nothing was estimated. The one modelled output is the AI Trade Planner, whose score, labels and price levels come from a formula published in full on the Disclaimer; outside it there are no price targets, no scores blended from weighted inputs, and no forecasts.
How do I know a number is current?
Dated figures carry the date they were filed or the session they describe. When a feed misses, the previous good value is carried forward with its own timestamp rather than being overwritten with nothing, so a stale figure shows as stale instead of vanishing.
Is this investment advice?
No. StockTools analyses securities and does not advise people. Nothing here accounts for your circumstances, and no output is a recommendation to buy or sell anything.