← Selected work
0 → 1 Side Build · ML

Insights Stocks: Smart Money Signals

An automated trade-signal platform that ingests insider and congressional disclosures, runs nine quant models per ticker, and pushes scored, ranked calls to a React dashboard and Slack.

Role
Solo: PM + Engineering
Stack
Python / FastAPI · React / TypeScript
Models
9 quant + institutional bias controls
Status
Production, private beta

9

Quant models ensembled

4 / 9

Model-agreement gate

BH-FDR

False-discovery control

18

API routes

Problem

Most signal tools confuse you with confidence.

Retail trade-signal apps tend to be one of two things: a wrapper around a single model with a confident UI, or a firehose of indicators you have to interpret yourself. Both quietly leak survivorship and selection bias, and the raw inputs, insider and congressional buys, are noisy on their own. I wanted a third thing: an ensemble that is honest about uncertainty and only fires when several independent models agree.

User stories

Who it's for.

  • Self-directed investor: give me a short, vetted shortlist with a single score I can act on, not a 50-row table I have to decode.
  • Smart-money follower: tell me when insiders and Congress are actually buying something worth attention, and ping me on Slack when conviction is high.
  • Quant-curious analyst: let me drill into every model's output and a backtest, so I can see why a call fired before I trust it.

Solution

Ingest, enrich, model, score, alert.

The platform pulls insider trades from SEC EDGAR Form 4 filings and congressional disclosures from Capitol Trades over a rolling 14-day window, deduplicates them, and enriches each ticker with fundamentals via yfinance (P/E, market cap, momentum, RSI, drawdown) plus a macro regime read from FRED (yield curve, CPI, VIX, M2). Each ticker then runs through nine quantitative models, Monte Carlo, Hidden Markov regime, GARCH, Fama-French 5-factor, event study, copula tail risk, Bayesian decay, mean-variance, and options flow, which an ensemble combines into a single 0-100 score and recommendation. An 18-route FastAPI backend feeds a React dashboard and posts high-conviction calls to Slack: a message a real person can act on, not a 50-row table.

Product sense

False-positive control is the product.

What separates this from a typical ML side build is the layer that decides when not to fire a signal:

  • Benjamini-Hochberg FDR correction across the full ticker universe, so the more you test the harder it is to claim a hit.
  • 4-of-9 agreement gate: at least four models must independently concur before a buy or sell is issued, removing roughly 30% of spurious signals.
  • Granger causality, conformal prediction intervals, and adversarial validation to confirm a source predicts returns and to catch distribution shift.
  • Deflated Sharpe ratio and isotonic calibration to keep the backtest honest.

The reason I'm proud of this build isn't the model count. It's that the guardrails were a product decision before they were a math decision.