⚠ INTERNAL — Operator UX mock · Design preview of V2 development path · demo-wired ≠ production-live · back to dev guide
Polygon · pUSD 10
📓 Developer Guide 📋 Reason Codes 📈 Shadow Mode
JD John Doe · Admin
OperatorMonitor and control all live strategies — their state ladder position, wired bots, and current signal mode.When: When you need to pause, resume, or promote a strategy.
Details
What this page is forMonitor and control all live strategies — their state ladder position, wired bots, and current signal mode.
When to use itWhen you need to pause, resume, or promote a strategy.

← Back to strategies

Election Momentum

Quote tight on 2026 US Senate · momentum signal from headline scanner · max-loss bounded by drawdown guard

Why this page is new

Today there is no Strategy detail page — only a list and a create form. The mock adds the page developers need: the bot pipeline visualised, per-bot parameters in one place, linked instruments, the reason-code allowlist the strategy can produce, and the promotion state. Everything the operator needs to understand and audit one strategy.

Target portfolio

PORT-001 Election demo

score_type

confidence

State

demo-wired

Signal mode

Auto execute

Bots wired

7

Instruments

2

Decisions today

84

Strategy contract

Every running strategy declares its target portfolio, its score output, and its risk-layer split. Set at launch — changes require a stop-and-restart.

Target portfolio required

Positions, signals and audit receipts produced by this strategy belong to the selected portfolio. Portfolio-layer guardrails apply on top of strategy-layer entry filters.

Score output

strategy_score0.00–1.00
score_typeconfidence (Momentum family)
threshold for emit≥ 0.62

Replaces the legacy "Fair Value" column. Generic strategy_score with a per-strategy score_type tag. See the glossary.

Market scope — which markets this strategy evaluates

M2 ships two modes. Cluster binding is the default; manual list is the fallback for one-off arb or single-market tests. Filter-expression DSL is deferred to M3. Backtest applies the same scope rule retrospectively. See M2 scope › Market scope.

Bound clusters

cluster.us_election_2026 × cluster.fed_decisions ×

Markets currently in scope: 14 · updated as cluster membership evolves. Each entry/exit emits STRAT_MARKET_IN_SCOPE / STRAT_MARKET_OUT_OF_SCOPE.

In-scope preview (first 10 of 14)

MarketClusterLiq.
2026 US Senate controlus_election_2026$94k
2026 US House controlus_election_2026$71k
NY-22 winnerus_election_2026$22k
PA-Sen winnerus_election_2026$58k
Fed June 2026 decisionfed_decisions$112k
Fed July 2026 decisionfed_decisions$88k
Fed Sep 2026 decisionfed_decisions$66k
2026 Q3 PCE > 2.5%fed_decisions$41k
OH-Gov winnerus_election_2026$19k
WI-Gov winnerus_election_2026$17k

Audit trail: every position this strategy opens records the market-scope mode and the resolved condition ID set at the moment of position open on the audit envelope. Backtest uses the same scope rule — not a convention, a hard requirement.

Bot pipeline

Every intent flows left to right. Each stage's bot reads from the registry, calls decide(), emits one envelope, passes (or rejects) to the next stage.

1. Intel

intel.macro_sentiment

2. Discovery

disc.headline_scanner

3. Strategy

strat.maker_tight

4. Risk

risk.killswitchrisk.stalebookguardrisk.exposureguard

5. Execution

exec.smartrouter

Linked instruments

Markets this strategy is authorised to trade. Must all be V2-ready and trading.

MarketSpreadState
2026 US Senate control
election-2026-us-senate
18 bpstradingOpen
UK snap election 2026
uk-snap-election-2026
47 bpstradingOpen

Strategy parameters

Per-bot config. Defaults come from the spec; overrides are saved on this strategy.

spread_target_bps
strat.maker_tight · target spread to quote inside of
default: 25
max_position_pusd
strat.maker_tight · max notional per side
default: 250
staleness_threshold_s
risk.stalebookguard · reject if book age > this
default: 15
exposure_cap_pusd
risk.exposureguard · per-strategy cap
default: 2500
drawdown_threshold_pusd
risk.drawdownguard · trip kill-switch above this loss
default: 250
headline_keyword_set
disc.headline_scanner · keyword pack to match
spec
slippage_max_bps
exec.smartrouter · reject route if slippage > this
default: 50

Reason-code allowlist

Only these codes can appear in this strategy's envelopes. Anything else is a bug.

STRAT_MAKER_QUOTE_INSIDE STRAT_MAKER_NO_EDGE
DISC_HEADLINE_MATCH DISC_HEADLINE_NOISE
INTEL_MACRO_NEUTRAL INTEL_MACRO_BEAR
RISK_KILLSWITCH_TRIPPED RISK_BOOK_STALE_15S RISK_EXPOSURE_CAP_HIT RISK_DRAWDOWN_TRIGGERED
EXEC_ROUTE_CTFV2_ACCEPTED EXEC_SLIPPAGE_EXCEEDED

Fixture pack

Test inputs the strategy is verified against. Promotion to shadow-ready requires all four to pass.

normal.json62 intentspass
warning.json14 intentspass
hard.json9 intentspass
failure.json5 intentspass

Promotion gates

All bots in pipeline at demo-wired or higherpass
Fixture pack 4/4 passingpass
Reason-code allowlist enforcedpass
24h shadow soakpending

Recent decisions

Last 8 envelopes this strategy produced. Click Trace to walk one through the full pipeline.

View all decisions →
TimeCorrelation IDInstrumentStage · BotDecisionReason code
14:48:2101JG1Z5K7N3RD9XTelection-2026-us-senateRISK risk.killswitchREJECTRISK_KILLSWITCH_TRIPPEDTrace
14:46:0201JG1Z3F2H8WK4PMelection-2026-us-senateSTRAT strat.maker_tightAPPROVESTRAT_MAKER_QUOTE_INSIDETrace
14:40:1801JG1YYR4M2KX8VAfed-rate-2026-q2EXEC exec.smartrouterFILLEDEXEC_ROUTE_CTFV2_ACCEPTEDTrace
14:38:4401JG1YX1K5J3RH7Buk-snap-election-2026RISK risk.exposureguardREJECTRISK_EXPOSURE_CAP_HITTrace
14:31:0901JG1YQ8X2K4M6PLelection-2026-us-senateEXEC exec.smartrouterFAILEDEXEC_BUILDERCODE_MISSINGTrace
⚙ Configuration Pass B

Parameter overrides for this strategy. Defaults come from the bot spec. Changes are demo-only and do not persist.

Targeting

70%

Sizing

Limits

Risk binding

Guardrails this strategy subscribes to. Checked = active for this strategy's envelopes.

Pacing

Approval policy

Signals above this confidence are auto-approved without operator review.

Signals below this go to the Approvals queue.

Configuration applies on next strategy restart

Where this lives in the codebase

Phase 2 work: extend packages/contracts with a StrategyConfig type that references instrument IDs (not slugs), per-bot parameter blocks, and the reason-code allowlist. The runner already loads strategy configs — this just adds the typed shape. The UI then becomes a read/write view of one StrategyConfig.
Polytraders Operator UX Mock · INTERNAL · demo-wired ≠ production-live · the plan · reason codes · shadow-mode pipeline
⚙ Page Configuration
Current page settings
Loading configuration…