← Journal·Strategy

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.

·10 min read·NexusForm4 Research

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.

python
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:

python
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.

The signal is not the strategy. Universe filters, sizing, execution, and monitoring account for most of the delta between a good backtest and a good live book.

Continue reading