Value Investor

Stock Analysis Screener Tech Rank GEX Market Breadth Valuation Map Recession Sentiment Crypto Bonds Metals Heatmap Calendar Smart Money Signals Deep Value Cycles Portfolio ◢ Terminal ↗

Actionable trade setups with entry, take profit, and stop loss — powered by ICT concepts, Minervini patterns, and momentum triggers.

Signals paused
Market Regime
SPY Price
RSI(14)
SMA 50 / 200
Health Check (4 conditions)
applies to all 5 tables (Setups · Open · Closed · Equity Curve · Sizing block)
Universe:
Position:
Timeframe:
Pattern:
School: MIN Minervini · MOM Momentum · CHART Classical chart · ICT Inner Circle Trader (daily BOS + hourly Liquidity Sweep) · DRV Darvas (confirmed-box breakout) · 151TS Quantitative Factor (Kakushadze & Serur 2018 — IBS, 12-1 momentum, PEAD, Value, Low-Vol) · STB Stockbee MAGN (Luk #2 Wave B 2026-05-26 — episodic pivot gap-up) · ANL Analyst Consensus (Luk Wave A C1 2026-05-26 — analyst_upgrade_drift, target_upside_top_decile from FMP /stable/grades-consensus + price-target)
Loading trade setups...
Show:
Loading signal heatmap...
CALL (4-5 of 5 bullish) PUT (0-1 of 5 bullish) NEUTRAL (2-3 of 5) | 5 indicators: Price > EMA20, RSI > 50, MACD > 0, EMA stack, Close > prior close
Loading backtest results...
Column Guide:
Grade = adaptive pattern quality (A/B/C/D by Profit Factor: A ≥ 1.2, B ≥ 1.1, C ≥ 1.0, D < 1.0). Uses the same source as the Trade Setups table and Adaptive Pattern Grades — blends backtest PF with live results, and for regime-locked patterns (e.g. BOS, Liquidity Sweep) uses the per-regime PF rather than the overall PF column. So a pattern with overall PF below 1.0 can still be Grade B here if its allowed-regime PF clears the threshold.
Signal Type = the pattern or trigger name (e.g., Golden Cross, VCP, Break of Structure).
TF = timeframe. ST = short-term (3-15 day swing trades), MT = medium-term (15-60 day position trades).
Count = how many times this signal fired across all tickers during the 5-year backtest period. Higher count = more statistically reliable.
Win% = % of trades that had a positive return. Green (≥50%) means more winners than losers. Red (<40%) means mostly losers.
Avg Ret = average return per trade across all occurrences. This is the single most important number — positive means the pattern makes money on average.
Avg Win = average return of winning trades only. Shows how much you make when the pattern works.
Avg Loss = average return of losing trades only. Shows how much you lose when the pattern fails. Smaller losses = better risk management.
PF = Profit Factor (total gains ÷ total losses). PF > 1.0 = profitable, PF > 1.5 = strong, PF < 1.0 = losing money overall.
p (MCPT) = Monte Carlo permutation p-value. Sign-flip null tests "is the observed mean trade return distinguishable from zero?" Lower = stronger signal. 10,000 permutations, fixed seed.
p (FDR) = Benjamini-Hochberg adjusted p across all (pattern × regime) tests. Patterns whose p_fdr < 0.05 survive multiple-testing correction; patterns above that threshold may be statistical artifacts of running many tests. (MCPT assumes i.i.d. trade returns; tightly-clustered same-day signals may inflate significance — block bootstrap is a v2 candidate.)
PSR>0 = Probabilistic Sharpe Ratio (Bailey & Lopez de Prado, 2012): probability the true Sharpe is positive given the sample size, skewness, and kurtosis of trade returns. Reported as a percent. PSR ≥ 95% = strong evidence of positive edge.
PSR>0.5 = same calculation against a benchmark Sharpe of 0.5 ("meaningfully positive"). Stricter test.
PSR shown only when n ≥ 30 closed trades. MCPT shown when n ≥ 5. For n > 20K, a deterministic 20K subsample is used to bound memory.
Expectancy = expected return per trade (Avg Win × Win% − Avg Loss × Loss%). Positive = profitable system.
Hold = average number of days a trade was held before hitting TP, SL, or expiring.
Win/Loss Distribution = visual bar showing the proportion of winners (green) vs losers (red).

Backtest covers 5 years of historical data (2021-2026), 554 tickers, 119,000+ simulated trades (step=1, every trading day), refreshed weekly.

151TS Quantitative Factor patterns (new 2026-05-11): Only ibs_oversold_pullback appears in this table — the existing weekly backtest engine picks it up automatically because it's registered in check_all_medium_term_patterns(df). The other four (mom_top_decile, pead_drift, value_top_decile, low_vol_top_decile) need cross-sectional or external data (12-1 momentum rank, SUE history, value/vol decile) that the backtest engine doesn't have access to. They wait for live dataadaptive_grades.py rescores them after ~30 closed trades per pattern (4-8 weeks), matching how darvas_box and adam_eve_* were introduced.

How recent pattern-mechanic changes affect these stats: Backtest PF is unchanged by config patches — the 5-year sim doesn't re-run on patch. Forward Live PF / Win% / Avg Return / Expectancy are direction-agnostic of sizing, so the upcoming sizing halve (queued for 2026-05-26) won't shift them. The entry/exit refinements on bos, mom_top_decile, vcp, and cup_handle WILL reflect in forward live numbers. Notably, removing BULL+short entries at the pipeline means bos Live PF should rise as the dead-on-arrival shorts (which had been closing at ~−0.5% avg via regime_exit) stop being included.

Cohort caveat for MCPT/FDR/PSR: for patterns where a recent patch materially changed fire composition, treat pre-patch and post-patch trades as distinct cohorts when reading the rigor columns. A block-bootstrap upgrade is on the v2 roadmap. See How It Works → What's new for the full patch changelog.
Total Signals
Every trade setup ever generated by the signal engine, recorded permanently in the prediction ledger.
Closed Trades
Signals that have resolved: price hit Take Profit (TP), Stop Loss (SL), early exit (alpha decay), holding period expired, or a regime exit forced closure. Only closed trades count toward win rate.
Win Rate
% of closed trades that made money (return > 0%). A 50%+ win rate with good risk/reward is profitable. Below 50% means more losers than winners.
Avg Return
Average P&L per closed trade. Positive = system is profitable on average. This matters more than win rate — a 40% win rate can still be profitable if winners are larger than losers.

Equity Curve · Σ per-trade % (equal weight, no sizing)

Strategy α mode: Each dot is a closed trade. Dot fill: green = profitable, red = loss. Dot border shows regime at signal time: green ring = BULL, yellow ring = CAUTION, red ring = BEAR. The line shows the running total of all trade returns added together. If the line is at -25%, it means the sum of all closed trade returns so far is -25% (not your portfolio — it assumes equal allocation to every signal). A healthy system trends upward over time.
💡 Switch to Portfolio $ to see the same trades sized against a real account using your Position Sizer config (at the top of the page).

Adaptive Pattern Grades

School badges: MIN Minervini / O'Neil (VCP, cup & handle) · MOM Momentum (pocket pivot, pullback, MA crosses) · CHART Classical chart (triangles, ranges, divergence) · ICT Inner Circle Trader (daily BOS regime-locked to BULL, hourly Liquidity Sweep regime-locked to CAUTION/BEAR) · DRV Darvas (confirmed-box breakout, 1950s technique) · 151TS Quantitative Factor (Kakushadze & Serur 2018: IBS pullback, 12-1 momentum, PEAD, Value, Low-Vol) · STB Stockbee MAGN (Luk #2 Wave B 2026-05-26 — episodic_pivot gap-up event) · ANL Analyst Consensus (Luk Wave A C1 2026-05-26 — analyst_upgrade_drift + target_upside_top_decile from FMP /stable/grades-consensus + price-target)
Each grade blends 5-year backtest Profit Factor with live Profit Factor. The ratio under the grade (e.g. 90/10) is the blend weight — backtest % / live %. Grey 100/0 = backtest-only (not enough live trades yet). As live trades accumulate, the blend shifts:
<5 trades
100/0 — backtest only
5–9
90/10
10–49
70/30
50–99
50/50
100–199
40/60
200+
30/70 — live-led
Backtest anchors early decisions (119K simulated trades); live weight grows as real results prove themselves out.
Example — pocket pivot, grade A (90/10): BT PF 1.15, live PF 2.88 (n=8). Blended = 0.90×1.15 + 0.10×2.88 = 1.32 → grade A (threshold ≥1.2). Even at 10% live weight, strong early results pushed it over the B→A line.
Auto-downgrade — if live win rate falls >2σ below backtest expectation, the grade drops one level automatically.
🔒 Regime-locked — some patterns only have edge in specific regimes. BOS: BULL only (PF 1.17 vs 0.95 overall). Liquidity Sweep: CAUTION + BEAR only (PF 1.14 / 1.22; BULL PF 1.04 falls below the 1.10 gate). Adam & Eve Bottom: BULL only (PF 1.39, p_fdr=0.027). Low-Vol Leader (151TS): CAUTION + BEAR only by design — defensive use case per Kakushadze & Serur 2018 §3.4. Locked patterns fire only when the regime matches, and their grade/PF reflect that regime's slice of the backtest.
Columns:
Pattern — signal type name
Grade — A/B/C/D by blended PF (A≥1.2 · B≥1.1 · C≥1.0 · D<1.0)
Blended PF — weighted Profit Factor used for grading
BT PF — 5-year backtest Profit Factor (119K+ trades)
Live PF — Profit Factor from closed live trades ( ≥20% above BT · ≥20% below)
Live WR — win rate from closed live trades
Avg Ret — average return per closed live trade
Total P&L — sum of all closed live returns
Expect — expectancy: (WR×avg win) − (loss rate×avg loss). Edge per trade; positive = profitable system
Sharpe — annualized risk-adjusted return. ≥1.0 excellent · <0 losing after risk
Max DD — worst peak-to-trough drawdown for this pattern. Lower = more consistent
# — closed live trade count (more = more reliable)
Decay — signal health: rolling Sharpe ÷ lifetime Sharpe. ≥0.75 healthy · 0.5–0.75 warning · <0.25 degrading
Trend improving · declining · stable (recent vs older win rate)
Loading grades...

Open Trades

Active positions that haven't hit TP, SL, or expired yet.

Ticker
Stock symbol. NEW = entered today.
Pattern
Signal type that triggered the trade.
Direction
▲ Long (buy) or ▼ Short (sell).
Entry $
Price at entry (signal-day close, OHLC-validated).
Current $
Latest close price.
P&L
Unrealized return since entry.
TP $ / To TP
Take-profit target, and % distance from current price to it.
SL $ / To SL
Stop-loss level, and % distance from current price to it.
Days Held
Calendar days since the signal fired.
Early Exit
Projected sell date for the early-exit rule (≥60% of target hit while ≤40% of target_days elapsed). SELL TONIGHT = already meets rule, closes at today's 4:40 PM ET run. SELL TONIGHT* / SELL TMRW / SELL ~May 12 = projected close date if today's price velocity continues (linear extrapolation). WIN CLOSED = past 40%-time deadline, rule can no longer fire.
% Tgt
Progress toward TP — what % of the entry-to-TP distance the current price has covered. Distinct from To TP (which is the price gap, not progress).
Win Left
Days the early-exit window stays open (40% × target_days from entry). Negative = window already past. Different from the SELL date — this is the latest day the rule could fire, not when it's expected to.
Expires
Date the trade expires if TP/SL not hit (red = ≤3 days, yellow = ≤7 days).
Entry Date
When the signal was generated.
Loading trades...

Paper-Tracked Signals

PAPER · NO CAPITAL

Active signals from quarantined / locked patterns. The system fires these as if they were real, but doesn't allocate capital — they're tracked purely so live PF can be measured and the pattern can be unlocked once it proves itself. These do not appear in the Trade Setups feed and don't count against the 250-position heat cap.

Columns mirror Open Trades. Same TP/SL/early-exit/expire rules apply on paper. When a paper trade closes, its outcome feeds directly into Adaptive Pattern Grades and may trigger automatic reactivation of the pattern.

Why a pattern might be here: see the Quarantined Patterns section below — Severity / Reason / Reactivation Gate are explained there.

Loading paper-tracked signals...

Closed Trades

Every trade that has resolved. Columns:
Ticker — stock symbol
Pattern — signal type that fired
Direction▲ Long (buy) or ▼ Short (sell)
Entry Date — when the trade opened
Entry $ — price at entry
Exit $ — price at close (capped at TP or SL)
TP $ — take-profit target (green = hit)
SL $ — stop-loss level (red = hit)
Return — actual P&L % entry → exit
Hold Days — days open (0 = closed same day signal fired)
Exit Date — when the trade closed
Reason — why the trade closed:
✓ Take Profit — price reached the TP target. Full target return captured.
✗ Stop Loss — price hit the stop. SL is not a fixed %; it's set per trade from the pattern's chart structure (typically 2–14%, avg ~7%).
⚡ Early Exit — the trade captured 60%+ of its TP target in under 40% of the expected holding period. When gains arrive front-loaded like this, the system exits immediately to lock them in rather than risk giving them back over the remaining hold time. Example: TP is +10% over 40 days — if the stock hits +6% by day 14, early exit fires.
⏲ Expired — the full holding period elapsed without hitting TP or SL. Trade closed at the last available price.
▶ Regime Exit — the confirmed market regime contradicted the trade direction for 2+ consecutive days, so the system force-closed the position at the current price. Longs are closed when the regime locks to BEAR; shorts are closed when it locks to BULL. CAUTION never triggers a regime exit — it's a mixed regime and doesn't warrant forced closure. This is a risk-control exit, not a signal failure; the P&L can be positive or negative depending on where price was when the regime flipped.
Loading trades...

Signal Pipeline

Shows how signals are filtered through the 7-stage pipeline. Only signals that pass all stages become actionable trade setups. Stages: Raw Scan → Quality Gate (PF ≥ 1.1) → Regime Filter → Trend Conflict → Concentration Cap → Correlation Filter → Pattern Lock.

Quarantined Patterns

Patterns suspended due to poor live performance. The system still generates and tracks their signals daily (called "paper trades") but does NOT show them as actionable trade setups. This is standard institutional practice — quant funds call it "quarantine" or "strategy incubation."
How it works: When a pattern performs poorly in live trading (Profit Factor < 0.8 or 5+ consecutive losses), it gets quarantined. During quarantine, the system keeps computing its signals as if they were real — these are the paper trades. When enough paper trades accumulate and meet the reactivation threshold, the pattern automatically comes back to life. You can also manually reactivate it early with the button.
What happens if it fails quarantine? If the pattern still shows poor performance (PF < 0.7) after the quarantine period ends, it moves to "Mothballed" status — indefinite monitoring with no end date. Mothballed patterns are never deleted. They keep generating paper trades. If market conditions change and the pattern starts working again, you get an alert. Think of it like cold storage.
Column guide:
Severity = how badly the pattern failed. MILD (PF 0.8–1.0, 60-day quarantine) • MODERATE (loss streak of 5+, 3-day quarantine + 3 closed paper trades minimum) • SEVERE (live PF < 0.8 systemic failure, 5-day quarantine + 5 closed paper trades minimum, may mothball if no recovery).
Ends = earliest date the system will check if the pattern can come back. Not a guaranteed return date — it must also pass the reactivation gate (PF ≥ 1.0).
Paper Trades = closed simulated trades detected during quarantine. Time is the primary gate — paper trades are a sanity check that the pattern is still firing. MODERATE needs 3; SEVERE needs 5. Low bar by design: patterns with sparse signals shouldn’t be penalised for market conditions.
Paper PF = Profit Factor of the paper trades during quarantine. This is the key number — green (≥1.0) means the pattern is making money on paper, red (<1.0) means it is still losing.
Reactivation Gate = the performance threshold the pattern must hit to automatically come back. For example, "PF ≥ 1.0 + Sharpe ≥ 0.5" means the paper trades must show a Profit Factor above 1.0 AND a Sharpe ratio above 0.5.
Reactivate = manual override button. Use this if you believe the pattern should come back early (e.g., market conditions have changed). The system will resume showing it as an actionable signal on the next daily run.
Direction:
Universe:
Sort:

Column Guide

Ticker
— Stock symbol. Click to open full analysis.
Last Close
— Most recent actual closing price from market data.
Predicted Close
— Kronos AI model's predicted closing price 5 trading days from now.
Predicted Move
— Percentage change between last close and predicted close. Green = bullish, Red = bearish.
Direction
— Overall predicted direction: ▲ Up (bullish), ▼ Down (bearish), ◆ Flat.
Consistency
— What % of the 5 predicted days agree on direction. 100% = all 5 days move the same way = stronger conviction.
Confluence
— ✓ when an existing AI Trading Signal (VCP, cup & handle, etc.) agrees with Kronos direction. Independent confirmation from two different methods. (2026-05-20 update: confluence now excludes BULL+short bos signals — Patch E hard-blocks them at the entry pipeline, so they no longer surface as confluence candidates.)
Predicted Candles
— Mini candlestick chart showing the 5 predicted future trading days. Green candle = predicted up day, Red = predicted down day. Blue dashed line = current price reference. Cyan shaded band = Monte Carlo confidence range (10 independent model passes). Wider band = more uncertainty.
AI Analyze
— On-demand deep analysis using GLM-5 AI. Combines Kronos prediction with technicals, fundamentals, and market context for a bull/bear assessment.
Model: Kronos-base (102.3M params) — open-source foundation model trained on 12B candlestick records from 45+ global exchanges, AAAI 2026 (github.com/shiyu-coder/Kronos). Uses 200 days of historical OHLCV data to predict future price sequences via tokenized transformer architecture. 10x Monte Carlo ensemble for confidence bands. Run on desktop RTX 4070 Super GPU. Predictions are probabilistic estimates, not guarantees.
Ticker Last Close Predicted Close Predicted Move Direction Consistency Confluence Predicted Candles AI Analyze

Upload Forecast (Desktop GPU)

Kronos-Base 102M via RTX 4070 Super

AI Analysis

How AI Trading Signals Work

This page is powered by two engines: a daily signal scanner that finds trade setups every trading day, and a weekly backtest that grades how well each pattern has worked historically. Every signal passes through a 7-stage quality pipeline before appearing on this page.

What's new — 2026-05-20
A full Fix B validation gate ran today (10 items), 4 patches landed, an asymmetry in the regime gate was caught and fixed, and a position-sizing review was completed.
Patches deployed today (Patches A–E):
  • Patch ABOS per-pattern cap raised 5 → 15. Was the single biggest throttle on signal throughput; ~85 raw signals/day were being dropped silently.
  • Patch BMom Top 10% ATR stop multiplier 2.0× → 1.5×. Tighter stops; ~2 of yesterday's 6 blocked candidates would have been rescued retrospectively.
  • Patch CVCP take-profit scale 3× measured-move → 1.5×. The 4× target was too ambitious — only 1/30 VCP trades hit it.
  • Patch Dearly_exit promoted to primary outcome for VCP + Cup & Handle (time-gate 0.6× of target_days). 4/5 VCP wins were already early_exit-captured under the prior code path; this makes the rail official.
  • Patch EBULL + short hard-blocked at entry (matches the exit-side regime_exit policy that has always closed BULL shorts). Stops a 2-11/day same-cycle "generate then immediately kill" loop. 97.6% of all bos shorts ever (40/41) were closing as regime_exit — these were polluting per-pattern stats without contributing real P&L.
Drawdown drilldown finding: -$35,588 Fix B drawdown sized at $100K × 2% × grade-tier (A=1.25×, B=1.0×, C=0.75×, D=0.5×). $31,767 came from 19 Grade A breakouts hitting SL during the 2026-05-15 risk-off inflection (SPY -1.20%, IWM -2.41%, VIX +6.78%). Drawdown was regime-driven, not signal-quality-driven. Patches A–D fix pattern mechanics; they do not address regime-cluster events. The right lever is regime detection (regime.py — promoted to drawdown-driven priority for the 05-21–25 pre-work sprint).
Shipped 2026-05-26 (Patch F): base risk per trade 2% → 1% to align with Qullamaggie's published 1% ceiling (Clenow uses 0.1%, Luk uses 3% on asymmetric setups only). Grade A effective sizing now 1.25%, Grade B 1.0%. Validation showed ~60% drawdown reduction from one config change.
2026-05-26 deploy (Wave A+B):
  • Wave A — Same-evening corrections after live diagnosis:
    • ✅ C1 analyst signals activated: Analyst Upgrade + Analyst Target Top 10%. (Patch: per-pattern R:R override 1.9 mirrors VCP Patch C — fix landed evening of 05-26 after 45 raw fires were silently dropping at the 2.0 R:R gate.)
    • ✅ Luk #3 parabolic-exhaustion exit overlay enabled in update-trade-status.py.
    • ✅ Luk #5 anchored VWAP confluence columns (shipped earlier in 05-23 pre-work).
    • ✅ Patch B (gate-edit preservation) + Patch F (sizing 2% → 1%).
    • Trend Pullback Qullamaggie rewrite backed out same evening — dormant port shipped without the required cross-sectional top-2% momentum leader pre-filter in compute-signals.py; broad-universe backtest gave PF 0.81 vs spec PF 1.71. Original EMA21 detector restored. Redo when wrap-around code is written.
    • ✅ Backtest cron re-run rebuilt VCP stats (had been silently missing from backtest-results.json since 05-23 due to the same R:R-vs-exec-cost trap).
  • Wave B — 3 new entry patterns: Episodic Pivot (Stockbee MAGN, PF 1.81 backtest), High Tight Flag (Minervini, PF 1.67 backtest), Momentum Rest (Qullamaggie rest entry, PF 2.21 n=7 borderline).
Dropped 2026-05-21 pre-work after backtest: parabolic_short (Luk #6 — only 2-3 fires in our universe) and true parabolic_long snap-back (Luk #7' — PF 0.24, n=3); will revisit if universe expands to small-caps.
Pre-work landed 2026-05-23 (Sat): Wave A pre-work shipped DORMANT or data-only ahead of schedule. Now live: Δ AVWAP-E% + Δ AVWAP-H% columns on this table (Luk #5 Stage A — read tooltips for definition), avwap-levels.json + sector-peers.json + analyst-signals.json data files refreshed by 3 new weekly/daily crons. Dormant code ready for atomic Wave A flip: Luk #1 QM detector, Luk #3 exhaustion exit (feature-flagged off), C1 analyst-signals detectors. Zero behavior change to the live pipeline until Tue 05-26.

Daily Refresh (Mon-Fri after market close)

These run automatically every trading day. The trade setups table is regenerated from scratch — it shows what patterns are active today, not a running list of trades.

4:15 PM ET — Price Loader
Downloads latest OHLCV prices for all 554 tickers (S&P 500 + NASDAQ-100 + portfolio + watchlist) via yfinance.
4:25 PM ET — Signal Computation (7-Stage Pipeline)
Scans all 554 tickers through a rigorous 7-stage pipeline. Tickers with existing open trades are skipped (no duplicate positions):

1. Raw Scan — Detects chart patterns across all tickers (golden cross, cup & handle, RSI divergence, trend pullback, death cross, etc.)
2. Quality Gate — Only patterns with Profit Factor ≥ 1.1 from backtesting pass (currently 5/7 backtested patterns qualify: golden_cross, rsi_ma_divergence, cup_handle, vcp, and Liquidity Sweep — the last one is regime-locked to CAUTION/BEAR on hourly bars)
3. Regime Filter — Grades patterns by PF (A ≥ 1.2, B ≥ 1.1, C ≥ 1.0, D < 1.0). BULL allows all grades; CAUTION allows A/B/C; BEAR allows A only. Direction blocks (Patch E 2026-05-20): BULL hard-blocks shorts at entry; BEAR hard-blocks longs (Grade A long exception preserved). These mirror the exit-side regime_exit policy exactly — entries and exits agree on what's allowed. Confidence scaled by regime within the allowed direction
4. Trend Conflict Filter — Blocks signals that go against the ticker's own 5-indicator trend light (long on red-trend ticker = blocked, short on green-trend = blocked)
5. Concentration Cap — Limits signals per pattern type to prevent over-concentration
6. Correlation Filter — Ensures portfolio-level diversification (removes highly correlated positions)
7. Pattern Lock — Quarantines patterns with poor live performance (paper-trades during suspension)

Entry price validation: Entry prices are set at the current day's close (not historical breakout levels) and capped within the day's OHLC range. Signals where price hasn't reached the breakout level are skipped — only actionable trades appear.
4:40 PM ET — Trade Status Update
Checks all active setups in the database against current prices:
• Updates the Last column (latest close price + P&L %)
• Marks setups as TP hit if price reached Take Profit
• Marks setups as SL hit if price reached Stop Loss
• Marks setups as expired if holding period ran out
Alpha decay exit — takes profit early if 60%+ of target is reached in 40% of time
• Exit prices are capped at TP/SL levels (limit/stop order assumption)
4:42 PM ET — Daily Scorecard Refresh
Recomputes the Prediction History tab's data from the live prediction ledger and latest trade results. Blends the weekly backtest with daily live performance to produce the adaptive grades shown on the Trade Setups table. Also refreshes the Equity Curve, Open Trades, and Closed Trades views.
Example: What happens to a signal over time
Day 1 (Mon) — ACME shows Cup & Handle pattern. Price breaks out at $105 (close). Entry $105, TP $127, SL $91. Appears in table.
Day 2 (Tue) — Pattern still valid. ACME reappears with updated Last price $108 (+2.9%). Entry/TP/SL stay the same.
Day 3 (Wed) — Price rises to $115. Last column shows +9.5%. Pattern still holds.
Day 5 (Fri) — Price hits $127 (Take Profit). Status update marks it "TP hit" in database.
Day 6 (Mon) — ACME no longer shows Cup & Handle (pattern completed). It disappears from the table.
Meanwhile — New signals appear for other stocks as new patterns form. The table always shows today's active opportunities.
Alternatively: if price drops to $91 (Stop Loss), it's marked "SL hit." If neither TP nor SL is hit within the target holding period (e.g. 40 days), it's marked "expired." Early exit may trigger if 60%+ of target is hit in under 40% of the time (the time-gate; Patch D 2026-05-20 promoted this to the primary outcome for VCP and Cup & Handle). Regime exit closes the trade immediately when the confirmed market regime (2+ consecutive days) contradicts the trade direction — long positions are closed if the regime locks to BEAR, short positions if it locks to BULL. CAUTION regime never triggers a regime exit. Patch E (2026-05-20) brought the entry-side policy into parity: BULL+short and BEAR+long are now hard-blocked at entry, so trades that would be immediately regime-exited are never opened in the first place.

Weekly Refresh (Saturday 8:00 AM ET)

The backtest runs once a week to grade pattern quality. It does NOT change the trade setups — only the grades (A/B/C/D) shown next to each pattern.

What the Backtest Does
Simulates every pattern occurrence across 5 years of history (2021-2026) for all 554 tickers, checking every trading day (step=1). For each historical signal, it checks: did the price hit Take Profit or Stop Loss first? This produces win rates, expectancy, and Profit Factor per pattern. 119,000+ simulated trades.

Only patterns with Profit Factor ≥ 1.1 pass the quality gate. Currently 14 out of 20 patterns qualify for live signals (golden_cross, rsi_ma_divergence, cup_handle, vcp, liquidity_sweep, bos, adam_eve_dbottom, darvas_box, plus the 5 quantitative-factor patterns from 151TS at Grade C, plus 3 Luk Wave B entries (episodic_pivot PF 1.32 / high_tight_flag PF 2.11 / momentum_rest_entry PF 5.09 n=7 borderline-small-sample) and 2 C1 analyst detectors (analyst_upgrade_drift, target_upside_top_decile — grade pending first 30 closed trades). Quarantined: pocket_pivot, vcp (locked but tracked), rsi_ma_divergence (re-tightened 2026-05-21 + unlock_at extended to 05-29 to bridge to Patch B in Wave A), cup_handle. Blocked: death_cross, adam_eve_dtop, desc_triangle, trend_pullback (Qullamaggie rewrite backed out 2026-05-26 evening pending compute-signals.py cross-sectional pre-filter; original EMA21 detector restored at PF 1.02, gate-blocked).
Pattern Grades (A/B/C/D)
Grades are based on Profit Factor (total gains ÷ total losses) from the 5-year backtest, not win rate. Low-WR strategies can be highly profitable with good risk/reward.

Grade A A — PF ≥ 1.2. Institutional quality — consistently profitable. (RSI Divergence PF 1.24, Golden Cross PF 1.21, Adam & Eve Bottom PF 1.39, Break of Structure PF 1.72, Episodic Pivot PF 1.81 backtest, High Tight Flag PF 1.67 backtest)
Grade B B — PF ≥ 1.1. Profitable — worth trading. (Cup & Handle PF 1.16, VCP PF 1.19, Liquidity Sweep PF 1.14 CAUTION / 1.22 BEAR)
Grade C C — PF ≥ 1.0. Breakeven — monitor only, not traded. (Examples: 151TS Quantitative Factor patterns pre-grading)
Grade D D — PF < 1.0. Losing money — blocked. (Death Cross PF 0.39)

In BULL regime, all grades pass. In CAUTION, only A/B/C. In BEAR, only A. Grades adapt over time as live results blend in.
What Changes Weekly
• Pattern grades (A/B/C/D) — may shift as new week of data is added
• Which patterns pass the quality gate (PF ≥ 1.1)
• "Best Only" filter results (shows only A+B grade patterns)
• Strategy Performance Timeline tab (win rates, expectancy, profit factor)
• Regime-conditional performance (how patterns perform in BULL vs BEAR markets)
• Adaptive grades — blends backtest with live results (weight shifts as live trades accumulate)

Grades change slowly — maybe 1-2 shifts per month. They reflect long-term pattern reliability, not daily noise.
Daily vs Weekly — Quick Reference
Daily (Mon-Fri)
• Which stocks appear in the table
• Entry prices (today's close, OHLC-validated)
• TP/SL (scaled to entry price)
• Last price & P&L
• Market Regime (BULL/CAUTION/BEAR)
• 7-stage pipeline filtering
• Signal history bars (green/red)
• Open/Closed trade tracking
Weekly (Saturday)
• Pattern grades (A/B/C/D)
• Quality gate re-evaluation (PF ≥ 1.1)
• "Best Only" filter composition
• Strategy Performance Timeline tab numbers
• Win rates & expectancy
• Adaptive grade blending (backtest + live)
• Regime performance breakdown

Statistical Rigor — How We Know an Edge Is Real

A pattern with PF > 1.1 looks profitable on paper, but with 12 patterns × 3 regimes ≈ 30 implicit tests, some "good" patterns can be lucky. We layer three checks on top of raw PF:

Monte Carlo Permutation Test (MCPT)
For each pattern's trade returns we run 10,000 sign-flip permutations (each return's sign flipped independently with p=0.5) and compute the resulting mean. The MCPT p-value is the fraction of permutations whose mean meets or exceeds the actual mean.

Lower p = stronger evidence the pattern's edge isn't just random. Reported as p (MCPT) in the Strategy Performance Timeline table.

Caveat: MCPT assumes i.i.d. trade returns. Same-day clustered signals can inflate significance — a block-bootstrap upgrade is on the v2 roadmap.
Benjamini-Hochberg FDR Correction
Running 30+ tests guarantees a few "p < 0.05" hits by chance alone. The Benjamini-Hochberg FDR procedure adjusts every p-value to control the false-discovery rate at 5% across the whole test family.

The p (FDR) column is the corrected number. A pattern whose p_fdr < 0.05 survives multiple-testing correction; anything above is honestly indistinguishable from chance at the family level.

The summary card at the top of the Backtest tab shows "FDR<0.05 pass: X/N" — be ready for that to be a small fraction.
Probabilistic Sharpe Ratio (PSR)
The Sharpe ratio is a point estimate; given finite trade samples, it has its own uncertainty. The Probabilistic Sharpe Ratio (Bailey & Lopez de Prado, 2012) takes the observed Sharpe and the sample's skewness + kurtosis and returns the probability that the true Sharpe is greater than a given benchmark.

PSR>0 = probability the true Sharpe is positive (existence test).
PSR>0.5 = probability the true Sharpe is meaningfully positive (≥ 0.5).

≥ 95% is the conventional "strong evidence" threshold. PSR is reported only when n ≥ 30 closed trades, since smaller samples are too noisy.
No Auto-Quarantine on FDR Fail
Failing FDR doesn't suspend a pattern. Some real edges live only in subsets (e.g. a regime-locked pattern can fail overall-FDR but still trade profitably in BULL only). The columns are diagnostic transparency, not an enforcement gate.

The existing PF-based quality gates and adaptive grades stay in charge of which patterns emit live signals. We add the rigor numbers so you can decide for yourself which "A grades" deserve trust.

Reading the Table

Market Regime Banner
SPY-based 4-condition health check: price vs SMA50, price vs SMA200, Golden Cross status, RSI above 45.
3-4 = BULL (favor buys), 2 = CAUTION (be selective), 0-1 = BEAR (favor sells).
Regime adjusts confidence: with-trend signals +15, counter-trend −20.
Trade Setup Columns
Grade — pattern quality from Profit Factor (A/B/C/D). Dynamically updated from backtest + live results.
— direction: green up = long/buy, red down = short/sell, grey diamond = both.
Entry — today's close price (validated within OHLC range). Last — current price with P&L vs entry.
Stop — exit if wrong (max loss %). Target — exit if right (expected gain %). TP/SL scale proportionally when entry differs from breakout level.
R:R — reward-to-risk ratio. Green ≥ 2:1, yellow ≥ 1.5:1.
Conf — confidence score (50-100%). Each pattern/trigger type has a base confidence (e.g. EMA cross: 50 + vol_ratio×10, RSI reversal: 55, BOS: 55 + break%×5, Liquidity Sweep: 60 + (sweep_depth/ATR)×10 (max 90), MACD div: 60, BB squeeze: 65, VCP/cup&handle: up to 90). Then regime-adjusted: BULL+long or BEAR+short → +15, CAUTION → +0, counter-trend → −20. Signals below 50 are filtered out.
Expanded Chart View
Click ▶ to expand. Shows 90-day price chart with Entry/TP/SL levels and a colored signal strip at the bottom. Each bar is a daily trend light based on 5 indicators (Price > EMA20, RSI > 50, MACD > 0, EMA stack, close > prior close): green = 4-5 bullish, red = 0-1, grey = 2-3. Streak badge shows consecutive same-direction days.
7 Backtested Patterns (5 active)
Active (pass PF ≥ 1.1 quality gate): Golden Cross (A), RSI Divergence (A), Cup & Handle (B), VCP (B — TP halved to 1.5× MM via Patch C, early_exit promoted via Patch D), Liquidity Sweep (B, regime-locked CAUTION/BEAR, hourly), Adam & Eve Bottom (A, BULL-locked PF 1.39), Darvas Box (A PF 1.35), BOS (A, BULL-locked PF 1.72 blended — per-pattern cap 15 via Patch A 2026-05-20; shorts hard-blocked in BULL via Patch E 2026-05-20).
Quantitative Factor (151TS) actively trading: IBS Pullback (C), Momentum Top 10% (C — ATR multiplier 1.5× via Patch B 2026-05-20), PEAD Drift (C), Value × Momentum (C), Low-Vol Leader (C, regime-locked CAUTION/BEAR).
Backed out 2026-05-26 (Wave A): Trend Pullback Qullamaggie rewrite reverted same evening after fresh backtest gave PF 0.81 (vs spec PF 1.71). Root cause: dormant-port pre-work shipped the per-ticker geometry detector but the required cross-sectional top-2% momentum leader pre-filter in compute-signals.py was never written. Detector fires on the full universe without the leader filter and loses money. Original detect_trend_pullback restored to service. Will redo properly once the wrap-around precompute + dispatcher gate is built (~2-3h).
Blocked or quarantined: Death Cross (PF 0.39 — D grade, blocked), Pocket Pivot (quarantined 2026-05-18 after PF dropped 0.83 → 0.49), trend_pullback (PF 1.02 — original detector, blocked at gate threshold 1.1).
No backtest data yet: Asc Triangle, Desc Triangle, Range Breakout.

Blocked patterns are still tracked in the prediction ledger for future re-evaluation — they can re-activate if backtest performance improves. Additional patterns (short-term triggers like EMA Cross, RSI Reversal, FVG, etc.) are defined but currently filtered out by liquidity, confidence, or risk/reward gates during setup generation.

Kronos Forecast (Mon-Fri after 4:30 PM ET)

After market close, the Kronos AI model generates 5-day forward candle predictions for all tickers using 10x Monte Carlo ensemble for confidence bands. Computed on desktop GPU (RTX 4070 Super) and uploaded to VPS.

Model: Kronos-base (102.3M params, AAAI 2026)
Open-source foundation model trained on 12 billion candlestick records from 45+ global exchanges. Predicts future OHLCV candles using tokenized price sequences and a decoder-only transformer. Runs on desktop RTX 4070 Super GPU (~13 min for 555 tickers × 10 Monte Carlo passes).
Monte Carlo Confidence Bands
Each ticker gets 10 independent prediction passes with stochastic sampling. The median prediction becomes the forecast; the spread across passes forms the cyan confidence band on the mini chart. Wider band = more model uncertainty. The ±spread% shows how much the 10 passes disagree on the final close price.
Confluence Signal
When Kronos predicts the same direction as an existing trade signal (e.g., VCP breakout detected AND Kronos predicts 5-day upside), the confluence flag is set. This provides independent confirmation from a completely different methodology.
Consistency Score
Measures what percentage of the 5 predicted days agree on direction. 100% consistency means all 5 predicted days move in the same direction. Higher consistency = stronger directional conviction.
Forecast Accuracy Scorecard
Predictions are archived daily and scored once the 5-day forecast window expires. Metrics: direction accuracy (did it predict up/down correctly?), average absolute error (how far off was the predicted move?), and within-range % (did actual price land inside the predicted high-low band?). Updated automatically on each upload.

Pattern Playbook

Auto-generated from the latest backtest and live prediction ledger. Each paragraph covers: definition, backtest profit factor over 5y × 554 tickers, avg R:R, best/worst regime, last 30 days of closed live trades, and current quality-gate status.

Current Formulas & Rules
Loading…

Signals are computed at ~4:25 PM ET Mon-Fri after market close and reflect end-of-day data. Entry prices use the signal day's closing price, validated within the day's OHLC range. Backtest uses 5 years of historical data across 554 tickers (119K+ trades, every trading day), refreshed Saturday 8:00 AM ET. Signals are informational — always validate with your own analysis before trading. Past patterns do not guarantee future results.