Short-horizon model · 2–10 trading days · · names

The Complete Desk

Tuned for trades of 2 to 10 trading days. Every name scored on short-term reversal, entry setup, catalyst risk, tradeability and social sentiment, folded into one number: the Complete Score. Measured against the S&P every single day — see Performance.

Universe
Scored & ranked
Factors tracked
Strong Buy / Buy
Median score
Checking data freshness…

Top Complete Score

Prime setups · 60+

Hottest sector

Top-10 turnover

Score distribution

Where the ranked universe sits. Rescaled to mean 50 / sd 15.
0255075100

Sector heat · median Complete Score

P&L

Marked with the same quotes the rest of the desk uses. Refreshes on every quote poll.

Momentum leaders · vs 50-day

Squeeze candidates · short float

Catalysts inside the window

Performance

Equal-weighted paper books, $100k notional, long only, no rebalancing. The point is to measure the score — not a trading strategy.

Equity curve vs S&P 500

Both rebased to 100 at inception. The gap between the lines is the only number that matters.
This book S&P 500 (SPY) Spread (book − SPY)

My positions

Your real fills, live from the trade log.

What this can and cannot tell you

Today's read

Levels for the session

Computed from the last completed daily bar. Live marker needs Serve.bat.

Options read

Which side of the premium the odds sit on — not a backtest of any contract.

The evidence

Every test run, corrected for multiple comparisons. This is the page that can tell you the model is worthless.

Market read · S&P 500

Weekly regime gauge for the week ending

Lean

P(up week)

Signal agreement

Track record

SPY · daily

20-day 50-day ▲ up day▼ down day

Signal board

Every input, and which way it points. Disagreement is information — when these split, the read is weak and it should be.

What this means for your book

Market internals

Prediction ledger

Every call logged and scored once the week closes. This is the only thing that tells you whether any of it works.

Screener

Filter the ranked universe on any factor. Everything updates live.
Market cap
Min score 0 Presets

Rankings

The full ranked ladder, 1 to N, by Complete Score.

Explorer

Every name in the universe, as-is and searchable — scored or not.

Portfolio builder

Guardrails: max 15% per position, max 35% per sector. Separate from the tracked paper books on the Performance page.

Plan settings — your rules; every number below is computed from these

$ % = $100 per trade
trading days

Stop = k x ATR, k set so this share of holds stop on ordinary noise. Calibrated on 183,000 entry-days of your own bars. A tighter setting is not safer — it just stops you out more often at the same dollar risk.

R = the distance from entry to stop. A 2R target means you're aiming to make twice what you're risking.

Positions · 0

Trade log

Every buy and sell, in order. A position is the sum of its events — logging a sell can only ever reduce what you hold, never open a new one.
Storage:

Weighted Complete Score

vs universe median

Allocated

0%
cash: 100%

Open P&L

log a fill to start tracking

Total risk at stop

if every stop hits

Weighted beta

1.00 = market

Concentration · HHI

lower is more diversified

Sector exposure

Cap mix

Nothing here is stored on a server — it lives in this page only. Export before closing if you want to keep it.

Day Desk — intraday workspace. Separate from the swing model; nothing here feeds the rankings.

Read this once. The 2–10 day model and this tab answer different questions. A Complete Score is a swing ranking — PE, Piotroski, 3-year growth and daily sentiment carry no information over the next 30 minutes. It is shown below as context only. What actually transfers to an intraday decision is the short list underneath it: ATR, levels, volume pace, gap, event risk and liquidity.

Method & data

How the Complete Score is built, and exactly what it does and doesn't know.

The Complete Score — short-horizon model

Tuned for a 2 to 10 trading day hold. Each factor is percentile-ranked across the universe, not compared to a fixed threshold — "cheap" and "strong" only mean anything relative to what else is available today. Ranks are weighted into five pillars, then blended:

  • Reversal — 25%. The core. Short-term reversal is the best-documented effect at this horizon: last week's losers modestly outperform over the following week. The 1-week return, the 1-day return and the stretch from the 10-day all score negatively — down is the setup. A small positive weight on the 1-month drift keeps genuinely broken names out.
  • Setup — 20%. Is today a good entry? RSI tuned for mean reversion (peak around 35, not 56), where the close sat inside the day's range, whether the longer trend is still structurally intact, volume surge, and a penalty for gapping up into the entry.
  • Catalyst — 15%. Cut from 25%. Squeeze fuel and flow flags still matter over a week; analyst price-target upside barely does, so it's kept small. Earnings proximity is here as a risk — see below.
  • Tradeability — 20%. Raised from 18%, because over five days spread and slippage eat most of the gross edge. Dollar volume, share volume, and a daily-range sweet spot: under ~1.5% average range a short trade cannot cover its own costs; over ~7% you're trading noise.
  • Sentiment — 20%. Retail and social, credibility-weighted. Ranked only within the cohort of names actually being discussed — see the note below.

Four factors deliberately flip sign

