A
ATLAS
The Architecture of Edge
Positive-expectancy NQ / ES intraday signals — institutional tape reads · prop-desk evidence weighting · disciplined refusal to fire without edge.
COLD HOT · NOW LIVE
78 modules
Engine surface
~100 fields/fire
Substrate density
711 fires resolved
Closed-loop sample
27 cards · 5 layers
This atlas
SUBSTRATE
what the engine sees
Layer 1
PILLARS
how it thinks
Layer 2
DECISION
how it commits
Layer 3
LEARNING
how it improves
Layer 4
Substrate L1
what the engine sees — raw market reality, classified
7 CARDS
Order Flow
01
Watch what buyers and sellers are actually doing — not just where price went.
  • Tracks who's winning each bar — buyers or sellers — and flags when price disagrees with that pressure
  • Spots when big players are absorbing the other side, in four stages: building, confirmed, exhausted, reset
  • Three ways to know who took the trade — exchange tag, or inferred two different ways as fallback
  • Knows the difference between someone refilling an order and someone aggressively taking it
Prevents Fake breakouts where price jumps but no real buying or selling backs it up.
engine-order-flow.js · NQEliteAbsorption
4-state FSM
Liquidity
02
The price levels big players protect — and the traps they set when retail charges in.
  • Tells a fake breakout (price grabs stops then snaps back) from a real one (grabs stops then keeps going)
  • Detects failed breakouts — price pokes through a key level but can't hold above it
  • Watches the levels that actually matter: yesterday's high/low, today's opening range, fair-value zones
  • If a symbol's levels stop behaving predictably, stop firing on that symbol
Prevents Chasing breakouts that were engineered to grab your stops and reverse.
stop-hunt-panel · pipeline sweep-state
±1 tick dedup
Market Profile
03
Where the market spent time agreeing on price — and where it didn't.
  • Measures the first hour's range against the day's typical move — not against a fixed number
  • Tracks where most volume traded today and how the fair-value zone is shifting
  • Volume-weighted average price tracked from key moments — open, big news, session start
  • Yesterday's high and low survive restarts — never lose context after a reload
Prevents Betting on a snap-back when the market is actually shifting where it wants to trade.
engine-ib-* · poc-tracker · vwap-context
Dalton framework
Whale & OI
04
The footprints big players leave that small traders never see.
  • Spots bursts where the same side is repeatedly slamming the market
  • Watches how many contracts institutions added or closed overnight
  • Sees how thick the real buy and sell orders are at each price — not just how many there are
  • Recognizes when a big player is actively defending a price level on a pullback
Prevents Fighting positions that institutions are actively defending.
whale-tracker · oi-tracker · aggressor-streak
dxFeed depth
Cross-Market
05
Are all four index futures moving together — and who's actually leading?
  • Compares NQ · ES · YM · RTY every bar — reads the broader market picture
  • Who's pulling the move: tech, broad market, small-caps — or are they disagreeing?
  • Flags when one index makes a new high but its sibling doesn't — a classic warning
  • Detects when all four go quiet at once — often the calm before a real move
Prevents Trading a strong NQ while the rest of the market quietly rolls over.
engine-cross-index · noa-cross-market
4-symbol fabric
Macro Context
06
What the big-picture market is doing to your setup right now.
  • Tracks fear (VIX) and the US dollar (DXY) — and what they're saying today
  • Knows when Fed days, jobs reports, and inflation prints are about to hit
  • Stops firing signals in the minutes around major news releases
  • Same setup can be a buy on a weak-dollar day and a no-go on a strong-dollar day
Prevents Trading into Fed-day chaos, or fighting which way the dollar wants to go.
engine-news-risk · macro_daily.json
VIX · DXY · event
HTF · Volatility
07
The bigger context you're trading inside — not just the last few minutes.
  • Sizes targets relative to how much the market typically moves today — not against fixed numbers
  • Classifies the day: trending · choppy · reversing × calm · normal · loud
  • Knows Asian-session hours move differently and handles them separately
  • If you lose too much in one day, the day ends — full stop
Prevents Using choppy-day tactics on a trending day, or the other way around.
daily-risk-gate · ib-day-snapshot
3×3 regime grid
Pillars L2
how it thinks — evidence weighed the way a prop desk weighs it
6 CARDS
Institutional Confluence
08
How the engine weighs all the evidence — the one official scorer.
  • One score combining four things: order flow · market structure · location · wider context
  • Different signals matter more for different setups — weights are tuned per setup, not globally
  • When most evidence agrees, the few outliers get downgraded — they can't inflate the score
  • One place owns the math — no parallel copies allowed to drift
Prevents A high score that's really the same signal getting counted twice.
rr-confluence · production-context
minority × (1−d/140)
Setup Catalog
09
About 36 setups, organized into 8 families — every one backed by published research.
  • Every family has academic research + experienced-trader literature behind it
  • When two setups fire on the same trade, they get merged — 15 fires really means ~10 distinct bets
  • A setup only counts as "proven" after at least 30 trades (fewer if research already supports it)
  • Plans to reweight overlapping setups are documented but locked until the data earns them
Prevents Shipping near-identical setups under different names and pretending they're independent.
setup-classification · docs/setup_theses.md
8 families
Bias Arbitrator
10
Is this a trade with the trend, against it — or the costly third option?
  • For every signal, picks one of two clean paths: continuation or reversal
  • When the read is muddy and falls through to the backup path, trades lose ~1.6× risk on average — measured
  • Going long and going short use different rules — they aren't mirror images
  • Decides what kind of trade this is before sizing it — never after
Prevents Mixed signals diluting what was a clean directional read.
engine-bias-arbitrator.js
Δ −1.6R fallback
Phase F · Risk Plan
11
The risk layer that says no — even when the setup looks great.
  • Caps reward-to-risk per symbol — no lottery tickets: NQ at 2.5× max, ES at 4×
  • Hard-blocks trades that go against the day's trend
  • Hit the daily loss limit, the day ends — no exceptions
  • Currently advice only · enforcement turns on when we go live with real money
