Settings
General
Settings that apply across all modules — appearance, data range, parameter sweep window, and scheduling.
Appearance
Theme
Switch between dark and light interface themes
Language
Auto-detects from browser locale (future implementation)
Label size
Font size for chart labels and table text
Data Range
How much historical data is fetched and held in memory. Applies to Dashboard, Backtest, and Scanner. Changes require a Flask restart to take effect on already-cached data.
Data start
Data end
Parameter Sweep Window OFF
Defines the date range used when sweeping Markov and trailing-stop parameters (Backtest page, Dashboard startup sweep). Enabling out-of-sample evaluation restricts the sweep to this window and reports performance on data after sweep_end separately — a true test of whether swept parameters generalize beyond the data that selected them.
Sweep start
Sweep end
Out-of-sample evaluation
Sweeps restrict to the window above; results show IS and OOS metrics separately
When enabled, the out-of-sample period is everything after sweep end. Backtest and sweep results will report "IS Sharpe" (within the sweep window) and "OOS Sharpe" (after sweep end) as separate figures.
Trailing-Stop Sweep Grid
Activation and trail-distance levels tested by the trailing-stop sweep (Backtest page). Combinations = activation levels × trail levels — narrowing either list speeds up the sweep proportionally (e.g. 5×5 = 25 combos takes roughly 5x longer than 2×2 = 4 combos). Enter comma-separated percentage values. A value of 0 is always skipped — it would just duplicate the sweep's separate "no trailing stop" baseline run.
Daily timeframe
Activation levels (%)
Default: 1.0, 1.5, 2.0, 2.5, 3.0
Trail distance levels (%)
Default: 0.5, 1.0, 1.5, 2.0, 2.5
Hourly timeframe
Activation levels (%)
Default: 0.2, 0.4, 0.6, 0.8, 1.0
Trail distance levels (%)
Default: 0.1, 0.2, 0.3, 0.4, 0.5
Scheduling
Applies to Dashboard's daily refresh, Scanner's daily run, and the live monitor's intraday polling (Phase 6).
Signal evaluation time (ET)
Daily Markov signal evaluation — after NY market close
Intraday monitoring interval
How often the live monitor polls for entries (minutes)
min
Volume profile lookback
Minutes of intraday data used for POC/VWAP computation (390 = full 6.5h session)
min
Default refresh rate
Dashboard matrix refresh — modules may override
min
Dashboard
Signal sensitivity, sweep behavior, and per-instrument regime filter toggles. Markov regime parameters (lookback, threshold, horizon) are sweep outputs and are not edited here — see Backtest / Strategies for the sweep workflow.
Signal Sensitivity
Minimum signal strength for the dashboard to consider a regime actionable. Stricter thresholds reduce false signals but may delay entries.
Min signal T+1 strength
|P(Bull) − P(Bear)| must exceed this
Min signal T+3 strength
3-step-ahead signal must agree and exceed this
Min useful horizon (bars)
Signal decay must remain useful for at least this many bars
Min aligned instruments
At least this many of the tracked instruments must agree
Startup & Refresh
Run parameter sweep on startup
7 combos × N instruments — roughly 60–90s on startup
Refresh rate override
Leave blank to use General default
min
Max instruments on dashboard
Maximum number of instruments shown in the Markov card grid and the Execution Engine live signals table. Computation always runs for all available instruments — only display is capped. Range: 1–50. Default: 10.
Max full analytics cards
How many cards show the complete suite (Transition Matrix + HMM + Multi-step + Parameter Sweep). Cards beyond this count show a compact signal-only view to reduce page weight. Should be ≤ Max instruments. Default: 10.
Per-Instrument Filters
Vol-adaptive stop is OFF by default for all instruments — sweep testing showed it worsens results for most instruments. Enable per-instrument only after re-validating with a fresh sweep. The ranging filter reduces position size during low-volatility, directionless markets; currently validated for BTC/USD only.
Instrument Ranging Filter Vol-Adaptive Stop
Backtest
Risk management, capital sizing, intraday session timing, and chart appearance. Entry method filters (Day/POC/VWAP/Open/Approx) and Markov regime parameters remain on the Backtest page itself — they're part of the experimentation workflow, not global policy.
Capital & Sizing
Total capital
$
Max instrument allocation
Fraction of total capital per instrument
Kelly fraction
Aggressiveness multiplier on the risk budget. Higher = more risk per trade across all signals. 1.0 = conservative, 3.0 = intermediate, 5.0 = aggressive. Works in combination with Base risk % below.
Base risk per trade (%)
Maximum % of current equity to risk on a single trade at the strongest signal (sig=1.0, Kelly=1.0, horizon=8h). Kelly fraction and signal strength scale this proportionally downward for weaker signals. The hard stop % is NEVER part of account risk — it only converts the dollar risk budget into a position size (size = risk$ ÷ stop%). Default 0.5%: at K=3, strong signal → ~0.95% acct risk per trade.
Broker Sizing Presets
Populates the three cap fields below with broker-appropriate defaults. Max Risk per Trade must be set manually — it is a portfolio management decision, not a broker rule.
Max risk per trade ($) Cap B
PRIMARY cap — hard $ ceiling on loss if hard stop is hit on any single trade (size_usd × hard_stop_pct ≤ this value). Applied FIRST in all four engine modes (daily + hourly, fixed + compounding). Example: $2,500 means no trade can lose more than $2,500 at the stop. Leave blank for no cap.
Max deployment per trade (%) Cap A
SECONDARY cap — broker leverage gate. Applied after Cap B in all four engine modes. 100 = no leverage (Alpaca crypto — fully funded); 200 = 2× Reg T overnight (Alpaca equities / IBKR Pro); 2000 = 20× IG Tier 1 (5% margin). Leave blank for no cap.
Min available capital (%) Cap D
NEW 2026-07-11 — QUATERNARY cap, hourly fixed-mode only. Minimum fraction of a desired position's own size that must be coverable by real available capital (after equity-based sizing and concurrent-position commitment, times the active broker's leverage) for the trade to be taken at all. Below this, skipped entirely rather than taking a token-sized position. 20 = default.
Max position size ($) Cap C
TERTIARY cap — absolute dollar backstop. Compounding mode only. Applied last. Example: IBKR $100,000 precautionary default. Leave blank for no cap.
Max concurrent trades
Portfolio-level cap on simultaneous open positions
Risk-% Sizing Model
Use Kelly sizing
On (default) = Kelly fraction sizing above, completely unchanged. Off = the simpler Risk-% model below: size = risk-per-trade % × signal-strength multiplier, with a hard ceiling you set directly.
Portfolio Circuit Breaker
Max drawdown
Halt new entries if portfolio drawdown exceeds this
Resume drawdown
Resume new entries once drawdown recovers to this level
Intraday Session Timing
Global defaults — applies across instruments unless overridden per-instrument in future.
VWAP session reset (ET)
Session open — when VWAP anchor resets
Session close (ET)
Entry cutoff time (ET)
Skip intraday entry if no fill by this time
OPEN fallback cutoff (ET)
For instruments combining OPEN with a zone method (POC/VWAP): if no zone touch by this time, fall back to an OPEN_FALLBACK entry rather than waiting until the entry cutoff with no trade. Must stay earlier than the entry cutoff above. Shared by backtest and live trading.
Volume confirmation window
Entry bar volume must exceed N-bar average
bars
Commissions
Simulates round-trip broker commission costs in backtest results. Results show both Gross (pre-commission) and Net (post-commission) metrics — Net is the realistic per-trade edge. Default profile is Alpaca, matching the current broker.
Active commission profile
Used as the default on the Backtest page (overridable per-run)
Alpaca
Crypto fee (per leg)
Applied to entry AND exit — round-trip = 2× this value
%
Equity flat fee (per leg)
Currently $0 — Alpaca equities are commission-free
$
Leverage
NEW 2026-07-11 — used by Cap D (capital-availability sizing). Standard Reg-T margin = 2x.
x
IBKR Tiered
Rate per share (per leg)
$
Minimum per order (per leg)
$
Leverage
NEW 2026-07-11 — used by Cap D. Reg-T margin, comparable to Alpaca.
x
IG Markets
Leverage
NEW 2026-07-11 — used by Cap D. CFD/forex-style leverage, typically much higher than equity margin.
x
Spread (points, round-trip)
InstrumentSpread (pts)
None (no commission modeling)
Leverage
NEW 2026-07-11 — used by Cap D. 1.0 = cash account, no leverage — the conservative default when no broker is being modeled.
x
Equiti
RESTRUCTURED 2026-07-11 — was per-instrument, confirmed live to silently produce zero commission for any ticker not manually listed (found via a TSLA backtest). Now classified by asset class instead — every ticker, including ones never seen before, resolves to a real value automatically. Spread values remain unresearched placeholders (borrowed from IG Markets) — confirm/correct against your actual Equiti MT5 terminal. Leverage tiers confirmed via cross-referenced broker research, crypto set to 200x per explicit instruction.
Leverage (fallback)
Used only if asset-class classification itself somehow fails.
x
Leverage by asset class
Crypto (e.g. BTC/USD)
x
Index (SPY, QQQ, DIA)
x
Commodity (GLD)
x
Stock (default — TSLA, GOOGL, any other)
x
Spread by asset class (points, round-trip)
Crypto
Index
Commodity
Stock (default)
Per-Instrument Risk & Entry Tolerances
Hard stop %, POC/VWAP entry zone tolerances, and the vol-adaptive stop toggle (default OFF — see note above). Markov regime parameters (lookback/threshold/horizon/trailing-stop) remain sweep-managed via the Backtest page and strategy_profiles.py.
Instrument Hard Stop % POC Tol % VWAP Tol % Vol-Adaptive Stop
Chart Colors
Trade Chart Visualizer candle and background colors.
Bull candle
Bear candle
Background
Grid lines
Scanner
Markov signal thresholds, technical filters, and fundamental filters for the daily scanner universe.
Scanner enabled
Controls the scanner's automatic scheduled runs (pre-market scan, gap scan, intraday monitor) — the scanner doesn't place any real trades, purely evaluation and ranking, so this exists to fully stop that activity when not needed. A manual "Run Scan" from the Scanner page still works even with this off, since that's a deliberate action, not the automatic run this setting controls.
🔍
Further scanner settings — coming in a future phase
  • Markov signal: min_signal_t1/t3, horizon, lookback, thresholds, dead zone
  • Technical filter: RSI ranges, key level %, volume filters
  • Fundamental filter: min score, EPS lookback, earnings gates
  • Universe & capital: watchlist size, run time, position sizing
  • Sentiment keyword lists (advanced/JSON editor)
