A quarterly holdings filing does not contain any changes. It contains a list of positions on one day. Every add, trim, exit and new buy you have ever read about is something a person or a program computed by lining up two of those lists and subtracting. That means the change column you are looking at is somebody else's arithmetic, made with somebody else's decisions about how to handle the messy cases, and you cannot see any of those decisions from the outside.
This matters because the messy cases are not rare. I have watched a stock split get reported as a manager tripling a position, and I have watched a genuine doubling get reported as no change at all because the two quarters were joined on the wrong key. Doing the subtraction yourself takes about ten minutes per manager and removes an entire category of being wrong for reasons you never see.
Use shares, not dollars
Start with the column choice, because half the bad diffs I see come from this one thing. Each holding row carries a dollar value and a share count. The dollar value moves when the price moves, whether or not anybody traded. The share count only moves when somebody trades.
Put numbers on it. A manager holds 40,000 shares worth two million dollars at the end of one quarter. Over the next three months they sell a quarter of the position, down to 30,000 shares, but the stock has risen sixty percent. The new line reads 30,000 shares worth two million four hundred thousand dollars. Diff the dollars and you conclude they added twenty percent. Diff the shares and you see the trim that actually happened. The dollar column told you about the market. The share column told you about the manager.
So the diff is on shares, always. Dollars come back in later, when you want to know whether a position is big enough to care about, but they never tell you about activity.

The join has to be on the security, not the ticker
To subtract two quarters you have to know which row in one corresponds to which row in the other. That is a join, and the key you pick decides how often it is right.
Tickers are the wrong key. They get reassigned, they change on rebrands, and they collide across share classes. Company names are worse, because the same issuer is written several different ways across filers and across quarters, sometimes with the class stuffed into the name field and sometimes not. The security identifier printed on each row is the right key. It is stable per security, it distinguishes share classes properly, and when it changes, that change is itself information.
Work the join in three buckets and handle each on its own terms.
- In both quarters. Subtract the share counts. This gives you adds and trims.
- Only in the newer quarter. This is a new position, and it is the highest-information category in the whole exercise, because it is the one case where the filing is unambiguous about a change in state.
- Only in the older quarter. This is an exit, or it is a corporate action that changed the identifier, and you cannot tell which without checking. Never publish these as exits until you have.
Splits and corporate actions, where the naive diff breaks
Here is the failure that produces the loudest wrong answers. A manager holds 50,000 shares at the end of one quarter. The company does a four-for-one split during the next quarter. The manager does nothing at all. The next filing shows 200,000 shares.
Subtract and you get plus 150,000 shares, a three hundred percent increase, which reads as enormous conviction. Nothing was bought. If you are screening for large adds, that name will sit at the top of your list, and the same split will put every single holder of that stock at the top alongside it, which is the tell if you are looking for one. A screen output where twenty unrelated managers all appear to have quadrupled the same position in the same quarter is a corporate action, not a consensus trade.
The adjustment is simple once you know to make it. Restate the older quarter's share count into the newer quarter's terms before subtracting. For the four-for-one split, multiply the old 50,000 by four to get 200,000, subtract, get zero, which is the truth. The awkward part is not the arithmetic, it is knowing that the action happened, which means you need a corporate-action source covering the window between the two dates. For a handful of names you can check by hand against the issuer's own announcements. For a whole book you need a feed.
Splits are the common case. Three others break a diff in ways worth recognising. A merger replaces one identifier with another, so the target looks like a full exit and the acquirer looks like a large new buy, when the manager may have done nothing. A spinoff creates a new line out of thin air that also looks like a new buy. A share-class conversion moves a position from one identifier to another inside the same company, appearing as a simultaneous exit and entry.
Turning share deltas into something you can act on
A raw share delta is not yet a decision. Two more steps make it one.
Convert to percentage change in the position. Adding 10,000 shares to an existing 20,000 is a fifty percent build. Adding 10,000 to an existing two million is noise, quite possibly a cash-flow rebalance rather than a view. The absolute share number treats those identically and the percentage does not.
Then convert to portfolio weight, which needs the filing's total reported value. A position that went from 0.4 percent of the book to 3 percent is a manager making a real decision. A position that went from 0.4 to 0.5 percent is a manager doing housekeeping. This is the step most people skip, and it is the one that separates the handful of rows worth reading from the hundreds that are not.
The version of this I actually run
For one manager it is a spreadsheet. Pull both quarters, paste them side by side, join on the security identifier, subtract shares, then sort by percentage change and read the top and bottom twenty rows. Everything in the middle is rebalancing and I do not look at it.
Before I believe anything, two checks. First, if more than a couple of names show enormous share increases, I check for splits, because that pattern is almost never real. Second, for anything that looks like a complete exit, I check whether the identifier still exists, because mergers manufacture fake exits at a steady rate.
The last thing worth saying is what to do with the answer. Inside Insider Alpha the institutional side is positioned as cross-reference material for the Form 4 feed, and that is the right use for a diff too. A large new institutional position on its own is a piece of stale information about one day. The same name also showing officer buying, with actual transaction dates attached, is two independent things pointing the same direction. That combination is worth ten minutes of your attention. A change column on its own, computed by someone whose split handling you cannot inspect, is not.