Every leaderboard of politician traders I have ever seen ranks the same way, and it is almost always wrong in the same three places. Someone scrapes the disclosure filings, assumes each trade was for some round dollar amount, marks the return from the filing date to today, sorts descending, and publishes it. The person at the top looks like a genius. Usually they got lucky on one large position in one name, and the methodology quietly flattered them into first place. If you want to know who can actually pick, you have to fix the parts of the pipeline that the headline version skips.
None of this requires anything exotic. It is mostly the discipline to attribute returns honestly and to refuse to rank people you do not have enough data on. But the details matter, and the naive version gets almost all of them backwards.
The four things naive leaderboards get wrong
Start with what the disclosure data actually gives you and what it withholds. In the US congressional system, filers report a transaction, a rough date, a direction, and a dollar range. Not an exact amount. A trade shows up as something like a wide band between two round numbers, and the bands get very wide at the top. That single fact breaks the most common scoring shortcut.
- Range-based sizing. If you treat a position sized somewhere between fifteen thousand and fifty thousand dollars as if it were exactly fifty thousand, you have overweighted it by up to a factor of three, and you have done it inconsistently across filers. The person who happens to trade in the widest brackets gets the loudest voice in the portfolio.
- Disclosure-date entry. Filings arrive weeks after the trade, sometimes up to a month and a half later. If you mark your entry at the transaction date, you are giving the filer credit for a move that no follower could have captured, because nobody outside the office knew about it yet. If you are scoring tradeability rather than the politician's own private skill, you have to enter on the date the information became public.
- No benchmark adjustment. Historically the broad market drifts up. A filer who bought a basket of large-cap names and did nothing else will show a positive raw return and look skilled. They just held beta. Without subtracting a benchmark you are ranking people by how invested they were, not by whether they added anything.
- Tiny sample sizes. A filer with three lifetime disclosures and one big winner will sit at the top of a raw-return board and mean nothing. Three trades is noise. You need a minimum count before a name is even eligible to be ranked.
Attributing return on a ranged position
Since you cannot know the exact size, pick one convention and apply it to everyone identically. The convention matters less than the consistency. I default to the midpoint of the disclosed range as the notional for each position, because it is the least-biased single number you can pull from a band, and it does not systematically flatter the wide-bracket filers the way the ceiling does. Some people prefer the geometric mean of the two endpoints, which pulls the estimate down a little on the huge brackets. Either is defensible. Using the top of the range for everyone is not.
From there the return on a single position is straightforward. Take the price on the entry date, take the price when the position is closed or when your scoring window ends, and compute the percentage move, then weight it by the midpoint notional so a large disclosed band moves the filer's blended number more than a small one. The one thing to be careful about is the exit. Politicians disclose sales too, but not always cleanly, and a partial sale can leave you guessing what fraction is still open. When a close is ambiguous, I would rather mark the position to the end of the window and note it as still open than invent a sale date. Inventing exits is how you accidentally reward or punish someone for a trade they never made.
For entry, use the disclosure date, not the transaction date, if your goal is a leaderboard people could have followed. Use the transaction date only if you are explicitly measuring the filer's private timing, and label it clearly, because the two numbers can differ by a lot on a fast-moving name.
Benchmark adjustment and the skill you actually want
Once every position has a public entry, an exit or a mark, and a midpoint weight, subtract a benchmark over the exact same holding window. For a US equity, that usually means comparing against a broad market index or, if you want to be stricter, against the sector the name sits in. The output you care about is the excess return, the piece that is left after you remove what the market handed everyone for free.
This is where most leaderboards quietly rearrange. Someone who looked like a top pick on raw return often turns out to have been long during a strong stretch and nothing more. Their excess return over the benchmark is near zero. Meanwhile a filer with smaller raw numbers who consistently beat their sector on entry after entry rises up the board, which is exactly what you want, because that consistency is the thing that might repeat.
Filters, and a workable ranking recipe
Before you sort anyone, gate the pool. My rough rules of thumb, which you should tune to your data:
- Require a minimum trade count, something like twenty closed or markable positions, before a filer is eligible. Fewer than that and you are ranking variance.
- Require the positions to span more than one name and more than one quarter, so a single lucky ticker in a single good week cannot carry the whole score.
- Report the excess return alongside a measure of spread, so a filer with one enormous outlier and a pile of small losses does not read the same as a filer who beat the benchmark steadily.
- Show the sample size next to every rank. A number with n attached is honest. A number without it is marketing.
Put together, the workflow is: pull each disclosure, size it at the midpoint of its range, enter on the disclosure date, exit on the disclosed sale or mark to the window end, compute return, subtract the matching benchmark over the same window, blend the excess returns by midpoint weight, then drop anyone below the minimum count before you sort. When we built the political-trade scoring into Blockcircle, that filter step is the one that changed the leaderboard the most, because it quietly removed most of the names that only ever looked good on a single trade.
The honest version of this board is less exciting than the scraped one. Fewer household names sit at the top, the returns look smaller once beta is stripped out, and a lot of famous filers land in the boring middle where they belong. That is the point. A ranking you would actually put money behind should look a little disappointing next to the headline, because the headline was measuring the wrong thing.