Insider Trading Tracker (SentiSense)
Track what company insiders are doing with their own stock. This skill reads SEC Form 4 filings, the disclosures that officers, directors, and 10%+ shareholders must file within two business days of any transaction, through the read-only SentiSense API: the insider tape for a single stock, market-wide insider buying and selling, and cluster buy signals where three or more insiders bought the same name. It completes the smart-money triangle with politicians-stock-tracker (congressional trades) and institutional-13f-tracker (fund holdings).
Read-only educational data interface. Output is informational context, never a personalized buy or sell recommendation.
When to Use
Reach for this skill when the question is about insider activity:
- "Any insider buying in $NVDA?" or "show me the Form 4 filings for this stock"
- "Which stocks are insiders buying right now?" (market-wide activity)
- "Are there cluster buys?" (3+ distinct insiders buying the same stock, a pattern long studied in academic research)
- "Is the CEO selling?" and "was that sale pre-planned or discretionary?" (10b5-1 detection)
- As the third leg of a convergence check: insider buys lining up with congressional purchases (
politicians-stock-tracker) or institutional accumulation (institutional-13f-tracker) on the same ticker.
Do not use it for order entry, portfolio management, or personalized advice. It has no write, trading, or wallet surface; every endpoint is a GET.
What this data actually is (read before interpreting)
- Form 4 rows are individual filed transactions, newest first, not a net position. A single insider can file many rows in one window; sum and net them before characterizing activity.
- Each row carries both a raw SEC
transactionCodeand a simplifiedtransactionType. The common codes:P(open-market purchase),S(open-market sale),A(award),M(exercise),G(gift),F(shares withheld to cover taxes on vesting). You will also meet the rest of the SEC Form 4 code table in live data:C(conversion),D(disposition to the issuer),H(expiration),I(discretionary transaction), and occasionally a blank. Types:BUY,SELL,EXERCISE,AWARD,GIFT,OTHER. - Only codes
PandSare open-market, directional signals; treat every other code as corporate mechanics. Filter inclusively (keep P and S) rather than trying to exclude a list you might not have all of. Two refinements: codeFarrives typedSELLbut is mechanical tax withholding on vesting, not a decision to sell, so drop code-F rows from sell tallies; and awards and exercises can carry very large dollar values (RSU grants and option exercises in the hundreds of millions or more), which is exactly why leaving them in a "sold" figure is so misleading. rule10b51: truemeans the trade ran under a confirmed pre-arranged 10b5-1 plan. A scheduled sale says far less than a discretionary one; say which kind you are reporting. The flag isfalsewhen plan status could not be confirmed, so treat it as "confirmed plan" vs "not confirmed", not a clean either-or.- Who is trading matters as much as how much.
insiderRelationisOFFICER,DIRECTOR,TEN_PCT_OWNER, orOTHER, withofficer/director/tenPctOwnerbooleans since one filer can hold several roles. A 10% owner is often an investment vehicle, not management. securityBasismarks a row filed in a different security than the US listing, and those rows have nopricePerShare. It is null on an ordinary domestic filing and carries a label such asCommon Shares (2330.TW)when a foreign issuer's insiders file in the home-market ordinary shares behind the US listing rather than in the listed line itself. On those rowspricePerShareis null by design whiletotalValueis still real. That gives a null price two different meanings, so readsecurityBasisbefore you explain one: with a basis set it means the row is priced in another security, and only withsecurityBasisnull does a null price mean the $0-award case. Common enough to matter on a real board rather than a corner case, and it clusters by issuer: on TSM over a 365-day window, 193 of 209 rows carried the basis, every one of them with a null price, 170 of them codePopen-market purchases and 172 with a non-zerototalValue. When you report one, name the basis in the sentence so the reader knows the share count is not in the US line, and do not derive an implied per-share price by dividingtotalValuebysharesTransacted; the two are not necessarily quoted in the same security.- Dates:
transactionDateis when they traded,filedDateis when the SEC received it (at most two business days later, far tighter than the 45-day congressional lag).
Prerequisites
- A free
SENTISENSE_API_KEY. Get one at https://app.sentisense.ai/get-api-key. Send it on every call: a request without a valid key gets at most a shaped crawler-facing preview slice, never the dataset, and that fallback is not a contract you can build on. - Any HTTP client. Plain
curlworks, or Python 3.8+ using only the standard library. - Network access to
https://app.sentisense.ai. - Read-only scope. Every endpoint here is a GET. Nothing this skill does can place a trade, move money, or modify account state.
| Tier | Quota | Rate | Insider data |
|---|---|---|---|
| Free | 1,000 requests/month | 30 requests/min | preview slice (top 5 per endpoint) |
| PRO ($15/mo) | Unlimited | 300 requests/min | full window you ask for |
The free tier exercises every workflow below; preview-gated endpoints return a truncated but real slice on a free key.
Permissions
- Network: HTTPS to app.sentisense.ai only.
- Credentials: SENTISENSE_API_KEY from the environment.
- Shell: none required.
- Files: none.
How to Run
The REST recipe in this file is the primary path. A maintained command-line client is available as the separate sentisense-cli skill for hosts that prefer one.
Identify your client. Send a User-Agent naming your agent runtime and this skill, for example OpenClaw/1.4 (insider-trading-tracker) or ClaudeCode/2.1 (insider-trading-tracker). Substitute your own runtime and version if neither matches. You can also volunteer what your agent is called by adding an agent/<your-agent-name> token inside the same parentheses, as in OpenClaw/1.4 (insider-trading-tracker; agent/research-desk). All of it is optional, and it is what tells us this skill has real integrations behind it, so it gets prioritized and you get notice before it changes.
The market-wide endpoints are plain REST. All three endpoints return the wrapped envelope { isPreview, previewReason, data }; read .data, and when isPreview is true say so ("showing the free preview slice"). A rate-limited call returns 429 with a Retry-After header; back off for the indicated seconds.
Endpoints
GET /api/v1/insider/trades/{ticker}: individual Form 4 transactions for one stock, newest first. QuerylookbackDays(1-365, default 90). Free: top 5; PRO: full window. Each row:insiderName,insiderTitle,insiderRelation,officer,director,tenPctOwner,transactionDate,filedDate,transactionCode,transactionType,securityTitle,sharesTransacted,pricePerShare(null on $0 awards, and always null whensecurityBasisis set),totalValue,sharesOwnedAfter,directOwnership,rule10b51,securityBasis.GET /api/v1/insider/activity: market-wide insider activity aggregated by ticker, split into topbuysand topsellsby total dollar value (.data.buysand.data.sells). QuerylookbackDays(1-365, default 90). Each entry:ticker,companyName,tradeCount,insiderCount,totalShares,totalValue,latestDate,latestInsider,latestTitle. Free: top 5 per direction; PRO: full. Thesellsside already excludes code-F tax withholding server-side, so these dollars are discretionary selling and you should not filter them again; dispositions to the issuer (codeD) are still counted.GET /api/v1/insider/cluster-buys: stocks where 3 or more distinct insiders bought within the window. QuerylookbackDays(1-365, default 90). Each signal:ticker,companyName,insiderCount,tradeCount,totalShares,totalValue,firstBuyDate,lastBuyDate. Free: top 5; PRO: full.
Workflows
1. The insider tape for one stock
Use: GET /api/v1/insider/trades/NVDA?lookbackDays=90. Filter to the directional rows first (code P and code S, minus code F), then report: who bought and sold, their roles, net dollars, and how much of the selling was 10b5-1 planned.
An all-award window is zero insider conviction, not a wave of it; say "no open-market insider activity" rather than presenting awards as trades.
2. What are insiders buying market-wide?
GET /api/v1/insider/activity?lookbackDays=30, then read .data.buys. Check insiderCount before crowning a leader: the top row by dollars is sometimes a single 10% owner accumulating through an investment vehicle across many trades, which is a very different fact from five officers buying independently. Lead with breadth, then dollars.
3. Cluster buys, the classic screen
GET /api/v1/insider/cluster-buys?lookbackDays=90. Three or more distinct insiders buying the same stock in a window is the pattern with academic pedigree. Sanity-check totalValue against insiderCount before presenting one: a 30-insider cluster whose combined purchases are modest dollars reads very differently from three officers each writing six-figure checks.
4. The convergence check. The high-conviction read is agreement across independent sources: insider cluster buys plus congressional purchases (politicians-stock-tracker) plus institutional accumulation (institutional-13f-tracker) on the same ticker, ideally alongside the sentiment picture (stock-sentiment). Cite each source separately and say which legs agree; one leg alone is context, not a case.
Answering well
- Always separate open-market activity from awards, gifts, exercises, and code-F tax withholding. The single most common misread of Form 4 data is presenting routine compensation mechanics as insider conviction.
- Sanity-check dollar figures before headlining them: on a row with a non-null
pricePerShareand a nullsecurityBasis,totalValueshould roughly equalsharesTransactedtimespricePerShare, and a total that dwarfs the company's market cap is a data artifact to flag, not a story to tell. Skip the check whensecurityBasisis set orpricePerShareis null rather than reporting a failure: those rows are filed in another security and have no per-share figure to multiply, so the arithmetic cannot run and its absence says nothing about the row. - Name the role: "the CFO bought" and "a 10% owner bought" are different sentences.
- Flag 10b5-1 planned sales as scheduled, and never dramatize them.
- Quote
transactionDatewhen discussing timing andfiledDatewhen discussing disclosure. - Report only what the API returns. Do not infer motives, and do not frame any of it as advice. This is public-disclosure data presented for education.
Going further
Free covers every workflow above at a preview depth. PRO ($15/mo) lifts the monthly cap (no monthly limit, just a 300/min rate) and returns the full window on every insider endpoint, plus institutional flows, congressional detail, and AI insights across the SentiSense API. Apply coupon AGENTS at checkout for a builder launch discount: https://app.sentisense.ai/pricing?coupon=AGENTS
For the full REST reference on every endpoint this skill touches, install the sentisense skill; for the complete CLI command set, install sentisense-cli.
ClawHub Skill: clawhub.ai/TheSentiTrader/insider-trading-tracker
SentiSense is a read-only financial intelligence API. This data is for informational and educational purposes only, not investment advice.
