Skip to content

What a Form 4 query lets in, and what it leaves out

A $748,119 typo ranked as an $847 million insider purchase. A correct query can still answer the wrong question, in both directions.

Published

Market data through

In July a Form 4 for Navios Maritime Partners reported 1,131 units bought at $748,119 each. The filing’s own footnote put that day’s purchases between $73.73 and $76.34. When we ranked every stock by insider purchases over the last 63 sessions, that filing gave Navios million of purchases, until we opened it. Other entries were real filings but not market buys: shares issued in a merger, stock taken for cancelled loans, a trust swapping assets.

A query can count filings you did not mean to count, and it can leave out filings you did not ask about. This post records both, from research with Claude and Monk.trade in the week of October 19, 2026.

Code P never meant only an open-market purchase

The ranking summed Form 4 transaction code P. The SEC’s Form 4 instructions define P as an “open market or private purchase”, and nothing in the coded fields separates the two. A ranking meant to measure open-market buying has to tell them apart.

Almost all of Navios’s $847M came from one line. At the prices on the filing’s other lines, chief executive Angeliki Frangou’s five filings in the window came to about $1.2M. Four other totals were real filings of the wrong kind:

  • XCF Global: 119.4M shares at $1.19, on a day the stock traded between $0.14 and $0.18. The Form 4 has no footnotes. The Schedule 13D/A accepted 38 minutes later says the shares came from XCF’s acquisition of Southern Energy Renewables under a business combination agreement.
  • Flotek: shares taken under a stock transfer agreement in exchange for cancelled term loans, per the Form 4’s footnote.
  • Globalstar: a director’s purchase from another holder “in a private transaction for estate planning purposes”.
  • PepsiCo: a director’s revocable trust took shares from his irrevocable trusts in exchange for cash.

Two checks tell them apart. First, read the footnotes. A private or negotiated transaction, a stock transfer or exchange agreement, shares taken in exchange for something else, or a merger or business combination agreement describes a purchase that did not happen on the market, unless a footnote also mentions the open market. Second, compare each line’s price with the stock’s range from the trade date to the filing. A price below half the lowest low, or above twice the highest high, cannot be a market fill; it is a typo or a deal. With both checks, Navios comes to $1.1M, and XCF, Flotek, Globalstar and PepsiCo to $0. As of November 6, Monk.trade’s insider totals leave both kinds of line out of .net, and funded = "private" reads the private purchases.

Here the question was too wide. The rest of this post covers questions that were too narrow. In a ranking, a typo or a mislabelled deal does the most damage at the top, so read the filings behind the largest entries first.

An officer filter hid a director’s sale

The other direction came from a smaller question: recent insider activity at Applied Digital. Claude’s first purchase query selected officers:

insiders(code = "p", security = "common", relation = "officer", plan = "none", window = 20).net

That is a reasonable filter for officer purchases of common stock with no trading plan flagged. It cannot say whether insiders in general were buying or selling, because it leaves out sales and any director who is not also an officer.

Removing the officer restriction and checking code P purchases and code S sales separately added Richard Nottenburg’s sale of 31,250 shares on October 13, filed October 15, beside the two purchases dated October 16 and filed October 19. His Form 4 was outside the first query’s scope.

The complete refined answer, including both headings, two code P purchases and one code S director sale, with separate trade and filing dates.
The refined answer. The sale preceded the purchases; this table does not establish why anyone traded.

The data supports “two officers reported purchases”. “Insiders were buying” drops the officer restriction and ignores the sale. Transaction codes belong in the sentence too: the SEC lists P as a purchase on an exchange or from another person, S as a sale, and F as paying an exercise price or tax with shares, which is not an ordinary sale.

One aggregate was not one filing

In the same session Claude wrote this query, with an alias of its own choosing (other columns omitted):

from "APLD" on daily
show count(insiders(code = "p"), 20) as p_filings

It returned 1. The evidence beside it showed two filings, one for Wes Cummins and one for Jason Gechen Zhang, both filed October 19.

The aggregate p_filings equals one above the complete evidence panel showing two sources, two filings in twenty sessions and the full Cummins and Zhang purchase receipts.
The count and both underlying receipts in one capture.

The count was MonkQL’s: count(condition, n) counts the bars among the last n on which the condition holds, and both filings fell on the October 19 bar. The alias was Claude’s. The field that counts filings existed: insiders(code = "p", window = 20).count returns 2. Before a count goes into a sentence, check whether it counts bars, rows, filings or people.

A transaction date is not a disclosure time

Zhang’s filing index gives a period of report of October 16 and an acceptance time of October 19 at 07:06:33. Cummins’ filing was accepted October 19 at 07:11:41. Both were public before the regular session opened that Monday.

Trade, disclosure and market open

Event When (ET)
Purchases Oct 16
Zhang filing Oct 19, 07:06:33
Cummins filing Oct 19, 07:11:41
Market open Oct 19, 09:30

Pricing a reaction at the October 16 purchase price assumes someone could trade before the filings were public; the October 19 open is the right starting point. Acceptance time is still not when a given data pipeline or reader first saw the filing, which a study of trading on filings would also need.

Windows deserve the same care. Claude’s first broad answer covered 126 sessions, about six months, before we asked for the latest 20. A price change in the same session compared the latest close with close[21], a different window from the 20-session insider count; calling both “the last month” would hide the mismatch. And relative offsets move: an alias like oct19_open on open[4] described the October 23 snapshot, not October 19 forever. Keep the result date with the query.

Queries in the screenshots were written by Claude using Monk.trade’s MCP tools. Monk.trade Research holds no position in any company named here.