Methodology

How we parse SEC 13F filings, classify buys and sells, calculate clone returns, and handle edge cases.

Last updated

1. Source filings

We pull holdings data directly from SEC EDGAR. The relevant filing types:

  • 13F-HR — quarterly long-equity holdings reports filed by institutional investment managers with $100M+ AUM. Required within 45 days of quarter-end.
  • 13F-HR/A — amendments to a previously filed 13F-HR.
  • Form 4 — corporate insider transactions, filed within 2 business days.

Each filing is parsed from the SEC's structured XML/HTML, and individual rows are stored with cusip, shares, value, and security_type (SH for shares, PRN for principal, etc).

2. Classifying buys and sells

Each holding in the current filing is compared against the previous filing for the same manager, matched by cusip + security_type:

  • NEW — appeared this quarter, not previous.
  • INCREASED — appears in both, share count grew.
  • REDUCED — appears in both, share count fell.
  • SOLD — appeared previous quarter, not this one.
  • UNCHANGED — appears in both with the same share count.
  • NEWLY_TRACKED — manager's first filing on Superinvestor; classification deferred until a second filing exists.

3. Consensus signal scoring

On the Most Bought and Most Sold pages, each stock receives a signal score:

  • Buy signal = 2 × (new buyers) + 1 × (increasers)
  • Sell signal = 2 × (full exits) + 1 × (decreasers)

We weight new buys and full exits more heavily than incremental changes because they signal stronger conviction.

4. Clone-return performance

The Performance leaderboard simulates what a hypothetical investor would have earned by replicating each manager's reported 13F long equity positions at the closing price on the filing date, then rebalancing each quarter to the next 13F's reported positions.

  • Annualized returns use the geometric mean over the tracked period.
  • 1-year returns compound the most recent 4 quarterly returns.
  • 3-year returns compound the most recent 12 quarterly returns.
  • Alpha vs S&P 500 = manager clone return − S&P 500 total return over the same window.
Important: Clone returns are simulated, not actual fund performance. They exclude shorts, options, bonds, cash, international holdings, fees, and trading costs. They also assume buying at close on filing day, which a real investor could not do (filings are published intraday, and prices vary). Treat as directional only.

5. CUSIP-to-ticker resolution

13F filings identify securities by CUSIP. We maintain a CUSIP-to-ticker mapping built from SEC's quarterly CUSIP tables and Yahoo Finance. When a CUSIP doesn't resolve to a ticker (e.g. delisted security, OTC stock), we display the CUSIP and company name as filed. Mergers and ticker changes are handled by maintaining the CUSIP as the stable identifier — a Sprint-to-T-Mobile merger doesn't break historical continuity because we track by CUSIP.

6. Edge cases and limitations

  • Confidential treatment. Some managers receive SEC permission to delay disclosure of certain positions for up to one year. These positions don't appear in our data until the manager publishes them.
  • Sub-advised funds. A 13F filing may aggregate positions across multiple sub-advised entities. We display whatever the manager reports.
  • Calls and puts. 13F filings include options positions in the same table as long equity, with a PUT/CALL indicator. We display these but they are not treated as long equity exposure for clone-return calculations.
  • Amendments. When a 13F-HR/A supersedes an original filing, we replace the holdings and tag the filing as an amendment.
  • Late filings. Filings arriving past the 45-day deadline are still ingested.

7. Data freshness

Pages serve cached HTML for up to 1 hour, then regenerate on the next request (Next.js incremental static regeneration). New 13F filings are typically reflected on Superinvestor within an hour of SEC publication. The sitemap and llms.txt index regenerate on the same cadence so search engines and AI crawlers see new pages quickly.