Prevents Oversized "lottery ticket" trades that come from gut, not data.
daily-risk-gate · l4-risk-advisor
RR cap NQ 2.5 / ES 4.0
Phase G · Additive Setups
12
Four new setups — every one of them backed by published research.
  • G1 · NQ and ES disagree (one makes a new high, the other doesn't) — trade the laggard
  • G2 · The open gaps, price retraces halfway back — fade the move
  • G3 · Overnight volume piles up one way — ride it into the morning (NY Fed paper)
  • G3b · London grabs liquidity, NY's first breakout fails — fade the failure
Prevents Inventing setups out of thin air with no real evidence behind them.
production-context setup definitions
NY Fed sr917
Cadence & Pause
13
Knows when to be quiet.
  • Limits how often each symbol and setup can fire — no spam
  • Pausing a symbol stops the signals on screen, but keeps the engine watching and learning
  • Quiet on the screen, busy in the background — the engine never stops collecting data
  • One missed signal is far cheaper than a stream of noisy ones
Prevents Signal-spam that wears down your focus and your trust in the system.
cadence-gate · symbol-pause
silence = information
Decision L3
how it commits — filters, modes, plans, and the two learning loops
4 CARDS
L1 / L2 / L3 Filter Stack
14
Three filters in a row — every rejection logged — nothing disappears silently.
  • Filter 1 · Is the trade plan structurally sound? Entry, stop, risk all consistent?
  • Filter 2 · Is there enough supporting evidence across the pillars?
  • Filter 3 · Is this distinct from another signal — and is this symbol enabled?
  • Every rejection is recorded — we can always answer "why didn't this fire?"
Prevents Bad signals reaching the trader · silent drops that would hide bugs from us.
engine-pipeline.js · filter stack
3 layers · 0 silent drops
Three Operating Modes
15
Cold · Hot · Live — three modes, one engine, no confusion.
  • COLD · engine watches silently — learning, but never shows a signal
  • HOT · engine fires real signals · you decide whether to take each one
  • LIVE · engine sends trades to the broker automatically — only setups that proved themselves in HOT
  • The mode controls what gets logged — getting this wrong silently broke data collection once (now fixed)
Prevents Real money on unproven setups · mixed-mode data that can't be trusted.
engine-ev-decision.js · EV_PHASE.mode
3-mode pipeline
Multi-Leg Trade Plan
16
Take half off at the first target · let the other half run · two outcomes per trade.
  • Every signal comes with two pieces — a partial-profit leg and a runner leg
  • Each leg is tracked separately to its own outcome — they don't share fate
  • What you actually did is tracked separately from what the engine assumed
  • Two parallel scoreboards — engine's hypothetical result vs your real-world result
Prevents Squashing partial and runner into one number — which hides everything that matters.
engine-trade-management.js · Step 4a
50% + 50% legs
The Two Loops
17
The engine learns from itself — and from how you traded it.
  • Loop 1 · the engine — tracks every signal to its real outcome and compares it to what it expected
  • Loop 2 · the trader — your ✓ / ✗ decisions and exits feed a take-rate per setup, week-over-week
  • About 100 data points per signal feed both loops at once
  • The one number we watch: are you taking more of the winning setups this week than last?
Prevents Improving the engine while ignoring how the operator actually traded it.
ev-decision tracker · engine-journal-*
2 loops · 1 substrate
Learning Loop L4
how the system captures data, measures itself, and gets better
5 CARDS
The Data Pipeline
18
About 100 dimensions of engine state captured at every signal — written to disk live, restart-safe.
  • Every signal logs ~100 data points at the moment of decision — not just entry, stop, target
    Show all fields
    1 · Identity & decision core
    tssetupIdsetupNamesymboldirsetupScoremarketFitScoreofferedRRevwinProbkellydecisionStateentryPricestopPricetargetPricesessionmarketStorytradeModedirectionalSide
    2 · Bias & direction
    directionalIntentgateReasonsbiasStyle
    3 · Order flow · absorption · liquidity
    absorptionStateabsorptionActiveorderFlowStatedivergenceWarningabsorptionRiskliquiditySweepStateliquidityBreakoutTypeliquidityBreakoutBiasliquidityTrapConfirmedliquidityEvent
    4 · Volatility · time · news · price-location
    volBucketvolAdjtimeWindownewsRiskLevelnewsMinutesToEventisFomcDayfirePriceentryDistanceTickspricePosVsVpocpricePosVsVwap
    5 · IB tier per-session
    ibRangePtsAsiaibRangePtsLondonibRangePtsNYibTierAsiaibTierLondonibTierNYibActiveSessionibActiveRangePtsibActiveTier
    6 · Whale activity
    whaleClusterswhaleHasDefensewhaleHasAbsorptionwhaleConvictionwhaleTopType
    7 · OI conviction
    oiRegimeoiConvictionoiDeltaoiPriceDeltaoiSamples
    8 · Day regime + HTF + reroute
    dayRegimeKeydayRegimeBiasDirdayRegimeSeverityhtfH1htfH4htfMSSrerouteCandidatererouteSuggestedDirrerouteRegime
    9 · Phase F advisory + Phase G setup conditions
    gate9Advisorygate9bAdvisorygapSizePctgapDirectiongapInsideRangeasiaDriftPctlondonDriftPctovernightDriftAlignedlondonSweepStatelondonSweepBufferPctsmtThisLocationPctsmtPeerLocationPctsmtLocationDelta
    10 · Risk-burn + cross-index + ops state
    todayRAtFirefiresTodayBeforeThisdailyLossGateProximitypeerSymbolPricepeerSymbolBiaspeerSymbolPausedengineProfileAtFire
    11 · Setup taxonomy + confluence breakdown
    setupTiersetupFamilyLabelsetupStyleAtFireconfluencePassCountconfluenceWaitCountconfluenceFailCountconfluenceTopPassWeighthtfAlignedAtFiredirectionalIntentSnapshotlastGateHitsetupFormationScoremarketTransitionStateAtFire
    12 · EV breakdown components
    evBaseWinProbevMarketFitMultevDirectionalAdjevConfirmAdjevProdModeAdjchopStateAtFire
    13 · Substrate health
    substrateSchemaVersionenrichmentNullCount
    14 · Multi-leg trade plan
    legspartialEligiblepartialT1PricepartialT1R
    15 · Emission dedup
    dedupGroupIddedupGroupSizededupLeaddedupLeadSetupIddedupLeadPctdedupOwnPctdedupSiblingIdsdedupReasondedupTs
    16 · Resolved outcome
    outcomeactualRclosedTs
    17 · Trader journal entry (joined stream)
    idtradeKeysetupIdtraderActiontraderConfidencetraderDecisionReasonstatusoutcomeexitsrResultrResultActual
  • Three parallel streams: engine fires · your decisions · actual outcomes
  • Written to disk in real-time — survives crashes, reloads, mode switches
  • This depth is what makes everything downstream possible: attribution, journal, replay
Prevents Losing the context behind every signal — which would make future learning impossible.
engine-bridge-persistence.js · live JSONL
~100 fields/fire
Shadow Capture
19
The engine fires hypothetical signals — silently — while you see nothing on screen.
  • The same engine, running silently in the background — observing, not emitting
  • Substrate keeps writing as if signals were live — full data, zero noise on your screen
  • Lets us measure setups before they ever reach the trader UI
  • Most systems are on or off — we have a third state: silently learning
Prevents Burning trader attention on unproven setups while they're still proving themselves.
EV_PHASE.mode='COLD' · shadow pipeline
silent observation
Outcome Resolver
20
Verified ground truth — not simulated estimates.
  • Every signal walked to its real-world outcome via Trade + Stop + Door market record
  • We use actual fills, not synthetic best-case/worst-case math
  • Stale or ambiguous outcomes get flagged separately — never silently averaged in
  • This is what makes the engine's expected R comparable to its actual R honestly
Prevents Self-deception from synthetic outcomes that quietly inflate the engine's score.
evCheckOutcomes · T+S+D resolver
T+S+D verified
Gate-by-Gate Attribution
21
For every gate the engine uses, we measure — does it actually help, or hurt?
  • Compares trades that passed through each gate against trades that didn't — same setup, same period
  • Statistical confidence intervals — separates real signal from random noise
  • Already caught one gate that's a consistent loser-flag firing long-side — flagged for removal
  • Tool reads historical data only — zero engine touch, fully read-only analysis
Prevents Keeping gates that the data has proven don't earn their seat.
gate_contribution.py · cohort_attribution.py
bootstrap CIs
The Self-Learning Journal
22
Every signal, every decision, every outcome — recorded for the system to learn from.
  • Per-signal transcript: plan + risk advisory + leg outcomes + your decision + exits + outcome — all in one row
  • 15+ extra fields per entry tie the journal back to the engine's underlying data
  • Three views (System log · ES tracker · Desk view) all share the same single record
  • Foundation for the future Calibration Advisor — the layer that will propose threshold updates from outcomes (gated, never autonomous)
Prevents Trading the same setup the same wrong way week after week with nothing to learn from.
journal-enrichment · analytics · patterns
15+ fields/entry
Cross-Cutting Discipline L5
the wisdom that protects the system from itself
5 CARDS
Three Timing Frames
23
Big-picture clock · signal clock · execution clock — three layers, one commit.
  • Big-picture clock · what kind of day is it · how loud · where is value moving
  • Signal clock · is a setup arming inside that bigger picture?
  • Execution clock · commits on bar close, with safeguards against flicker
  • The engine has the execution clock today · the next phase makes all three explicit
Prevents Pulling the trigger without checking what the bigger timeframe is doing.
decision-clock · render-stabilizer
3 clocks · 1 commit
One Source of Truth
24
Every screen reads from the one official engine source — never a shortcut.
  • Every number on every screen reads from the same source the engine itself uses
  • Built into the architecture — not a "be careful" rule that can be forgotten later
  • Four real bugs caught the time a redesign tried to shortcut around it
  • A blank panel beats a wrong one
Prevents Screens that look right and feel right, but quietly show the wrong number.
buildLiveEngineExplanation() · pattern
4 bypass bugs caught
Discipline Lock
25
No tweaking while we're still measuring.
  • Locked through at least 2026-06-14 — roughly two weeks after live data resumes
  • Exception: fixing actual bugs — broken data, things that were just wrong
  • No tweaking thresholds · no new setups · no rewriting the logic
  • Tuning mid-week wrecks the data — and you can't get the time back
Prevents Repeating the lesson where we tuned thresholds before the data had a chance to speak.
ROADMAP · DISCIPLINE LOCK
until 2026-06-14
The Kill Rule
26
Bad evidence = the feature is removed. Not "tune harder."
  • Every proposed fix carries a written "when do we kill this idea" clause — before it ships
  • Each candidate has an explicit, measurable kill condition
  • If four weeks of fresh data don't support it, it's dropped — not patched or rescued
  • Applies to the AI layer too — same rule, same standard, no favorites
Prevents Keeping features alive out of attachment, after the data has already killed them.
ROADMAP §LATER S1–S12 · noa doctrine
12 kill conditions
Replayability
27
Same engine, same tape — lands in the same place, within measured bounds.
  • Captured tape can be re-fed through the engine for measurement and A/B comparison
  • Run-to-run variance characterized — industry-standard property, same as Lean and other pro frameworks
  • Lets us test "would this change have helped?" without waiting weeks of fresh live data
  • Replay infrastructure parked until engine confidence is settled — disciplined sequencing, not abandonment
Prevents Tuning blind — making changes with no way to measure whether they actually helped.
backtest_harness · index-v2-replay.html
deterministic replay
Parameter Reference REF
every threshold, gate, setup weight, and order-flow rule — straight from the engine code
4 TABS · 40+ CARDS
Thresholds6
Gates & Pipeline16
Setups & Confluence10
Order Flow6
Order Flow Threshold
Delta Classification
6% · 350 · 120
P1
How The Engine Separates Real Directional Aggression From Market-Maker Noise.
Measure Rule Outcome Calibration Sources
Core Decision
Institutional Delta Requires Meaningful Size Plus Confirmed Directional Travel.
Magnitude|deltaPct| >= 6% OR |delta| >= absFloor
Efficiencydirectional displacement / total path >= 45%
Pass Interpretation Delta can support initiative flow, bias confidence, and downstream order-flow confirmation.
Fail Interpretation Delta is treated as noise, absorption risk, or inventory rebalancing unless other evidence overrides it.
Measures

Every bar the engine receives carries a delta: the net difference between aggressive buying volume, where market orders hit the ask, and aggressive selling volume, where market orders hit the bid. Raw delta is meaningless without context: 200 contracts on a 3,000-volume bar is noise; the same 200 on a 1,200-volume bar is a 16.7% directional skew, which means someone is acting with intent.

Gate 1: Magnitude Rule

The engine runs a dual-gate test. First, percentage: is this bar's delta at least ±6% of its total volume? Second, absolute floor: is the raw delta at least 350 contracts for NQ or 120 contracts for ES? Either gate passing qualifies the bar as meaningful. The absolute floor exists because during thin pre-market or lunch bars, even a 10% skew might represent only 30 contracts, which is statistically irrelevant for a futures instrument that trades millions daily.

Gate 2: Efficiency Rule

On top of delta magnitude, the engine evaluates bar efficiency: did price actually travel in the delta's direction? Efficiency equals directional price displacement divided by total path traveled. A bar with at least 45% efficiency moved purposefully in one direction. Below 45%, the bar oscillated: the delta might be real, but the price action is indecisive, and the move is more likely market-maker rebalancing than institutional commitment.

Parameter Summary
ParameterExact RuleRole In The Engine
Magnitude Filters
Relative Threshold±6% Of Bar VolumeFilters Weak Directional Skew.
Instrument Floors
NQ Absolute Floor350 ContractsMinimum Raw Delta For NQ Depth.
ES Absolute Floor120 ContractsMinimum Raw Delta For ES Depth.
Combined Gate|Δ%| ≥ 6% OR |Δ| ≥ absFloorMarks Delta Magnitude As Meaningful.
Efficiency Confirmation
Bar Efficiency Gate≥45% Displacement ÷ PathRequires Price To Confirm The Flow.
Min Price Move (NQ)16 Ticks = 4 PtsAvoids Microscopic NQ Drift.
Min Price Move (ES)10 Ticks = 2.5 PtsAvoids Microscopic ES Drift.
Calibration Rationale
  • The 6% threshold was derived empirically: below it, correlation between delta sign and next-bar direction drops below statistical noise.
  • The 3:1 ratio between NQ (350) and ES (120) absolute floors matches the typical volume ratio between the two instruments.
  • The 45% efficiency threshold aligns with microstructure research showing that bars below roughly 40-50% efficiency are dominated by market-maker inventory rebalancing, not directional intent.
Volume Classification
Volume & Market Tempo
4 tiers · self-calibrating
P2
Two separate systems: volatility-rank buckets for regime, and trade-count tempo for institutional participation.
Rank Classify Tempo Offset Score
Core Decision
Volume regime and bar-level tempo are independent systems that jointly adjust confluence threshold and bias confidence.
Regimevolatility rank percentile → 4 tiers (LOW / NORMAL / HIGH / EXTREME)
Tempobar trades vs baseline · WEAK <0.6× · STRONG ≥1.5×
When It Works HIGH/EXTREME regime lowers confluence threshold; STRONG tempo confirms institutional participation behind setups.
When It Fails LOW regime raises threshold +4; WEAK tempo flags retail-only environment — setups lack institutional backing.
Volume Regime Classification

The engine classifies market activity through two independent lenses. Volume regime uses a volatility rank (0-100 percentile) provided by the bridge from the instrument's recent history. This isn't a fixed number — "high volume" on a quiet August day means something different than "high volume" on an FOMC day. If the bridge can't provide a rank, the engine falls back to today's intraday range: NQ range >220 pts = EXTREME, <70 pts = LOW.

Market Order Tempo

Market order tempo is a separate, bar-level check. It counts trades and contracts in each bar and compares them to fixed baselines (NQ: 900 trades / 12,000 contracts; ES: 600 / 8,000). Below 60% of baseline = WEAK (retail noise, no institutional footprint). Above 150% = STRONG (institutions are participating). This distinction matters because a "high confluence" setup in a WEAK tempo environment is suspicious — who's going to move the market in your favor?

Score Adjustment

Both systems feed into score adjustments: volume regime shifts the confluence threshold (LOW: +4 harder, EXTREME: -5 easier), while tempo classification informs Gate 2.5's bias confidence and several order-flow conditions.

Volume Regime Tiers
Volume RegimeVolatility RankFallback (NQ range)
EXTREME≥85th percentile>220 pts
HIGH≥70th>140 pts
NORMAL≥35th70–140 pts
LOW<35th<70 pts
Tempo Baselines
Tempo GateNQES
Baseline900 trades / 12,000 vol600 trades / 8,000 vol
WEAK (<0.6×)<540t or <7,200v<360t or <4,800v
STRONG (≥1.5×)≥1,350t or ≥18,000v≥900t or ≥12,000v
Volume Score Offsets
Volume → Score OffsetEffect
LOW+4 (raise threshold — harder to fire)
NORMAL0 (baseline)
HIGH-3 (lower threshold — easier)
EXTREME-5 (much easier — conviction in loud markets)
Calibration Rationale
  • Self-calibrating percentile bands prevent the system from mislabeling a quiet Tuesday as "low volume" when it's actually normal for that contract's seasonal pattern.
  • The tempo baseline (900/600 trades) was calibrated from CME Group session data for NQ and ES regular trading hours.
  • The 0.6×/1.5× multipliers for WEAK/STRONG are derived from the point where institutional participation visibility inflects in order-book data.
Liquidity Detection
Sweep & Trap Detection
7-bar window · 3 confirm paths
P3
The engine's institutional-behavior detector: where stops cluster, how sweeps are identified, and when a sweep becomes a trap.
Target Sweep Window Confirm Score
Core Decision
A sweep past a liquidity target must either be accepted as a breakout or confirmed as a trap within a 7-bar window.
Sweepprice past target by ≥ break distance (NQ: 4t / ES: 3t) within 24 bars
Trapconfirmed trap scores 82 confidence — highest-conviction signal
When It Works Confirmed trap at 82 confidence — institutional stop-hunt detected, highest-conviction reversal signal.
When It Fails Sweep accepted (holds past fail distance for full window) — real breakout, not a trap.
Liquidity Targets

The engine maintains a ranked list of liquidity targets — session extremes, prior-day highs/lows, VPOC, VWAP, and equal highs/lows — scored by type, proximity, and session context. Each target represents a probable stop-cluster location: retail traders place stops outside these levels, creating pools of resting orders that institutional players can exploit.

Sweep Detection & Acceptance

A sweep is detected when price pushes past a target by at least the break distance (NQ: 4 ticks / 1 pt, ES: 3 ticks / 0.75 pt) within the last 24 bars. The engine then watches a 7-bar window: if price returns inside the level, it's a potential trap. If price holds beyond the fail distance (NQ: 6 ticks, ES: 4 ticks) for the full window, the sweep is accepted — real breakout, not a trap.

Trap Confirmation

Trap confirmation requires one of three signals within 4 bars after the sweep: (1) price reverses by at least trapMinTicks (NQ: 8 / ES: 5), (2) aggressive delta ≥10% stalls with a 2-tick reversal, or (3) the last 4 bars form a micro-range tighter than sweepFailTicks — the market froze after the attempt. Confirmed traps score 82 confidence in the order flow state machine — the highest-conviction signal the engine produces.

Sweep Distances
DistanceNQ (ticks / pts)ES (ticks / pts)
Sweep break4t / 1.00 pt3t / 0.75 pt
Sweep fail (accepted)6t / 1.50 pt4t / 1.00 pt
Trap min reversal8t / 2.00 pt5t / 1.25 pt
Trap max window12t / 3.00 pt8t / 2.00 pt
Gap significant80 pts / 0.4%20 pts / 0.3%
Trap Probability Scoring
Trap ProbabilityComponent
Base25 pts
+ Reclaim+28
+ Trap confirmed+28
+ Fake breakout+12
+ Contra delta+10
− Accepted−38
High confidence≥65 probability
Calibration Rationale
  • The break/fail distances are calibrated to each instrument's tick value. NQ at $5/tick needs 4 ticks ($20) to register a meaningful push past a level — less than that is just bid/ask bounce.
  • ES at $12.50/tick needs only 3 ($37.50) for a comparable dollar displacement.
  • The trap window (8–12 / 5–8 ticks) corresponds to typical retail stop-cluster distances from key levels — this is where the "victims" are positioned, based on common retail order-placement patterns observed in DOM data.
Risk Management
Risk Guardrails
-3.75R halt · 12-trade window
P4
Hard limits the engine will not cross — behavioral brakes calibrated to prevent judgment-degradation spirals.
Track Halt Size Retire
Core Decision
Three independent brakes prevent judgment-degradation spirals: daily loss halt, drawdown-scaled sizing, and rolling setup retirement.
Daily Haltcumulative realized R hits -3.75R → new setups halted
Retirerolling 12-trade expectancy < -0.12R (n≥6) → setup benched
When It Works Position sizing stays full, setups remain active, engine operates at maximum capacity.
When It Fails Engine halts at -3.75R, sizes down to 25% floor at deep drawdown, or benches broken setups permanently.
Daily Loss Halt & Circuit Breaker

The engine tracks cumulative realized R across all closed signals since midnight ET. When the daily total hits -3.75R, new setups are halted — not because the edge disappeared, but because three standard-size losing trades in a row degrades judgment. A separate circuit breaker fires after 5 consecutive losses regardless of R magnitude, and a 30-fire hard cap prevents signal spam even if realizedR data isn't populated.

Position Sizing Degradation

Position sizing degrades with drawdown using discrete brackets: at 0R drawdown the engine trades full size, at -2R it drops to 85%, -4R to 70%, -6R to 55%, -8R to 40%. The lookup uses bracket matching (not linear interpolation) — at -3R drawdown you're still at 85% from the -2R bracket. A hard floor of 25% minimum prevents the engine from sizing down to meaninglessness.

Setup Retirement

Setup retirement operates on a rolling window of the last 12 closed trades per setup type. If a setup's rolling average expectancy drops below -0.12R with at least 6 completed trades, it's benched ("Retired"). Between -0.05R and -0.12R, it's flagged as "Degrading" with a -5 priority penalty. Retired setups continue computing for observation but can never fire — the engine doesn't ride a dead horse.

Risk Parameters
ParameterValue
Daily loss halt-3.75R cumulative
Circuit breaker5 consecutive losses
Hard fire cap30 fires / day (safety net)
RR floor1.5:1 (HOT) / 2.0:1 (LIVE)
RR cap (advisory)2.5 NQ / 4.0 ES (off in Phase A)
Retire threshold-0.12R rolling expectancy, n≥6
Degrade threshold-0.05R rolling expectancy
Rolling windowLast 12 closed trades per setup
Position Sizing Curve
Drawdown (R)Position ScaleDollar impact at 2-lot NQ
0100%2 contracts
-285%~1.7 → 2 contracts
-470%~1.4 → 1 contract
-655%~1.1 → 1 contract
-840%~0.8 → 1 contract
Calibration Rationale
  • The -3.75R daily halt aligns with institutional prop desk standards where traders are pulled after 3-4 standard-risk losing trades.
  • The position degradation curve is a behavioral brake: it doesn't predict whether the next trade wins — it ensures the inevitable revenge trade costs less.
  • The 12-trade rolling window for retirement balances responsiveness (catching broken setups quickly) against noise resistance (not benching a setup over two bad days).
Signal Grading
Scoring, EV & Grading
sigmoid · 64% cap · 12-trade blend
P5
How confluence score converts to a win probability via a conservative sigmoid model — and what each grade means.
Score Sigmoid Blend EV Grade
Core Decision
Confluence score converts to win probability via a sigmoid capped at 64%, then computes EV to decide whether to fire.
Win Probsigmoid inflected at score 72, ceiling 64%
EV(winProb × R:R) − (1−winProb) × 1R, fire at EV ≥ 0.0
When It Works EV ≥ 0.0 fires the signal; EV ≥ 0.8 earns a premium badge for highest-conviction setups.
When It Fails EV negative — setup computed but suppressed. Near-miss (EV ≥ -0.2) tracked as Armed for observation.
Sigmoid Win Probability

Confluence score (0–100) doesn't directly fire a signal. It first converts to a win probability through a sigmoid curve inflected at score 72, capped at a 64% ceiling. The reasoning: even perfect alignment doesn't guarantee >64% win rate in futures markets. A score of 55 maps to ~25% win probability; 72 maps to ~43%; 90 maps to ~61%.

Historical Win Rate Blending

If the setup type has ≥12 completed trades in the outcome registry, the engine blends historical win rate into the curve estimate. Historical data gets up to 85% weight (curve always contributes at least 15%). If the actual win rate underperforms the curve by >8%, the historical weight is boosted to 92% — the model recognizes it was overestimating and defers to reality.

Expected Value & Multipliers

Expected Value is then computed as: EV = (winProb × R:R) − (1−winProb) × 1R. This is further adjusted by six multipliers: market fit (0.6–1.0×), directional alignment (±5%, −12% for conflict), confirmation status (+4%/−2%), production mode (+3%/−2%), sweep/absorption bonus (+6%), and chop penalty (−5% to −15%). The final win probability is hard-bounded between 15% and 72%.

Grade Thresholds
GradeScoreApprox Win Prob
S (elite)≥90~61%
A+80–89~54%
A70–79~40%
B<70<37%
EV Decision Thresholds
EV DecisionThreshold
Signal (Hot Run)EV ≥ 0.0
Signal (Live Run)EV ≥ 0.5
Premium badgeEV ≥ 0.8
Armed (near-miss)EV ≥ -0.2
Historical blend trigger≥12 closed trades
Win prob ceiling64% (sigmoid cap)
Calibration Rationale
  • The sigmoid inflection at 72 was set empirically: substrate data shows a sharp inflection in outcome quality around that score.
  • The 64% ceiling is a market-structure constraint — no retail-accessible strategy sustains >64% win rate in liquid futures at meaningful holding periods.
  • The 12-trade minimum before blending historical WR prevents overfitting to a handful of early results.
  • Hot Run's 0.0 EV threshold is intentionally permissive — we're collecting signal-quality data, not filtering for profit.
Session & Data Quality
Session Windows, Slippage & Data Quality
64 quality floor · 3.2t MOC
P6
How long the engine remembers, what it assumes about execution cost, and when it declares itself blind.
Memory Slippage Quality Halt
Core Decision
Target memory tightens through the day, slippage is modeled conservatively per session, and data quality below 64/100 halts production.
Qualityscore from 100 downward · floor 64/100 → production halted
Feed< 10 ticks/min = hard stop · < 22 = warning
When It Works Quality ≥85 (grade A) — full production with accurate slippage estimates and fresh target memory.
When It Fails Quality <64 (grade D) — engine halts. A blank screen beats a wrong one.
Target Memory Windows

Target memory tightens through the trading day. In Asia (slow, level-driven), a liquidity target persists in memory for 26 minutes and up to 130 ticks away. By NY (fast, momentum-driven), the same target is stale at 18 minutes / 100 ticks. The scan range — how far the engine looks for new targets — follows the same tightening: 90 ticks in Asia, 64 in NY.

Slippage Model

Slippage is modeled per session and adjusted by volume regime. Base assumptions range from 1.8 ticks (Asia, thin but orderly) to 3.2 ticks (MOC, thin and chaotic). A volume multiplier scales these: EXTREME volume costs 1.6× the base slippage. Reversion setups get a 0.9× style discount (tighter fills at levels); continuation setups get 1.1× (looser fills chasing). A flat 2-tick round-trip cost is added for commissions and spread.

Data Quality Scoring

Data quality is scored from 100 downward, with deductions for each data gap. Missing price = −35. Stale feed = −24. Missing order book = −5. The quality floor is 64/100 (grade C) — below that, the engine halts production. The philosophy: a blank screen beats a wrong one. Feed health is monitored via a 1-minute sliding window of tick arrivals; below 10 ticks/minute = hard stop, below 22 = warning.

Session Memory Windows
WindowAsiaLondonNY
Target memory26 min22 min18 min
Max distance130t115t100t
Scan range90t78t64t
Slippage Assumptions
SlippageBase (ticks)At EXTREME vol
Opening Drive3.04.8
Power Hour2.64.16
MOC3.25.12
Lunch2.23.52
London2.03.20
Asia1.82.88
Style adj.reversion ×0.9 · continuation ×1.1
Round-trip cost2 ticks fixed
Data Quality Grades
Data Quality ScoreImpact
A (≥85)Full production
B (72–84)Production with penalty
C (64–71)Minimum passing
D (<64)Production halted
Calibration Rationale
  • Target memory windows tighten because volatility accelerates through the trading day — a level that's relevant for 26 minutes in Asia is ancient by NY.
  • The slippage model is intentionally conservative: it should overestimate execution cost, not underestimate it.
  • The MOC session gets the highest base (3.2t) because market-on-close flow creates the most adverse fills relative to displayed liquidity.
  • The 64/100 quality floor is aggressive by design — it means any two medium-severity data gaps halt the engine.
Serial AND cascade — each gate must pass. Hard blocks terminate immediately. Soft blocks accumulate as WAIT. Advisory gates (Phase A) compute but don't enforce.
Pipeline Gate
Gate 0 — Institutional Hard Blocks
3 sub-gates · hard block
G0
System-level kill switches. Three sub-gates that terminate before anything else runs.
CheckEvaluateDecideRecord
Core Decision
Any institutional block, symbol kill, or quarantined setup terminates the signal immediately.
Vetoinstitutional block flag set → signal dies
Kill Switchper-symbol toggle → hard block
Quarantineblacklisted setup → compute only, never SIGNAL
Gate Passes No institutional blocks, symbol is live, setup is not quarantined — signal proceeds to Gate 1.
Gate Blocks Signal dies immediately with no appeal. Quarantined setups continue computing for substrate observation only.
Institutional Veto

Gate 0 is the pipeline's first checkpoint and the only one that cannot be overridden by any downstream condition. It runs three independent checks in sequence. Gate 0 (Institutional Veto) scans for any reason the system has flagged as an institutional-level block — circuit breakers, exchange halts, or operator-set kill conditions. If any flag is set, the signal dies immediately with no appeal.

Symbol Kill Switch & Setup Quarantine

Gate 0a (Symbol Kill Switch) is a per-symbol manual toggle. During Phase 1 calibration, ES was locked in analysis-only mode — setups were computed and logged but never promoted to signal status. This allowed the engine to collect baseline data on ES before risking signal credibility. Gate 0b (Setup Quarantine) checks a static blacklist of setups that failed catastrophically in live data: session-ext-L/S lost -20.48R combined, vwap-bounce-L/S showed 0% win rate, ib-brk-S cost -4.42R. Quarantined setups continue computing (the engine still logs their confluence scores to the substrate for analysis), but they can never promote to SIGNAL state.

0
Institutional Veto
Any institutional block reason set → signal dies. No appeal.
Hard
0a
Symbol Kill Switch
Per-symbol toggle. ES was analysis-only during Phase 1 calibration.
Hard
0b
Setup Quarantine
Benched setups: session-ext-L/S (-20.48R combined), vwap-bounce-L/S (0% WR), ib-brk-S (-4.42R), key-mag-L/S (-5.51R), flow-surge-S (-3.10R).
Hard
Calibration Rationale
  • The quarantine list is data-driven, not opinion-driven — each benched setup was quarantined after its rolling performance fell below the retirement threshold or showed structural failure (0% WR).
  • Rather than deleting them, the engine keeps them computing for observation — if market conditions change and the setup rehabilitates in substrate data, it can be unbenched.
  • The kill switch was used to keep ES in watch-only mode until its own calibration data was collected.
Pipeline Gate
Gate 1 / 1.5 — Market Tradeable + State Confidence
50% confidence floor
G1
Is the market open and classified with enough confidence to act?
CheckEvaluateDecideRecord
Core Decision
Market must be open, state confidence must exceed 50%, and production mode must be active.
G1market open + valid state → hard/soft by reason
G1.5astate confidence < 50% → soft block
G1.5btradeMode = NONE → score penalty
G1.5cregime transition → proportional penalty
Gate Passes Market is open, engine trusts its classification, and production mode is active — signal proceeds to bias check.
Gate Blocks Pre-market or post-close hard-blocks. Low confidence or missing thesis imposes soft score penalties.
Market Tradeable

Gate 1 consults the market context analyzer to determine whether the market is open and in a valid, tradeable state. The severity of any block depends on the reason: a pre-market or post-close condition is a hard block (no point evaluating setups when the market is closed), while a data-quality degradation might only impose a soft penalty.

State Confidence & Transition Risk

Gate 1.5 evaluates three separate confidence dimensions. 1.5a (State Confidence) requires the engine's own classification of the current market context to be at least 50% confident. Below that threshold, the engine doesn't trust its regime classification — it might be calling a "trending" market when it's actually rotating, and every downstream gate depends on that classification being at least plausible. 1.5b (Production Mode) penalizes when tradeMode = NONE — no sweep+trap pattern detected and no trend exception active. This means the engine has no high-confidence thesis about what the market is doing. 1.5c (Transition Risk) applies a proportional penalty when the market is transitioning between regimes (e.g., from range to trend), because regime boundaries are statistically where false signals cluster.

1
Market Tradeable
Market context analyzer says the market is open and valid. Severity-based: hard or soft depending on the block reason.
Var
1.5a
State Confidence ≥ 50
Production state must be at least 50% confident. Below that the engine doesn't trust its own classification.
Soft
1.5b
Production Mode
If tradeMode = NONE (no sweep+trap, no trend exception), score takes a penalty.
Soft
1.5c
Transition Risk
Market transitioning between regimes → score penalty proportional to transition risk score.
Soft
Calibration Rationale
  • The 50% confidence floor is generous — it's a sanity check, not a filter. Below 50 the engine is essentially guessing what kind of market this is, and guessing is not a strategy.
  • Transition penalties exist because regime boundaries are where false signals cluster — a mean-reversion setup that fires during a regime transition to trend will get run over.
Pipeline Gate
Gate 2.5 — Bias Arbitrator
55% min · 8% edge
G2.5
Does the setup's direction match the market's directional bias? Five modules vote.
CheckEvaluateDecideRecord
Core Decision
Setup direction must align with the declared bias from five voting modules.
Biasside > 55% AND lead ≥ 8% → directional bias declared
Conflictboth sides > 55% within 8% → CONFLICT
Overrideactionable sweep/absorption → bias check skipped
Gate Passes Setup direction aligns with declared bias, or an actionable sweep/absorption event overrides the check.
Gate Blocks Direction opposes bias — score penalty applied. CONTINUATION_FALLBACK costs ~-1.6R on average.
Voting Framework

The Bias Arbitrator aggregates votes from five independent directional modules — each contributes a long score and a short score based on its own evidence. The arbitrator then applies a voting framework: if one side exceeds 55% and leads the other by at least 8%, a directional bias is declared. If both sides exceed 55% within 8% of each other, the state is CONFLICT — not uncertainty, but genuine contradictory evidence, which is worse for signal quality than having no bias at all.

Sweep Override & Continuation Fallback

The gate checks whether the proposed setup's direction aligns with the declared bias. A long setup in a SHORT bias environment gets a penalty. However, a critical exception exists: if there's an actionable sweep or absorption event, the bias check is skipped entirely. The logic is that liquidity events (stop hunts, institutional absorption at a level) override directional bias — a trapped short squeeze doesn't care what the trend says.

The CONTINUATION_FALLBACK state deserves attention: when bias direction matches but confidence is below the decisive threshold, the arbitrator falls back to a continuation assumption. Cohort attribution analysis found this fallback costs approximately -1.6R on average — it's a known weak spot that ships as a soft penalty rather than a hard block, awaiting more data to decide its fate.

Arbitrator Tuning
TuningValue
Side minimum55% (score to declare side)
Side edge8% (L-S gap for decisive call)
Conflict minimum55% (both sides ≥ this = CONFLICT)
Conflict edge8% (max gap to be "conflict" not "edge")
None max55% (below = no direction)
Calibration Rationale
  • The 8% edge requirement prevents firing on razor-thin directional advantages that could flip on the next bar.
  • CONFLICT state isn't "we don't know" — it's "both sides have a case," which is empirically worse for signal outcomes than NONE (where neither side has evidence).
  • The sweep/absorption override exists because liquidity events carry their own directional conviction independent of trend.
Pipeline Gate
Gate 2.6 / 2.7 — Market Story + Chop
55 fit · severe chop = kill
G2.6
Does the setup family match what the auction is doing — and is the market in chop?
CheckEvaluateDecideRecord
Core Decision
Setup family must fit the auction narrative; severe chop without liquidity events kills the signal.
G2.6story fit < 55 → soft penalty · fit < 35 + score < 60 + CHOP_NO_EDGE → hard block
G2.7SEVERE_NO_EDGE_CHOP without sweep/absorption → hard block
Gate Passes Setup family fits the auction narrative with score above 55, or chop is mild enough to allow continuation.
Gate Blocks Severe chop hard-blocks the signal. Low story fit imposes soft penalty; extreme mismatch escalates to hard block.
Market Story Fit

Gate 2.6 (Market Story Fit) computes a 0-100 score measuring how well the proposed setup family matches the current auction narrative. A continuation setup in a trending market scores high; the same setup in a rotating, mean-reverting market scores low. Below 55, the signal takes a soft penalty. Below 35, with a raw confluence score below 60 and the market classified as CHOP_NO_EDGE, the gate escalates to a hard block — the thesis has no structural support.

Chop Permissions

Gate 2.7 (Chop Permissions) is the engine's most aggressive defensive gate. When the market story evaluator classifies the environment as SEVERE_NO_EDGE_CHOP — meaning no directional conviction, no institutional footprint, and no structural level nearby — the gate hard-blocks unless there's an actionable sweep or absorption event. Other chop states (MILD_CHOP, ROTATIONAL_CHOP) impose graduated score penalties but allow the signal to continue. The distinction matters: mild chop can produce legitimate mean-reversion setups at levels, but severe chop is a fee-burning machine.

2.6
Market Story Fit
Market fit score 0–100. Below 55 → soft block. Below 35 with score <60 and story = CHOP_NO_EDGE → hard block.
Soft
2.7
Chop Permissions
SEVERE_NO_EDGE_CHOP without actionable sweep/absorption → hard block. Other chop states → score penalty.
Hard*
Calibration Rationale
  • CHOP_NO_EDGE is the engine saying "this market is going nowhere and there's no institutional footprint to ride." Hard-blocking it prevents the most expensive error in trading: forcing a trade when there's nothing to trade.
  • The 35/60 threshold is deliberately low — only the clearest "no edge" conditions trigger it.
  • The sweep/absorption override exists because these events can break a chop regime entirely.
Pipeline Gate
Gate 3 / 3.5 — Regime + Session Playbook
3 sessions · 6 families
G3
Setup style must match market regime, and only approved families run per session.
CheckEvaluateDecideRecord
Core Decision
Continuation setups require trend/expansion; reversion requires range/rotation. Session playbook restricts families.
G3 STRICTstyle mismatch → hard block · low_participation → hard block
G3 BALANCEDstyle mismatch → soft penalty
G3.5setup outside session playbook → blocked or downgraded
Gate Passes Setup style matches regime and is in the session's approved playbook — signal proceeds to state validity checks.
Gate Blocks Style mismatch blocks (STRICT) or penalizes (BALANCED). Low participation hard-blocks all setups regardless.
Regime Compatibility

Gate 3 (Regime Compatibility) enforces that continuation setups only fire in trend/expansion regimes, and reversion setups only fire in range/rotation regimes. In STRICT mode, a style mismatch is a hard block — a breakout setup in a ranging market simply cannot fire. In BALANCED mode, the mismatch imposes a soft penalty, allowing the setup to continue at a score disadvantage. Both modes hard-block all setups in low_participation regimes, because thin markets produce unreliable signals regardless of setup quality.

Session Playbook

Gate 3.5 (Session Playbook) restricts which setup families are approved for each trading session. Asia (slow, level-driven) permits key-mag, exhaust-rev, and vpoc-mig — setups that work with clear levels and minimal flow. London permits ib-reject and trap-rev — setups that exploit the London open's stop-hunting patterns. NY (institutional flow-driven) permits ib-brk, ib-ext, and flow-surge — setups that ride directional momentum. Setups outside their playbook are either blocked (STRICT) or downgraded (BALANCED). The playbook is calibrated from historical outcome data grouped by session, not from theory about what "should" work.

3
Regime Compatibility
Continuation setups allowed in trend/expansion. Reversion setups allowed in range/rotation. Banned in low_part. STRICT = hard block, BALANCED = soft.
Var
3.5
Session Playbook
Asia: key-mag, exhaust-rev, vpoc-mig. London: ib-reject, trap-rev. NY: ib-brk, ib-ext, flow-surge. Outside playbook = blocked (STRICT) or downgraded (BALANCED).
Var
Calibration Rationale
  • Not every setup works in every session. Asia is slow and level-driven — breakout setups waste capital chasing moves that don't follow through.
  • NY has real institutional flow — reversal setups against that flow lose.
  • The low_participation hard block protects against the deadliest trap: a "perfect" setup in an empty market where there's no one to move price in your favor.
Pipeline Gate
Gate 3.6 / 3.7 — State Validity + Dominance
gap + breakout + dominance
G3.6
Gap authority, breakout direction, and tier-1 dominance scope.
CheckEvaluateDecideRecord
Core Decision
Setup must not fight gap magnetism, clean breakouts, or active tier-1 signals.
G3.6agap opposes direction → soft block (sweep+trap overrides)
G3.6buntrapped breakout opposite → soft block
G3.7tier-1 active (ldn-sweep, fail-auc) → lower tiers yield
Gate Passes No gap conflict, no opposing breakout, no tier-1 dominance contention — signal proceeds to institutional checks.
Gate Blocks Soft penalties for gap or breakout headwinds. Lower-tier setups suppressed when tier-1 is active.
Gap Authority & Breakout State

Gate 3.6a (Gap Authority) checks whether a significant overnight gap conflicts with the setup's direction. A long setup when there's a large bearish gap (price opened well below prior close) faces headwind — the gap acts as an overhead magnet pulling price back. This is a soft block, not hard, because a confirmed sweep+trap can override the gap's authority.

Gate 3.6b (Breakout State) penalizes setups that fight a clean, untrapped breakout. If price has broken out of a range in one direction and no trap has been confirmed, setups pointing the opposite way are swimming upstream.

Tier-1 Dominance

Gate 3.7 (Tier-1 Dominance) is a priority arbitration mechanism: when a tier-1 setup (London sweep, failed auction — the highest-conviction patterns in the system) is active, lower-tier setups in the opposite direction are suppressed. Even lower-tier setups in the same direction yield — the tier-1 setup takes the slot. This prevents signal clutter and ensures the best signal gets the attention.

3.6a
Gap Authority
Significant gap conflicts with setup direction → soft block, unless sweep+trap is active.
Soft
3.6b
Breakout State
Clean breakout opposite to setup direction without trap confirmation → soft block.
Soft
3.7
Tier-1 Dominance
When a tier-1 setup (ldn-sweep, fail-auc) is active in opposite direction, lower-tier setups yield. Same direction but lower tier also yields.
Soft
Calibration Rationale
  • When the best setup in the system is pointing one way, lesser setups pointing the other way should defer.
  • Tier-1 setups have the strongest historical edge — when they speak, the rest of the pipeline listens.
  • The gap override for sweep+trap reflects that institutional stop-hunting events can negate gap magnetism entirely.
Pipeline Gate
Gate 3.8 / 3.9 — Whale + OI Conviction
whale · OI · soft
G3.8
Institutional positioning checks — are whales fighting you, and does open interest contradict your trade?
CheckEvaluateDecideRecord
Core Decision
Institutional DOM clustering and open interest dynamics must not contradict the setup's direction.
G3.8whale defense opposes direction → soft penalty · alignment = research note
G3.9SHORT_COVERING + long → penalty · LONG_CAPITULATION + short → penalty
Gate Passes Institutional positioning doesn't contradict the setup, or aligns with it — signal proceeds to final qualification.
Gate Blocks Soft penalties for opposing whale defense or OI contradictions. Not hard blocks — institutions can be wrong at turning points.
Whale Defense

Gate 3.8 (Whale Defense) reads DOM (Depth of Market) clustering patterns. When institutional-sized orders cluster at resistance above the current price (defense-resistance) or at support below (defense-support), the engine detects "whale defense" — large players actively protecting a level. If their defense opposes the setup's direction (e.g., massive sell-side clustering at resistance while a long setup tries to fire), the setup takes a soft penalty. If whale defense aligns with the setup, it's logged as a research note but doesn't adjust the score — alignment is expected, not bonus-worthy.

OI Conviction

Gate 3.9 (OI Conviction) cross-references open interest dynamics with the setup's direction. A long setup firing during a SHORT_COVERING environment gets penalized: the rally looks like buying, but OI falling says it's shorts closing, not new longs entering — the rally is structural unwind, not genuine demand. Similarly, a short setup during LONG_CAPITULATION faces a penalty because the selloff is exhaustion, not new bearish conviction. Counter-trend penalties apply when longing against REAL_DOWNTREND or shorting against REAL_UPTREND. All OI gates are soft penalties because institutional positioning can be wrong, and a strong enough setup-level signal can override positioning headwinds.

3.8
Whale Defense
Institutional DOM clustering (defense-resistance, defense-support) opposing setup direction → soft penalty. Alignment = research note only.
Soft
3.9
OI Conviction
Long setup + SHORT_COVERING → "rally is fake." Short setup + LONG_CAPITULATION → "selloff is exhaustion." Long vs REAL_DOWNTREND or short vs REAL_UPTREND → counter-trend penalty.
Soft
Calibration Rationale
  • These are the "bigger fish" gates — if institutional positioning contradicts the setup, the setup is fighting the wrong crowd.
  • Short covering rallies look identical to real buying on the tape, but they die once the shorts finish covering. OI dynamics distinguish real conviction from structural unwind.
  • Soft penalties, not hard blocks, because institutions can be wrong too — and often are at turning points.
Pipeline Gate
Gate 4–8 — Score, Confirmation & Risk
5 gates · retire to RR
G4-8
Final qualification: retirement check, confluence threshold, critical fails, entry timing, and risk/reward validation.
CheckEvaluateDecideRecord
Core Decision
Setup must pass retirement, confluence, critical-fail, confirmation, and R:R checks to fire.
G4rolling expectancy < -0.12R (6+ trades) → benched
G5confluence < ~68% dynamic threshold → soft block
G62+ critical fails (weight ≥18) → hard block
G8R:R < rrFloor (1.5 HOT / 2.0 LIVE) → BLOCKED
Gate Passes Setup is not retired, confluence meets threshold, no critical failures, R:R is above rrFloor (1.5 HOT / 2.0 LIVE) — eligible for SIGNAL.
Gate Blocks Retirement benches the setup. Critical fails hard-block. R:R below floor forces WATCH regardless of score quality.
Retirement & Confluence

Gate 4 (Retirement) checks the setup's rolling expectancy across its last 12 closed trades. Below -0.12R expectancy with at least 6 completed trades — the setup is benched. It continues computing (for substrate observation) but can never fire. Between -0.05R and -0.12R it's flagged as "Degrading" with a -5 priority penalty. Gate 5 (Confluence Threshold) is the raw score check: the setup's weighted confluence must reach a dynamic threshold (~68% base, adjusted by volume regime and qualification profile). BALANCED mode gets a -4 offset, making the threshold more permissive during data collection.

Critical Fails & Entry Confirmation

Gate 6 (Critical Fails) catches single-point-of-failure conditions. If any individual evaluator with weight ≥18 fails (scores zero), that's a critical fail. One critical fail is logged as a warning. Two or more critical fails trigger a hard block — the thesis has multiple load-bearing pillars that collapsed. Gate 7 (Entry Confirmation) requires setups below the bypass threshold (~75-80%) to show confirming price action, order flow, or liquidity signals before promoting. Above the bypass threshold, the confluence itself is confirmation enough.

Risk & R:R Tiering

Gate 8 (Risk & R:R) validates the stop/target geometry. R:R is calculated from the planned entry, stop, and target prices. The floor is phase-dependent: 1.5:1 in HOT Run, 2.0:1 in LIVE Run — below that, the setup is BLOCKED regardless of confluence. R:R bands (1.5–2.0, 2.0–2.5, 2.5–3.0, 3.0–4.0, 4.0+) are tracked for statistical analysis but don't gate signal states. Calibration tuning clamps dynamic RR to the range 2.5–6.0 (config.js minRRGate/maxRRGate). This ensures that even the highest-confluence setup doesn't fire if the math doesn't work.

4
Retirement
Setup's rolling expectancy below -0.12R → benched. Keeps computing, can't fire.
Soft
5
Confluence Threshold
Score must reach dynamic threshold (base ~68%, STRICT offset 0, BALANCED offset -4). Gap logged if below.
Soft
6
Critical Fails
Any individual evaluation with weight ≥18 that fails. One = logged. Two or more = blocked.
Hard*
7
Entry Confirmation
If score below bypass threshold (~75–80%), requires price action / order flow / liquidity confirmation.
Soft
8
Risk & R:R Tier
Validates stop/target feasibility. Below rrFloor (1.5 HOT / 2.0 LIVE) = BLOCKED. R:R bands tracked for statistics.
Hard
Calibration Rationale
  • Retirement prevents the engine from throwing good money after bad.
  • The critical-fail gate (weight ≥18) catches single-point-of-failure conditions — if one heavyweight check fails, the whole thesis is suspect regardless of total score.
  • R:R tiering means even a high-confluence signal doesn't fire if the risk/reward math doesn't work — this is where the engine enforces the asymmetry that makes edge-based trading viable.
Pipeline Gate
Gate 9 / 9b / 10 — Advisory (Phase A Off)
3 gates · advisory only
ADV
Computed but not enforced. Will block signals when switched on after calibration proves them.
CheckEvaluateDecideRecord
Core Decision
Advisory gates log what they would block but do not enforce — evidence before enforcement.
G9R:R > NQ 2.5:1 / ES 4.0:1 → would hard-block (advisory)
G9bdirection violation → would hard-block · style violation → would soft-block (advisory)
G10permanently disabled — 840-trade OOS showed it destroyed value
Gate Passes All advisory gates currently pass by default — they compute and log but never block during Phase A.
Gate Blocks No enforcement in Phase A. When activated post-calibration, G9 and G9b would hard/soft block as documented.
R:R Inflation Cap

Gate 9 (R:R Inflation Cap) addresses a structural bias in the engine's trade planner: while historical resolved trades show a median R:R of ~1.5:1, the planner consistently produces 4.5:1 median projections. The cap would hard-block any signal where the projected R:R exceeds 2.5:1 for NQ or 4.0:1 for ES. Currently advisory-only: the engine logs what it would have blocked, but doesn't enforce, pending calibration data proving that the cap improves outcomes rather than just filtering high-conviction setups.

Regime Fit Gate & Session Router

Gate 9b (Regime Fit Gate) layers a higher-timeframe regime check on top of Gate 3's style compatibility. It reads the daily regime bias and applies two sub-checks: a direction violation (shorting in a trend_up day) would be a hard block; a style violation (breakout setup in a range day) would be a soft block. Like Gate 9, it's advisory-only pending data proof. Gate 10 (Session Router) is permanently disabled. Out-of-sample validation on 840 historical trades showed it blocked profitable families more often than unprofitable ones — it destroyed net value. Kept in the codebase as an architectural placeholder and a reminder that "intuitive" filters can fail empirical validation.

9
R:R Inflation Cap
NQ capped at 2.5:1, ES at 4.0:1. Historical median RR was 1.5:1 but planner produces 4.5:1 median. Would hard-block inflated projections.
Off
9b
Regime Fit Gate
Day regime bias + style constraints. Short setup in trend_up → direction violation. Breakout in range → style violation. Direction = hard, style = soft (when enforced).
Off
10
Session Router
Permanently disabled. OOS validation on 840 trades showed it blocked profitable families. Kept as architectural placeholder.
Off
Calibration Rationale
  • Phase A philosophy: observe before enforcing. These gates log advisory verdicts so we can see what they would have blocked.
  • When the data proves a gate adds edge, it gets switched on.
  • Gate 10 was explicitly rejected — 840-trade OOS validation showed it destroyed value. Ideas that sound right but lose money get killed, not debated.
Pipeline Gate
Final Decision States
6 states · SIGNAL to fire
DEC
What the pipeline produces after all gates run.
CheckEvaluateDecideRecord
Core Decision
Pipeline resolves each evaluation into one of six discrete states — only SIGNAL can fire.
SIGNALall gates pass + R:R confirmed → can fire
ARMEDstrong confluence, waiting one condition → auto-promotes if resolved
BLOCKEDhard gate failed → structural rejection
Gate Passes SIGNAL state reached — the setup fires. All six states plus the determining gate are written to the substrate.
Gate Blocks ARMED, WATCH, BLOCKED, CONFLICT, or PAUSED — each conveys why the signal didn't fire for trader review.
Signal & Armed States

After every gate has executed, the pipeline resolves the signal into one of six discrete states. SIGNAL means every gate passed and R:R is confirmed — this is the only state that can fire. ARMED means confluence is strong and most gates passed, but the signal is waiting for one remaining condition (typically R:R confirmation or entry timing). Armed signals are near-miss candidates: if the pending condition resolves, the signal promotes automatically on the next evaluation cycle.

Non-Firing States

WATCH is the passive observation state — the setup is being evaluated but isn't close enough to actionability. BLOCKED means at least one hard gate failed — structural rejection with no workaround. CONFLICT is a distinct state from BLOCKED: it means the directional evidence is genuinely split, and the engine refuses to pick a side. PAUSED is operator-initiated — the trader manually paused this symbol via the dashboard's per-symbol pause button. All six states, along with the specific gate that determined them, are written to the substrate for every evaluation cycle. The trader sees all of this on the dashboard and can act on contextual nuance the gate system can't encode.

Decision State Matrix
StateCan FireMeaning
SIGNALYESAll gates pass, R:R confirmed
ARMEDWATCHStrong confluence, waiting R:R or confirm
WATCHNOWatching, not actionable
BLOCKEDNOHard gate failed
CONFLICTNODirectional conflict
PAUSEDNOTrader paused this symbol
Calibration Rationale
  • Six states, not two. Binary pass/fail loses information.
  • ARMED means "this was close — if one condition flips, it fires." CONFLICT means "the evidence is split."
  • The granularity exists because the human trader needs to know WHY something didn't fire, not just that it didn't — the context informs manual decisions and post-session review.
Scoring Framework
Global Confluence Categories
6 categories · 100 pts
CFG
Every setup scores from the same 6-category budget. Each category has a fixed weight — conditions within it divide those points.
Category Weight Score Threshold
Core Decision
Every setup scores against a fixed 100-point budget divided into six categories — same budget, different distributions per thesis.
BudgetLocation 25 + Regime 20 + Trigger 20 + Flow 15 + R:R 10 + Risk 10 = 100
Pass Setup scores above confluence threshold — qualifies for signal generation and trader presentation.
Fail Setup scores below threshold — filtered out, logged to substrate for analysis only.
Budget Architecture

Every setup in the engine — regardless of family — scores against the same 100-point budget divided into six categories. The budget is fixed but the distribution is not: each setup type allocates different weights to different conditions within each category, reflecting what matters for that specific thesis. An IB breakout weights trigger conditions heavily; an exhaustion reversal weights flow divergence conditions.

Category Rationale

Location receives the largest allocation (25 points) because where price sits relative to key structural levels is the single strongest predictor of whether a setup succeeds. A perfect trigger at a meaningless level is noise; a mediocre trigger at a critical level is a trade. Regime (20) and Trigger (20) share the next tier — regime ensures the market environment supports the thesis, while the trigger is the specific event that creates the opportunity. Flow (15) confirms the thesis with real-time order flow evidence. R:R (10) scores the mathematical quality of the stop/target geometry. Risk Filters (10) are binary safety checks — session timing, stop-hunt clearance, book stability — that don't generate edge but prevent easily avoidable losses.

Regime 20 Location 25 Trigger 20 Flow 15 R:R 10 Risk 10
Category Breakdown
CategoryWeightConditions
Regime20 ptshtf_aligned, ib_tight, cross_aligned, all_four, session_match
Location25 ptsvwap_side, vwap_extreme, key_level_near, gap_confirms, naked_vpoc, three_at_level
Trigger20 ptsib_one_sided, mss_confirmed, sweep_reclaim, mkt_order_tempo, first_hour_momentum
Flow15 ptsdelta_aligned, delta_divergence, dom_aligned, book_flow_sync, cvd_aligned, absorption
R:R10 pts(computed from stop/target geometry)
Risk Filters10 ptsstop_hunt_clear, book_stability, prime_window, not_lunch, session_match
Calibration Rationale
  • Location gets the most weight (25) because where price is relative to key levels matters more than any single trigger — this is the "where" that defines the trade.
  • Flow gets less (15) because it confirms but doesn't initiate.
  • Risk filters (10) are binary safety checks, not edge generators.
  • Every setup sums to exactly 100 points — different distributions, same budget — ensuring apples-to-apples comparison across families.
Qualification Mode
Qualification Profiles
STRICT vs BALANCED
QP
Two modes that control how many setups can fire and how selective the engine is.
Category Weight Score Threshold
Core Decision
STRICT maximizes signal quality; BALANCED maximizes data collection — Phase A runs BALANCED deliberately.
STRICT1 setup/sym · R:R ≥ 2.2 · offset 0 · hard blocks
BALANCED2 setups/sym · R:R ≥ 1.8 · offset -4 · soft penalties
Pass Setup meets profile requirements — proceeds through pipeline to signal generation.
Fail Setup rejected by profile constraints — hard block (STRICT) or downgraded score (BALANCED).
Profile Mechanics

The engine operates in one of two qualification profiles that control selectivity across the entire pipeline. STRICT is sniper mode: one setup per symbol, minimum 2.2:1 R:R, no score offset, and regime/playbook mismatches are hard blocks. BALANCED is scouting mode: two setups per symbol can compete, 1.8:1 R:R floor, -4 score offset (lowering the effective confluence threshold), and regime/playbook mismatches impose soft penalties rather than hard blocks.

Phase A Strategy

Phase A (current) runs BALANCED to maximize data collection. The engine intentionally fires more signals to build a statistical sample for each setup type. Once enough data accumulates to reliably distinguish setup quality, the profile will shift to STRICT — fewer signals, higher average quality, lower noise. The -4 score offset in BALANCED mode means a setup that needs 68 in STRICT only needs 64 in BALANCED. This isn't a quality compromise — it's deliberate observational permissiveness.

Profile Parameters
ParameterSTRICTBALANCED
Setups / symbol12
Min R:R2.21.8
Score offset0-4
Regime gateHard blockSoft (downgrade)
Playbook gateHard blockSoft (downgrade)
Calibration Rationale
  • STRICT optimizes for signal quality at the cost of sample size.
  • BALANCED optimizes for learning at the cost of signal purity.
  • Phase A needs volume — you can't evaluate what you don't fire.
  • The trade-off is explicit and temporary.
Setup Family
Structural Breakout Family
3 setups · continuation
F1
IB breakout, IB extension, breakout retest — continuation through structure.
Thesis Trigger Confluence Qualification Signal
Core Decision
The initial balance is the structural reference — breakout, extension, and retest each weight different evidence for the same directional thesis.
ib-brkib_one_sided 22 + delta_aligned 18
ib-extib_one_sided 20 + delta_aligned 20 + mkt_order_tempo 14
brk-retsweep_reclaim 20 + key_level_near 18 + absorption 14
High Confluence One-sided IB with confirmed directional flow and structural alignment — institutional continuation trade.
Low Confluence Balanced IB or weak flow — breakout is noise, not institutional intent.
Breakout & Extension

The Structural Breakout family trades the initial balance (IB — the range formed in the first hour of RTH) as a structural reference. IB Breakout (ib-brk) fires when price decisively exits the IB range. Its heaviest weight is ib_one_sided (22) — was the IB dominated by one side? A tight, one-sided IB that breaks out is institutional intent; a wide, balanced IB that breaks randomly is noise. IB Extension (ib-ext) fires after the breakout holds and extends. It shifts weight from the trigger to flow confirmation: delta_aligned (20) and mkt_order_tempo (14) together require proven, sustained flow in the breakout direction.

Breakout Retest

Breakout Retest (brk-ret) is the family's highest-conviction variant. It fires when a breakout level is retested and holds. The weight profile flips entirely: sweep_reclaim (20) and key_level_near (18) replace ib_one_sided — the thesis is no longer "the breakout happened" but "the breakout survived its first challenge." Absorption (14) confirms that aggressive selling at the retest level was absorbed by passive buyers. The not_lunch filter (8) exists because lunch-hour retests frequently fail due to thin liquidity, not structural weakness.

Condition Weights
Conditionib-brkib-extbrk-ret
ib_one_sided2220
delta_aligned182016
vwap_side1210
cross_aligned121012
mkt_order_tempo814
sweep_reclaim20
key_level_near18
absorption14
stop_hunt_clear8812
gap_confirms12
ib_tight10
prime_window6
session_match46
not_lunch8
Calibration Rationale
  • IB breakout weights one-sided action (22) because that's the primary signal — the IB was dominated by one side.
  • Extension shifts to delta (20) + tempo (14) because it's a follow-through trade; you need proven flow continuation.
  • Breakout retest flips to sweep_reclaim (20) because the thesis is "breakout held, retested, and reclaimed" — the trigger IS the level reclaim.
Setup Family
Mean Reversion Family
4 setups · reversion
F2
IB fade, VWAP bounce, VWAP deviation snap, value area fade — counter-move plays.
Thesis Trigger Confluence Qualification Signal
Core Decision
Price moved too far from fair value — divergence and absorption confirm the move is running out of fuel.
vwap-devvwap_extreme 24 + delta_divergence 20
vwap-bncvwap_bounce_zone 24 + delta_divergence 18
ib-fadedelta_divergence 20 + ib_one_sided 18
va-fadenaked_vpoc 18 + delta_divergence 18
High Confluence Flow diverges from price at an extreme level with absorption — high-probability snap back to fair value.
Low Confluence No divergence or absorption — catching a falling knife, not a mean reversion.
Family Thesis

Mean reversion setups bet that price has moved too far from fair value and will snap back. The family shares two dominant signals: delta divergence (flow disagreeing with price direction) and absorption (price stopping despite aggressive hitting). These two conditions together answer the question: "Is the move running out of fuel?"

Setup Variants

VWAP Deviation Snap (vwap-dev) has the family's most concentrated weight: vwap_extreme at 24 points. The entire thesis is "price extended ≥2σ from VWAP — mean reversion probability is high." Without extreme VWAP deviation, the setup doesn't exist. VWAP Bounce (vwap-bnc) similarly loads 24 on vwap_bounce_zone — the trade IS the bounce at VWAP. IB Fade (ib-fade) combines divergence (20) with one-sided IB (18) — the IB pushed hard one way, but flow says the push is exhausted. Value Area Fade (va-fade) anchors on naked VPOC (18) and key levels (14) — fading from a value area boundary that hasn't been visited yet is a high-quality mean-reversion thesis because the unvisited VPOC acts as a magnet.

Condition Weights
Conditionib-fadevwap-bncvwap-devva-fade
delta_divergence20182018
absorption16141616
vwap_side/extreme1424
vwap_bounce_zone24
ib_one_sided18
naked_vpoc18
key_level_near121214
cross_aligned12121012
stop_hunt_clear12101012
not_lunch810810
Calibration Rationale
  • Reversion trades live or die by divergence and absorption — without them, you're catching a falling knife.
  • VWAP deviation snap loads 24 on vwap_extreme because the entire thesis is "price extended too far from fair value."
  • VWAP bounce puts 24 on bounce_zone — the trade is the zone itself.
  • These concentrated weights ensure the setup can't fire if its core thesis is absent.
Setup Family
Trap & Reversal Family
3 setups · reversal
F3
IB rejection, trap & reverse, exhaustion reversal — failed moves become setups.
Thesis Trigger Confluence Qualification Signal
Core Decision
Failed moves trap participants on the wrong side — their forced exits fuel the reversal.
exhaustdelta_divergence 26 + key_level_near 20 + absorption 18
trap-revsweep_reclaim 20 + delta_divergence 18 + absorption 16
ib-rejdelta_divergence 20 + ib_one_sided 18 + sweep_reclaim 18
High Confluence Flow exhaustion confirmed at a key level with absorption — trapped participants will fuel the reversal.
Low Confluence No divergence or absorption proof — the move may be a legitimate trend, not a trap.
Exhaustion Reversal

This family trades failed moves — situations where a directional push exhausted itself, trapping participants on the wrong side. The thesis is contrarian: the losers' forced exits fuel the reversal. Exhaustion Reversal (exhaust) carries the heaviest single condition weight in the entire engine: delta_divergence at 26. The signal is unambiguous: aggressive flow pushed price to a level (key_level_near at 20), but the flow is dying (divergence) while passive absorption (18) holds the level. Three independent lines of evidence converge on one conclusion: the move is over.

Trap & IB Rejection

Trap & Reverse (trap-rev) leads with sweep_reclaim (20) — the failed breakout IS the trade. Price pushed past a level, swept stops, and reclaimed. The trapped participants are now underwater, and their forced exits become your fuel. IB Rejection (ib-rej) combines one-sided IB (18) with divergence (20) — the IB pushed hard one way but the rejection needs both: the setup (the push) and the proof (the flow reversal). Session_match (6) gives a small bonus because IB rejections are most reliable when they happen during the approved session for the setup family.

Condition Weights
Conditionib-rejtrap-revexhaust
delta_divergence201826
sweep_reclaim1820
absorption141618
ib_one_sided18
key_level_near1420
cross_aligned141212
stop_hunt_clear101214
session_match6
not_lunch810
Calibration Rationale
  • Exhaustion reversal loads 26 on divergence because the entire thesis is "flow dried up at a level." It's the engine's strongest conviction about single-condition importance.
  • Trap & reverse leads with sweep_reclaim (20) because the failed breakout IS the trade — you need proof that the move was a trap.
  • IB rejection combines the push (18) with the proof (20) — you need both.
Setup Family
Order Flow & Level Family
3 setups · flow-driven
F4
Flow surge, key level magnet, volume migration follow — flow-driven entries.
Thesis Trigger Confluence Qualification Signal
Core Decision
The order book tells a clear directional story — institutional flow events or structural level magnetism drive entry.
flow-surgedelta_aligned 24 + mkt_order_tempo 20 + dom_aligned 14
key-magnaked_vpoc 22 + key_level_near 18 + absorption 16
vol-mignaked_vpoc 20 + delta_aligned 18 + mkt_order_tempo 16
High Confluence Overwhelming institutional flow or strong level magnetism with book confirmation — ride the directional wave.
Low Confluence Weak flow or no structural magnet — chasing momentum without confirmation is suicidal.
Flow Surge

This family trades institutional flow events — situations where the order book tells a clear directional story. Flow Surge (flow-surge) is the engine's most aggressive setup, requiring overwhelming unidirectional flow: delta_aligned at 24 + mkt_order_tempo at 20. Together, these two conditions require both the magnitude (massive delta in one direction) AND the participation (heavy institutional trade count). DOM alignment (14) adds a third confirmation: the depth-of-market book structure should support the direction. This is a momentum trade — ride the institutional wave.

Level Magnet & Volume Migration

Key Level Magnet (key-mag) trades the pull toward an unvisited structural level. Its heaviest weight is naked_vpoc (22) — the unvisited Volume Point of Control is the magnet itself, a price level where significant volume transacted previously but the current session hasn't reached yet. Key_level_near (18) and absorption (16) add structural and flow confirmation. Volume Migration Follow (vol-mig) tracks when the VPOC physically migrates — it shifts (20) toward a new level, and the engine follows with delta confirmation (18) and cross-market alignment (14). This is a trend-following variant: the auction itself is voting on the new fair value.

Condition Weights
Conditionflow-surgekey-magvol-mig
delta_aligned241418
mkt_order_tempo2016
naked_vpoc2220
key_level_near101812
dom_aligned14
absorption16
vwap_side12
cross_aligned101214
stop_hunt_clear101012
not_lunch88
Calibration Rationale
  • Flow surge needs 44 combined points from delta + tempo because it's the riskiest setup type — chasing momentum without extreme flow confirmation is suicidal.
  • Key level magnet leads with naked_vpoc (22) because the unvisited VPOC is the magnet — without it, there's nothing to be attracted to.
  • Volume migration follows the market's own vote on new fair value.
Setup Family
Dynamic / Phase G Family
4 setups · specialist
F5
London sweep, gap halfback fade, overnight continuation, SMT divergence — newer setups with specialized triggers.
Thesis Trigger Confluence Qualification Signal
Core Decision
Specialist plays defined by unique structural triggers — each setup IS its trigger, carrying the highest single-condition weights (25-30).
gap-fadegap_inside_range 30 + first_5min 25
ldn-sweeplondon_sweep 28 + ny_session 18
ovn-contovernight 28 + first_30min 22 + at_ovn_vwap 18
smt-lagsmt 25 + delta_aligned 18
High Confluence Unique structural trigger fires with session and flow confirmation — specialist edge with concentrated thesis.
Low Confluence Core trigger absent — the setup literally doesn't exist without its defining condition.
Specialist Thesis

Phase G setups are specialist plays defined by unique structural triggers that don't exist in the core families. They carry the highest single-condition weights in the system (25-30 points) because each setup is its trigger — without the specific condition, the setup literally doesn't exist.

Setup Variants

Gap Halfback Fade (gap-fade) loads 30 on its trigger (gap_inside_range) and 25 on first_5min — together these two conditions comprise 55% of the setup's total budget. The thesis: when the market opens with a gap that falls inside yesterday's range, and the first 5 minutes show reversal, the gap will fill at least 50% (halfback). London Sweep (ldn-sweep) at 28 triggers on the London session's characteristic stop-hunting pattern: price pushes above/below the Asian range to sweep stops, then reverses into the NY open. Overnight Continuation (ovn-cont) at 28 uses overnight VWAP (at_ovn_vwap, 18) as its anchor — the thesis is that the overnight direction established by Asia/London will continue into NY. SMT Divergence (smt-lag) at 25 fires when NQ and ES diverge structurally — one makes a new high/low while the other doesn't confirm, suggesting the leader is trapping participants.

Condition Weights
Conditionldn-sweepgap-fadeovn-contsmt-lag
london_sweep / gap / overnight / smt28302825
delta_aligned14141218
ny_session / first_5min / first_30min182522
absorption81012
prime_window / at_ovn_vwap1018
cross_aligned868
mkt_order_tempo710
stop_hunt_clear7768
vwap_side812
session_match67
not_lunch8
Calibration Rationale
  • These setups have the highest single-condition weights in the system (28-30) because each one is defined by its unique trigger.
  • Gap halfback fade at 30 for gap_inside_range — if the gap isn't inside yesterday's range, the setup doesn't exist.
  • London sweep at 28 for the London-to-NY reversal pattern itself.
  • These are specialist plays with one dominant thesis — the concentrated weight ensures the core condition must be present.
Setup Quarantine
Quarantine & Session Map
8 benched · 3 sessions
QS
Which setups are benched, and which sessions allow which families.
Category Weight Score Threshold
Core Decision
Quarantine is data-driven — each benched setup demonstrated structural failure, not a bad streak. Session playbooks map approved families to session liquidity profiles.
Quarantineobjective performance collapse → manual unblock only
Retirementauto-bench at -0.12R expectancy → auto-rehabilitate
Pass Setup not quarantined and approved for current session — proceeds to scoring pipeline.
Fail Setup quarantined or session-blocked — still computes and writes to substrate but never fires a signal.
Quarantine List

The quarantine list is the engine's graveyard for setups that failed in live data. Each entry earned its place through objective performance collapse: session-ext-L/S lost a combined -20.48R (catastrophic), vwap-bounce-L/S showed 0% win rate across a meaningful sample (structurally broken), ib-brk-S lost -4.42R (short-side IB breakouts fail systematically). Quarantined setups are not deleted — they continue computing and writing to the substrate. If market conditions shift and the setup rehabilitates in the data, it can be unbenched. The distinction between quarantine and retirement is permanence: retired setups auto-bench at -0.12R expectancy and can auto-rehabilitate; quarantined setups require manual operator intervention to restore.

Session Playbook

The session playbook maps each trading session to its approved setup families. Asia (pre-London, low participation) permits only level-based plays: key-mag, exhaust-rev, vpoc-mig. Breakout setups are banned — thin Asia liquidity produces false breakouts. London permits trap-based plays: ib-reject, trap-rev — because the London open characteristically sweeps Asia stops. NY gets the full momentum arsenal: ib-brk, ib-ext, flow-surge — because NY has the institutional flow to sustain breakouts.

Quarantined Setups
QuarantinedReason
session-ext-L/S-20.48R combined
vwap-bounce-L/S0% win rate
ib-brk-S-4.42R
key-mag-L/S-5.51R combined
flow-surge-S0/3, -3.10R
Session Approved Families
SessionApproved Families
Asiakey-mag, exhaust-rev, vpoc-mig
Londonib-reject, trap-rev
NYib-brk, ib-ext, flow-surge
Calibration Rationale
  • The quarantine list is data-driven, not opinion-driven. Each benched setup was quarantined after demonstrating structural failure, not a bad streak.
  • The session playbook is calibrated from historical outcome data grouped by session — Asia breakouts fail because there's no institutional flow to sustain them, not because breakouts are bad setups.
Liquidity Analysis
Liquidity Target Scoring
7 types · 44pt proximity cap
LIQ
How the engine scores potential sweep targets by type, proximity, and session.
Category Weight Score Threshold
Core Decision
Each liquidity target gets a composite score from type base + proximity adjustment + session bonus — producing a live priority queue of the "hottest" sweep targets.
ScorebaseScore + max(0, 44 - distTicks × 0.55) + sessionBonus
Session+8 when target belongs to current session
High Confluence Session extreme nearby with session match — highest-priority sweep target in the live queue.
Low Confluence Range target far away — effectively invisible to the current move, deprioritized.
Type Hierarchy

The engine maintains a real-time ranked list of liquidity targets — price levels where stop orders are likely to cluster. Each target receives a composite score combining three factors: type base score, proximity adjustment, and session context bonus. The type hierarchy reflects institutional behavior: session extremes (Asia/London/OR highs and lows) score highest (34) because they're the most visible stop-cluster locations — virtually every retail trader places stops outside them. Prior-day extremes (PDH/PDL at 32) serve a similar role at daily scale.

Proximity & Session Modifiers

The proximity formula adds up to 44 points based on how close the target is: max(0, 44 − distTicks × 0.55). This means a target at the current price gets +44, a target 40 ticks away gets +22, and a target 80 ticks away gets effectively zero. The decay rate of 0.55 per tick was calibrated to match the typical effective range of institutional sweep operations — stops too far away aren't getting swept in the current move. A session match bonus of +8 rewards targets that belong to the current session (Asia high targeted during Asia session) because same-session extremes are the freshest, most-watched levels. Range targets score only 6 base with an additional -20 penalty because intraday ranges are weak references — everyone sees them, but they lack the institutional significance of session extremes.

Base Scores by Type
Target TypeBase Score
Asia/London/OR High-Low34
PDH / PDL32
Value Area26
VPOC24
VWAP22
Equal Highs/Lows16
Range6
Score Modifiers
ModifierEffect
Proximitymax(0, 44 - distTicks × 0.55)
Session match bonus+8 (Asia target in Asia, etc.)
Range penalty-20
Equal H/L penalty-8
Calibration Rationale
  • Session extremes score highest because they're the most obvious stop-cluster locations — every retail trader sets stops outside them.
  • PDH/PDL are close behind for the same reason at daily scale.
  • Range gets only 6 (effectively -14 after penalty) because it's a weak, overused reference.
  • Proximity degrades at 0.55/tick — a target 80 ticks away is effectively invisible to the current move.
  • The scoring produces a live priority queue: the engine always knows which liquidity target is the "hottest" right now.
Order Flow Engine
Order Flow State Machine
9 states · 15–82 conf
OF
9 states evaluated in priority order. First match wins. Each state carries a quality rating and confidence score.
DetectClassifyConfirmScore
Core Decision
Priority-first state classification: first matching state wins, no further evaluation.
PriorityStale → Trap → Initiative → CVD Div → Absorption → Exhaustion → Delta NC → Noisy
Confidencerange 15–82, first match takes slot
Confirmed High-quality state (Trap 82, Initiative 78) — institutional behavior detected, full conviction signal.
Rejected Low-quality state (Noisy 35, Stale 15) — no interpretable flow, signal suppressed.
State Machine Logic

The order flow state machine is the engine's real-time interpretation of what the market is doing right now. Every bar, it evaluates 9 possible states in a fixed priority order — the first state whose conditions are met wins, and no further states are evaluated. This priority-first design prevents ambiguity: when multiple states could apply, the highest-conviction interpretation takes precedence.

High-Priority States

Stale (15) checks first as a circuit breaker — if the latest flow data exceeds the age threshold, every other state is meaningless. Trap Flow (82) evaluates second and carries the highest confidence in the system: confirmed stop hunt with reclaim means institutional behavior — this is the most reliable signal the engine produces. Initiative Buy/Sell (78) require the tightest triple-confirmation: meaningful delta magnitude + CVD confirmation + efficient price travel in the same direction. Missing any one of the three drops the state.

Mid & Low-Priority States

CVD Divergence (72) catches a specific failure: price makes a new extreme but cumulative volume delta doesn't confirm — the "who's buying?" gap. Absorption (68) detects price stopping despite aggressive hitting, especially near a structural level. Exhaustion (62) is the "dying move" state: price is still traveling but delta has lost its meaningful threshold, and either volume or CVD is diverging. Delta Not Confirmed (48) captures the awkward middle: delta is meaningful but price/CVD don't agree. Noisy/Unusable (35) is the default — no conditions met, no interpretation possible.

State Priority Table
StateQualityConfTrigger
StaleLOW15Flow age exceeds stale threshold
Trap FlowHIGH82Stop hunt = 'trap' OR reclaim confirmed + sweep + matching delta
CVD DivergenceMED72New high without CVD up, or new low without CVD down
AbsorptionMED68Meaningful + near level + (price stalled OR efficiency <28% OR vol ≥70%ile)
Initiative BuyHIGH78Price up + meaningful delta + buy-side + CVD confirming + efficient
Initiative SellHIGH78Price down + meaningful delta + sell-side + CVD confirming + efficient
ExhaustionMED62Price moving but delta NOT meaningful + (vol ≥65%ile OR CVD diverging)
Delta Not ConfirmedLOW48Delta is meaningful but price/CVD don't confirm
Noisy / UnusableLOW35Default — no conditions met
Calibration Rationale
  • Priority order matters — Trap Flow evaluates first (82 confidence) because confirmed institutional stop-hunting is the highest-conviction signal; when it's present, nothing else matters.
  • Initiative Buy/Sell (78) require the full triple-confirmation picture.
  • Exhaustion (62) is the "dying move" detector.
  • The spread from 15 to 82 reflects the genuine information-content gap between stale noise and confirmed institutional trapping.
Order Flow Engine
Directional Intent Scoring
62% min · 8 modes
DIR
Five modules vote on long vs. short. The winner must clear both a minimum score and a clear edge over the other side.
DetectClassifyConfirmScore
Core Decision
Dual-threshold directional call: side minimum 62% AND edge 10% required to declare direction.
Side min62% to declare LONG or SHORT
Edge10% L-S gap required
Confidencefloor 60% (range 45–75%)
Confirmed Direction declared with mode (ACCEPTANCE / PULLBACK / TRAP_REVERSAL) — routes eligible setup families.
Rejected CONFLICT or NO_DIRECTION — both sides too close or too weak, no directional trade eligible.
Voting & Thresholds

Directional intent scoring aggregates five independent modules — each evaluates its own evidence and produces a long score and a short score. The scores are weighted and combined into a final directional call. The thresholds are intentionally stricter than the Bias Arbitrator (Gate 2.5): the side minimum is 62% (vs. 55%), and the edge requirement is 10% (vs. 8%). This dual-threshold design prevents two failure modes: declaring direction when evidence is thin (minimum check) and declaring direction when both sides have nearly equal evidence (edge check).

Directional Modes

Beyond the binary long/short call, the system infers a directional mode — how the market is expressing its direction. ACCEPTANCE means price is being accepted in the direction (trending smoothly). PULLBACK means the direction holds but price is retracing (potential entry opportunity). TRAP_REVERSAL means a failed move trapped participants on the wrong side (highest conviction). The mode tells the setup system what kind of trade to look for: a pullback in an uptrend calls for continuation setups; a trap reversal calls for reversal setups.

Confidence Floor

The confidence floor at 60% flags marginal directional reads. A call that passes the math (62% side, 10% edge) but has low confidence (below 60%) is technically valid but unreliable — the engine logs it as a research note rather than a conviction signal. Confidence ranges from 45% to 75%, with the floor at 60% reflecting the point where cohort attribution data shows directional calls become predictive of setup outcomes.

Threshold Parameters
ParameterValue
Side minimum62% (to declare LONG or SHORT)
Side edge10% (L-S gap required)
Conflict min55% (both sides ≥ this = CONFLICT)
Conflict edge10% (max gap for CONFLICT state)
None max55% (below = NONE)
Confidence floor60% (range 45–75%)
Mode Taxonomy
ModeVariations
LONG_*ACCEPTANCE · PULLBACK · TRAP_REVERSAL
SHORT_*ACCEPTANCE · PULLBACK · TRAP_REVERSAL
MixedCONFLICT · NO_DIRECTION
Calibration Rationale
  • 62% is the real scoring minimum (vs. 55% in the bias arbitrator's pipeline version) because directional intent is a higher-stakes call — it determines the trade direction, not just a gate penalty.
  • The 10% edge prevents "barely long" calls.
  • Mode inference (ACCEPTANCE vs PULLBACK vs TRAP_REVERSAL) tells the setup system what kind of trade to look for — a critical routing decision that determines which setup families are eligible.
Order Flow Engine
Absorption Quality States
7 states · 18–86
ABS
Absorption isn't binary — it transitions through 6 states from initial detection to confirmed reversal or invalidation.
DetectClassifyConfirmScore
Core Decision
Progressive state machine: absorption evidence accumulates from initial detection (58) to reversal confirmed (86) or invalidated (18).
EntryACTIVE_ABSORPTION at 58 — initial detection
PeakREVERSAL_CONFIRMED at 86 — full convergence
KillINVALIDATED at 18 — price accepted through level
Confirmed REVERSAL_CONFIRMED (86/84) — failed move + structural proof + opposite hold, full reversal conviction.
Rejected INVALIDATED (18) — price bulldozed through the absorbed level, thesis dead.
Detection Model

Absorption detection answers a critical question: is someone passively absorbing aggressive flow at a level? When large limit orders silently eat incoming market orders without letting price move, it's invisible on the price chart but detectable in order flow — high volume + no price movement = passive absorption. The engine models this as a progressive state machine rather than a binary flag.

Early States

ACTIVE_ABSORPTION (58) is the initial detection: order flow shows absorption, but it's just a fact — someone is sitting on a level. It becomes interesting at TRAP_BUILDING (74) when structural evidence accumulates: a reclaim, a failed breakout, or proximity to a planned target suggests the absorption will hold. CONTINUATION_WARNING (66) is the default middle state — absorption is present but there's no reversal evidence yet, and the market might push through.

Convergence States

The highest states require convergence. REVERSAL_CONFIRMED at 86 needs reclaim or failed breakout PLUS opposite structure or hold — the full picture. At 84, it needs divergence plus at least one structural confirmation. TWO_REVERSAL_WARNINGS (80) fires on CVD divergence alone without structural confirmation — it's close to reversal conviction but lacks the physical proof. INVALIDATED (18) kills the thesis entirely: price accepted through the absorbed level. The passive defender lost — game over.

State Scoring Table
StateScoreTrigger
REVERSAL_CONFIRMED86Reclaim or failed breakout + opposite structure or hold
REVERSAL_CONFIRMED84Divergence + (reclaim or failed breakout or opposite structure)
TWO_REVERSAL_WARNINGS80CVD divergence alone (without structural confirmation)
TRAP_BUILDING74Reclaim or failed breakout or near planned target
CONTINUATION_WARNING66Default — absorption present but no reversal evidence
ACTIVE_ABSORPTION58Initial detection — order flow shows absorption
INVALIDATED18Price accepted through the absorbed level
Calibration Rationale
  • Absorption alone (58) is interesting but not actionable — anyone can sit on a level temporarily.
  • TRAP_BUILDING (74) means structural evidence is accumulating.
  • REVERSAL_CONFIRMED (86) is the full convergence: failed move + structural proof + opposite hold.
  • The progressive scoring prevents premature action on absorption while ensuring the engine acts decisively when the full picture emerges.
  • INVALIDATED (18) means price bulldozed through — the absorbed level is gone, and any setup based on it is dead.
Order Flow Engine
Absorption Stability Tracker
60s window · 60% lead
STB
Prevents flip-flopping — absorption side must hold for minimum ticks and time before switching.
DetectClassifyConfirmScore
Core Decision
Triple-condition side flip: 5 ticks + 10 seconds + 60% weighted dominance required simultaneously.
Window60s history of scored observations
Flip5 ticks + ≥10s + ≥60% weighted lead
Floordrop observations below score 50
Confirmed Side flip validated — reversal banner shown for 30 seconds, new absorption side declared.
Rejected Flip conditions not met — current side held, noisy observations filtered out.
Low-Pass Filter

Raw absorption detection is noisy — in a fast market, the absorption side can appear to flip on every tick as aggressive flow alternates between bid and ask. The stability tracker is a low-pass filter that prevents meaningless side changes from polluting the engine's absorption state.

Weighted Voting

The tracker maintains a 60-second history window of scored observations. Each observation carries the quality score from the absorption detection module, and votes are weighted by score — a high-quality observation (e.g., REVERSAL_CONFIRMED at 86) outweighs several low-quality ones (ACTIVE_ABSORPTION at 58). To flip the declared side, the new side must satisfy three independent conditions simultaneously: (1) maintain its lead for at least 5 ticks, (2) hold for at least 10 seconds, and (3) achieve ≥60% weighted dominance in the recent vote window.

Grace & Banner

A fade grace period of 10 seconds holds the last declared side even when no new observations arrive — this prevents the tracker from going blank during brief pauses in flow. The reversal banner lasts 30 seconds: when a genuine side flip is confirmed, the engine displays a reversal alert on the dashboard for 30 seconds to ensure the trader notices the change. Observations below score 50 are dropped entirely — low-quality noise shouldn't influence the stability calculation.

Stability Parameters
ParameterValue
History window60 seconds
Flip minimum ticks5 ticks
Flip minimum time10 seconds
Flip lead %60% weighted dominance
Min observation score50 (drop below this)
Reversal banner30 seconds
Fade grace10 seconds (holds last side)
Recent vote window25 ticks
Calibration Rationale
  • Without stability constraints, absorption side would flip on every tick in a noisy market, making the signal useless.
  • The 60% lead requirement means the new side must convincingly dominate, not just edge ahead.
  • The 10-second minimum prevents reactionary flips to single large prints — institutional iceberg orders can produce momentary opposite-side signals that shouldn't cause a flip.
  • Score-weighted voting ensures that a single high-quality reversal observation can outweigh multiple low-quality noise observations.
Order Flow Engine
Market Order Tempo
3 levels · 0.6× / 1.5×
TMO
How the engine reads market "loudness" — are institutions actively participating or is this retail noise?
DetectClassifyConfirmScore
Core Decision
Bar-by-bar institutional participation classification against fixed baselines per symbol.
WEAK<0.6× baseline → confluence +4
NORMAL0.6× – 1.5× baseline → no adjustment
STRONG1.5× baseline → confluence -3 to -5
Confirmed STRONG tempo — institutions actively participating, confluence threshold lowered, flow IS confirmation.
Rejected WEAK tempo — retail noise, no institutional footprint, confluence threshold raised by +4.
Baseline Measurement

Market order tempo is a per-bar measurement of institutional participation intensity. The engine counts both the number of trades (order frequency) and the total contracts (order size) in each bar, comparing them against fixed baselines derived from average RTH bar statistics: NQ baseline is 900 trades / 12,000 contracts per bar; ES baseline is 600 trades / 8,000 contracts.

Threshold Adjustment

Below 60% of baseline (WEAK), the market is dominated by retail noise — small orders, no institutional footprint. The engine responds by raising the confluence threshold by +4 points, demanding more evidence before firing. Above 150% of baseline (STRONG), institutions are actively participating. The engine lowers the threshold by -3 to -5 points because the heavy participation itself is a form of confirmation — you don't need as much structural evidence when the order book is shouting a direction.

Macro vs Micro Timescale

The tempo check is separate from the volume regime (P2) and works at a different timescale. Volume regime uses daily percentile rank (macro context); tempo measures bar-by-bar participation (micro context). A STRONG tempo bar in a LOW volume regime means "today is quiet overall, but right now someone big showed up" — that's a relevant signal for the current bar's evaluation.

Tempo Thresholds
LevelNQ TradesNQ VolumeES TradesES Volume
WEAK (<0.6×)<540<7,200<360<4,800
NORMAL540–1,3497,200–17,999360–8994,800–11,999
STRONG (≥1.5×)≥1,350≥18,000≥900≥12,000
Calibration Rationale
  • WEAK tempo means the market order flow is below 60% of baseline — retail noise, no institutional footprint; setups need more confluence to compensate.
  • STRONG means real participation — the flow itself IS confirmation.
  • The 0.6×/1.5× multipliers mark the empirical inflection points where institutional participation becomes visible (or invisible) in order flow data.
Cross-Market Signal
Gamma Exposure (GEX)
0–45 DTE · 5 regimes
GEX
ETF options OI → Black-Scholes gamma per strike → dealer hedging direction.
Macro ContextOptions MarketDealer Hedging
Core Decision
ETF options OI → Black-Scholes gamma per strike → dealer hedging direction.
GEXΓ × OI × 100 × S² × 0.01
SignCall GEX positive (stabilizing) · Put GEX negative (amplifying)
Pass Spot ABOVE gamma flip → STABILIZING regime → dealers dampen moves, mean-reversion favored.
Fail Spot BELOW gamma flip → AMPLIFYING regime → dealers amplify moves, breakout/momentum favored.
Dealer Mechanics

Market-makers are structurally short options. To stay delta-neutral, they must hedge dynamically. Positive GEX = dealers buy dips, sell rips (stabilizing). Negative GEX = dealers sell into drops, buy into rips (amplifying). The gamma flip level is where this behavior inverts.

Cross-Market Edge

Data sourced from ETF options (SPY/QQQ), not futures options (ES/NQ). Independent participant pool: pension funds, insurance companies, retail equity vs futures prop desks. Cross-market confirmation with mechanical (not discretionary) basis.

VIX Integration

Research-validated: GEX is a VIX modifier, not standalone signal (FlashAlpha 8yr backtest: ρ=-0.14 after VIX control). Combined regime matrix: PINNED (calm+stabilizing) · COILED (calm+amplifying) · DAMPENED · VOLATILE · CASCADE.

Key Levels
LevelDefinition
Gamma FlipPrice where net GEX crosses zero — regime boundary
Call WallStrike with highest call GEX — mechanical ceiling
Put WallStrike with highest put GEX — mechanical floor
Vol TriggerPut wall below which negative-gamma cascading accelerates
Calibration Rationale
  • Industry-standard Black-Scholes gamma calculation (Perfiliev/SpotGamma convention).
  • 0–45 DTE options included.
  • Dealer-short assumption validated by SpotGamma, SqueezeMetrics, FlashAlpha research.
HOT RUN · PHASE A
BRIDGE OFF · awaiting dxFeed
ENGINE LOCKED · until 2026-06-14
78 modules · ~100 fields/fire
--:--:-- UTC