Product Spec

How [sage]SIGNALS actually works

The engineering detail behind the pitch on /about — what data the screener can and can't see, how a sell signal actually fires, and how we're proving the model works before any real money moves.

Last major update: 2026-07-11 · See /parameters for the full threshold list, /vocab for term definitions.

Overview·Data & Limitations·Sell-Signal Logic·Validation·Status & Roadmap

Overview

What it is, who it's for

[sage]SIGNALS is a daily pre-market email screener for US technology stocks. Every weekday at 9am ET, before the market opens, it screens the full tech universe through 8 gates, ranks the top 10 candidates, checks held positions for sell signals, and sends the result by email.

It's built for two investors with an aggressive risk tolerance and a days-to-weeks trading horizon. Every design choice below follows from that: the gates favor momentum over value investing, and the stop-loss is fixed — there's no discretion once it fires.

The project is in paper-trade validation. Every pick is tracked and compared against QQQ before either investor commits real capital.

Data & Limitations

What the screener can and can't see

All screening data comes from the Finviz Elite API, pulled across six views and merged by ticker.

ViewCovers
OverviewTicker, sector, market cap, P/E, price, volume
ValuationForward P/E, PEG, price/sales, EPS and sales growth
OwnershipShort float, short ratio, insider and institutional activity
Performance1-month and 3-month returns, volume trend
FinancialMargins, current ratio, debt/equity, return on equity
Technical50/200-day moving averages, RSI, ATR, 52-week high

What Finviz doesn't provide — confirmed by directly probing the API, not by reading documentation: MACD, Bollinger Bands, ADX, and other technical indicators beyond what the Technical view already covers; Earnings surprises and analyst rating-change history; Broker-level analyst price targets — that data sits behind a separate paid Finviz product; Buyback activity, index-inclusion events, and news-driven catalysts. Two of the 8 gates (cash flow and options flow) exist as placeholders for this reason — they always pass, and stay that way until a data source that covers them gets added.

Sell-Signal Logic

How a sell signal actually fires

Sage places every paper trade manually in Alpaca. Each morning, the screener reads his current positions from that account and checks each one for four exit conditions.

SignalFires when
Deteriorating fundamentalsEPS growth turns negative and 5-year revenue growth turns negative
Sentiment breakdownAnalyst consensus drops to Sell, Strong Sell, Underperform, or Underweight
Sentiment softenedAnalyst consensus drops to Hold or Neutral — a lower-severity, watch-only flag
Stop-lossPrice falls more than 10% below entry — a flat rule, same for every position, no exceptions

Why we simplified the stop-loss — this replaced a more complex dual system (a trailing stop off the 52-week high, plus a separate ATR-based stop) after Sage and Ashwad reviewed it together. A flat, non-negotiable rule is easier to trust and impossible to second-guess in the moment. The old trailing-stop math didn't disappear — it still powers the stop-loss suggestion shown for brand-new picks, which is a different feature from the sell check above. That suggestion got a correctness fix in August 2026: it could previously display a stop sitting above the current price, which would trigger the moment you bought. Levels that aren't below the price are now discarded before one is chosen.

Validation

How we know it's working

Every pick gets logged to Supabase before either investor puts real money behind it — run metadata, gate results, and the picks themselves, all written the morning they're made.

A separate job checks each pick's closing price at 1, 7, 30, and 90 calendar days out and compares it to QQQ over the same window. That comparison is what powers this dashboard's hit rate, alpha, and rank-validity numbers.

Directional signal becomes readable after 2 to 4 weeks of picks. A statistically meaningful read on whether the model actually beats the market takes 12 to 16 weeks — we're not there yet, and the dashboard says so plainly rather than rounding up.

Status & Roadmap

Where things stand

PhaseWhat it isStatus
Phase 1Daily email screener — 8 gates, top 10 picks, sell signals, paper-trade logLive
Phase 1.5Supabase migration — run history, forward prices, benchmark dataLive
Phase 2Alpaca paper account as the sell-signal source of truth, with a live positions dashboardLive
Phase 2aAutomatic paper-order placement — built, but switched off until we decide it earns a place in the pipelineBuilt, disabled
Phase 3This validation dashboard — hit rate, picks vs. QQQ, rank validity, trade historyLive
Phase 4Real position tracking and multi-user support, once the paper-trade results hold upFuture