Strategies
Day trading strategy parameters — capital, gap detection, VWAP rules, session timing, and intraday Markov configuration.
📊
Strategy settings — coming in a future phase
  • Capital: day book capital, max position, max concurrent
  • Gap detection: min/max gap %, volume threshold
  • VWAP: anchor time, tolerance, close-above rule
  • Session timing: monitor window, late entry cutoff, gap scan time
  • Hourly Markov: train bars, lookback, thresholds, dead zone
  • Market alignment ETFs
Portfolio
Capital allocation, rebalancing rules, and instrument-level inclusion for portfolio construction.
💼
Portfolio settings — coming in a future phase
  • Capital allocation (shared with Backtest capital settings)
  • Circuit breakers (shared with Backtest)
  • Rebalancing frequency and rules
  • Per-instrument enable/disable for live portfolio decisions
Live Trading
Global live trading controls — master switch, broker mode, circuit breaker, position limits, and global risk defaults. Per-instrument parameters (hard stop, Kelly, entry methods, filters) are managed on the Live Trading page.
Enable live trading
Master on/off. When disabled no new entries are placed. Existing positions and resting stop orders are not affected.
Broker mode
Hard-locked by config.LIVE_TRADING_PAPER_ONLY. Set to False in config.py to allow live order routing. Cannot be changed here for safety.
PAPER
Circuit breaker %
Block all new entries when portfolio drawdown from peak exceeds this percentage. Does not close existing positions.
%
Max concurrent positions
Maximum number of open positions across all instruments at any time.
Max trades per signal
Maximum entry attempts per ticker, per scheduler tick. Guards against duplicate fills when overlapping scheduler runs both evaluate the same signal before the first order's fill is reflected in the broker's position snapshot. Default 1 — one trade per valid signal.
Global Risk Defaults Applied to newly added instruments in the roster
Default hard stop %
Price move % at which the hard stop triggers. Equity default; override per-instrument for crypto.
%
Trailing-stop check interval (sec)
How often the trailing-stop activation job checks price and swaps the hard stop for a trailing stop. Confirmed default 15s — fast-moving instruments (e.g. QQQ) can reverse within minutes; 5 minutes was too coarse. Takes effect immediately, no restart needed.
sec
ORB regime state: rolling lookback (days)
Real, calendar-day lookback for the ORB regime state (Narrow/Middle/Wide) calibration — converted to a real bar count from each instrument's own actual bar density (a 24/7 crypto instrument and a limited-hours index have genuinely different densities for the same real day count). Confirmed default 14 — tested directly against real cached bars; extending to 30 days showed no meaningful improvement during a genuine, sustained trend, since the window still contained no larger prior move to compare against.
days
ORB regime state: percentile bands (low / high)
Real, direct percentile bands of the rolling abs(EMA20-EMA200) distribution itself — Narrow below the low percentile, Wide at/above the high percentile, Middle between. Replaces the original thirds-of-a-single-peak formula, which had no such guarantee and collapsed to "Wide" during a sustained trend. Confirmed default 10/90 — tested directly against 100 real recorded breakout candidates, correctly compressed "Wide" to a genuine minority state (13-18%) over the full 60-day history while still honestly reflecting a real, extreme trend when one is actually happening.
/
ORB regime state: max-value adjustment (%)
Real, independent, optional ceiling on the upper (Wide) band — effective upper bound = min(percentile-high value, rolling max × this/100). At the honest default of 100%, this never binds (a percentile can never exceed the true max) — confirmed, verified numerically as an exact no-op at this default. Lowering it below 100% pulls the Wide threshold tighter than the percentile alone suggests, as a genuine, separate calibration lever.
%
ORB chart: require alignment for breakout markers
When on (default, matches the existing, current behavior), the ORB chart only marks a breakout once it has actually aligned with an active regime filter. When off, every real candidate breakout scanned that day gets its own marker, aligned or not — useful for auditing real breakout timing and timezone conversions independent of regime state. Display-only: never changes which breakout actually triggers a trade.
Hourly engine: new-entry cutoff (ET)
No new hourly-engine entries at or after this time. The last scheduled hourly slot leaves too little runway before the 15:55 EOD close job to safely manage a freshly-opened position. Existing open positions are unaffected — this only blocks new entries. Applies to Alpaca-routed equities only; crypto (24/7) is exempt, and this won't apply once a CFD broker is introduced.
Allow risk assessment
Hourly engine only, per instrument. Before an entry is taken, checks whether the most recent OPEN/POC-entered trade for that instrument actually worked out: if it closed at a loss, or is still open but the most recent completed hourly bar moved against the original signal's direction (open > close = bearish, open < close = bullish), and the current signal is proposing the same direction as that failed attempt, its Signal T+1 is downgraded to the minimum value that still keeps it tradeable — never blocks a genuine reversal. Two such failures in a row for the same instrument skip that signal entirely for the current cycle only. Off by default — this changes real entry decisions once enabled.
Skip risk assessment at session open
Only relevant when "Allow risk assessment" above is also on. Prevents the first tradeable hourly signal of a new trading session from being compared against the previous session's last bar (e.g. NY open 9:30 ET's first signal shouldn't be judged against yesterday's close). Detected structurally, not by a fixed clock time — if the gap since an instrument's last recorded signal is longer than a normal hourly cycle, that signal is treated as the start of a fresh session and the comparison is skipped for it only. Off by default.
Allow full signal skipping
Only relevant when "Allow risk assessment" above is also on. When enabled, enough consecutive same-direction failures (see threshold below) skip the signal entirely for that cycle. When off, a signal is always downgraded at most — never fully skipped, regardless of how many consecutive failures exist. On by default, matching this whole feature's original behavior before this control existed.
Skip after consecutive failures
Only relevant when "Allow full signal skipping" above is also on. How many consecutive same-direction failures trigger a full skip rather than just a downgrade.
Downgrade size reduction
Only relevant when "Allow risk assessment" above is also on. A downgraded trade's final, fully-sized position (after Kelly/Risk-% sizing and every cap) is multiplied by this percentage before the order is placed — e.g. 50 means the downgraded trade is taken at exactly half the size it would otherwise have been, regardless of the original signal's strength. REPLACES the platform's original minimum-signal-strength downgrade mechanism entirely.
%
Hourly engine: entry prioritization
When more instruments qualify to enter in one cycle than available capacity allows, which get priority? Confirmed via direct code review: today's actual behavior with nothing checked is arbitrary — whatever order instruments happen to be listed in the roster, first-come against the concurrent- position cap. Checking more than one uses each as a tiebreaker for the one above it, in this fixed top-to-bottom order — not a blended/weighted score. Applies to the hourly engine only.
Default Kelly fraction
Aggressiveness multiplier for Kelly sizing model.
Default base risk %
Base account risk % at maximum Kelly signal strength.
%
Default max risk per trade $
Cap B — maximum dollar loss if stop is hit. Blank = no cap. Applies to all new instruments.
MT5 ↔ Alpaca Symbol Mapping
MT5 accounts have no sweep-tuned Markov parameters of their own yet. Map an MT5 ticker to the same underlying instrument's Alpaca ticker (e.g. MT5 "Alphabet" → Alpaca "GOOGL") to use that instrument's real, already-swept parameters for MT5 signal evaluation instead of a generic default. An MT5 ticker with no mapping here, or mapped to an Alpaca ticker with no resolvable config of its own, falls back to the current generic default — unchanged from today's behavior.
Go to Live Trading to manage the instrument roster and per-instrument parameters.
MT5 Pip Values (by asset class)
Drives every MT5 lot-size calculation: lot = risk_dollars / ((last_close × hard_stop_pct / pip_size) × pip_value_per_lot). A per-instrument override in the Live Trading roster always takes precedence over these class-level defaults. cfd_stocks and cfd_crypto below are flagged as not yet independently verified against Equiti's own real contract specifications — treat with caution until confirmed with real trade data, the same way cfd_stocks' own pip_value_per_lot was previously confirmed at 0.01.
Copier
Trade Copier master switch — mirrors master trades to configured slave accounts. Per-slave setup (accounts, sizing, symbols, equity rules) is managed on the Trade Copier page.
Enable Trade Copier
Master on/off. When disabled, no trades are relayed to any slave account regardless of individual slave settings — matches the same "master switch" pattern as Live Trading above.
MT5 trailing-stop check interval (sec)
How often mt5_daemon.py checks price and updates each position's trailing stop (a direct position-property modification, not a separate order). Confirmed default 15s. Re-read by the daemon before every check, so changes take effect on its next cycle — no daemon restart needed.
sec
Go to Trade Copier to manage slave accounts, sizing, symbols, and equity rules.