Building an Insider Trading Alpha Strategy with the NexusForm4 API
An end-to-end blueprint for turning normalized Form 4 data into a live insider-buying strategy: signal, universe, sizing, execution, and risk controls.
Most quant tutorials show you how to compute a signal and stop. A live strategy is a longer chain: data, signal, universe, entry logic, sizing, execution, monitoring, and kill switches. This post walks the whole chain using NexusForm4's cluster-buy feed as the primary signal.
1. Data layer
Poll /signals/cluster-buys on a schedule aligned with EDGAR's filing cadence. EDGAR accepts filings continuously but batches releases; a poll every 2 hours is sufficient. Persist each cluster with its NexusForm4 accession list and conviction score into your own timeseries store — you will need the history for backtests and post-mortems.
import requests, time
HOST = "nexusform4-sec-insider-trading-c-suite-signals.p.rapidapi.com"
HEADERS = {"X-RapidAPI-Key": "...", "X-RapidAPI-Host": HOST}
def fetch_clusters():
r = requests.get(f"https://{HOST}/signals/cluster-buys", headers=HEADERS, timeout=10)
r.raise_for_status()
return r.json()2. Universe construction
Restrict the tradeable universe to names that clear a minimum-liquidity bar. Cluster signals appear across the entire Form-4-reporting universe including micro-caps, but a strategy that cannot execute without slippage is a paper exercise. A defensible baseline:
- 20-day median dollar volume >= $5M
- Market cap >= $250M
- Price >= $5 (avoids the SEC's penny-stock definition and most bid-ask blowouts)
3. Entry logic
A minimal rule: enter long on the next open after a cluster with conviction score above the 80th percentile of the trailing 90 days, provided the ticker passes universe filters and is not already held. Cap concurrent positions to bound crowding and ensure per-name capital adequacy.
4. Position sizing
Two robust choices for a signal like this: equal-weight or volatility-target. Volatility-target sizes each position to a fixed contribution to portfolio risk, which corrects for the fact that insider-heavy small-caps often carry double the vol of large-caps in the same signal bucket. Formula:
weight_i = target_portfolio_vol / (sqrt(N) * realized_vol_i)
Cap per-name weight at ~5% to prevent one insider signal from dominating the book.
5. Holding period and exits
Empirical drift on cluster buys concentrates in the 20-90 day window post-filing. A time-based exit at 60 days is a defensible default. Overlay a discretionary stop if the ticker breaks a fundamental threshold (e.g. earnings miss with guide-down) or a hard stop at -20% from entry.
6. Execution
Enter on VWAP over the first 30 minutes of the session following the signal. Insider filings often trigger opening-print volatility; waiting until the auction settles preserves signal without paying auction-imbalance costs.
7. Monitoring and kill switches
Instrument the strategy so you always know: current signal count, filled positions, unfilled queued orders, live PnL, and drift from target vol. Kill switches at three levels — daily loss cap (-2%), weekly loss cap (-5%), regime detector (e.g. VIX > 40 for 3 sessions pauses new entries).
What to expect
An unlevered cluster-buy strategy in US mid-caps has historically produced Sharpe ratios in the 0.8-1.4 range depending on universe and rebalance cadence. That is compelling as a diversifier but rarely as a standalone. Combine with a momentum overlay or use as a filter on a fundamental long book.