This is not the swing model re-weighted. Several factors mean the opposite thing over two weeks versus three months:

  • Recent return: momentum → reversal. Over three months, strength begets strength. Over five days it mean-reverts. The 1-week return is the single heaviest factor in the model and it is scored negative.
  • RSI: chase risk → the setup. The swing model rewarded RSI ~56 and treated oversold as a falling knife. Here it inverts: washed-out names are the trade and extended ones are the risk. Below 20 the reward falls off again, because a vertical collapse is usually news rather than noise.
  • Earnings: catalyst → gap risk. The clearest flip. Over three months an earnings print is the catalyst you're paying for. Over five days it's an unhedged binary you can neither predict nor react to. Proximity is now penalised; names that just reported score best.
  • Today's winners: confirmation → fade. The GAINER flag was +25 in the swing model. Here it's −12, and LOSER flips from −25 to +10.

How social sentiment is handled

Roughly 95% of the universe is never discussed on Reddit. If those names were ranked at the bottom of a full-weight sentiment pillar, the model would become a meme-stock detector and hand the top of the ladder to whatever is being pumped that week. So social factors are ranked only within the mentioned cohort; unmentioned names get no sentiment pillar at all and their remaining four pillars are renormalised. Sentiment can push a discussed name up or down against its own fundamentals, but it never blanket-penalises the 1,400 names nobody posted about.

Two further guards: mention acceleration is capped at 5×, and the excess above that is scored negatively as a blow-off marker. Parabolic retail attention is historically a warning, not a buy signal. Author credibility weighting exists but stays inert until an author has 10+ calls scored against forward returns — roughly three to four weeks of data. Until then every author weights 1.0, and the dashboard says "building" rather than pretending otherwise.

What was removed

ROIC, ROE, margins, 3-year revenue and EPS growth forecasts, PEG, dividend yield, buyback and shareholder yield, Piotroski F, and share-count change are gone. Not down-weighted — removed. Over a two-week hold they carry no usable signal, and leaving them in at low weight would only add noise while making the score look more thorough than it is. Balance-sheet strength survives purely as a survival check: you don't want a name that blows up mid-trade.

What this model is expected to do

2–10 day equity returns are close to unpredictable from free public data. A realistic outcome is an information coefficient around 0.02–0.03 and a decile spread that is positive but noisy — which still implies roughly 45% of weeks are negative even when the model is working. The Improve page measures this directly so that changes are driven by information coefficient over 20+ sessions rather than by one bad week.

Two guards against false precision

  • Confidence shrinkage. A score from 6 factors is pulled toward 50; only a name with 24+ live factors is trusted at full spread. Thin data can never outrank deep data on noise alone.
  • Minimum-evidence floor. Below 12 factors a name gets no score at all. It stays browsable in the Explorer and is excluded from Rankings, the Screener and the Portfolio builder.

After blending, the composite is rescaled to mean 50 / sd 15. Averaging 40+ weakly-correlated ranks compresses everything toward the middle (that's just the central limit theorem), which would make the rating bands meaningless. The rescale is monotonic — it changes the spread, never the order.

Is this data current?

The badge in the top-right corner shows the same thing at a glance. After running Refresh.bat, reload this page — if the build time below hasn't moved, the refresh didn't land, and the numbers you're looking at are the old ones.

Honest coverage note

This snapshot was assembled on . The universe is names across the S&P 500 / 400 / 600 (large, mid and small cap). Of those, currently carry the full deep factor set; the rest have index, sector, price and market-cap data and are shown unscored until the next refresh fills them in.

The reason is mechanical, not a design choice: the bulk fundamental pull is rate-limited per request. refresh_data.py walks the whole universe on a schedule and closes the gap — the engine is already built for the full set, the rows just need filling.

Going live

Two paths, both wired:

  • Refresh script. Run python refresh_data.py. It re-pulls every source, rebuilds data.js, and this page picks it up on reload. No key, no signup.
  • API key. Drop a Financial Modeling Prep or Finnhub key into config.json and the refresh script switches to bulk endpoints — the whole universe in minutes instead of a slow crawl, with true intraday quotes.

Free tiers as of 2026: Financial Modeling Prep and Finnhub both offer usable free fundamentals; Finnhub allows ~60 calls/min and free websocket streaming; Twelve Data allows ~800 calls/day; Alpha Vantage is capped near 25/day and is too thin for a universe this size.

What this is not

A ranking engine, not advice. The Complete Score measures how a name looks against its peers on measurable factors right now — it knows nothing about your tax situation, your time horizon, pending litigation, a fraud that hasn't surfaced, or what the Fed does next month. Position sizing and the diversification guardrails exist because the score will sometimes be confidently wrong. I'm not a licensed financial advisor and this isn't personalized investment advice.

Factor inventory

factors, each percentile-ranked

Sources

Index constituents and GICS sectors — Wikipedia S&P 500 / 400 / 600 lists.
Prices, market caps, fundamentals, analyst data, technical readings, short interest, Altman Z / Piotroski F — StockAnalysis.com (data sourced from S&P Global Market Intelligence).
Flow flags — StockAnalysis.com gainers, losers, oversold, overbought and most-shorted screens.
Filing-level fundamentals available for cross-check via the SEC XBRL company-concept API.