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.
Risk per trade (%)
Hard ceiling — the maximum any single trade can ever size to (at the top signal band, 1.00× multiplier). e.g. 2.0 = never more than 2% of capital on one trade.
Apply horizon factor
Off (default) — Risk-% sizing only. Scales size down for short-persistence signals. Never affects Kelly sizing, which always applies this.
Apply ranging filter
Off (default) — Risk-% sizing only. Scales size down in detected ranging/consolidating markets. Never affects Kelly sizing, which always applies this.
Signal-strength bands
Maps |signal| (0–1) to a position-size multiplier of the Risk per trade % above. Bands must be contiguous and cover 0–1.
Band
Min |signal|
Max |signal|
Multiplier
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)
Instrument
Spread (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
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.