Table of Contents

idiotproof commands

270 operations, each also an MCP tool (noun_verb). Every one runs inside the IdiotProof Hub (idiotproof hub start), so all data and every transaction goes through it. Global flags: --json, --user <guid>, --confirm <code>, --hub <url>, --no-color, -h. Exit codes: 0 ok, 1 failed, 2 usage, 3 blocked by a gate, 4 confirmation required. Times are US Eastern.

Command Risk What it does
account activities Read Account activity log: fills, dividends, fees, deposits, interest, option expirations/assignments (newest first, ET).
account buying-power Read Buying power by kind (overall, Reg T, day-trading, non-marginable, options), cash and margin multiplier.
account calendar Read Trading days with premarket, regular and after-hours times (ET); early closes and holidays called out.
account clock Read Is the market open now, and when it next opens and closes (ET), from Alpaca's clock.
account config Read Alpaca account settings side by side: DTBP/PDT checks, shorting, fractional, margin cap, options level, trade suspension.
account config set Write Change one Alpaca account setting (Live needs a confirmation code).
account history Read Equity over time as a Braille line chart, with the true P&L (deposits excluded) for 1D to all-time windows.
account pdt Read Pattern-day-trader standing: day trades in the last 5 business days, PDT flag, equity vs the $25k floor, trades left.
account summary Read Equity, cash, buying power and today's true P&L (deposits excluded) for your Alpaca paper and live accounts.
agent catalog Read List every operation with its parameters, risk and input schema.
alpaca raw Write Any Alpaca endpoint (escape hatch): GET/POST/PATCH/PUT/DELETE a Trading API path, or GET a Market Data path with --data; order, position and wallet mutations are refused (use the gated operations).
assets bonds Read Alpaca fixed income assets: US Treasuries or US corporate bonds with coupon, maturity, last close and yield.
assets list Read Alpaca's tradable universe (/v2/assets) filtered by class, exchange, status and attributes, with totals.
assets show Read One Alpaca asset: tradable, shortable, easy-to-borrow, marginable, fractionable and margin requirements.
audit list Read The audit trail, newest first: signals, entries/exits, rejections, risk blocks, system events (ET).
audit search Read Find audit rows whose message or payload contains text: a symbol, order id, strategy title.
audit tail Read The latest audit rows, oldest first; --follow streams new ones as they land (Ctrl+C stops; MCP/--json get a bounded window: --seconds, --max).
backtest conditions Read A backtest day's per-candle condition table: each entry condition's truth per bar, fires, entries and time in position.
backtest run Read Backtest a saved strategy or a script over a range of ET days with StrategyBacktester: triggers, trades and P&L per day (saved for backtest conditions).
catalyst backfill Read Fill catalyst events for past dates from Alpaca news (paged) and EDGAR full-text search, through the same pre-classifier and scorer as live intake; rows are marked backfilled.
catalyst intake-status Read Whether the catalyst intake is enabled, who owns it, whether this Hub leads, the news stream's health, the last message ET, EDGAR polling and today's counts.
catalyst list Read Catalyst events the intake recorded (news and EDGAR filings): published ET, receive lag, symbol, pre-class, direction, score, source, headline.
catalyst score Read The latest catalyst event for a symbol and its score breakdown as of now (type prior × magnitude × source + novelty, decayed by age).
catalyst show Read Every field of one catalyst event, with its score broken down as of now.
corporate-actions list Read Splits, dividends, mergers, spinoffs and name changes from Alpaca (Market Data or Trading API announcements) over a date window.
corporate-actions show Read Every field of one Alpaca corporate action, looked up in Market Data and then Trading API announcements.
crypto bars Read OHLCV bars for a crypto pair from Alpaca's US crypto feed (times in ET).
crypto buy Money Buy a crypto pair (fractional, GTC/IOC) through the TransactionGateway. Paper by default; live needs a confirmation code.
crypto fee-estimate Read Alpaca's network fee estimate for sending a coin to an address (read-only, nothing is sent).
crypto latest Read The latest trade, quote and minute bar for a crypto pair.
crypto orderbook Read The latest order book for a crypto pair: bids and asks side by side.
crypto positions Read Your crypto holdings in the Alpaca paper and live accounts: quantity, cost, price, unrealized P&L.
crypto quotes Read Recent best bid/ask quotes for a crypto pair, with the spread.
crypto sell Money Sell crypto you hold (crypto is long-only). Exits always clear the gates; live needs a confirmation code.
crypto snapshot Read Snapshot of a crypto pair: latest trade and quote, minute bar, today's and the prior daily bar.
crypto trades Read Recent trade prints for a crypto pair (price, size, taker side).
crypto transfers Read Crypto deposits and withdrawals on your Alpaca accounts: status, amount, fees, addresses (ET).
crypto wallets Read Your Alpaca crypto deposit wallets (address per coin) on paper and live; fails closed when funding is not enabled.
crypto whitelist Read Addresses your Alpaca accounts may withdraw crypto to, with their approval status.
crypto whitelist-add Money Ask Alpaca to whitelist a withdrawal address. Always previews and needs a confirmation code.
crypto whitelist-remove Write Remove a whitelisted withdrawal address. Always previews and needs a confirmation code.
crypto withdraw Money Send coins from your Alpaca account to a whitelisted address. Always previews and needs a confirmation code.
dataset export Write Export the replay feature store as ML-ready CSVs (trades.csv, bars.csv, manifest.json), backfilling older runs first.
diary export Write Export your trade diary to a CSV file (ET times, P&L, risk plan, R), or print it with --csv -.
diary list Read Your trade diary, newest first: entry/exit, mode, size, exit reason and realized P&L.
diary pnl Read Realized P&L from closed trades per day, week or month (ET), optionally by strategy or symbol.
diary show Read One diary trade in full: entry, exit, order ids, the risk plan that managed it, P&L and R.
diary stats Read Trading performance from the diary: win rate, expectancy, profit factor, avg R, MFE/MAE, drawdown.
docs dsl Read Explain one IdiotScript verb: phase, signatures, meaning, doc comment, an example from its real signature, and uses.
docs explain Read Explain a type or member: its doc comment, where it is declared (path:line), its members and its callers.
docs law Read Show one BIBLE law (IP-LAW-n) in full, or list every law.
docs search Read Search everything IdiotProof knows about itself: BIBLE, docs, stories, tickets, code docs and catalogs.
docs section Read Show one BIBLE section (IP-§n, subsections included), or the table of contents.
docs story Read Show one user story (IP-US-*) with its status and proving tests, or list an epic's stories.
docs ticket Read Show one ticket: status, description, requires / required-by, the commits that name it, and its history.
dsl format Read Render canonical strategy JSON (or a stamp) as IdiotScript text, checking it parses back to the same strategy.
dsl glossary Read Plain-English meaning of IdiotScript verbs: every entry, or one verb (aliases resolve).
dsl parse Read Parse IdiotScript (or JSON or a stamp) into the canonical strategy JSON the Monitor evaluates; nothing is saved.
dsl validate Read Validate IdiotScript/JSON against the phase rules and the gates, failing closed with every reason (nothing is saved).
dsl verbs Read The IdiotScript verb catalog by phase, reflected from the code that compiles it (IP-LAW-4).
evidence calibration Read Learned-vs-realized calibration per template: predicted probability buckets vs realized win rate, Brier score against the base-rate baseline, sample counts.
evidence conformal Read Split and adaptive conformal intervals around analog or Kalman forward-return forecasts: coverage vs nominal per month, and an abstain-unless-the-interval-excludes-zero rule scored with day-clustered significance.
evidence events Read Event study of Research claims: market-model abnormal returns and CARs per claim type/sentiment/insider code, with Patell, BMP and placebo-bootstrap significance.
evidence flow Read Order-flow evidence: imbalance, VPIN, Kyle's lambda and absorption bucketed against forward returns, scored on held-out sessions.
evidence graph Read Correlation graph across symbols (lag 0 or 1) and the hop-decayed influence of a shock at a source symbol.
evidence hawkes Read Hawkes self-exciting fit of trade arrivals (branching ratio = endogenous share) and a momentum-ignition detector scored against forward returns on held-out sessions.
evidence kalman Read Kalman trend slope, innovation z and leader pair-residual z bucketed against forward returns, fitted on training sessions and tested on held-out ones.
evidence label Read Forward-return distribution for a symbol (up/down/flat rates, quantiles, excursions): the base rate a pattern must beat.
evidence pools Read Stop-pool raid rates: how often price raided each pool kind (round numbers, prior-day/premarket/opening-range levels, VWAP bands) and reversed vs broke through, per side and price tier.
evidence regime Read Per-symbol regime: Hurst, variance ratio (z-tested vs random walk), efficiency ratio, realized vol, lag-1 autocorrelation.
evidence search Read Grid-search a strategy template with multiple-testing corrections: BH q-values, deflated Sharpe, reality check/SPA, and a held-out score for the winner.
evidence similar Read LSH look-alikes of a symbol's latest bar window from earlier sessions, with what each did next.
evidence sizing Read Advisory Kelly sizing (plug-in vs Beta-posterior vs conservative) from diary trades or manual counts; never changes order quantities.
evidence survival Read Survival analysis of exits: Kaplan-Meier hold curves, competing-risk incidence of target vs stop vs trail, Cox hazard ratios, and an advisory sell-by from replay trades.
evidence tails Read Tail dependence (copulas): which symbols crash together beyond what correlation shows, and whether a crash in one predicts the next bar of the other out of sample.
evidence topology Read Persistent-homology features (H0/H1 persistence, landscape norm) of delay-embedded returns, learned on earlier days and re-tested on held-out days with a session-clustered test.
evidence walkforward Read Out-of-sample walk-forward directional test (LSH analogs) with binomial p, Wilson CI, coverage and edge after costs.
gapper apply-tuned Write Save a backtest's hindsight-tuned profile as a new gapper strategy (inactive unless --arm).
gapper arm Money Arm a gapper: activate an existing one or queue a new one from a profile, honoring one-per-symbol and the 3-gapper cap.
gapper auto candidates Read Every ticker an auto-gapper scan screened on a day: signals, the adaptive plan it chose, and armed or why skipped.
gapper auto disable Write Disarm every auto-armed gapper of yours that holds no position (holding ones stay armed to manage their exit).
gapper auto enable Write Run the auto-gapper for you now and arm its top picks as paper gappers (paper-only; --dry-run previews).
gapper auto status Read Auto-gapper settings, its recent scans (screened, qualified, armed, skipped) and your auto-armed gappers.
gapper backtest-day Read Replay a gapper profile over one past day: fills, MFE/MAE, the giveback grid and a hindsight-tuned profile (saved for apply-tuned).
gapper be-bex status Read The BE/BEX decay gate: latest decay reading, threshold, and which gated BE strategies are armed or disarmed by it.
gapper caps Read Active-gapper counts against the caps: 3 manual gappers, one active strategy per symbol, the auto-gapper limit.
gapper disarm Write Disarm a gapper so the Monitor stops evaluating it (refused while it holds a position); --remove deletes it.
gapper formation Read Recent live gapper-formation snapshot rows: time ET, gap, volume ratio, 1/3/5-minute velocity, acceleration, distance to the premarket high, catalyst score/age, halted and whether the trigger rule passed.
gapper formation disable Write Turn the formation recorder off (settings only; nothing to disarm — it never arms).
gapper formation enable Write Turn the formation recorder on for you (paper-only research rows, 03:55-09:45 ET weekdays, with the Monitor leader); never arms.
gapper formation status Read Whether the formation recorder is enabled, who owns it, whether this Hub leads, today's universe size, the stream, rows written, halted symbols, the trigger rule and the sink in use.
gapper formation universe Read Today's formation universe: every symbol the recorder watches and why it is in (catalyst, mover, most-active, tracked), with catalyst score, gap and price.
gapper from-transcript Read Read a transcript and propose re-validated gapper candidate cards; nothing is queued until you gapper arm one.
gapper list Read Your queued gappers with live state: armed, mode, position, condition progress and last exit.
gapper premarket-fade Read Premarket blow-off/fade detector: run scans the movers now (detection only), status lists today's fade alerts.
gapper profile show Read Every dial of one gapper profile, plus the strategy it generates for a sample ticker.
gapper profiles Read List the gapper profile catalog: the templates every gapper starts from.
gapper tune Write Dial a gapper profile in for one ticker and show the strategy GapperScriptFactory generates; --save stores it inactive.
hub install-service Destructive Install the Hub as a Windows service that runs as you (Monitor off unless --monitor).
hub ping Read Check the Hub is up, show its clock in ET, and whether its DB and Monitor are healthy.
hub uninstall-service Destructive Stop and remove the Hub's Windows service.
indicators compute Read Compute one indicator (rsi, ema, atr, macd, vwap, adx, bollinger, ...) on a symbol's recent bars.
indicators snapshot Read The full indicator snapshot a strategy condition sees for a symbol: VWAP, EMAs, RSI, MACD, ADX, gap, window high/low, pivots, patterns.
keys migrate-to-vault Destructive Move Alpaca keys, OAuth tokens and Claude keys out of SQL into MindAttic.Vault (dry run unless --apply).
keys opt-in Write Route your orders to your own Alpaca account (alpaca) or back to the Sandbox (off).
keys probe Read Round-trip your stored Alpaca keys with a read-only account call (paper, live or both).
keys set Write Store an Alpaca paper/live key pair (checked, then probed) or your Claude key in MindAttic.Vault.
keys status Read Which Alpaca/Claude keys resolve for you and from which Vault entry (never shows a secret).
ledger list Read Every command the Hub ran for you (CLI, MCP, web): operation, arguments, outcome, duration (ET).
llm keys Read Which Claude key the LLM panel resolves for you (yours, the host's, or none) and the voting toggles; never shows a key.
llm panel Read The LLM voter panel: voters, trading lenses, which have keys, the consensus threshold and whether the gate is on.
llm threshold Write Show or set the LLM panel's consensus threshold (0.5-1): the share of votes that must Approve.
llm vote Read Dry-run the LLM voter panel on a strategy's current entry: every vote and the consensus. Never places an order.
llm voting disable Write Turn off your own LLM voter gate (a host-wide setting still applies).
llm voting enable Write Turn on the LLM voter gate for your automated entries (needs a Claude key to take effect).
market auctions Read Opening and closing auction prices and sizes per day for one or more stocks (SIP, times in ET).
market bars Read Historical OHLCV bars for a stock at any timeframe, oldest first (times in ET).
market bond-prices Read Latest Alpaca fixed income prices and yields for the given ISINs.
market candlesticks Read Candlestick patterns (engulfing, hammer, shooting star, doji) on a symbol's recent bars.
market chart Read ASCII candle chart of a symbol across premarket, regular and after-hours sessions (ET); crypto pairs as 24h days.
market conditions Read What each trade or quote condition code means (the codes in market trades/quotes).
market exchanges Read Exchange codes used in trades and quotes and the venue each one names.
market feed status Read The Hub's market data feed: Alpaca SIP/IEX or Mock, whether it can switch, and active strategies per mode.
market feed switch Write Switch the Hub's market data to sip, iex or mock (mock refused while Paper/Live strategies are active).
market fx Read Latest forex rates (bid/mid/ask) or historical rate bars for currency pairs (times in ET).
market latest Read Latest minute bar, trade or quote for one or more stocks (times in ET).
market logo Write Download a company's logo and save it under %LOCALAPPDATA%\MindAttic\IdiotProof\Logos; reports the path and size.
market meta Read All market-data reference codes at once: exchanges plus trade and quote conditions.
market most-actives Read Today's most active stocks by share volume or trade count (Alpaca screener).
market movers Read Today's top stock gainers and losers by percent change (Alpaca screener).
market news Read Latest news headlines for one or more stocks, or the whole market (times in ET).
market prev-close Read Previous session's close (and full daily bar) for one or more stocks, with the move since.
market quote Read Latest trade and bid/ask for one or more stocks (Alpaca market data, times in ET).
market quotes Read Historical bid/ask quotes for a stock: sizes, exchanges, spread (times in ET).
market scan-universe Read Screen the tracked ticker universe on live price, volume and % change (Alpaca snapshots); arms nothing.
market snapshot Read One-line snapshot per stock: last, change vs prior close, bid/ask, today's open/high/low/volume.
market stream status Read Websocket health: the Monitor's market data stream, the trade-updates listeners and open market watches (state, connected since, last message, reconnects, errors).
market trades Read Historical trade prints for a stock: price, size, exchange, conditions (times in ET).
market watch Read Live market tape over Alpaca's websockets: stock trades/quotes/bars/statuses/LULD, crypto, options and news, merged into one ET-stamped stream.
monitor heartbeat Read The Monitor loop's last heartbeat: when it ticked, ok or fail, failures in a row.
monitor lease Read Who holds the Monitor's SQL leader lease (only the holder evaluates and trades).
monitor pause Write Pause the Monitor: from its next tick it evaluates nothing - no entries and NO exits - until resumed.
monitor resume Money Resume a paused Monitor (needs a confirmation code when a Live strategy is active).
monitor status Read Is the Monitor trading? Hosted, lease, last tick, paused, window, active strategies.
monitor tail Read Recent Monitor activity: gate verdicts (fire, veto, block, entry, exit, reject) and live condition progress; --follow streams new ones.
monitor tick-once Read Run one evaluation pass over your active strategies and show each verdict - never places, cancels or records an order.
options bars Read Historical OHLCV bars for one option contract.
options buy Money Buy option contracts to open (level 2+). Sandbox by default; live needs a confirmation code.
options chain Read An underlying's option chain for one expiration: calls and puts by strike with bid/ask, IV, delta and open interest.
options close Money Close a whole options position (sells a long, buys back a short) through the gateway.
options conditions Read Options trade or quote condition codes and what they mean.
options contract Read Full catalog details of one option contract by OCC symbol or Alpaca id.
options contracts Read Search listed option contracts for an underlying by expiry, type, strike range and status.
options do-not-exercise Money Opt a held contract out of automatic exercise at expiry (paper or live; live needs a code).
options exchanges Read Options exchange codes and their names, as they appear in quotes and trades.
options exercise Money Exercise a long option you hold (Alpaca paper or live; live needs a confirmation code).
options glossary Read Plain-English options jargon (hype, breakeven, IV, sell to close, ...): every term, or one in full.
options greeks Read Delta, gamma, theta, vega and rho for one option contract; badged Model when computed locally.
options iv Read Implied volatility for one option contract: Alpaca's, plus IV solved locally at bid, mid, ask and last.
options latest Read Latest NBBO quote and latest trade for one option contract, with exchanges and sizes.
options level Read Options trading level (effective and approved) and options buying power for your Alpaca accounts.
options positions Read Open option contracts in your Alpaca accounts: strike, expiry, DTE, cost, value and unrealized P&L.
options quote Read Latest bid/ask, mid, spread and last trade for one option contract (OCC symbol).
options sell Money Sell option contracts you hold (sell to close), or write them with --open (level 1+).
options signals Read Sell-the-hype nudges on your open long options: hype near its session high plus bullish news (never places anything).
options snapshot Read Alpaca's full snapshot of one option contract: latest quote and trade, daily bars, IV and Greeks.
options spread Money Place a 2-4 leg options order (verticals, straddles, ratios...) as one Alpaca multi-leg order; level 3, max-loss preview, live needs a code.
options trades Read Historical trades (prints) for one option contract, newest first.
options value Read Intrinsic and extrinsic value, breakeven, DTE and Black-Scholes price for one option contract.
orders bracket Money Entry plus a take-profit and a stop-loss that cancel each other (Alpaca bracket). The stop-loss is the Risk Guardian's stop.
orders cancel Money Cancel one working order through the gateway (audited; live needs a confirmation code).
orders cancel-all Money Cancel every open order in an account, or only one symbol's, through the gateway (live needs a confirmation code).
orders history Read Closed Alpaca orders (filled, cancelled, expired, rejected) over the last N days, newest first, with fill prices and totals.
orders list Read Your Alpaca orders (open by default) in the paper and live accounts, newest first, with bracket/OCO legs.
orders oco Money Exit a held position with a take-profit limit and a stop-loss; whichever fills cancels the other (Alpaca OCO).
orders oto Money Entry that, once filled, triggers ONE child: a take-profit or a stop-loss (Alpaca OTO).
orders place Money Place any single Alpaca order: market/limit/stop/stop-limit/trailing, every TIF, fractional or notional, client id, position intent. Through the gateway; live needs a code.
orders replace Money Change a working order's quantity, limit/stop/trail, TIF or client id (Alpaca PATCH; it gets a new id). Through the gateway; live needs a code.
orders show Read One Alpaca order in full, by id or client id: prices, fills, timestamps (ET) and its nested bracket/OCO/OTO/multi-leg legs.
orders stream Read Live order events from Alpaca (new, fill, partial fill, canceled, replaced, rejected, expired); the Hub records every fill in the trade diary and audit log.
positions close Money Close (or trim) one Alpaca position as a market exit through the TransactionGateway. Live needs a confirmation code.
positions close-all Money Close every Alpaca position in one account with market exits through the TransactionGateway; optionally cancel open orders first. Live needs a confirmation code.
positions list Read Every open position in your Alpaca paper and live accounts: price, today's move, unrealized P&L.
positions reconcile Read Read-only report: what Alpaca actually holds vs what your strategies book (PositionQty), per account.
positions show Read One position in your Alpaca paper/live accounts, the IdiotProof strategy that owns it, and its latest trade-diary row.
prefs get Read Show your preferences: theme, account pill and Risk Guardian limits.
prefs set Write Change one of your preferences (risk limits keep the Settings page's sanity rules).
replay all Write Replay every strategy family on one ticker/day and rank them by realized P&L (best fit first).
replay compare Read Two replay runs side by side: strategy, day, fires, round-trips, win rate, hold time and P&L, with the difference.
replay families Read The built-in strategy families replay run --family and replay all use, with what each trades.
replay list Read The replay archive, newest first: ticker, day, strategy, sim or live, fired and P&L.
replay live Write Render the Monitor's real trades for a day (from the trade diary) on that day's bars as LIVE runs in the archive.
replay regen Write Regenerate the replay archive's HTML (every run page and index) from SQL; never uploads or deploys.
replay run Write Replay a strategy, gapper profile or built-in family over one past day with the Monitor's own evaluator; saves the run and its page.
replay show Read One replay run: its round-trips with entry features and its per-bar features (OHLCV, VWAP, volume ratio, conditions passed).
research analyze Write Extract catalysts and portents from a ticker's news, a URL or pasted text via the LLM (--save to keep them).
research backfill Write Record what each old enough claim's stock actually did (Alpaca daily closes) and settle portents.
research claim Read One research claim in full: source, trigger, outcome, insider lines and its score breakdown.
research claims Read Ranked research feed: catalysts and portents by significance score, filterable by ticker, date, score and macro.
research gappers build-universe Read Gapper study T1/T6 + universe: every Alpaca us_equity asset's daily bars and splits, then U(D), exclusions, candidates, ADV deciles and price tiers per the frozen protocol, and sample.json.
research gappers catalysts Read Re-run the deterministic CatalystPreClassifier over every backfilled catalyst row (idempotent) and spend an optional Haiku budget on rows never classified; each article/filing is classified at most once.
research gappers label Read Gapper study labels: next-bar-open entry and forward returns per horizon, reach-20 by 09:45, premarket/RTH/full-session high times and bucket, fade, extension from open, velocity death, death-to-HOD, halt proxy and VWAP-loss time, per the frozen definitions.
research gappers pull Read Gapper study data tiers: minute bars for candidate/prior/control days into the file store (then gapper tiers and controls), Alpaca news, ticker-CIK map, EDGAR form index with acceptance times, splits. Resumable, rate-limited, --max-calls capped.
research gappers snapshot Read Gapper study feature snapshots: every candidate and control day at every frozen decision time through the shared GapperFormationFeatures.Compute, written as Source=backtest rows; fits and saves data/tod-profile.json on train control days first.
research gappers status Read What the gapper study holds per split (universe days, candidates, gappers per tier, controls, minute-bar coverage, snapshots, labels), the data tiers' row counts, and the holdout lock state.
research index-events Read S&P 500 / S&P 100 additions and removals: announced and effective dates, pending or done.
research insiders Read Form 4 insider transactions for a ticker: filer, role, buy/sell, shares, price, value.
research macro Read Macro and regulatory claims (rule changes, listing standards) with the tickers each affects.
research scan Write Run one research scan pass now in the Hub (news, SEC filings, regulatory, index events, backfill, scoring).
research score Read Explain a claim's 0-100 significance score term by term (magnitude, confidence, history, source, watchlist, recency).
research similar Read Look-alike past claims (LSH neighbours) and what their stocks did afterwards.
research ticker Read Everything research knows about one ticker: claims, portents, macro and index events, insiders, outcomes.
research universe list Read The tracked ticker universe the research scan sweeps: symbol, exchange, last price, freshness.
research universe refresh Write Reload the tracked ticker universe (asset list and last prices) from Alpaca when stale, or --force.
risk check Read Dry-run a setup through your Risk Guardian: approved or why not, worst case, and the largest size allowed. Places nothing.
risk kill-switch Write Halt every new entry now (on), or resume (off, which needs a confirmation code); exits always go through.
risk set Write Change Risk Guardian limits; unnamed ones keep their value and today's loss counter is preserved.
risk show Read Your six Risk Guardian limits (per-trade and daily loss, stop range, balance, account risk %) and the kill switch.
risk status Read Today's realized P&L, losses counted against the daily breaker, remaining room, breaker and kill-switch state.
scan movers Write Screen today's top gainers to the gapper band; --replay replays each survivor with a gapper profile and saves the runs.
settings get Read Show one runtime setting: value, default, range and meaning.
settings list Read List the app's runtime settings with current value, default, range and meaning.
settings set Write Change one runtime setting (type- and range-checked; unknown and internal keys refused).
strategy activate Money Hand a strategy to the Monitor. A Live strategy needs a confirmation code.
strategy bulk Money Activate or deactivate many strategies at once (--all, --symbol, --mode). Live activations need one confirmation code for the batch.
strategy clone Write Copy a strategy (optionally onto another symbol) as a new, inactive Sandbox strategy.
strategy create Write Create a strategy from IdiotScript or canonical JSON after validating it. It starts inactive in Sandbox.
strategy deactivate Write Stop the Monitor evaluating a strategy (refused while it holds a position).
strategy delete Destructive Soft-delete a strategy: deactivate it and mark it [deleted] (reversible with --restore). Refused while it holds a position.
strategy diff Read Compare two strategies field by field at the canon level (what the Monitor actually runs), plus title, mode and state.
strategy explain Read Explain a strategy in plain English, phase by phase — generated from its canon, no LLM, the same words every time.
strategy export Read Export a strategy as a stamp, armored payload, canonical JSON or IdiotScript.
strategy fires Read Why a strategy did or didn't fire: its recent gate verdicts (conditions met, LLM veto, Risk Guardian block, order placed or rejected) and where it stands now.
strategy from-text Write Turn a plain-English description into a strategy (via the LLM), show its stamp, and save it only when you confirm.
strategy from-watchlist Write Create one strategy per item of a watchlist JSON file (the Monitor's create-strategies, through the CLI).
strategy history Read A strategy's trail, newest first: Monitor verdicts and fills, diary trades, and the CLI/MCP commands that touched it.
strategy import Write Create a strategy from a stamp, canonical JSON or IdiotScript. It starts inactive in Sandbox.
strategy list Read List your strategies with mode, position and live condition progress.
strategy mode Money Route a strategy to sandbox, paper or live. Switching to live needs a confirmation code.
strategy progress Read How close a strategy is to firing: conditions passing N/M, the first failing verb and the last price, optionally watched.
strategy quarantine Read List strategies the Monitor refuses to evaluate (canon unreadable, or no canon and a script that doesn't parse), with the reason.
strategy rename Write Give a strategy a new title. Its canon, stamp id and state are untouched.
strategy resync-canon Write Re-derive your strategies' canons from their scripts where the script now yields a richer canon; dry run unless --apply.
strategy samples Read List the built-in sample strategies, or show one as IdiotScript, a stamp or canonical JSON.
strategy set Money Edit a strategy's stop, target, trailing, size, sell-by time or session; the canon is rewritten and re-validated.
strategy show Read Everything about one strategy: settings, script, position, progress.
strategy stamp Read Print the strategy's ASCII stamp: header, phase flow, exit ladder, fingerprint and a paste-back payload.
strategy step Write Where a sequenced strategy stands (step k/N, armed or awaiting its transition); --reset starts it over at step 1.
strategy validate Read Check a saved strategy or a script: parse, canon round-trip, phase rules and a risk preview. Changes nothing.
trade buy Money Buy shares (open or add to a long). Sandbox by default; live needs a confirmation code.
trade confirm Money Execute a pending Live order by its confirmation code (exactly what was previewed, once).
trade cover Money Buy to cover a short.
trade flatten Money Flatten a symbol, a strategy's position, or the whole account with market exits through the TransactionGateway. Live needs a confirmation code.
trade notional Money Buy (or sell) a dollar amount of a stock: a fractional, DAY, market order sized in dollars. Live needs a code.
trade pending Read List Live confirmations still waiting for a yes.
trade preview Read Run every gate on an order without placing it (no code issued).
trade sell Money Sell shares you hold (close or trim a long). Exits always clear the gates.
trade short Money Sell short (open a short). Needs a stop above entry; margin + shortable name at the broker.
users create Write Create an IdiotProof account (blocklist and password rules of web sign-up; Argon2id via MindAttic.Authentication).
users list Read List the IdiotProof accounts (test fixtures hidden unless --all); * marks who you act as.
watchlist add Write Add symbols to your IdiotProof watchlist (creates a 'Main' workspace when you have none).
watchlist list Read Your IdiotProof watchlist: the symbols on each of your workspaces (not Alpaca's watchlists).
watchlist remove Write Remove symbols from your IdiotProof watchlist.
watchlists add Write Add symbols to an Alpaca watchlist (by id or name).
watchlists create Write Create an Alpaca watchlist, optionally with symbols.
watchlists delete Destructive Delete an Alpaca watchlist (by id or name).
watchlists list Read Your Alpaca server-side watchlists (not IdiotProof's local watchlist): name, id, last update.
watchlists remove Write Remove symbols from an Alpaca watchlist (by id or name).
watchlists rename Write Rename an Alpaca watchlist, keeping its symbols.
watchlists show Read One Alpaca watchlist (by id or name) and its symbols.

account

account activities

Account activity log: fills, dividends, fees, deposits, interest, option expirations/assignments (newest first, ET).

Usage: idiotproof account activities [--since <date>] [--until <date>] [--type <string[]>] [--limit <int>] [--mode <all|paper|live>]
Risk: read

Parameters:
      --since <date>           First ET date to include, yyyy-MM-dd (default: 7 days ago).
      --until <date>           Last ET date to include, yyyy-MM-dd (default: today).
      --type <string[]>        Activity types, comma-separated: FILL, DIV, FEE, CSD (deposit), CSW (withdrawal), JNLC, INT, OPEXP, OPASN, ... (default: all).
      --limit <int>            Most rows per account, newest first (default 100, max 1000). (default: 100)
      --mode <all|paper|live>  paper, live or all (default all). (default: all)

Examples:
  idiotproof account activities
  idiotproof account activities --since 2026-10-01 --type FILL --mode paper
  idiotproof account activities --type DIV,FEE,INT

account buying-power

Buying power by kind (overall, Reg T, day-trading, non-marginable, options), cash and margin multiplier.

Usage: idiotproof account buying-power [--mode <all|paper|live>]
Risk: read

Parameters:
      --mode <all|paper|live>  paper, live or all (default all). (default: all)

Examples:
  idiotproof account buying-power
  idiotproof account buying-power --mode live

account calendar

Trading days with premarket, regular and after-hours times (ET); early closes and holidays called out.

Usage: idiotproof account calendar [--from <date>] [--to <date>] [--mode <sandbox|paper|live>]
Risk: read

Parameters:
      --from <date>                First date, yyyy-MM-dd (default today ET).
      --to <date>                  Last date, yyyy-MM-dd (default 14 days after --from).
      --mode <sandbox|paper|live>  Which Alpaca account's keys ask: paper or live (default paper; the calendar is the same). (default: paper)

Examples:
  idiotproof account calendar
  idiotproof account calendar --from 2026-11-20 --to 2026-12-31

account clock

Is the market open now, and when it next opens and closes (ET), from Alpaca's clock.

Usage: idiotproof account clock [--mode <sandbox|paper|live>]
Risk: read

Parameters:
      --mode <sandbox|paper|live>  Which Alpaca account's keys ask: paper or live (default paper; the clock is the same). (default: paper)

Examples:
  idiotproof account clock

account config

Alpaca account settings side by side: DTBP/PDT checks, shorting, fractional, margin cap, options level, trade suspension.

Usage: idiotproof account config [--mode <all|paper|live>]
Risk: read

Parameters:
      --mode <all|paper|live>  paper, live or all (default all). (default: all)

Examples:
  idiotproof account config
  idiotproof account config --mode live

account config set

Change one Alpaca account setting (Live needs a confirmation code).

Usage: idiotproof account config set <setting> <value> [--mode <sandbox|paper|live>]
Risk: write

Parameters:
  <setting>                        dtbp_check, pdt_check, trade_confirm_email, suspend_trade, no_shorting, fractional_trading, max_margin_multiplier, max_options_trading_level or ptp_no_exception_entry. (required)
  <value>                          The new value (see `account config` for each setting's meaning). (required)
      --mode <sandbox|paper|live>  paper or live (default paper; live needs a confirmation code). (default: paper)

Examples:
  idiotproof account config set no_shorting true
  idiotproof account config set max_margin_multiplier 1 --mode live

account history

Equity over time as a Braille line chart, with the true P&L (deposits excluded) for 1D to all-time windows.

Usage: idiotproof account history [--period <string>] [--timeframe <string>] [--extended] [--mode <sandbox|paper|live>] [--width <int>] [--height <int>]
Risk: read

Parameters:
      --period <string>            Window: <n>D, <n>W, <n>M or <n>A (years), or all (default 1M). (default: 1M)
      --timeframe <string>         Point spacing: 1Min, 5Min, 15Min, 1H or 1D (default: Alpaca's choice for the period).
      --extended                   Include premarket and after-hours in intraday history (default regular hours only). (default: false)
      --mode <sandbox|paper|live>  paper or live (default paper). (default: paper)
      --width <int>                Chart width in characters (default: the terminal's, else 118).
      --height <int>               Chart rows (default 16). (default: 16)

Examples:
  idiotproof account history
  idiotproof account history --period 1D --timeframe 5Min --extended
  idiotproof account history --period 1A --mode live

account pdt

Pattern-day-trader standing: day trades in the last 5 business days, PDT flag, equity vs the $25k floor, trades left.

Usage: idiotproof account pdt [--mode <all|paper|live>]
Risk: read

Parameters:
      --mode <all|paper|live>  paper, live or all (default all). (default: all)

Examples:
  idiotproof account pdt
  idiotproof account pdt --mode live

account summary

Equity, cash, buying power and today's true P&L (deposits excluded) for your Alpaca paper and live accounts.

Usage: idiotproof account summary [--mode <all|paper|live>]
Risk: read

Parameters:
      --mode <all|paper|live>  paper, live or all (default all). (default: all)

Examples:
  idiotproof account summary
  idiotproof account summary --mode live

agent

agent catalog

List every operation with its parameters, risk and input schema.

Usage: idiotproof agent catalog [--operation <string>]
Risk: read

Parameters:
  -o, --operation <string>  Only this operation, by name ("strategy list") or tool name (strategy_list).

Examples:
  idiotproof agent catalog
  idiotproof agent catalog --json
      The full machine-readable catalog (what /api/catalog serves).
  idiotproof agent catalog --operation "hub ping"
      One operation's help.

alpaca

alpaca raw

Any Alpaca endpoint (escape hatch): GET/POST/PATCH/PUT/DELETE a Trading API path, or GET a Market Data path with --data; order, position and wallet mutations are refused (use the gated operations).

Usage: idiotproof alpaca raw <method> <path> [--body <string>] [--data] [--mode <sandbox|paper|live>]
Risk: write

Parameters:
  <method>                         GET, POST, PATCH, PUT or DELETE. (required)
  <path>                           The Alpaca path with any query string, e.g. /v2/account or /v2/assets?status=active. (required)
      --body <string>              JSON request body for POST/PATCH/PUT (use '-' to read it from stdin).
      --data                       Call the Market Data API (data.alpaca.markets, GET only) instead of the Trading API. (default: false)
      --mode <sandbox|paper|live>  Trading API account: paper (default) or live. Live mutations need a confirmation code. (default: paper)

Examples:
  idiotproof alpaca raw GET /v2/account
  idiotproof alpaca raw GET /v2/assets/AAPL --mode live
  idiotproof alpaca raw GET /v2/stocks/AAPL/snapshot --data
  idiotproof alpaca raw POST /v2/watchlists --body "{\"name\":\"gappers\",\"symbols\":[\"AAPL\"]}"

assets

assets bonds

Alpaca fixed income assets: US Treasuries or US corporate bonds with coupon, maturity, last close and yield.

Usage: idiotproof assets bonds [--type <treasuries|corporates>] [--subtype <string>] [--bond-status <string>] [--cusips <string[]>] [--isins <string[]>] [--search <string>] [--limit <int>] [--mode <paper|live>]
Risk: read

Parameters:
      --type <treasuries|corporates>  treasuries (default) or corporates. (default: treasuries)
      --subtype <string>              Treasury subtype filter (bill, note, bond, strips, tips, floating_rate).
      --bond-status <string>          Bond status filter (outstanding, matured, pre_issuance).
      --cusips <string[]>             Only these CUSIPs, comma separated.
      --isins <string[]>              Only these ISINs, comma separated.
      --search <string>               Keep bonds whose description, issuer, ticker, CUSIP or ISIN contains this text.
      --limit <int>                   Rows to show (default 50; sorted by maturity). (default: 50)
      --mode <paper|live>             Alpaca account to ask: paper (default) or live. (default: paper)

Examples:
  idiotproof assets bonds --subtype bill --limit 20
  idiotproof assets bonds --type corporates --search AAPL

assets list

Alpaca's tradable universe (/v2/assets) filtered by class, exchange, status and attributes, with totals.

Alpaca returns 10k+ assets; this shows the first --limit matches (sorted by symbol) and how many matched in all.

Usage: idiotproof assets list [--class <us-equity|us-option|crypto>] [--exchange <string>] [--status <active|inactive|all>] [--attributes <string[]>] [--search <string>] [--tradable] [--shortable] [--limit <int>] [--mode <paper|live>]
Risk: read

Parameters:
      --class <us-equity|us-option|crypto>  us_equity, us_option or crypto (default: every class).
      --exchange <string>                   Only this exchange (NASDAQ, NYSE, ARCA, AMEX, BATS, OTC, CRYPTO...).
      --status <active|inactive|all>        active, inactive or all (default active). (default: active)
      --attributes <string[]>               Alpaca attribute filter, comma separated (ptp_no_exception, ptp_with_exception, ipo, has_options, options_late_close, fractional_eh_enabled...).
      --search <string>                     Keep assets whose symbol starts with, or name contains, this text.
      --tradable                            Only assets tradable at Alpaca. (default: false)
      --shortable                           Only shortable assets. (default: false)
      --limit <int>                         Rows to show (default 50; the totals line counts them all). (default: 50)
      --mode <paper|live>                   Alpaca account to ask: paper (default) or live. (default: paper)

Examples:
  idiotproof assets list --class us_equity --exchange NASDAQ --search APP
  idiotproof assets list --class crypto --limit 100
  idiotproof assets list --attributes has_options --shortable

assets show

One Alpaca asset: tradable, shortable, easy-to-borrow, marginable, fractionable and margin requirements.

Usage: idiotproof assets show <symbol> [--mode <paper|live>]
Risk: read

Parameters:
  <symbol>                 Ticker, crypto pair (BTC/USD) or Alpaca asset id. (required)
      --mode <paper|live>  Alpaca account to ask: paper (default) or live. (default: paper)

Examples:
  idiotproof assets show AAPL
  idiotproof assets show BTC/USD

audit

audit list

The audit trail, newest first: signals, entries/exits, rejections, risk blocks, system events (ET).

Usage: idiotproof audit list [--since <date>] [--kind <string[]>] [--system] [--limit <int>]
Risk: read

Parameters:
      --since <date>     First ET date to include, yyyy-MM-dd (default: everything kept).
      --kind <string[]>  Only these categories, comma-separated: signal-fire, entry, exit, order-rejected, risk, broker, system, ...
      --system           Include system-wide rows that belong to no user (default on; --no-system for only yours). (default: true)
      --limit <int>      Most rows, newest first, 1-1000 (default 50). (default: 50)

Examples:
  idiotproof audit list
  idiotproof audit list --since 2026-10-30 --kind signal-fire,entry,exit
  idiotproof audit list --kind order-rejected --no-system --limit 200
Find audit rows whose message or payload contains text: a symbol, order id, strategy title.

Usage: idiotproof audit search <text> [--since <date>] [--kind <string[]>] [--system] [--limit <int>]
Risk: read

Parameters:
  <text>                 Text to find in the message or the structured payload (case-insensitive). (required)
      --since <date>     First ET date to include, yyyy-MM-dd (default: everything kept).
      --kind <string[]>  Only these categories, comma-separated: signal-fire, entry, exit, order-rejected, risk, broker, system, ...
      --system           Include system-wide rows that belong to no user (default on; --no-system for only yours). (default: true)
      --limit <int>      Most rows, newest first, 1-1000 (default 50). (default: 50)

Examples:
  idiotproof audit search NVDA
  idiotproof audit search "insufficient buying power" --since 2026-10-01

audit tail

The latest audit rows, oldest first; --follow streams new ones as they land (Ctrl+C stops; MCP/--json get a bounded window: --seconds, --max).

Usage: idiotproof audit tail [--lines <int>] [--follow] [--seconds <int>] [--max <int>] [--kind <string[]>] [--system]
Risk: read

Parameters:
  -n, --lines <int>      How many of the latest rows to start with, 0-500 (default 20). (default: 20)
  -f, --follow           Keep watching for new rows: in a terminal until Ctrl+C (or --seconds/--max); for MCP and --json for --seconds (default 30) or --max (default 200) new rows. (default: false)
      --seconds <int>    With --follow: how long to watch, 1-300 (default 30 for MCP/--json; a terminal streams until Ctrl+C).
      --max <int>        With --follow: stop after this many new rows, 1-1000 (default 200 for MCP/--json; none in a terminal).
      --kind <string[]>  Only these categories, comma-separated.
      --system           Include system-wide rows (default on; --no-system for only yours). (default: true)

Examples:
  idiotproof audit tail
  idiotproof audit tail --follow --seconds 60 --kind signal-fire,entry,exit

backtest

backtest conditions

A backtest day's per-candle condition table: each entry condition's truth per bar, fires, entries and time in position.

Usage: idiotproof backtest conditions <run> [--date <date>] [--all]
Risk: read

Parameters:
  <run>              The run id `backtest run` printed (bt-xxxxxxxx). (required)
  -d, --date <date>  Which day of the run (default its first day with bars).
  -a, --all          Every candle, not just the ones where a condition changed, fired or traded. (default: false)

Examples:
  idiotproof backtest conditions bt-1a2b3c4d
  idiotproof backtest conditions bt-1a2b3c4d --date 2026-10-29 --all

backtest run

Backtest a saved strategy or a script over a range of ET days with StrategyBacktester: triggers, trades and P&L per day (saved for backtest conditions).

Usage: idiotproof backtest run [<strategy>] [--script <string>] [--from <date>] [--to <date>] [--qty <int>] [--days <int>]
Risk: read

Parameters:
  <strategy>             A saved strategy: id, id prefix, stamp id or symbol (or use --script).
      --script <string>  Backtest this IdiotScript, canonical JSON or stamp instead of a saved strategy (`-` reads stdin).
      --from <date>      First ET trading day (yyyy-MM-dd); default the last completed trading day.
      --to <date>        Last ET trading day (yyyy-MM-dd); default --from.
      --qty <int>        Share count when the strategy doesn't pin one (default 100). (default: 100)
      --days <int>       Replay this many trading days from --from as ONE continuous run, so a sequenced strategy's hand-off between steps (and its Within deadline) crosses the day boundaries. Not with --to.

Examples:
  idiotproof backtest run NVDA --from 2026-10-26 --to 2026-10-30
  idiotproof backtest run --script "Ticker(\"INTC\").IsAboveVwap().StopLoss(2).TakeProfit(4)" --from 2026-10-29
  idiotproof backtest run NVDA --from 2026-10-20 --days 7
      A two-step sequence replayed as one run across seven trading days.

catalyst

catalyst backfill

Fill catalyst events for past dates from Alpaca news (paged) and EDGAR full-text search, through the same pre-classifier and scorer as live intake; rows are marked backfilled.

Writes research rows only (no strategy, order or setting changes). Needs an owner for the Alpaca keys. EDGAR calls are rate-limited (120 ms apart), so wide ranges take minutes.

Usage: idiotproof catalyst backfill --symbols <string> --from <date> [--to <date>] [--llm-budget <int>] [--edgar]
Risk: read

Parameters:
      --symbols <string>  Comma-separated symbols to backfill. (required)
      --from <date>       First day (ET, yyyy-MM-dd). (required)
      --to <date>         Last day (ET, yyyy-MM-dd); default today.
      --llm-budget <int>  At most this many new rows get a Haiku classification (default 0: none). (default: 0)
      --edgar             Also search EDGAR filings (default on; --no-edgar for news only). (default: true)

Examples:
  idiotproof catalyst backfill --symbols ABCD,EFGH --from 2026-10-01 --to 2026-10-31
  idiotproof catalyst backfill --symbols ABCD --from 2026-11-01 --llm-budget 20

catalyst intake-status

Whether the catalyst intake is enabled, who owns it, whether this Hub leads, the news stream's health, the last message ET, EDGAR polling and today's counts.

Usage: idiotproof catalyst intake-status
Risk: read

Examples:
  idiotproof catalyst intake-status

catalyst list

Catalyst events the intake recorded (news and EDGAR filings): published ET, receive lag, symbol, pre-class, direction, score, source, headline.

Usage: idiotproof catalyst list [--symbol <string>] [--since <string>] [--limit <int>]
Risk: read

Parameters:
  -s, --symbol <string>  Only events naming this symbol.
      --since <string>   Window start: today, yesterday, 6h, 3d, or a date (ET). Default 24h.
  -n, --limit <int>      Most recent N events (default 50, max 500). (default: 50)

Examples:
  idiotproof catalyst list --since today
  idiotproof catalyst list --symbol ABCD --since 3d

catalyst score

The latest catalyst event for a symbol and its score breakdown as of now (type prior × magnitude × source + novelty, decayed by age).

Usage: idiotproof catalyst score <symbol>
Risk: read

Parameters:
  <symbol>  The symbol whose latest catalyst to score. (required)

Examples:
  idiotproof catalyst score ABCD

catalyst show

Every field of one catalyst event, with its score broken down as of now.

Usage: idiotproof catalyst show <id>
Risk: read

Parameters:
  <id>  The event id (or an id prefix of 6+ hex characters). (required)

Examples:
  idiotproof catalyst show 0190abcd

corporate-actions

corporate-actions list

Splits, dividends, mergers, spinoffs and name changes from Alpaca (Market Data or Trading API announcements) over a date window.

Usage: idiotproof corporate-actions list [--types <string[]>] [--symbol <string[]>] [--since <date>] [--until <date>] [--source <data|announcements>] [--limit <int>] [--mode <paper|live>]
Risk: read

Parameters:
      --types <string[]>             Types, comma separated. data: forward_split, reverse_split, unit_split, cash_dividend, stock_dividend, spin_off, cash_merger, stock_merger, stock_and_cash_merger, redemption, name_change, worthless_removal, rights_distribution. announcements: dividend, merger, spinoff, split.
      --symbol <string[]>            Only these symbols, comma separated.
      --since <date>                 First date (default 30 days ago, ET).
      --until <date>                 Last date (default 30 days ahead, ET).
      --source <data|announcements>  data (Market Data, default) or announcements (Trading API, max 90-day window). (default: data)
      --limit <int>                  Rows to show (default 100; the totals line counts them all). (default: 100)
      --mode <paper|live>            Alpaca account for --source announcements: paper (default) or live. (default: paper)

Examples:
  idiotproof corporate-actions list --symbol AAPL,MSFT --types cash_dividend
  idiotproof corporate-actions list --types forward_split,reverse_split --since 2026-10-01 --until 2026-11-30
  idiotproof corporate-actions list --source announcements --types split --symbol NVDA

corporate-actions show

Every field of one Alpaca corporate action, looked up in Market Data and then Trading API announcements.

Usage: idiotproof corporate-actions show <id> [--mode <paper|live>]
Risk: read

Parameters:
  <id>                     Corporate action id (from corporate-actions list). (required)
      --mode <paper|live>  Alpaca account for the announcements lookup: paper (default) or live. (default: paper)

Examples:
  idiotproof corporate-actions show 6a4e1c55-1f0e-4c8e-9a1b-2b1fbd7a4f10

crypto

crypto bars

OHLCV bars for a crypto pair from Alpaca's US crypto feed (times in ET).

Usage: idiotproof crypto bars <pair> [--timeframe <string>] [--hours <int>] [--limit <int>]
Risk: read

Parameters:
  <pair>                    Crypto pair, e.g. BTC/USD. (required)
      --timeframe <string>  Bar size in Alpaca's form: 1Min, 5Min, 15Min, 1Hour, 4Hour, 1Day, 1Week (default 1Hour). (default: 1Hour)
      --hours <int>         How far back to look, in hours (default 24). (default: 24)
      --limit <int>         Show at most this many bars, the most recent (default 48). (default: 48)

Examples:
  idiotproof crypto bars BTC/USD
  idiotproof crypto bars ETH/USD --timeframe 5Min --hours 2

crypto buy

Buy a crypto pair (fractional, GTC/IOC) through the TransactionGateway. Paper by default; live needs a confirmation code.

Usage: idiotproof crypto buy <pair> [<qty>] [--notional <decimal>] [--limit <decimal>] [--trigger <decimal>] [--stop <decimal>] [--target <decimal>] [--tif <string>] [--mode <sandbox|paper|live>] [--note <string>]
Risk: money

Parameters:
  <pair>                           Crypto pair, e.g. BTC/USD. (required)
  <qty>                            Coin quantity, fractional allowed (0.0015). Leave out and pass --notional to size by dollars.
      --notional <decimal>         Size by dollar amount instead of coin quantity.
  -l, --limit <decimal>            Limit price. Without it the order is a market order.
      --trigger <decimal>          Stop trigger price: with --limit it makes a stop-limit order.
  -s, --stop <decimal>             Protective stop price for a buy; the Risk Guardian refuses entries without one.
  -t, --target <decimal>           Take-profit price (for the reward:risk check).
      --tif <string>               Time in force: gtc (default) or ioc. (default: gtc)
  -m, --mode <sandbox|paper|live>  paper (default) or live (needs a confirmation code). Sandbox does not simulate crypto. (default: paper)
      --note <string>              Why: kept in the audit trail.

Examples:
  idiotproof crypto buy BTC/USD 0.001 --limit 70000 --stop 66500
      Paper limit buy with a protective stop for the Risk Guardian.
  idiotproof crypto buy ETH/USD --notional 250 --stop 2300 --mode live
      Live dollar-sized buy; prints a confirmation code first.

crypto fee-estimate

Alpaca's network fee estimate for sending a coin to an address (read-only, nothing is sent).

Usage: idiotproof crypto fee-estimate <asset> <amount> <to> [--from <string>] [--mode <sandbox|paper|live>]
Risk: read

Parameters:
  <asset>                          Coin to send, e.g. BTC. (required)
  <amount>                         Amount of the coin to send. (required)
  <to>                             Destination address. (required)
      --from <string>              Source address (default: your Alpaca wallet).
      --mode <sandbox|paper|live>  paper or live (default paper). (default: paper)

Examples:
  idiotproof crypto fee-estimate BTC 0.01 bc1qexampleaddress --mode live

crypto latest

The latest trade, quote and minute bar for a crypto pair.

Usage: idiotproof crypto latest <pair>
Risk: read

Parameters:
  <pair>  Crypto pair, e.g. BTC/USD (BTC-USD and BTCUSD work too). (required)

Examples:
  idiotproof crypto latest BTC/USD

crypto orderbook

The latest order book for a crypto pair: bids and asks side by side.

Usage: idiotproof crypto orderbook <pair> [--depth <int>]
Risk: read

Parameters:
  <pair>             Crypto pair, e.g. BTC/USD. (required)
      --depth <int>  Price levels per side (default 10). (default: 10)

Examples:
  idiotproof crypto orderbook BTC/USD
  idiotproof crypto orderbook ETH/USD --depth 20

crypto positions

Your crypto holdings in the Alpaca paper and live accounts: quantity, cost, price, unrealized P&L.

Usage: idiotproof crypto positions [--mode <all|paper|live>]
Risk: read

Parameters:
      --mode <all|paper|live>  paper, live or all (default all). (default: all)

Examples:
  idiotproof crypto positions
  idiotproof crypto positions --mode live

crypto quotes

Recent best bid/ask quotes for a crypto pair, with the spread.

Usage: idiotproof crypto quotes <pair> [--minutes <int>] [--limit <int>]
Risk: read

Parameters:
  <pair>               Crypto pair, e.g. BTC/USD. (required)
      --minutes <int>  How far back to look, in minutes (default 5). (default: 5)
      --limit <int>    Show at most this many, the most recent (default 30). (default: 30)

Examples:
  idiotproof crypto quotes BTC/USD

crypto sell

Sell crypto you hold (crypto is long-only). Exits always clear the gates; live needs a confirmation code.

Usage: idiotproof crypto sell <pair> [<qty>] [--notional <decimal>] [--limit <decimal>] [--trigger <decimal>] [--stop <decimal>] [--target <decimal>] [--tif <string>] [--mode <sandbox|paper|live>] [--note <string>]
Risk: money

Parameters:
  <pair>                           Crypto pair, e.g. BTC/USD. (required)
  <qty>                            Coin quantity, fractional allowed (0.0015). Leave out and pass --notional to size by dollars.
      --notional <decimal>         Size by dollar amount instead of coin quantity.
  -l, --limit <decimal>            Limit price. Without it the order is a market order.
      --trigger <decimal>          Stop trigger price: with --limit it makes a stop-limit order.
  -s, --stop <decimal>             Protective stop price for a buy; the Risk Guardian refuses entries without one.
  -t, --target <decimal>           Take-profit price (for the reward:risk check).
      --tif <string>               Time in force: gtc (default) or ioc. (default: gtc)
  -m, --mode <sandbox|paper|live>  paper (default) or live (needs a confirmation code). Sandbox does not simulate crypto. (default: paper)
      --note <string>              Why: kept in the audit trail.

Examples:
  idiotproof crypto sell BTC/USD 0.001
  idiotproof crypto sell ETH/USD --notional 100 --limit 2600 --tif ioc --mode live

crypto snapshot

Snapshot of a crypto pair: latest trade and quote, minute bar, today's and the prior daily bar.

Usage: idiotproof crypto snapshot <pair>
Risk: read

Parameters:
  <pair>  Crypto pair, e.g. BTC/USD (BTC-USD and BTCUSD work too). (required)

Examples:
  idiotproof crypto snapshot BTC/USD

crypto trades

Recent trade prints for a crypto pair (price, size, taker side).

Usage: idiotproof crypto trades <pair> [--minutes <int>] [--limit <int>]
Risk: read

Parameters:
  <pair>               Crypto pair, e.g. BTC/USD. (required)
      --minutes <int>  How far back to look, in minutes (default 5). (default: 5)
      --limit <int>    Show at most this many, the most recent (default 30). (default: 30)

Examples:
  idiotproof crypto trades BTC/USD
  idiotproof crypto trades SOL/USD --minutes 30 --limit 100

crypto transfers

Crypto deposits and withdrawals on your Alpaca accounts: status, amount, fees, addresses (ET).

Usage: idiotproof crypto transfers [--id <string>] [--mode <all|paper|live>]
Risk: read

Parameters:
      --id <string>            Show one transfer by its id.
      --mode <all|paper|live>  paper, live or all (default all). (default: all)

Examples:
  idiotproof crypto transfers
  idiotproof crypto transfers --mode live --id 6b1f0c0e-4b8a-4a4e-9b55-0d7c1f2a3b4c

crypto wallets

Your Alpaca crypto deposit wallets (address per coin) on paper and live; fails closed when funding is not enabled.

Usage: idiotproof crypto wallets [--asset <string>] [--network <string>] [--mode <all|paper|live>]
Risk: read

Parameters:
      --asset <string>         Only this coin's deposit wallet, e.g. BTC (default: every wallet Alpaca returns).
      --network <string>       Chain for multi-chain coins, e.g. ethereum or solana.
      --mode <all|paper|live>  paper, live or all (default all). Crypto funding is usually live-only. (default: all)

Examples:
  idiotproof crypto wallets
  idiotproof crypto wallets --asset USDC --network ethereum --mode live

crypto whitelist

Addresses your Alpaca accounts may withdraw crypto to, with their approval status.

Usage: idiotproof crypto whitelist [--mode <all|paper|live>]
Risk: read

Parameters:
      --mode <all|paper|live>  paper, live or all (default all). (default: all)

Examples:
  idiotproof crypto whitelist

crypto whitelist-add

Ask Alpaca to whitelist a withdrawal address. Always previews and needs a confirmation code.

Usage: idiotproof crypto whitelist-add <asset> <address> [--mode <sandbox|paper|live>]
Risk: money

Parameters:
  <asset>                          Coin the address receives, e.g. BTC. (required)
  <address>                        Address to allow withdrawals to. (required)
      --mode <sandbox|paper|live>  paper or live (default paper). Always needs a confirmation code. (default: paper)

Examples:
  idiotproof crypto whitelist-add BTC bc1qexampleaddress --mode live

crypto whitelist-remove

Remove a whitelisted withdrawal address. Always previews and needs a confirmation code.

Usage: idiotproof crypto whitelist-remove <id> [--mode <sandbox|paper|live>]
Risk: write

Parameters:
  <id>                             Whitelist entry id (from `idiotproof crypto whitelist`). (required)
      --mode <sandbox|paper|live>  paper or live (default paper). Always needs a confirmation code. (default: paper)

Examples:
  idiotproof crypto whitelist-remove 2a9c7f3e-11aa-4bcd-9e01-6f0b2c3d4e5f --mode live

crypto withdraw

Send coins from your Alpaca account to a whitelisted address. Always previews and needs a confirmation code.

Usage: idiotproof crypto withdraw <asset> <amount> <address> [--mode <sandbox|paper|live>] [--note <string>]
Risk: money

Parameters:
  <asset>                          Coin to withdraw, e.g. BTC. (required)
  <amount>                         Amount of the coin to send. (required)
  <address>                        Destination address (must be on your whitelist). (required)
      --mode <sandbox|paper|live>  paper or live (default paper). Always needs a confirmation code. (default: paper)
      --note <string>              Why: kept in the audit trail.

Examples:
  idiotproof crypto withdraw BTC 0.01 bc1qexampleaddress --mode live
      Prints the preview and a confirmation code; nothing moves yet.

dataset

dataset export

Export the replay feature store as ML-ready CSVs (trades.csv, bars.csv, manifest.json), backfilling older runs first.

Usage: idiotproof dataset export [--out <string>]
Risk: write

Parameters:
  -o, --out <string>  Folder to write trades.csv, bars.csv and manifest.json (default the mindattic.com dataset folder).

Examples:
  idiotproof dataset export
  idiotproof dataset export --out C:\data\idiotproof

diary

diary export

Export your trade diary to a CSV file (ET times, P&L, risk plan, R), or print it with --csv -.

Usage: idiotproof diary export --csv <string> [--overwrite] [--since <date>] [--until <date>] [--mode <sandbox|paper|live>] [--symbol <string>] [--strategy <string>]
Risk: write

Parameters:
      --csv <string>               Absolute path of the CSV file to write on the Hub's machine, or - to return the CSV text. (required)
      --overwrite                  Replace the file if it already exists. (default: false)
      --since <date>               First ET date of entry, yyyy-MM-dd (default: everything).
      --until <date>               Last ET date of entry, yyyy-MM-dd (default: today).
      --mode <sandbox|paper|live>  Only trades in this mode: sandbox, paper or live.
      --symbol <string>            Only this symbol.
      --strategy <string>          Only this strategy: an id prefix or part of its title at trade time.

Examples:
  idiotproof diary export --csv C:/Users/me/Documents/diary.csv
  idiotproof diary export --csv - --mode live --since 2026-01-01

diary list

Your trade diary, newest first: entry/exit, mode, size, exit reason and realized P&L.

Usage: idiotproof diary list [--status <string>] [--limit <int>] [--since <date>] [--until <date>] [--mode <sandbox|paper|live>] [--symbol <string>] [--strategy <string>]
Risk: read

Parameters:
      --status <string>            Only this lifecycle state: open, closed, notfilled or orphaned.
      --limit <int>                Most trades to show, newest entry first, 1-5000 (default 50). (default: 50)
      --since <date>               First ET date of entry, yyyy-MM-dd (default: everything).
      --until <date>               Last ET date of entry, yyyy-MM-dd (default: today).
      --mode <sandbox|paper|live>  Only trades in this mode: sandbox, paper or live.
      --symbol <string>            Only this symbol.
      --strategy <string>          Only this strategy: an id prefix or part of its title at trade time.

Examples:
  idiotproof diary list
  idiotproof diary list --since 2026-10-01 --mode paper --symbol NVDA
  idiotproof diary list --status open

diary pnl

Realized P&L from closed trades per day, week or month (ET), optionally by strategy or symbol.

Usage: idiotproof diary pnl [--day] [--week] [--month] [--by <strategy|symbol>] [--since <date>] [--until <date>] [--mode <sandbox|paper|live>] [--symbol <string>] [--strategy <string>]
Risk: read

Parameters:
      --day                        One row per ET trading day (the default). (default: false)
      --week                       One row per week (Monday-Sunday, ET). (default: false)
      --month                      One row per calendar month (ET). (default: false)
      --by <strategy|symbol>       Also split each period by strategy or symbol.
      --since <date>               First ET date of entry, yyyy-MM-dd (default: everything).
      --until <date>               Last ET date of entry, yyyy-MM-dd (default: today).
      --mode <sandbox|paper|live>  Only trades in this mode: sandbox, paper or live.
      --symbol <string>            Only this symbol.
      --strategy <string>          Only this strategy: an id prefix or part of its title at trade time.

Examples:
  idiotproof diary pnl
  idiotproof diary pnl --week --by strategy
  idiotproof diary pnl --month --mode live --since 2026-01-01

diary show

One diary trade in full: entry, exit, order ids, the risk plan that managed it, P&L and R.

Usage: idiotproof diary show <trade>
Risk: read

Parameters:
  <trade>  Diary trade id, or the 8-character prefix `diary list` shows. (required)

Examples:
  idiotproof diary show 0193a7c2

diary stats

Trading performance from the diary: win rate, expectancy, profit factor, avg R, MFE/MAE, drawdown.

Usage: idiotproof diary stats [--by <strategy|symbol>] [--since <date>] [--until <date>] [--mode <sandbox|paper|live>] [--symbol <string>] [--strategy <string>]
Risk: read

Parameters:
      --by <strategy|symbol>       Also break the numbers down per strategy or per symbol.
      --since <date>               First ET date of entry, yyyy-MM-dd (default: everything).
      --until <date>               Last ET date of entry, yyyy-MM-dd (default: today).
      --mode <sandbox|paper|live>  Only trades in this mode: sandbox, paper or live.
      --symbol <string>            Only this symbol.
      --strategy <string>          Only this strategy: an id prefix or part of its title at trade time.

Examples:
  idiotproof diary stats
  idiotproof diary stats --mode paper --since 2026-10-01
  idiotproof diary stats --by strategy

docs

docs dsl

Explain one IdiotScript verb: phase, signatures, meaning, doc comment, an example from its real signature, and uses.

Usage: idiotproof docs dsl <verb>
Risk: read

Parameters:
  <verb>  An IdiotScript verb or alias: StopLoss, IsAboveVwap, OnReclaim, RequireAdxAbove, ... (required)

Examples:
  idiotproof docs dsl StopLoss
  idiotproof docs dsl IsAboveVwap --json

docs explain

Explain a type or member: its doc comment, where it is declared (path:line), its members and its callers.

Callers are found by text (every line naming it as a whole word, comments and the declaration skipped), so overloads and same-named members elsewhere also show.

Usage: idiotproof docs explain <symbol> [--callers <int>]
Risk: read

Parameters:
  <symbol>             A type or member: TransactionGateway, TransactionGateway.SubmitAsync, a full name, or an XML doc id (T:..., M:...). (required)
      --callers <int>  Most lines that mention it to list (default 15; 0 for none). (default: 15)

Examples:
  idiotproof docs explain TransactionGateway
  idiotproof docs explain TransactionGateway.SubmitAsync --callers 5
  idiotproof docs explain T:IdiotProof.Core.Trading.OrderIntent --json

docs law

Show one BIBLE law (IP-LAW-n) in full, or list every law.

Usage: idiotproof docs law [<n>]
Risk: read

Parameters:
  <n>  The law: 3, LAW-3 or IP-LAW-3. Leave out to list every law.

Examples:
  idiotproof docs law 3
  idiotproof docs law
      Every law with its title and line.
Search everything IdiotProof knows about itself: BIBLE, docs, stories, tickets, code docs and catalogs.

Results are ranked: an exact id first, then entries holding every word (title and id hits weigh most). Follow up with `docs law`, `docs section`, `docs story`, `docs ticket` or `docs explain`.

Usage: idiotproof docs search <text>... [--kind <section|law|doc|story|ticket|symbol|catalog>] [--limit <int>] [--refresh]
Risk: read

Parameters:
  <text>                                                    What to look for: words, a phrase, or an id like IP-LAW-3, IP-US-K1, IP-T259, §4, TransactionGateway. (required)
      --kind <section|law|doc|story|ticket|symbol|catalog>  Only one kind: section, law, doc, story, ticket, symbol or catalog.
      --limit <int>                                         Most results to show (default 15). (default: 15)
      --refresh                                             Re-read the docs, code and tickets first (the index otherwise refreshes every 30 minutes). (default: false)

Examples:
  idiotproof docs search transaction gateway
  idiotproof docs search "peak giveback" --kind story
  idiotproof docs search IP-LAW-9 --json
      Machine-readable hits with path:line and a snippet.

docs section

Show one BIBLE section (IP-§n, subsections included), or the table of contents.

Usage: idiotproof docs section [<section>]
Risk: read

Parameters:
  <section>  The BIBLE section: 4, §4, 4.4 or IP-§4. Leave out to list the sections.

Examples:
  idiotproof docs section 4
  idiotproof docs section 4.4
      A numbered subsection.
  idiotproof docs section
      The BIBLE's table of contents.

docs story

Show one user story (IP-US-*) with its status and proving tests, or list an epic's stories.

Usage: idiotproof docs story [<id>] [--epic <string>] [--status <string>]
Risk: read

Parameters:
  <id>                   The story: K1, US-K1 or IP-US-K1. Leave out and pass --epic or --status to list stories.
      --epic <string>    List the stories of one epic by letter (K, W, ...).
      --status <string>  List only stories with this status: done, partial or planned.

Examples:
  idiotproof docs story K1
  idiotproof docs story --epic W
      Every Epic W story with its status.
  idiotproof docs story --status planned

docs ticket

Show one ticket: status, description, requires / required-by, the commits that name it, and its history.

Usage: idiotproof docs ticket <id> [--history]
Risk: read

Parameters:
  <id>           The ticket: IP-T259, T259 or 259. (required)
      --history  Also list every recorded change (status, priority, approval, links) with its ET time. (default: false)

Examples:
  idiotproof docs ticket IP-T259
  idiotproof docs ticket 266 --history

dsl

dsl format

Render canonical strategy JSON (or a stamp) as IdiotScript text, checking it parses back to the same strategy.

Usage: idiotproof dsl format <text>
Risk: read

Parameters:
  <text>  IdiotScript, canonical JSON or a stamp; `-` reads it from stdin. (required)

Examples:
  idiotproof dsl format -
      Reads the JSON from stdin, e.g. `idiotproof strategy export INTC --format json | idiotproof dsl format -`.

dsl glossary

Plain-English meaning of IdiotScript verbs: every entry, or one verb (aliases resolve).

Usage: idiotproof dsl glossary [<verb>]
Risk: read

Parameters:
  <verb>  A verb name or alias (IsAboveVwap, StopLoss, RequireAdxAbove, ...); omit to list every entry.

Examples:
  idiotproof dsl glossary
  idiotproof dsl glossary IsAboveVwap

dsl parse

Parse IdiotScript (or JSON or a stamp) into the canonical strategy JSON the Monitor evaluates; nothing is saved.

Usage: idiotproof dsl parse <text>
Risk: read

Parameters:
  <text>  IdiotScript, canonical JSON or a stamp; `-` reads it from stdin. (required)

Examples:
  idiotproof dsl parse "Ticker(\"NVDA\").IsAboveVwap().Long().StopLoss(2).TakeProfit(5)"
  idiotproof dsl parse -
      Reads the script from stdin, e.g. `type nvda.idiot | idiotproof dsl parse -`.

dsl validate

Validate IdiotScript/JSON against the phase rules and the gates, failing closed with every reason (nothing is saved).

Usage: idiotproof dsl validate <text>
Risk: read

Parameters:
  <text>  IdiotScript, canonical JSON or a stamp; `-` reads it from stdin. (required)

Examples:
  idiotproof dsl validate "Ticker(\"NVDA\").IsAboveVwap().Long().StopLoss(2).TakeProfit(5)"
  idiotproof dsl validate -
      Reads the script or JSON from stdin.

dsl verbs

The IdiotScript verb catalog by phase, reflected from the code that compiles it (IP-LAW-4).

Usage: idiotproof dsl verbs [--phase <string>]
Risk: read

Parameters:
      --phase <string>  Only one phase: setup, filters, entry, order, risk, exit, or conditions (the static If/ElseIf catalog).

Examples:
  idiotproof dsl verbs
  idiotproof dsl verbs --phase risk
  idiotproof dsl verbs --phase conditions
      The static Conditions catalog used inside .If/.ElseIf.

evidence

evidence calibration

Learned-vs-realized calibration per template: predicted probability buckets vs realized win rate, Brier score against the base-rate baseline, sample counts.

Usage: idiotproof evidence calibration [--source <string>] [--buckets <int>]
Risk: read

Parameters:
      --source <string>  exhaustion, adaptation or all (default). (default: all)
      --buckets <int>    Probability buckets across 0..1 (default 5). (default: 5)

Examples:
  idiotproof evidence calibration
  idiotproof evidence calibration --source exhaustion --buckets 4

evidence conformal

Split and adaptive conformal intervals around analog or Kalman forward-return forecasts: coverage vs nominal per month, and an abstain-unless-the-interval-excludes-zero rule scored with day-clustered significance.

Usage: idiotproof evidence conformal <symbols>... [--from <date>] [--to <date>] [--model <analog|kalman>] [--alpha <number>] [--gamma <number>] [--horizon <int>] [--window <int>] [--train-days <int>] [--warmup-days <int>] [--min-similarity <number>] [--entry <next-open|close>]
Risk: read

Parameters:
  <symbols>                      One or more tickers, e.g. SNDL MULN. (required)
      --from <date>              First ET day (yyyy-MM-dd, default: 40 days before --to).
      --to <date>                Last ET day (yyyy-MM-dd, default: yesterday ET).
      --model <analog|kalman>    analog: the mean forward return of LSH look-alike windows from prior sessions. kalman: the local-trend filter's slope × horizon, fitted on the warm-up sessions. (default: analog)
      --alpha <number>           Miss rate the intervals target (default 0.1 = 90% intervals). (default: 0.1)
      --gamma <number>           Adaptive conformal learning rate (default 0.005). (default: 0.005)
      --horizon <int>            Minute bars ahead (default 15). (default: 15)
      --window <int>             Bars per pattern window / filter burn-in (default 30). (default: 30)
      --train-days <int>         Analog: prior sessions searched for look-alikes (default 20). (default: 20)
      --warmup-days <int>        Sessions before the first forecast; kalman fits its noise variances on them (default 5). (default: 5)
      --min-similarity <number>  Analog: least cosine similarity of a look-alike (default 0.8). (default: 0.8)
      --entry <next-open|close>  next-open (default: fill at the next bar's open, immune to bid-ask bounce) or close (fill at the signal bar's close; a diagnostic). (default: next-open)

Examples:
  idiotproof evidence conformal SNDL MULN --from 2026-08-03 --to 2026-10-30
  idiotproof evidence conformal SNDL --model kalman --alpha 0.2 --horizon 10

evidence events

Event study of Research claims: market-model abnormal returns and CARs per claim type/sentiment/insider code, with Patell, BMP and placebo-bootstrap significance.

Usage: idiotproof evidence events [--from <date>] [--to <date>] [--type <string>] [--windows <string>] [--estimation <int>] [--gap <int>] [--min-events <int>] [--bootstrap <int>] [--seed <int>] [--benchmark <string>] [--max-daily-move <number>]
Risk: read

Parameters:
      --from <date>              First claim article day (yyyy-MM-dd, default: 180 days before --to).
      --to <date>                Last claim article day (yyyy-MM-dd, default: today ET).
      --type <string>            Only this claim type (Earnings, Contract, Insider, MA, Guidance, Regulatory, News, IndexEvent).
      --windows <string>         Event windows in trading days, start:end, comma-separated (default -1:1,0:1,0:5). (default: -1:1,0:1,0:5)
      --estimation <int>         Estimation-window length in trading days (default 120). (default: 120)
      --gap <int>                Trading days between the estimation window and the event window (default 10). (default: 10)
      --min-events <int>         Fewest valid events a group needs to be reported (default 5). (default: 5)
      --bootstrap <int>          Placebo bootstrap draws (default 1000; 0 skips it). (default: 1000)
      --seed <int>               Bootstrap seed (default 1337). (default: 1337)
      --benchmark <string>       Market benchmark symbol (default SPY). (default: SPY)
      --max-daily-move <number>  Drop events whose windows hold a daily return above this (default 2.0 = +200%, or below -66.7%). Bars are split-adjusted from Alpaca corporate actions; this guard catches splits the feed missed. (default: 2)

Examples:
  idiotproof evidence events
  idiotproof evidence events --type Insider --windows 0:1,0:5 --from 2026-05-01

evidence flow

Order-flow evidence: imbalance, VPIN, Kyle's lambda and absorption bucketed against forward returns, scored on held-out sessions.

Usage: idiotproof evidence flow <symbol> [--from <date>] [--to <date>] [--horizon <int>] [--bins <int>] [--signing <tick|lee-ready|bulk>] [--train <number>] [--vpin-window <int>] [--lambda-window <int>]
Risk: read

Parameters:
  <symbol>                             Ticker, e.g. SNDL. (required)
      --from <date>                    First ET day (yyyy-MM-dd, default: 10 days before --to).
      --to <date>                      Last ET day (yyyy-MM-dd, default: yesterday ET).
      --horizon <int>                  Minute bars ahead to measure (default 5). (default: 5)
      --bins <int>                     Quantile buckets per metric (default 5). (default: 5)
      --signing <tick|lee-ready|bulk>  tick (default: tick rule on trades), lee-ready (trades vs quote midpoint; fetches quotes) or bulk (bar-only bulk classification). (default: tick)
      --train <number>                 Share of sessions used to learn bucket edges (default 0.67); the rest is the held-out test. (default: 0.67)
      --vpin-window <int>              VPIN buckets averaged (default 50). (default: 50)
      --lambda-window <int>            Bars per Kyle's lambda regression (default 30). (default: 30)

Examples:
  idiotproof evidence flow SNDL --from 2026-10-20 --to 2026-10-31
  idiotproof evidence flow MULN --signing bulk --horizon 10

evidence graph

Correlation graph across symbols (lag 0 or 1) and the hop-decayed influence of a shock at a source symbol.

Usage: idiotproof evidence graph <symbols>... [--source <string>] [--lag <int>] [--edge <correlation|te>] [--alpha <number>] [--clean <none|rmt>] [--min-corr <number>] [--beta <number>] [--from <date>] [--to <date>] [--timeframe <minute|day>] [--session <rth|all>]
Risk: read

Parameters:
  <symbols>                     Two or more tickers, e.g. SNDL TLRY CGC ACB. (required)
      --source <string>         Symbol whose shock is propagated (default: the first symbol).
      --lag <int>               0 = moves together (default); 1 = the source's bar predicts the other's next bar. (default: 0)
      --edge <correlation|te>   correlation (default) or te: transfer entropy beating shuffled surrogates (directional, implies --lag 1). (default: correlation)
      --alpha <number>          With --edge te, the surrogate-test significance an edge must reach (default 0.05). (default: 0.05)
      --clean <none|rmt>        none (default) or rmt: keep only correlation the data can tell from chance (lag 0: Marchenko-Pastur eigenvalue clipping; lag 1: the 2.5/sqrt(T) noise floor). Correlation edges only; --edge te already tests each edge against shuffled surrogates. (default: none)
      --min-corr <number>       Least |correlation| that makes an edge (default 0.2). (default: 0.2)
      --beta <number>           Per-hop decay of influence, 0-1 exclusive (default 0.5). (default: 0.5)
      --from <date>             First ET day (yyyy-MM-dd, default: 5 days before --to for minute, 120 for day).
      --to <date>               Last ET day (yyyy-MM-dd, default: today ET).
      --timeframe <minute|day>  minute (default) or day. (default: minute)
      --session <rth|all>       rth (default) or all. (default: rth)

Examples:
  idiotproof evidence graph SNDL TLRY CGC ACB --source TLRY
  idiotproof evidence graph SPY IWM MULN --lag 1 --source SPY

evidence hawkes

Hawkes self-exciting fit of trade arrivals (branching ratio = endogenous share) and a momentum-ignition detector scored against forward returns on held-out sessions.

Usage: idiotproof evidence hawkes <symbol> [--from <date>] [--to <date>] [--horizon <int>] [--bins <int>] [--train <number>] [--window <int>] [--spike <number>] [--branching <number>]
Risk: read

Parameters:
  <symbol>                  Ticker, e.g. SNDL. (required)
      --from <date>         First ET day (yyyy-MM-dd, default: 10 days before --to).
      --to <date>           Last ET day (yyyy-MM-dd, default: yesterday ET).
      --horizon <int>       Minute bars ahead to measure (default 5). (default: 5)
      --bins <int>          Quantile buckets for the continuous features (default 5). (default: 5)
      --train <number>      Share of scored sessions used to learn bucket edges (default 0.67); the rest is the held-out test. (default: 0.67)
      --window <int>        Trailing minutes the detector looks at (default 10). (default: 10)
      --spike <number>      Trade-rate multiple of the prior session's baseline that counts as a spike (default 3). (default: 3)
      --branching <number>  Rolling branching ratio that counts as self-exciting (default 0.7). (default: 0.7)

Examples:
  idiotproof evidence hawkes SNDL --from 2026-10-20 --to 2026-10-31
  idiotproof evidence hawkes MULN --window 5 --spike 4 --branching 0.8

evidence kalman

Kalman trend slope, innovation z and leader pair-residual z bucketed against forward returns, fitted on training sessions and tested on held-out ones.

Usage: idiotproof evidence kalman <symbols>... [--leader <string>] [--from <date>] [--to <date>] [--horizon <int>] [--bins <int>] [--train <number>] [--entry <next-open|close>]
Risk: read

Parameters:
  <symbols>                      One or more tickers, e.g. SNDL MULN. (required)
      --leader <string>          Leader for the pair-residual feature (dynamic hedge ratio), e.g. SPY or IWM. Omit to skip it.
      --from <date>              First ET day (yyyy-MM-dd, default: 20 days before --to).
      --to <date>                Last ET day (yyyy-MM-dd, default: yesterday ET).
      --horizon <int>            Minute bars ahead to measure (default 5). (default: 5)
      --bins <int>               Quantile buckets per feature (default 5). (default: 5)
      --train <number>           Share of sessions used to fit the filter and learn bucket edges (default 0.67); the rest is the held-out test. (default: 0.67)
      --entry <next-open|close>  next-open (default: enter at the next bar's open, immune to bid-ask bounce) or close (enter at the signal bar's close). (default: next-open)

Examples:
  idiotproof evidence kalman SNDL --from 2026-09-01 --to 2026-10-30
  idiotproof evidence kalman MULN SNDL --leader IWM --horizon 10

evidence label

Forward-return distribution for a symbol (up/down/flat rates, quantiles, excursions): the base rate a pattern must beat.

Usage: idiotproof evidence label <symbol> [--from <date>] [--to <date>] [--horizon <int>] [--entry <next-open|close>] [--timeframe <minute|day>] [--dead-band <number>] [--session <rth|all>]
Risk: read

Parameters:
  <symbol>                       Ticker, e.g. SNDL. (required)
      --from <date>              First ET day (yyyy-MM-dd, default: 20 days before --to).
      --to <date>                Last ET day (yyyy-MM-dd, default: yesterday ET).
      --horizon <int>            Bars ahead to measure (default 5). (default: 5)
      --entry <next-open|close>  next-open (default: fill at the next bar's open, immune to bid-ask bounce) or close (fill at the signal bar's close; a diagnostic). (default: next-open)
      --timeframe <minute|day>   minute (default) or day. (default: minute)
      --dead-band <number>       Absolute return counted as flat, as a fraction (default 0.001). (default: 0.001)
      --session <rth|all>        rth (default) or all. (default: rth)

Examples:
  idiotproof evidence label SNDL --from 2026-10-01 --to 2026-10-31 --horizon 10
  idiotproof evidence label AAPL --timeframe day --from 2026-01-02 --horizon 5

evidence pools

Stop-pool raid rates: how often price raided each pool kind (round numbers, prior-day/premarket/opening-range levels, VWAP bands) and reversed vs broke through, per side and price tier.

Usage: idiotproof evidence pools <symbols>... [--from <date>] [--to <date>] [--horizon <int>] [--proximity <number>] [--min-samples <int>]
Risk: read

Parameters:
  <symbols>                 One or more tickers, e.g. SNDL MULN. (required)
      --from <date>         First ET day (yyyy-MM-dd, default: 20 days before --to).
      --to <date>           Last ET day (yyyy-MM-dd, default: today ET).
      --horizon <int>       Bars after an approach that decide raid / break / reject (default 10). (default: 10)
      --proximity <number>  How close counts as reaching a pool, in ATRs of the bar before (default 0.25). (default: 0.25)
      --min-samples <int>   Hide rows with fewer approaches than this (default 1). (default: 1)

Examples:
  idiotproof evidence pools SNDL MULN
  idiotproof evidence pools SNDL --from 2026-09-01 --to 2026-10-30 --min-samples 20

evidence regime

Per-symbol regime: Hurst, variance ratio (z-tested vs random walk), efficiency ratio, realized vol, lag-1 autocorrelation.

Usage: idiotproof evidence regime <symbols>... [--from <date>] [--to <date>] [--timeframe <minute|day>] [--q <int>] [--session <rth|all>] [--method <vr|bocpd|hmm>] [--threshold <number>] [--states <int>] [--aggregate <int>]
Risk: read

Parameters:
  <symbols>                     One or more tickers, e.g. SNDL MULN. (required)
      --from <date>             First ET day (yyyy-MM-dd, default: 5 days before --to for minute, 120 for day).
      --to <date>               Last ET day (yyyy-MM-dd, default: today ET).
      --timeframe <minute|day>  minute (default) or day. (default: minute)
      --q <int>                 Variance-ratio aggregation in bars (default 4). (default: 4)
      --session <rth|all>       rth (default) or all. (default: rth)
      --method <vr|bocpd|hmm>   vr (default: variance-ratio z-test), bocpd (Bayesian online change points) or hmm (Gaussian hidden Markov regimes, trained on earlier sessions, filtered forward on the last). (default: vr)
      --threshold <number>      bocpd: probability that a regime began within the last 5 bars needed to flag a change (default 0.5). (default: 0.5)
      --states <int>            hmm: hidden states, 2 or 3 (default 2). (default: 2)
      --aggregate <int>         bocpd/hmm on minute bars: bar multiple to fit on (default: auto, the smallest of 1,2,3,5,10,15,30 minutes at which most bars move and tick rounding is under 10% of return variance; 1 = raw minutes).

Examples:
  idiotproof evidence regime SNDL MULN
  idiotproof evidence regime SPY --timeframe day --from 2026-05-01
Grid-search a strategy template with multiple-testing corrections: BH q-values, deflated Sharpe, reality check/SPA, and a held-out score for the winner.

Usage: idiotproof evidence search <symbols>... [--script <string>] [--grid <string[]>] [--from <date>] [--to <date>] [--holdout <number>] [--top <int>] [--resamples <int>] [--block <number>] [--seed <int>] [--max-configs <int>] [--cost <number>] [--shares <number>]
Risk: read

Parameters:
  <symbols>                Tickers to score every config on, e.g. SNDL MULN. (required)
      --script <string>    IdiotScript template with {name} placeholders, e.g. "Ticker(X).IsAboveVwap().Long().StopLossPercent({sl}).TrailingStopLoss({trail})". Use percent exits: an absolute TakeProfit/StopLoss price means the same dollar level on every symbol. (default: )
      --grid <string[]>    Repeatable: a placeholder and its values, e.g. --grid tp=1,2,3 --grid sl=0.5,1.
      --from <date>        First ET day (yyyy-MM-dd, default: 30 days before --to).
      --to <date>          Last ET day (yyyy-MM-dd, default: today ET).
      --holdout <number>   Fraction of the latest days kept out of selection and scored once on the chosen config (default 0.3). (default: 0.3)
      --top <int>          Configs to list (default 10). (default: 10)
      --resamples <int>    Reality-check bootstrap resamples (default 1000). (default: 1000)
      --block <number>     Mean bootstrap block length in symbol-days (default 5). (default: 5)
      --seed <int>         Bootstrap seed (default 1337). (default: 1337)
      --max-configs <int>  Refuse grids larger than this (default 2000). (default: 2000)
      --cost <number>      Flat round-trip cost per trade as a fraction. Omit it to model each symbol-day's cost from that symbol's prior sessions (Corwin-Schultz spread + square-root impact for --shares).
      --shares <number>    Shares per trade for the modeled impact cost (default 1, the default order size). (default: 1)

Examples:
  idiotproof evidence search SNDL MULN --script "Ticker(X).IsAboveVwap().Long().StopLossPercent({sl}).TrailingStopLoss({trail})" --grid sl=1,2 --grid trail=1,3

evidence similar

LSH look-alikes of a symbol's latest bar window from earlier sessions, with what each did next.

Usage: idiotproof evidence similar <symbol> [--date <date>] [--window <int>] [--horizon <int>] [--entry <next-open|close>] [--train-days <int>] [--k <int>] [--min-similarity <number>] [--session <rth|all>]
Risk: read

Parameters:
  <symbol>                       Ticker, e.g. SNDL. (required)
      --date <date>              ET day whose latest window is matched (yyyy-MM-dd, default: today ET).
      --window <int>             Bars per pattern window (default 20). (default: 20)
      --horizon <int>            Bars ahead each look-alike's outcome is measured (default 5). (default: 5)
      --entry <next-open|close>  next-open (default: fill at the next bar's open, immune to bid-ask bounce) or close (fill at the signal bar's close; a diagnostic). (default: next-open)
      --train-days <int>         Prior sessions searched for look-alikes (default 20). (default: 20)
      --k <int>                  Look-alikes to list (default 15). (default: 15)
      --min-similarity <number>  Least cosine similarity (default 0.8). (default: 0.8)
      --session <rth|all>        rth (default) or all. (default: rth)

Examples:
  idiotproof evidence similar SNDL
  idiotproof evidence similar MULN --date 2026-10-30 --window 30 --horizon 10

evidence sizing

Advisory Kelly sizing (plug-in vs Beta-posterior vs conservative) from diary trades or manual counts; never changes order quantities.

The Risk Guardian and the 1-share default policy stay authoritative; this only reports what the measured edge would justify.

Usage: idiotproof evidence sizing [--strategy <string>] [--symbol <string>] [--wins <int>] [--losses <int>] [--payoff <number>] [--fraction <number>]
Risk: read

Parameters:
      --strategy <string>  Size from this strategy's closed trades in the diary (title, case-insensitive).
      --symbol <string>    Size from this symbol's closed trades in the diary.
      --wins <int>         Manual mode: winning trades (use with --losses and --payoff).
      --losses <int>       Manual mode: losing trades.
      --payoff <number>    Manual mode: average win / average loss.
      --fraction <number>  Fraction of the posterior Kelly to recommend (default 0.5 = half Kelly). (default: 0.5)

Examples:
  idiotproof evidence sizing --strategy "SNDL dip-reclaim"
  idiotproof evidence sizing --wins 12 --losses 8 --payoff 1.3

evidence survival

Survival analysis of exits: Kaplan-Meier hold curves, competing-risk incidence of target vs stop vs trail, Cox hazard ratios, and an advisory sell-by from replay trades.

Usage: idiotproof evidence survival [--strategy <string>] [--symbol <string>] [--from <date>] [--to <date>] [--top <int>] [--min-trades <int>] [--checkpoints <string>]
Risk: read

Parameters:
      --strategy <string>     Only replay trades whose strategy/family name contains this text (case-insensitive).
      --symbol <string>       Only this symbol's replay trades.
      --from <date>           First trade day (yyyy-MM-dd ET).
      --to <date>             Last trade day (yyyy-MM-dd ET).
      --top <int>             Report at most this many strategies, most trades first (default 8). (default: 8)
      --min-trades <int>      Fewest trades a strategy needs to get its own curves (default 20). (default: 20)
      --checkpoints <string>  Hold minutes at which to read the curves, comma-separated (default 5,15,30,60,120). (default: 5,15,30,60,120)

Examples:
  idiotproof evidence survival
  idiotproof evidence survival --strategy gapper --checkpoints 10,30,60

evidence tails

Tail dependence (copulas): which symbols crash together beyond what correlation shows, and whether a crash in one predicts the next bar of the other out of sample.

Usage: idiotproof evidence tails <symbols>... [--from <date>] [--to <date>] [--timeframe <minute|day>] [--q <number>] [--train <number>] [--permutations <int>] [--alpha <number>] [--seed <int>]
Risk: read

Parameters:
  <symbols>                     Two or more tickers, e.g. SNDL MULN SPY. (required)
      --from <date>             First ET day (yyyy-MM-dd, default: 365 days before --to for day, 10 for minute).
      --to <date>               Last ET day (yyyy-MM-dd, default: today ET).
      --timeframe <minute|day>  day (default) or minute. (default: day)
      --q <number>              Tail quantile: a 'crash' is a return in the bottom q (default 0.1). (default: 0.1)
      --train <number>          Share of aligned bars used to find tail-linked pairs (default 0.67); the rest is the held-out contagion test. (default: 0.67)
      --permutations <int>      Permutations for the tail-independence test (default 999). (default: 999)
      --alpha <number>          False-discovery rate for both the pair screen and the holdout test (default 0.05). (default: 0.05)
      --seed <int>              Permutation seed (default 1337). (default: 1337)

Examples:
  idiotproof evidence tails SNDL MULN SPY
  idiotproof evidence tails SOXL NVDA AMD --q 0.05 --from 2025-11-01

evidence topology

Persistent-homology features (H0/H1 persistence, landscape norm) of delay-embedded returns, learned on earlier days and re-tested on held-out days with a session-clustered test.

Usage: idiotproof evidence topology <symbols>... [--from <date>] [--to <date>] [--window <int>] [--dim <int>] [--delay <int>] [--horizon <int>] [--buckets <int>] [--holdout <number>] [--min-samples <int>] [--session <rth|all>]
Risk: read

Parameters:
  <symbols>                One or more tickers, e.g. SNDL MULN. (required)
      --from <date>        First ET day (yyyy-MM-dd, default: 30 days before --to).
      --to <date>          Last ET day (yyyy-MM-dd, default: today ET).
      --window <int>       Closes per topology read (default 40, max 100). (default: 40)
      --dim <int>          Delay-embedding dimension (default 3). (default: 3)
      --delay <int>        Delay-embedding lag in bars (default 1). (default: 1)
      --horizon <int>      Forward bars for the up/down label; reads are spaced this far apart (default 5). (default: 5)
      --buckets <int>      Quantile buckets per feature, learned on training days (default 4). (default: 4)
      --holdout <number>   Fraction of the latest trading days held out (default 0.3). (default: 0.3)
      --min-samples <int>  Minimum training reads in a bucket before it can be picked (default 30). (default: 30)
      --session <rth|all>  rth (default) or all. (default: rth)

Examples:
  idiotproof evidence topology SNDL MULN --from 2026-08-01 --to 2026-10-30
  idiotproof evidence topology SPY --window 30 --dim 2 --delay 2 --horizon 10

evidence walkforward

Out-of-sample walk-forward directional test (LSH analogs) with binomial p, Wilson CI, coverage and edge after costs.

Each day's model trains only on earlier sessions; calls are spaced by --horizon so outcomes never overlap. Analysis only; arms nothing.

Usage: idiotproof evidence walkforward [<symbols>...] [--universe <none|penny>] --from <date> [--to <date>] [--model <analog|leaders>] [--leaders <string>] [--edge <correlation|te>] [--clean <none|rmt>] [--leader-hops <int>] [--leader-min-influence <number>] [--window <int>] [--horizon <int>] [--train-days <int>] [--min-similarity <number>] [--min-neighbors <int>] [--min-agreement <number>] [--cost <number>] [--entry <next-open|close>] [--allow-mixed-feeds] [--shares <number>] [--volume] [--session <rth|all>] [--max-symbols-per-day <int>] [--max-candidates <int>]
Risk: read

Parameters:
  <symbols>                            Tickers to test, e.g. SNDL MULN (omit when using --universe).
      --universe <none|penny>          penny: each day's point-in-time under-$5 universe (prior-day close, dollar-volume floor), drawn from active AND delisted Alpaca equities. (default: none)
      --from <date>                    First ET day to evaluate (yyyy-MM-dd). (required)
      --to <date>                      Last ET day to evaluate (yyyy-MM-dd, default: yesterday ET).
      --model <analog|leaders>         analog: LSH look-alike windows vote on direction. leaders: follow the influence-weighted move of the symbol's lag-1 leaders, discovered among --leaders from prior sessions only. (default: analog)
      --leaders <string>               With --model leaders, the symbols leaders are discovered among (default SPY,QQQ,IWM). (default: SPY,QQQ,IWM)
      --edge <correlation|te>          With --model leaders, how leader edges are measured: correlation (default) or te (transfer entropy vs shuffled surrogates). (default: correlation)
      --clean <none|rmt>               With --model leaders and correlation edges: none (default) or rmt, keeping only lag-1 correlations above the random-matrix noise floor 2.5/sqrt(T). (default: none)
      --leader-hops <int>              With --model leaders, most links between a leader and the symbol (default 2). (default: 2)
      --leader-min-influence <number>  With --model leaders, least |influence| a leader needs to count (default 0.05). (default: 0.05)
      --window <int>                   Bars per pattern window (default 20). (default: 20)
      --horizon <int>                  Bars ahead the call is scored on; calls are spaced this far apart so outcomes never overlap (default 5). (default: 5)
      --train-days <int>               Prior sessions each day's model trains on (default 20). (default: 20)
      --min-similarity <number>        Least cosine similarity for a look-alike to count (default 0.8). (default: 0.8)
      --min-neighbors <int>            Fewest look-alikes needed to make a call (default 8). (default: 8)
      --min-agreement <number>         Smoothed share of look-alikes that must agree to call (default 0.6). (default: 0.6)
      --cost <number>                  Flat round-trip cost per call as a fraction (e.g. 0.003). Omit it to model each symbol-day's cost from its prior sessions: Corwin-Schultz spread + square-root impact for --shares.
      --entry <next-open|close>        next-open (default: a call fills at the next bar's open, immune to bid-ask bounce) or close (fills at the signal bar's close; a diagnostic that inflates mean-reversion edge on low-priced names). (default: next-open)
      --allow-mixed-feeds              Report a verdict even when the bars mix SIP and IEX tiers (refused by default: IEX prices and volumes are one exchange's, not the consolidated tape). (default: false)
      --shares <number>                Shares per call for the modeled impact cost (default 1, the default order size). (default: 1)
      --volume                         Include the volume shape in the pattern vector. (default: false)
      --session <rth|all>              rth (default) or all (adds pre/after-hours bars). (default: rth)
      --max-symbols-per-day <int>      With --universe, keep each day's most liquid N members (default 30). (default: 30)
      --max-candidates <int>           With --universe, most candidate symbols screened (default 4000; inactive first, then active). (default: 4000)

Examples:
  idiotproof evidence walkforward --universe penny --from 2026-08-03 --to 2026-10-30
      Penny-stock (< $5) test across the point-in-time universe.
  idiotproof evidence walkforward SNDL --from 2026-10-01 --horizon 10

gapper

gapper apply-tuned

Save a backtest's hindsight-tuned profile as a new gapper strategy (inactive unless --arm).

Usage: idiotproof gapper apply-tuned <run> [--arm] [--mode <sandbox|paper|live>]
Risk: write

Parameters:
  <run>                            The run id `gapper backtest-day` printed (gb-xxxxxxxx). (required)
      --arm                        Arm it right away (one-per-symbol and the 3-gapper cap still apply). (default: false)
  -m, --mode <sandbox|paper|live>  Broker mode for the new gapper: paper (default) or sandbox. (default: paper)

Examples:
  idiotproof gapper apply-tuned gb-1a2b3c4d
  idiotproof gapper apply-tuned gb-1a2b3c4d --arm

gapper arm

Arm a gapper: activate an existing one or queue a new one from a profile, honoring one-per-symbol and the 3-gapper cap.

Usage: idiotproof gapper arm <gapper> [--mode <sandbox|paper|live>] [--profile <string>] [--gap <number>] [--max-gap <number>] [--volume <number>] [--min-price <number>] [--max-price <number>] [--entry-start <string>] [--entry-end <string>] [--stop <number>] [--trail <number>] [--giveback <number>] [--arm-exit <string>] [--sell-by <string>] [--notional <decimal>]
Risk: money

Parameters:
  <gapper>                         A symbol (queues a new gapper when it has none) or a gapper's id, id prefix or stamp id. (required)
  -m, --mode <sandbox|paper|live>  Broker mode for a newly queued gapper: paper (default) or sandbox. Live is `strategy mode`, confirmed. (default: paper)
  -p, --profile <string>           Gapper profile id or name to start from (default classic-gapper).
      --gap <number>               Minimum gap over the previous close, percent.
      --max-gap <number>           Gap ceiling in percent (0 = no ceiling).
      --volume <number>            Premarket volume must be at least this multiple of average volume.
      --min-price <number>         Lowest price that qualifies.
      --max-price <number>         Highest price that qualifies.
      --entry-start <string>       Entry window start, ET (HH:mm).
      --entry-end <string>         Entry window end, ET (HH:mm).
      --stop <number>              Hard stop below entry, percent.
      --trail <number>             Trailing stop off the high, percent (0 = none).
      --giveback <number>          Sell once price gives back this percent of the entry-to-peak run.
      --arm-exit <string>          ET time the giveback exit arms (HH:mm).
      --sell-by <string>           Hard flatten time, ET (HH:mm), before the 9:30 bell.
      --notional <decimal>         Position size in dollars.

Examples:
  idiotproof gapper arm NVDA
  idiotproof gapper arm ABCD --profile penny-runner --stop 6
  idiotproof gapper arm 0190a3f2

gapper auto candidates

Every ticker an auto-gapper scan screened on a day: signals, the adaptive plan it chose, and armed or why skipped.

Usage: idiotproof gapper auto candidates [--date <date>]
Risk: read

Parameters:
  -d, --date <date>  ET scan day (yyyy-MM-dd); default the latest scan's day.

Examples:
  idiotproof gapper auto candidates
  idiotproof gapper auto candidates --date 2026-10-29

gapper auto disable

Disarm every auto-armed gapper of yours that holds no position (holding ones stay armed to manage their exit).

Usage: idiotproof gapper auto disable
Risk: write

Examples:
  idiotproof gapper auto disable

gapper auto enable

Run the auto-gapper for you now and arm its top picks as paper gappers (paper-only; --dry-run previews).

Usage: idiotproof gapper auto enable [--dry-run]
Risk: write

Parameters:
  -n, --dry-run  Preview what would arm; writes and arms nothing. (default: false)

Examples:
  idiotproof gapper auto enable --dry-run
  idiotproof gapper auto enable

gapper auto status

Auto-gapper settings, its recent scans (screened, qualified, armed, skipped) and your auto-armed gappers.

Usage: idiotproof gapper auto status [--last <int>]
Risk: read

Parameters:
      --last <int>  How many recent scans to show (default 7). (default: 7)

Examples:
  idiotproof gapper auto status
  idiotproof gapper auto status --last 20

gapper backtest-day

Replay a gapper profile over one past day: fills, MFE/MAE, the giveback grid and a hindsight-tuned profile (saved for apply-tuned).

Usage: idiotproof gapper backtest-day <symbol> [<date>] [--profile <string>] [--gap <number>] [--max-gap <number>] [--volume <number>] [--min-price <number>] [--max-price <number>] [--entry-start <string>] [--entry-end <string>] [--stop <number>] [--trail <number>] [--giveback <number>] [--arm-exit <string>] [--sell-by <string>] [--notional <decimal>]
Risk: read

Parameters:
  <symbol>                    The ticker to replay. (required)
  <date>                      The ET trading day (yyyy-MM-dd); default the last completed trading day.
  -p, --profile <string>      Gapper profile id or name to start from (default classic-gapper).
      --gap <number>          Minimum gap over the previous close, percent.
      --max-gap <number>      Gap ceiling in percent (0 = no ceiling).
      --volume <number>       Premarket volume must be at least this multiple of average volume.
      --min-price <number>    Lowest price that qualifies.
      --max-price <number>    Highest price that qualifies.
      --entry-start <string>  Entry window start, ET (HH:mm).
      --entry-end <string>    Entry window end, ET (HH:mm).
      --stop <number>         Hard stop below entry, percent.
      --trail <number>        Trailing stop off the high, percent (0 = none).
      --giveback <number>     Sell once price gives back this percent of the entry-to-peak run.
      --arm-exit <string>     ET time the giveback exit arms (HH:mm).
      --sell-by <string>      Hard flatten time, ET (HH:mm), before the 9:30 bell.
      --notional <decimal>    Position size in dollars.

Examples:
  idiotproof gapper backtest-day NVDA 2026-10-29
  idiotproof gapper backtest-day ABCD 2026-10-29 --profile penny-runner --giveback 20

gapper be-bex status

The BE/BEX decay gate: latest decay reading, threshold, and which gated BE strategies are armed or disarmed by it.

Usage: idiotproof gapper be-bex status
Risk: read

Examples:
  idiotproof gapper be-bex status

gapper caps

Active-gapper counts against the caps: 3 manual gappers, one active strategy per symbol, the auto-gapper limit.

Usage: idiotproof gapper caps
Risk: read

Examples:
  idiotproof gapper caps

gapper disarm

Disarm a gapper so the Monitor stops evaluating it (refused while it holds a position); --remove deletes it.

Usage: idiotproof gapper disarm <gapper> [--remove]
Risk: write

Parameters:
  <gapper>      The gapper's symbol, id, id prefix or stamp id. (required)
      --remove  Also delete the gapper row (only when it holds no position). (default: false)

Examples:
  idiotproof gapper disarm NVDA
  idiotproof gapper disarm 0190a3f2 --remove

gapper formation

Recent live gapper-formation snapshot rows: time ET, gap, volume ratio, 1/3/5-minute velocity, acceleration, distance to the premarket high, catalyst score/age, halted and whether the trigger rule passed.

Usage: idiotproof gapper formation [--symbol <string>] [--date <date>] [--last <int>]
Risk: read

Parameters:
  -s, --symbol <string>  Only this ticker.
  -d, --date <date>      ET trading day (yyyy-MM-dd); default every day the sink holds.
      --last <int>       How many rows, newest first (default 40, max 500). (default: 40)

Examples:
  idiotproof gapper formation
  idiotproof gapper formation --symbol ABCD --date 2026-11-06

gapper formation disable

Turn the formation recorder off (settings only; nothing to disarm — it never arms).

Usage: idiotproof gapper formation disable
Risk: write

Examples:
  idiotproof gapper formation disable

gapper formation enable

Turn the formation recorder on for you (paper-only research rows, 03:55-09:45 ET weekdays, with the Monitor leader); never arms.

Usage: idiotproof gapper formation enable
Risk: write

Examples:
  idiotproof gapper formation enable

gapper formation status

Whether the formation recorder is enabled, who owns it, whether this Hub leads, today's universe size, the stream, rows written, halted symbols, the trigger rule and the sink in use.

Usage: idiotproof gapper formation status
Risk: read

Examples:
  idiotproof gapper formation status

gapper formation universe

Today's formation universe: every symbol the recorder watches and why it is in (catalyst, mover, most-active, tracked), with catalyst score, gap and price.

Usage: idiotproof gapper formation universe
Risk: read

Examples:
  idiotproof gapper formation universe

gapper from-transcript

Read a transcript and propose re-validated gapper candidate cards; nothing is queued until you `gapper arm` one.

Usage: idiotproof gapper from-transcript <transcript>
Risk: read

Parameters:
  <transcript>  A transcript file path, the transcript text itself, or `-` to read it from stdin. (required)

Examples:
  idiotproof gapper from-transcript notes.txt
  idiotproof gapper from-transcript -
      Pipe a transcript in: `type video.txt | idiotproof gapper from-transcript -`.

gapper list

Your queued gappers with live state: armed, mode, position, condition progress and last exit.

Usage: idiotproof gapper list [--active]
Risk: read

Parameters:
  -a, --active  Only armed gappers. (default: false)

Examples:
  idiotproof gapper list
  idiotproof gapper list --active

gapper premarket-fade

Premarket blow-off/fade detector: `run` scans the movers now (detection only), `status` lists today's fade alerts.

Usage: idiotproof gapper premarket-fade [<action>] [--top <int>]
Risk: read

Parameters:
  <action>         status (default): today's fade alerts; run: scan the movers for the pattern now. (default: status)
      --top <int>  Movers to screen when running (default 50, max 50). (default: 50)

Examples:
  idiotproof gapper premarket-fade
  idiotproof gapper premarket-fade run

gapper profile show

Every dial of one gapper profile, plus the strategy it generates for a sample ticker.

Usage: idiotproof gapper profile show <name>
Risk: read

Parameters:
  <name>  Profile id (classic-gapper) or name. (required)

Examples:
  idiotproof gapper profile show classic-gapper
  idiotproof gapper profile show penny-runner

gapper profiles

List the gapper profile catalog: the templates every gapper starts from.

Usage: idiotproof gapper profiles
Risk: read

Examples:
  idiotproof gapper profiles

gapper tune

Dial a gapper profile in for one ticker and show the strategy GapperScriptFactory generates; --save stores it inactive.

Usage: idiotproof gapper tune <symbol> [--save] [--mode <sandbox|paper|live>] [--profile <string>] [--gap <number>] [--max-gap <number>] [--volume <number>] [--min-price <number>] [--max-price <number>] [--entry-start <string>] [--entry-end <string>] [--stop <number>] [--trail <number>] [--giveback <number>] [--arm-exit <string>] [--sell-by <string>] [--notional <decimal>]
Risk: write

Parameters:
  <symbol>                         The ticker to build the gapper for. (required)
  -s, --save                       Save it as an inactive gapper strategy (arm it later with `gapper arm`). (default: false)
  -m, --mode <sandbox|paper|live>  Broker mode for a saved gapper: paper (default) or sandbox. (default: paper)
  -p, --profile <string>           Gapper profile id or name to start from (default classic-gapper).
      --gap <number>               Minimum gap over the previous close, percent.
      --max-gap <number>           Gap ceiling in percent (0 = no ceiling).
      --volume <number>            Premarket volume must be at least this multiple of average volume.
      --min-price <number>         Lowest price that qualifies.
      --max-price <number>         Highest price that qualifies.
      --entry-start <string>       Entry window start, ET (HH:mm).
      --entry-end <string>         Entry window end, ET (HH:mm).
      --stop <number>              Hard stop below entry, percent.
      --trail <number>             Trailing stop off the high, percent (0 = none).
      --giveback <number>          Sell once price gives back this percent of the entry-to-peak run.
      --arm-exit <string>          ET time the giveback exit arms (HH:mm).
      --sell-by <string>           Hard flatten time, ET (HH:mm), before the 9:30 bell.
      --notional <decimal>         Position size in dollars.

Examples:
  idiotproof gapper tune NVDA --profile classic-gapper
  idiotproof gapper tune ABCD --profile penny-runner --gap 12 --stop 6 --giveback 18 --sell-by 09:25 --save

hub

hub install-service

Install the Hub as a Windows service that runs as you (Monitor off unless --monitor).

Runs sc.exe create/description/failure and sets the service's environment in the registry. Needs an elevated Hub; otherwise it prints the commands and points at tools\install-hub-service.ps1, which elevates itself. Grant the account 'Log on as a service' (the script does). Stop any interactive Hub first: both use port 5910.

Usage: idiotproof hub install-service [--exe <string>] [--account <string>] [--password <string>] [--monitor] [--start <string>] [--dry-run]
Risk: destructive

Parameters:
      --exe <string>       The Hub exe the service runs (default: the published C:\Apps\IdiotProof\Hub\idiotproof-hub.exe).
      --account <string>   Windows account to run as (default: you, as DOMAIN\user or .\user). Must be the user who owns the LocalDB database and keys.
      --password <string>  That account's Windows password (required unless --dry-run; never logged).
      --monitor            Host the trading Monitor in the service (it places real orders unattended). Off by default. (default: false)
      --start <string>     Start type: delayed-auto (default), auto or demand. (default: delayed-auto)
      --dry-run            Show the commands without running them. (default: false)

Examples:
  idiotproof hub install-service --dry-run
  idiotproof hub install-service --password "..." --monitor

hub ping

Check the Hub is up, show its clock in ET, and whether its DB and Monitor are healthy.

Usage: idiotproof hub ping
Risk: read

Examples:
  idiotproof hub ping

hub uninstall-service

Stop and remove the Hub's Windows service.

sc.exe stop (graceful: the Hub drains operations, stops the Monitor and releases the leader lease), then sc.exe delete. Needs an elevated Hub; otherwise prints the commands. Run it from an interactive Hub or the script, not the service's own Hub.

Usage: idiotproof hub uninstall-service [--dry-run]
Risk: destructive

Parameters:
      --dry-run  Show the commands without running them. (default: false)

Examples:
  idiotproof hub uninstall-service --dry-run
  idiotproof hub uninstall-service

indicators

indicators compute

Compute one indicator (rsi, ema, atr, macd, vwap, adx, bollinger, ...) on a symbol's recent bars.

Usage: idiotproof indicators compute <symbol> <indicator> [--period <int>] [--timeframe <string>] [--bars <int>] [--last <int>]
Risk: read

Parameters:
  <symbol>                  Ticker, e.g. NVDA. (required)
  <indicator>               rsi, ema, sma, atr, macd, vwap, adx, bollinger, stochastic, cci, williams-r, momentum, roc or obv. (required)
      --period <int>        Look-back period (default per indicator: rsi 14, ema 9, sma 20, atr 14, adx 14, bollinger 20, ...). Ignored by macd, vwap and obv.
      --timeframe <string>  Bar size: 1Min (default), 5Min, 15Min, 1Hour or 1Day. (default: 1Min)
      --bars <int>          Bars of history to compute over, newest last (default 240, the Monitor's window). (default: 240)
      --last <int>          How many of the newest values to print (default 10). (default: 10)

Examples:
  idiotproof indicators compute NVDA rsi
  idiotproof indicators compute INTC ema --period 21 --timeframe 5Min
  idiotproof indicators compute AAPL macd --timeframe 1Day --bars 300

indicators snapshot

The full indicator snapshot a strategy condition sees for a symbol: VWAP, EMAs, RSI, MACD, ADX, gap, window high/low, pivots, patterns.

Usage: idiotproof indicators snapshot <symbol> [--timeframe <string>] [--bars <int>] [--ema <string>]
Risk: read

Parameters:
  <symbol>                  Ticker, e.g. NVDA. (required)
      --timeframe <string>  Bar size: 1Min (default, what the Monitor evaluates on), 5Min, 15Min, 1Hour or 1Day. (default: 1Min)
      --bars <int>          Window of bars the snapshot is built from, newest last (default 240, the Monitor's 4-hour window). (default: 240)
      --ema <string>        Extra EMA periods to include beside 9/21/31/50/200, comma separated (e.g. 7,65).

Examples:
  idiotproof indicators snapshot NVDA
  idiotproof indicators snapshot INTC --ema 7,65 --timeframe 5Min

keys

keys migrate-to-vault

Move Alpaca keys, OAuth tokens and Claude keys out of SQL into MindAttic.Vault (dry run unless --apply).

Per user and secret: copy into Vault when Vault lacks it, verify equality when both have it, then clear the SQL column. Conflicts and undecryptable values are reported and left untouched. Idempotent.

Usage: idiotproof keys migrate-to-vault [--apply]
Risk: destructive

Parameters:
      --apply  Actually copy into Vault and clear the SQL columns (without it: a dry run that changes nothing). (default: false)

Examples:
  idiotproof keys migrate-to-vault
      Dry run: what would move, nothing changes.
  idiotproof keys migrate-to-vault --apply

keys opt-in

Route your orders to your own Alpaca account (alpaca) or back to the Sandbox (off).

Usage: idiotproof keys opt-in <broker>
Risk: write

Parameters:
  <broker>  alpaca (route your orders to your own Alpaca account) or off (back to the Sandbox). (required)

Examples:
  idiotproof keys opt-in alpaca
  idiotproof keys opt-in off

keys probe

Round-trip your stored Alpaca keys with a read-only account call (paper, live or both).

Usage: idiotproof keys probe [--mode <all|paper|live>]
Risk: read

Parameters:
      --mode <all|paper|live>  all (default), paper or live. (default: all)

Examples:
  idiotproof keys probe
  idiotproof keys probe --mode live

keys set

Store an Alpaca paper/live key pair (checked, then probed) or your Claude key in MindAttic.Vault.

Usage: idiotproof keys set <target> [--key-id <string>] --secret <string> [--force]
Risk: write

Parameters:
  <target>               alpaca-paper, alpaca-live or claude. (required)
      --key-id <string>  The Alpaca API key id (PK... for paper, AK... for live). Not used for claude.
      --secret <string>  The Alpaca secret key, or for claude the Claude API key. (required)
      --force            Store even when the key id prefix looks wrong or Alpaca rejects the pair. (default: false)

Examples:
  idiotproof keys set alpaca-paper --key-id PK...your-paper-key-id --secret <secret>
  idiotproof keys set alpaca-live --key-id AK...your-live-key-id --secret <secret>
  idiotproof keys set claude --secret <sk-ant-key>

keys status

Which Alpaca/Claude keys resolve for you and from which Vault entry (never shows a secret).

Usage: idiotproof keys status
Risk: read

Examples:
  idiotproof keys status

ledger

ledger list

Every command the Hub ran for you (CLI, MCP, web): operation, arguments, outcome, duration (ET).

Usage: idiotproof ledger list [--op <string>] [--since <date>] [--caller <string>] [--status <string>] [--limit <int>]
Risk: read

Parameters:
      --op <string>      Only this operation ("strategy create" or strategy_create), or a noun for all of its verbs (strategy).
      --since <date>     First ET date to include, yyyy-MM-dd (default: everything).
      --caller <string>  Only calls from this front door: cli, mcp, blazor or test.
      --status <string>  Only this outcome: ok, failed, usage-error, blocked or confirmation-required.
      --limit <int>      Most rows, newest first, 1-1000 (default 50). (default: 50)

Examples:
  idiotproof ledger list
  idiotproof ledger list --op "order place" --since 2026-10-30
  idiotproof ledger list --op strategy --caller mcp --status blocked

llm

llm keys

Which Claude key the LLM panel resolves for you (yours, the host's, or none) and the voting toggles; never shows a key.

Usage: idiotproof llm keys
Risk: read

Examples:
  idiotproof llm keys

llm panel

The LLM voter panel: voters, trading lenses, which have keys, the consensus threshold and whether the gate is on.

Usage: idiotproof llm panel
Risk: read

Examples:
  idiotproof llm panel

llm threshold

Show or set the LLM panel's consensus threshold (0.5-1): the share of votes that must Approve.

Usage: idiotproof llm threshold [<value>]
Risk: write

Parameters:
  <value>  Share of counted votes that must Approve, 0..1 (e.g. 0.66) or a percent (66); omit to show the current one.

Examples:
  idiotproof llm threshold
  idiotproof llm threshold 0.75

llm vote

Dry-run the LLM voter panel on a strategy's current entry: every vote and the consensus. Never places an order.

Usage: idiotproof llm vote <strategy> [--entry <decimal>]
Risk: read

Parameters:
  <strategy>             Id, id prefix, stamp id (IP-XXXX-XXXX) or symbol. (required)
      --entry <decimal>  Entry price to put to the panel (default: the last 1-minute close).

Examples:
  idiotproof llm vote NVDA
  idiotproof llm vote 0193a2b4 --entry 101.25

llm voting disable

Turn off your own LLM voter gate (a host-wide setting still applies).

Usage: idiotproof llm voting disable
Risk: write

Examples:
  idiotproof llm voting disable

llm voting enable

Turn on the LLM voter gate for your automated entries (needs a Claude key to take effect).

Usage: idiotproof llm voting enable
Risk: write

Examples:
  idiotproof llm voting enable

market

market auctions

Opening and closing auction prices and sizes per day for one or more stocks (SIP, times in ET).

Usage: idiotproof market auctions <symbols>... [--from <date>] [--to <date>]
Risk: read

Parameters:
  <symbols>          One or more tickers, e.g. AAPL MSFT. (required)
      --from <date>  First ET date to include (default: a week ago).
      --to <date>    Last ET date to include (default: today).

Examples:
  idiotproof market auctions AAPL
  idiotproof market auctions SPY QQQ --from 2026-10-26 --to 2026-10-30

market bars

Historical OHLCV bars for a stock at any timeframe, oldest first (times in ET).

Usage: idiotproof market bars <symbol> [--tf <string>] [--from <date>] [--to <date>] [--limit <int>] [--adjustment <string>]
Risk: read

Parameters:
  <symbol>                   Ticker, e.g. AAPL. (required)
      --tf <string>          Bar size: 1Min, 5Min, 15Min, 1Hour, 1Day (default), 1Week, 1Month; short forms 5m, 1h, 1d, 1w, 1mo work too. (default: 1Day)
      --from <date>          First ET date to include (default: enough history for --limit bars).
      --to <date>            Last ET date to include (default: now).
      --limit <int>          Most bars to show (default 30, max 10000). Without --from these are the most recent. (default: 30)
      --adjustment <string>  Corporate-action adjustment: raw, split (default), dividend or all. (default: split)

Examples:
  idiotproof market bars AAPL
  idiotproof market bars NVDA --tf 5Min --limit 50
  idiotproof market bars MSFT --tf 1Day --from 2026-09-01 --to 2026-09-30

market bond-prices

Latest Alpaca fixed income prices and yields for the given ISINs.

Usage: idiotproof market bond-prices <isins>...
Risk: read

Parameters:
  <isins>  One or more bond ISINs (space or comma separated). (required)

Examples:
  idiotproof market bond-prices US912797KA41 US91282CJL54

market candlesticks

Candlestick patterns (engulfing, hammer, shooting star, doji) on a symbol's recent bars.

Usage: idiotproof market candlesticks <symbol> [--timeframe <string>] [--bars <int>] [--all]
Risk: read

Parameters:
  <symbol>                  Ticker, e.g. NVDA. (required)
      --timeframe <string>  Bar size: 1Day (default), 1Hour, 15Min, 5Min or 1Min (what the Monitor's pattern verbs see). (default: 1Day)
      --bars <int>          How many recent bars to scan, newest last (default 30). (default: 30)
      --all                 List every bar, not only the ones with a pattern. (default: false)

Examples:
  idiotproof market candlesticks NVDA
  idiotproof market candlesticks INTC --timeframe 5Min --bars 78 --all

market chart

ASCII candle chart of a symbol across premarket, regular and after-hours sessions (ET); crypto pairs as 24h days.

Usage: idiotproof market chart <symbol> [--days <int>] [--bucket <int>] [--width <int>] [--height <int>] [--volume] [--ascii]
Risk: read

Parameters:
  <symbol>            Ticker to chart, e.g. INTC, or a crypto pair such as BTC/USD (charted as 24h days). (required)
      --days <int>    Trading days to show, oldest first, each as premarket + regular + after-hours (default 2: the prior day and today). (default: 2)
      --bucket <int>  Minutes per time slot: half a character in Braille, one in --ascii (default: the smallest that fits the width).
      --width <int>   Chart width in characters (default: the terminal's, else 118).
      --height <int>  Price pane rows (default 20). (default: 20)
      --volume        Show the volume pane (default on; --no-volume hides it). (default: true)
      --ascii         Pure-ASCII candles (one per character) instead of the high-resolution Braille dots. (default: false)

Examples:
  idiotproof market chart INTC
  idiotproof market chart NVDA --days 3 --bucket 30
  idiotproof market chart BTC/USD --days 3
      Crypto pair: one 24h session per ET day.

market conditions

What each trade or quote condition code means (the codes in market trades/quotes).

Usage: idiotproof market conditions <tick-type> [--tape <a|b|c>]
Risk: read

Parameters:
  <tick-type>         trade or quote. (required)
      --tape <a|b|c>  SIP tape whose codes to list: a (default), b or c. (default: a)

Examples:
  idiotproof market conditions trade
  idiotproof market conditions quote --tape c

market exchanges

Exchange codes used in trades and quotes and the venue each one names.

Usage: idiotproof market exchanges
Risk: read

Examples:
  idiotproof market exchanges

market feed status

The Hub's market data feed: Alpaca SIP/IEX or Mock, whether it can switch, and active strategies per mode.

Usage: idiotproof market feed status
Risk: read

Examples:
  idiotproof market feed status

market feed switch

Switch the Hub's market data to sip, iex or mock (mock refused while Paper/Live strategies are active).

Usage: idiotproof market feed switch <feed>
Risk: write

Parameters:
  <feed>  sip (Alpaca consolidated, Algo Trader Plus), iex (Alpaca free tier) or mock (synthetic prices). (required)

Examples:
  idiotproof market feed switch iex
  idiotproof market feed switch mock
      Only while every active strategy is Sandbox.

market fx

Latest forex rates (bid/mid/ask) or historical rate bars for currency pairs (times in ET).

Usage: idiotproof market fx <pairs>... [--tf <string>] [--from <date>] [--to <date>] [--limit <int>]
Risk: read

Parameters:
  <pairs>            Currency pairs, e.g. USDJPY EURUSD (USD/JPY works too). (required)
      --tf <string>  Historical rate bar size (1Min, 5Min, 1Hour, 1Day...). Giving --tf, --from or --to switches from latest to history.
      --from <date>  First ET date of history (default: enough for --limit bars).
      --to <date>    Last ET date of history (default: now).
      --limit <int>  Most history bars per pair (default 30, max 1000). (default: 30)

Examples:
  idiotproof market fx USDJPY EURUSD
  idiotproof market fx USDJPY --tf 1Day --limit 10
  idiotproof market fx EURUSD --tf 1Hour --from 2026-10-29 --to 2026-10-30

market latest

Latest minute bar, trade or quote for one or more stocks (times in ET).

Usage: idiotproof market latest <kind> <symbols>...
Risk: read

Parameters:
  <kind>     bar (latest minute bar), trade or quote. (required)
  <symbols>  One or more tickers, e.g. AAPL MSFT. (required)

Examples:
  idiotproof market latest bar AAPL MSFT
  idiotproof market latest trade NVDA
  idiotproof market latest quote SPY QQQ
Download a company's logo and save it under %LOCALAPPDATA%\MindAttic\IdiotProof\Logos; reports the path and size.

Usage: idiotproof market logo <symbol> [--placeholder] [--dir <string>]
Risk: write

Parameters:
  <symbol>            Ticker whose logo to fetch, e.g. AAPL. (required)
      --placeholder   When Alpaca has no logo, save its generated placeholder instead of failing. (default: false)
      --dir <string>  Folder to save into (default %LOCALAPPDATA%\MindAttic\IdiotProof\Logos).

Examples:
  idiotproof market logo AAPL
  idiotproof market logo TSLA --placeholder

market meta

All market-data reference codes at once: exchanges plus trade and quote conditions.

Usage: idiotproof market meta [--tape <a|b|c>]
Risk: read

Parameters:
      --tape <a|b|c>  SIP tape whose condition codes to list: a (default), b or c. (default: a)

Examples:
  idiotproof market meta
  idiotproof market meta --tape c

market most-actives

Today's most active stocks by share volume or trade count (Alpaca screener).

Usage: idiotproof market most-actives [--by <volume|trades>] [--top <int>]
Risk: read

Parameters:
      --by <volume|trades>  Rank by share volume (default) or by trade count. (default: volume)
      --top <int>           How many stocks (default 10, max 100). (default: 10)

Examples:
  idiotproof market most-actives
  idiotproof market most-actives --by trades --top 25

market movers

Today's top stock gainers and losers by percent change (Alpaca screener).

Usage: idiotproof market movers [--top <int>]
Risk: read

Parameters:
      --top <int>  How many gainers and how many losers (default 10, max 50). (default: 10)

Examples:
  idiotproof market movers
  idiotproof market movers --top 20

market news

Latest news headlines for one or more stocks, or the whole market (times in ET).

Usage: idiotproof market news [<symbols>...] [--limit <int>] [--from <date>] [--to <date>] [--summary]
Risk: read

Parameters:
  <symbols>          Tickers to filter on, e.g. AAPL TSLA (none = all market news).
      --limit <int>  Most articles to show, newest first (default 10, max 200). (default: 10)
      --from <date>  Earliest ET date to include (default: no bound).
      --to <date>    Latest ET date to include (default: now).
      --summary      Print each article's summary and link under its headline. (default: false)

Examples:
  idiotproof market news AAPL
  idiotproof market news TSLA NVDA --limit 25 --summary
  idiotproof market news --from 2026-10-29

market prev-close

Previous session's close (and full daily bar) for one or more stocks, with the move since.

Usage: idiotproof market prev-close <symbols>...
Risk: read

Parameters:
  <symbols>  One or more tickers, e.g. AAPL MSFT. (required)

Examples:
  idiotproof market prev-close AAPL
  idiotproof market prev-close SPY QQQ IWM

market quote

Latest trade and bid/ask for one or more stocks (Alpaca market data, times in ET).

Usage: idiotproof market quote <symbols>...
Risk: read

Parameters:
  <symbols>  One or more tickers, e.g. AAPL MSFT (commas work too). (required)

Examples:
  idiotproof market quote AAPL
  idiotproof market quote AAPL MSFT NVDA

market quotes

Historical bid/ask quotes for a stock: sizes, exchanges, spread (times in ET).

Usage: idiotproof market quotes <symbol> [--from <date>] [--to <date>] [--limit <int>]
Risk: read

Parameters:
  <symbol>           Ticker, e.g. AAPL. (required)
      --from <date>  First ET date to include (default: the most recent ticks).
      --to <date>    Last ET date to include (default: now).
      --limit <int>  Most ticks to show (default 20, max 10000). Without --from these are the most recent. (default: 20)

Examples:
  idiotproof market quotes AAPL
  idiotproof market quotes SPY --from 2026-10-29 --limit 200

market scan-universe

Screen the tracked ticker universe on live price, volume and % change (Alpaca snapshots); arms nothing.

Usage: idiotproof market scan-universe [--min-price <decimal>] [--max-price <decimal>] [--min-volume <decimal>] [--min-change <decimal>] [--max-change <decimal>] [--exchange <string>] [--sort <volume|change|price|dollar>] [--limit <int>] [--max-symbols <int>]
Risk: read

Parameters:
      --min-price <decimal>                Lowest last price to keep (default 1). (default: 1)
      --max-price <decimal>                Highest last price to keep (default: no cap).
      --min-volume <decimal>               Least shares traded today to keep (default 100000). (default: 100000)
      --min-change <decimal>               Least percent change from the previous close to keep, e.g. 5 or -10 (default: any).
      --max-change <decimal>               Most percent change from the previous close to keep, e.g. -5 for losers only (default: any).
      --exchange <string>                  Only tickers listed on this exchange (NASDAQ, NYSE, AMEX, ARCA, ...).
      --sort <volume|change|price|dollar>  volume (default), change, price or dollar (price x volume); always largest first. (default: volume)
      --limit <int>                        Rows to show (default 25). (default: 25)
      --max-symbols <int>                  Most tracked tickers to quote, after the stored-price prefilter (default 3000). (default: 3000)

Examples:
  idiotproof market scan-universe
  idiotproof market scan-universe --min-price 2 --max-price 20 --min-change 10 --sort change
      Small-cap gappers.
  idiotproof market scan-universe --exchange NASDAQ --min-volume 5000000 --limit 10

market snapshot

One-line snapshot per stock: last, change vs prior close, bid/ask, today's open/high/low/volume.

Usage: idiotproof market snapshot <symbols>...
Risk: read

Parameters:
  <symbols>  One or more tickers, e.g. AAPL MSFT. (required)

Examples:
  idiotproof market snapshot AAPL
  idiotproof market snapshot SPY QQQ NVDA TSLA

market stream status

Websocket health: the Monitor's market data stream, the trade-updates listeners and open market watches (state, connected since, last message, reconnects, errors).

Usage: idiotproof market stream status
Risk: read

Examples:
  idiotproof market stream status

market trades

Historical trade prints for a stock: price, size, exchange, conditions (times in ET).

Usage: idiotproof market trades <symbol> [--from <date>] [--to <date>] [--limit <int>]
Risk: read

Parameters:
  <symbol>           Ticker, e.g. AAPL. (required)
      --from <date>  First ET date to include (default: the most recent ticks).
      --to <date>    Last ET date to include (default: now).
      --limit <int>  Most ticks to show (default 20, max 10000). Without --from these are the most recent. (default: 20)

Examples:
  idiotproof market trades AAPL
  idiotproof market trades TSLA --from 2026-10-29 --to 2026-10-29 --limit 100

market watch

Live market tape over Alpaca's websockets: stock trades/quotes/bars/statuses/LULD, crypto, options and news, merged into one ET-stamped stream.

A terminal streams until Ctrl+C; MCP and --json get a bounded window (--seconds, default 15). Alpaca limits stock-feed connections per account: if the Monitor's stream holds the SIP connection, try --feed iex.

Usage: idiotproof market watch [<symbols>...] [--channels <string[]>] [--news] [--feed <string>] [--options-feed <string>] [--seconds <int>] [--max <int>]
Risk: read

Parameters:
  <symbols>                    Stocks (AAPL), crypto pairs (BTC/USD) and option contracts (AAPL261120C00200000), mixed freely.
      --channels <string[]>    trades, quotes, bars, daily-bars, updated-bars, statuses, lulds (stocks only: statuses, lulds; options: trades, quotes). Default trades,quotes.
      --news                   Also stream news headlines for these symbols (all news when no symbol is given). (default: false)
      --feed <string>          Stock feed: sip, iex or delayed_sip (default: the Hub's market data tier).
      --options-feed <string>  Options feed: opra or indicative (default opra). (default: opra)
      --seconds <int>          Stop after this many seconds (a terminal streams until Ctrl+C; MCP/--json default 15, at most 300).
      --max <int>              Stop after this many lines.

Examples:
  idiotproof market watch AAPL MSFT
  idiotproof market watch NVDA --channels trades,quotes,statuses,lulds
  idiotproof market watch BTC/USD ETH/USD --channels trades,bars
  idiotproof market watch AAPL261120C00200000 --channels quotes
  idiotproof market watch --news

monitor

monitor heartbeat

The Monitor loop's last heartbeat: when it ticked, ok or fail, failures in a row.

Reads the SupervisedLoop heartbeat file (Logs\monitor.heartbeat), which the loop rewrites after every tick, hosted here or not. Exit 3 (blocked) when it is stale.

Usage: idiotproof monitor heartbeat
Risk: read

Examples:
  idiotproof monitor heartbeat

monitor lease

Who holds the Monitor's SQL leader lease (only the holder evaluates and trades).

One Monitor per database trades: it holds sp_getapplock 'IdiotProof.Monitor.Leader'. Shows the holder's PID and machine when SQL Server reports them.

Usage: idiotproof monitor lease
Risk: read

Examples:
  idiotproof monitor lease

monitor pause

Pause the Monitor: from its next tick it evaluates nothing - no entries and NO exits - until resumed.

Sets the SettingsKv flag monitor.paused, honored at the top of every tick (within 2 s). The loop, heartbeat and leader lease stay up. Open positions are not managed while paused - flatten them first if that matters.

Usage: idiotproof monitor pause [--reason <string>]
Risk: write

Parameters:
      --reason <string>  Why (kept with the flag and shown by `monitor status`).

Examples:
  idiotproof monitor pause
  idiotproof monitor pause --reason "news pending"

monitor resume

Resume a paused Monitor (needs a confirmation code when a Live strategy is active).

Clears the SettingsKv flag monitor.paused; the Monitor evaluates again from its next tick. When any active strategy routes Live the first call returns a code: resuming means real-money entries.

Usage: idiotproof monitor resume
Risk: money

Examples:
  idiotproof monitor resume
  idiotproof monitor resume --confirm K7Q2M9

monitor status

Is the Monitor trading? Hosted, lease, last tick, paused, window, active strategies.

Reads the Hub's in-process Monitor state, the SettingsKv pause flag, the SQL leader lease and the heartbeat file. Times are ET.

Usage: idiotproof monitor status
Risk: read

Examples:
  idiotproof monitor status
  idiotproof monitor status --json

monitor tail

Recent Monitor activity: gate verdicts (fire, veto, block, entry, exit, reject) and live condition progress; --follow streams new ones.

A snapshot of the last --minutes of the Monitor's audit trail (your strategies' events plus its start/stop/pause events), newest last, followed by where each of your active strategies stands. --follow keeps pushing new events and progress changes: live in a terminal until Ctrl+C, a bounded window (--seconds, default 15) for MCP and --json.

Usage: idiotproof monitor tail [--lines <int>] [--minutes <int>] [--progress] [--follow] [--seconds <int>]
Risk: read

Parameters:
  -n, --lines <int>    Most recent events to show (1-500). (default: 40)
      --minutes <int>  How far back to look for events (1-1440). (default: 60)
      --progress       Also show each active strategy's live condition progress. (default: true)
  -f, --follow         After the snapshot, keep pushing new events and progress changes (a terminal streams until Ctrl+C; MCP/--json get a bounded window). (default: false)
      --seconds <int>  With --follow: stop after this many seconds, 1-3600 (MCP/--json default 15, at most 300).

Examples:
  idiotproof monitor tail
  idiotproof monitor tail --follow
  idiotproof monitor tail --lines 100 --minutes 390
  idiotproof monitor tail --no-progress

monitor tick-once

Run one evaluation pass over your active strategies and show each verdict - never places, cancels or records an order.

Gate 1 only (entry conditions against fresh bars from the Hub's feed); the LLM panel, RiskGuardian and the broker are never called, and no position, progress row or live bar is written. Without --dry the pass is noted in the audit log.

Usage: idiotproof monitor tick-once [--dry] [--symbol <string>]
Risk: read

Parameters:
      --dry              Write nothing at all (by default the pass is recorded in the audit log as monitor-tick-once). (default: false)
      --symbol <string>  Only strategies on this symbol.

Examples:
  idiotproof monitor tick-once --dry
  idiotproof monitor tick-once --symbol NVDA

options

options bars

Historical OHLCV bars for one option contract.

Usage: idiotproof options bars <occ> [--timeframe <string>] [--start <date>] [--end <date>] [--limit <int>]
Risk: read

Parameters:
  <occ>                     OCC option symbol, e.g. AAPL261120C00250000. (required)
      --timeframe <string>  Bar size: [1-59]Min, [1-23]Hour, 1Day, 1Week or [1,2,3,4,6,12]Month (default 1Day). (default: 1Day)
      --start <date>        First ET date (yyyy-MM-dd); default 30 days back for daily bars, 5 for intraday.
      --end <date>          Last ET date (yyyy-MM-dd); default today.
      --limit <int>         Most bars to return, oldest first (default 200). (default: 200)

Examples:
  idiotproof options bars AAPL261120C00250000
  idiotproof options bars AAPL261120C00250000 --timeframe 15Min --start 2026-10-28

options buy

Buy option contracts to open (level 2+). Sandbox by default; live needs a confirmation code.

Usage: idiotproof options buy <occ> <contracts> [--limit <decimal>] [--mode <sandbox|paper|live>] [--note <string>]
Risk: money

Parameters:
  <occ>                            OCC contract symbol, e.g. AAPL261219C00150000. (required)
  <contracts>                      Whole contracts (each is usually 100 shares). (required)
  -l, --limit <decimal>            Limit price per share (premium). Without it the order is a market order.
  -m, --mode <sandbox|paper|live>  Where it routes: sandbox (simulator, the default), paper, or live (needs confirmation). (default: sandbox)
      --note <string>              Why — kept in the audit trail.

Examples:
  idiotproof options buy AAPL261219C00150000 2 --limit 3.20 --mode paper
      Paper limit buy of 2 calls.
  idiotproof options buy SPY261120P00560000 1 --mode live
      Live market buy; prints a confirmation code first.

options chain

An underlying's option chain for one expiration: calls and puts by strike with bid/ask, IV, delta and open interest.

Usage: idiotproof options chain <symbol> [--expiry <date>] [--horizon <int>] [--strikes <int>] [--feed <indicative|opra>]
Risk: read

Parameters:
  <symbol>                      Underlying ticker, e.g. AAPL. (required)
      --expiry <date>           Expiration date (yyyy-MM-dd) to show; default the nearest one.
      --horizon <int>           Days ahead to list expirations for (default 1098, about 3 years, so LEAPS show; Alpaca's own default is 1 week). (default: 1098)
      --strikes <int>           Strikes to show on each side of the spot price (default 10; 0 shows every strike). (default: 10)
      --feed <indicative|opra>  Options data feed: indicative (default, free) or opra (paid). (default: indicative)

Examples:
  idiotproof options chain AAPL
  idiotproof options chain SPY --expiry 2026-12-18 --strikes 5

options close

Close a whole options position (sells a long, buys back a short) through the gateway.

Usage: idiotproof options close <occ> [--limit <decimal>] [--mode <sandbox|paper|live>] [--note <string>]
Risk: money

Parameters:
  <occ>                            OCC contract symbol of the position to close. (required)
  -l, --limit <decimal>            Limit price per share. Without it the close is a market order.
  -m, --mode <sandbox|paper|live>  Which account holds it: sandbox (default), paper or live (needs confirmation). (default: sandbox)
      --note <string>              Why — kept in the audit trail.

Examples:
  idiotproof options close AAPL261219C00150000 --mode paper
  idiotproof options close SPY261120P00560000 --limit 2.40 --mode live
      Live close; prints a confirmation code first.

options conditions

Options trade or quote condition codes and what they mean.

Usage: idiotproof options conditions [--tick <trade|quote>]
Risk: read

Parameters:
      --tick <trade|quote>  trade (default) or quote condition codes. (default: trade)

Examples:
  idiotproof options conditions
  idiotproof options conditions --tick quote

options contract

Full catalog details of one option contract by OCC symbol or Alpaca id.

Usage: idiotproof options contract <contract>
Risk: read

Parameters:
  <contract>  OCC symbol (e.g. AAPL261120C00250000) or Alpaca contract id. (required)

Examples:
  idiotproof options contract AAPL261120C00250000

options contracts

Search listed option contracts for an underlying by expiry, type, strike range and status.

Usage: idiotproof options contracts <underlying> [--expiry <date>] [--type <call|put>] [--strike-min <decimal>] [--strike-max <decimal>] [--status <active|inactive>] [--horizon <int>] [--limit <int>]
Risk: read

Parameters:
  <underlying>                    Underlying ticker(s), comma separated, e.g. AAPL or AAPL,MSFT. (required)
      --expiry <date>             Only this expiration date (yyyy-MM-dd).
      --type <call|put>           Only calls or only puts.
      --strike-min <decimal>      Lowest strike to include.
      --strike-max <decimal>      Highest strike to include.
      --status <active|inactive>  active (default) or inactive. (default: active)
      --horizon <int>             Without --expiry: days ahead to include (default 1098; Alpaca's own default is only 1 week). (default: 1098)
      --limit <int>               Most contracts to return (default 200, max 10000). (default: 200)

Examples:
  idiotproof options contracts AAPL --expiry 2026-11-20 --type call
  idiotproof options contracts SPY --strike-min 600 --strike-max 650 --limit 50

options do-not-exercise

Opt a held contract out of automatic exercise at expiry (paper or live; live needs a code).

Usage: idiotproof options do-not-exercise <occ> [--mode <sandbox|paper|live>] [--note <string>]
Risk: money

Parameters:
  <occ>                            OCC contract symbol (or Alpaca contract id) of a long position you hold. (required)
  -m, --mode <sandbox|paper|live>  Which Alpaca account: paper (default) or live (needs confirmation). Sandbox can't exercise. (default: paper)
      --note <string>              Why — kept in the audit trail.

Examples:
  idiotproof options do-not-exercise AAPL261219C00150000 --mode paper

options exchanges

Options exchange codes and their names, as they appear in quotes and trades.

Usage: idiotproof options exchanges
Risk: read

Examples:
  idiotproof options exchanges

options exercise

Exercise a long option you hold (Alpaca paper or live; live needs a confirmation code).

Usage: idiotproof options exercise <occ> [--mode <sandbox|paper|live>] [--note <string>]
Risk: money

Parameters:
  <occ>                            OCC contract symbol (or Alpaca contract id) of a long position you hold. (required)
  -m, --mode <sandbox|paper|live>  Which Alpaca account: paper (default) or live (needs confirmation). Sandbox can't exercise. (default: paper)
      --note <string>              Why — kept in the audit trail.

Examples:
  idiotproof options exercise AAPL261219C00150000
      Paper: exercise now.
  idiotproof options exercise AAPL261219C00150000 --mode live
      Prints a confirmation code first.

options glossary

Plain-English options jargon (hype, breakeven, IV, sell to close, ...): every term, or one in full.

Usage: idiotproof options glossary [<term>]
Risk: read

Parameters:
  <term>  A glossary key or title word (hype, breakeven, iv, sell-to-close, ...); omit to list every term.

Examples:
  idiotproof options glossary
  idiotproof options glossary hype
      The full explanation of one term.

options greeks

Delta, gamma, theta, vega and rho for one option contract; badged Model when computed locally.

Usage: idiotproof options greeks <occ> [--spot <decimal>] [--rate <decimal>] [--feed <indicative|opra>]
Risk: read

Parameters:
  <occ>                         OCC option symbol: ROOT + YYMMDD + C|P + strike x 1000 (8 digits), e.g. AAPL261120C00250000. (required)
      --spot <decimal>          Underlying price to use instead of Alpaca's last trade.
      --rate <decimal>          Risk-free rate in percent, e.g. 4.25 (default: the Options page setting, else 4).
      --feed <indicative|opra>  Options data feed: indicative (default, free) or opra (paid). (default: indicative)

Examples:
  idiotproof options greeks AAPL261120C00250000
  idiotproof options greeks SPY261218P00600000 --spot 640 --rate 4.25

options iv

Implied volatility for one option contract: Alpaca's, plus IV solved locally at bid, mid, ask and last.

Usage: idiotproof options iv <occ> [--spot <decimal>] [--rate <decimal>] [--feed <indicative|opra>]
Risk: read

Parameters:
  <occ>                         OCC option symbol: ROOT + YYMMDD + C|P + strike x 1000 (8 digits), e.g. AAPL261120C00250000. (required)
      --spot <decimal>          Underlying price to use instead of Alpaca's last trade.
      --rate <decimal>          Risk-free rate in percent, e.g. 4.25 (default: the Options page setting, else 4).
      --feed <indicative|opra>  Options data feed: indicative (default, free) or opra (paid). (default: indicative)

Examples:
  idiotproof options iv AAPL261120C00250000
  idiotproof options iv AAPL261120C00250000 --spot 255

options latest

Latest NBBO quote and latest trade for one option contract, with exchanges and sizes.

Usage: idiotproof options latest <occ> [--feed <indicative|opra>]
Risk: read

Parameters:
  <occ>                         OCC option symbol: ROOT + YYMMDD + C|P + strike x 1000 (8 digits), e.g. AAPL261120C00250000. (required)
      --feed <indicative|opra>  Options data feed: indicative (default, free) or opra (paid). (default: indicative)

Examples:
  idiotproof options latest AAPL261120C00250000

options level

Options trading level (effective and approved) and options buying power for your Alpaca accounts.

Usage: idiotproof options level [--mode <all|paper|live>]
Risk: read

Parameters:
      --mode <all|paper|live>  paper, live or all (default all). (default: all)

Examples:
  idiotproof options level
  idiotproof options level --mode paper

options positions

Open option contracts in your Alpaca accounts: strike, expiry, DTE, cost, value and unrealized P&L.

Usage: idiotproof options positions [--mode <all|paper|live>]
Risk: read

Parameters:
      --mode <all|paper|live>  paper, live or all (default all). (default: all)

Examples:
  idiotproof options positions
  idiotproof options positions --mode live

options quote

Latest bid/ask, mid, spread and last trade for one option contract (OCC symbol).

Usage: idiotproof options quote <occ> [--feed <indicative|opra>]
Risk: read

Parameters:
  <occ>                         OCC option symbol: ROOT + YYMMDD + C|P + strike x 1000 (8 digits), e.g. AAPL261120C00250000. (required)
      --feed <indicative|opra>  Options data feed: indicative (default, free) or opra (paid). (default: indicative)

Examples:
  idiotproof options quote AAPL261120C00250000
  idiotproof options quote SPY261218P00600000 --feed opra

options sell

Sell option contracts you hold (sell to close), or write them with --open (level 1+).

Usage: idiotproof options sell <occ> <contracts> [--limit <decimal>] [--mode <sandbox|paper|live>] [--open] [--note <string>]
Risk: money

Parameters:
  <occ>                            OCC contract symbol, e.g. AAPL261219C00150000. (required)
  <contracts>                      Whole contracts (each is usually 100 shares). (required)
  -l, --limit <decimal>            Limit price per share (premium). Without it the order is a market order.
  -m, --mode <sandbox|paper|live>  Where it routes: sandbox (simulator, the default), paper, or live (needs confirmation). (default: sandbox)
      --open                       Write (sell to open, level 1+: covered call / cash-secured put) instead of selling contracts you hold. (default: false)
      --note <string>              Why — kept in the audit trail.

Examples:
  idiotproof options sell AAPL261219C00150000 2 --limit 4.10 --mode paper
      Take profit on 2 calls you hold.
  idiotproof options sell AAPL261219C00170000 1 --open --limit 1.05 --mode paper
      Write a covered call.

options signals

Sell-the-hype nudges on your open long options: hype near its session high plus bullish news (never places anything).

Usage: idiotproof options signals [--mode <all|paper|live>]
Risk: read

Parameters:
      --mode <all|paper|live>  paper, live or all (default all). (default: all)

Examples:
  idiotproof options signals
  idiotproof options signals --mode paper

options snapshot

Alpaca's full snapshot of one option contract: latest quote and trade, daily bars, IV and Greeks.

Usage: idiotproof options snapshot <occ> [--feed <indicative|opra>]
Risk: read

Parameters:
  <occ>                         OCC option symbol: ROOT + YYMMDD + C|P + strike x 1000 (8 digits), e.g. AAPL261120C00250000. (required)
      --feed <indicative|opra>  Options data feed: indicative (default, free) or opra (paid). (default: indicative)

Examples:
  idiotproof options snapshot AAPL261120C00250000

options spread

Place a 2-4 leg options order (verticals, straddles, ratios...) as one Alpaca multi-leg order; level 3, max-loss preview, live needs a code.

Usage: idiotproof options spread <legs>... [--qty <int>] [--limit <decimal>] [--mode <sandbox|paper|live>] [--note <string>]
Risk: money

Parameters:
  <legs>                           2 to 4 legs, each side:OCC[:ratio][:close], e.g. buy:AAPL261219C00150000 sell:AAPL261219C00160000. Legs open unless :close. (required)
  -q, --qty <int>                  How many spreads (each leg trades ratio x qty contracts). Default 1. (default: 1)
  -l, --limit <decimal>            Net price per spread per share: positive = debit you pay, negative = credit you take. Without it the order is a market order.
  -m, --mode <sandbox|paper|live>  paper (default) or live (needs confirmation). The Sandbox simulator does not fill multi-leg orders. (default: paper)
      --note <string>              Why — kept in the audit trail.

Examples:
  idiotproof options spread buy:AAPL261219C00150000 sell:AAPL261219C00160000 --limit 3.10
      Paper bull call spread for a $3.10 debit.
  idiotproof options spread sell:SPY261120P00560000 buy:SPY261120P00550000 --limit -1.25 --qty 2 --mode live
      Live put credit spread; prints a confirmation code first.

options trades

Historical trades (prints) for one option contract, newest first.

Usage: idiotproof options trades <occ> [--start <date>] [--end <date>] [--limit <int>]
Risk: read

Parameters:
  <occ>               OCC option symbol, e.g. AAPL261120C00250000. (required)
      --start <date>  First ET date (yyyy-MM-dd); default 7 days back.
      --end <date>    Last ET date (yyyy-MM-dd); default today.
      --limit <int>   Most trades to return, newest first (default 50). (default: 50)

Examples:
  idiotproof options trades AAPL261120C00250000
  idiotproof options trades AAPL261120C00250000 --start 2026-10-29 --limit 200

options value

Intrinsic and extrinsic value, breakeven, DTE and Black-Scholes price for one option contract.

Usage: idiotproof options value <occ> [--spot <decimal>] [--premium <decimal>] [--iv <decimal>] [--rate <decimal>] [--feed <indicative|opra>]
Risk: read

Parameters:
  <occ>                         OCC option symbol: ROOT + YYMMDD + C|P + strike x 1000 (8 digits), e.g. AAPL261120C00250000. (required)
      --spot <decimal>          Underlying price to value at (what-if) instead of Alpaca's last trade.
      --premium <decimal>       Premium per share to value instead of the current mid, e.g. what you paid.
      --iv <decimal>            Implied volatility in percent for the Black-Scholes price, e.g. 35 (default Alpaca's IV).
      --rate <decimal>          Risk-free rate in percent, e.g. 4.25 (default: the Options page setting, else 4).
      --feed <indicative|opra>  Options data feed: indicative (default, free) or opra (paid). (default: indicative)

Examples:
  idiotproof options value AAPL261120C00250000
  idiotproof options value AAPL261120C00250000 --spot 260 --premium 4.10

orders

orders bracket

Entry plus a take-profit and a stop-loss that cancel each other (Alpaca bracket). The stop-loss is the Risk Guardian's stop.

Usage: idiotproof orders bracket <symbol> <side> <qty> [--limit <decimal>] [--take-profit <decimal>] [--stop-loss <decimal>] [--stop-loss-limit <decimal>] [--tif <string>] [--client-id <string>] [--stop <decimal>] [--mode <sandbox|paper|live>] [--note <string>]
Risk: money

Parameters:
  <symbol>                         Ticker, e.g. NVDA. (required)
  <side>                           buy or sell (the parent's side; an OCO's side closes the position: sell exits a long). (required)
  <qty>                            Whole shares. (required)
  -l, --limit <decimal>            Entry limit price (bracket/OTO). Without it the entry is a market order.
      --take-profit <decimal>      Take-profit child's limit price.
      --stop-loss <decimal>        Stop-loss child's stop price.
      --stop-loss-limit <decimal>  Make the stop-loss a stop-limit with this limit price.
      --tif <string>               Time in force: day (default) or gtc. (default: day)
      --client-id <string>         Your own id for the parent order (Alpaca client_order_id).
  -s, --stop <decimal>             Planned protective stop for the Risk Guardian when the order has no stop-loss child (OTO with only a take-profit).
  -m, --mode <sandbox|paper|live>  Where it routes: sandbox (simulator, the default), paper, or live (needs confirmation). (default: sandbox)
      --note <string>              Why — kept in the audit trail.

Examples:
  idiotproof orders bracket NVDA buy 10 --limit 131 --take-profit 140 --stop-loss 127 --tif gtc --mode paper
  idiotproof orders bracket AAPL buy 5 --take-profit 240 --stop-loss 220 --stop-loss-limit 219.5
      Market entry; the stop-loss is a stop-limit.

orders cancel

Cancel one working order through the gateway (audited; live needs a confirmation code).

Usage: idiotproof orders cancel <id> [--mode <sandbox|paper|live>] [--note <string>]
Risk: money

Parameters:
  <id>                             The order id (from `orders list`). (required)
  -m, --mode <sandbox|paper|live>  The account the order is in: paper (default), live (needs confirmation) or sandbox. (default: paper)
      --note <string>              Why — kept in the audit trail.

Examples:
  idiotproof orders cancel 61e69015-8549-4bfd-b9c3-01e75843f47d
  idiotproof orders cancel 61e69015-8549-4bfd-b9c3-01e75843f47d --mode live

orders cancel-all

Cancel every open order in an account, or only one symbol's, through the gateway (live needs a confirmation code).

Usage: idiotproof orders cancel-all [--symbol <string>] [--mode <sandbox|paper|live>] [--note <string>]
Risk: money

Parameters:
      --symbol <string>            Only this symbol's open orders. Without it, every open order in the account.
  -m, --mode <sandbox|paper|live>  The account: paper (default), live (needs confirmation) or sandbox. (default: paper)
      --note <string>              Why — kept in the audit trail.

Examples:
  idiotproof orders cancel-all --mode paper
  idiotproof orders cancel-all --symbol NVDA --mode live

orders history

Closed Alpaca orders (filled, cancelled, expired, rejected) over the last N days, newest first, with fill prices and totals.

Usage: idiotproof orders history [--days <int>] [--symbol <string>] [--mode <all|paper|live>]
Risk: read

Parameters:
      --days <int>             How far back, in days (default 7, up to 365). (default: 7)
      --symbol <string>        Only orders for these symbols (comma-separated).
      --mode <all|paper|live>  paper, live or all (default all). (default: all)

Examples:
  idiotproof orders history
  idiotproof orders history --days 30 --symbol NVDA --mode paper

orders list

Your Alpaca orders (open by default) in the paper and live accounts, newest first, with bracket/OCO legs.

Usage: idiotproof orders list [--status <open|closed|all>] [--symbol <string>] [--side <string>] [--limit <int>] [--mode <all|paper|live>]
Risk: read

Parameters:
      --status <open|closed|all>  open (default: working orders), closed (filled/cancelled/expired) or all. (default: open)
      --symbol <string>           Only orders for these symbols (comma-separated).
      --side <string>             Only buy or sell orders.
      --limit <int>               Most orders per account (default 50, Alpaca's max 500). (default: 50)
      --mode <all|paper|live>     paper, live or all (default all). (default: all)

Examples:
  idiotproof orders list
  idiotproof orders list --status closed --symbol NVDA --mode paper

orders oco

Exit a held position with a take-profit limit and a stop-loss; whichever fills cancels the other (Alpaca OCO).

Usage: idiotproof orders oco <symbol> <side> <qty> [--limit <decimal>] [--take-profit <decimal>] [--stop-loss <decimal>] [--stop-loss-limit <decimal>] [--tif <string>] [--client-id <string>] [--stop <decimal>] [--mode <sandbox|paper|live>] [--note <string>]
Risk: money

Parameters:
  <symbol>                         Ticker, e.g. NVDA. (required)
  <side>                           buy or sell (the parent's side; an OCO's side closes the position: sell exits a long). (required)
  <qty>                            Whole shares. (required)
  -l, --limit <decimal>            Entry limit price (bracket/OTO). Without it the entry is a market order.
      --take-profit <decimal>      Take-profit child's limit price.
      --stop-loss <decimal>        Stop-loss child's stop price.
      --stop-loss-limit <decimal>  Make the stop-loss a stop-limit with this limit price.
      --tif <string>               Time in force: day (default) or gtc. (default: day)
      --client-id <string>         Your own id for the parent order (Alpaca client_order_id).
  -s, --stop <decimal>             Planned protective stop for the Risk Guardian when the order has no stop-loss child (OTO with only a take-profit).
  -m, --mode <sandbox|paper|live>  Where it routes: sandbox (simulator, the default), paper, or live (needs confirmation). (default: sandbox)
      --note <string>              Why — kept in the audit trail.

Examples:
  idiotproof orders oco NVDA sell 10 --take-profit 140 --stop-loss 127 --tif gtc --mode paper

orders oto

Entry that, once filled, triggers ONE child: a take-profit or a stop-loss (Alpaca OTO).

Usage: idiotproof orders oto <symbol> <side> <qty> [--limit <decimal>] [--take-profit <decimal>] [--stop-loss <decimal>] [--stop-loss-limit <decimal>] [--tif <string>] [--client-id <string>] [--stop <decimal>] [--mode <sandbox|paper|live>] [--note <string>]
Risk: money

Parameters:
  <symbol>                         Ticker, e.g. NVDA. (required)
  <side>                           buy or sell (the parent's side; an OCO's side closes the position: sell exits a long). (required)
  <qty>                            Whole shares. (required)
  -l, --limit <decimal>            Entry limit price (bracket/OTO). Without it the entry is a market order.
      --take-profit <decimal>      Take-profit child's limit price.
      --stop-loss <decimal>        Stop-loss child's stop price.
      --stop-loss-limit <decimal>  Make the stop-loss a stop-limit with this limit price.
      --tif <string>               Time in force: day (default) or gtc. (default: day)
      --client-id <string>         Your own id for the parent order (Alpaca client_order_id).
  -s, --stop <decimal>             Planned protective stop for the Risk Guardian when the order has no stop-loss child (OTO with only a take-profit).
  -m, --mode <sandbox|paper|live>  Where it routes: sandbox (simulator, the default), paper, or live (needs confirmation). (default: sandbox)
      --note <string>              Why — kept in the audit trail.

Examples:
  idiotproof orders oto NVDA buy 10 --limit 131 --stop-loss 127 --mode paper
  idiotproof orders oto NVDA buy 10 --limit 131 --take-profit 140 --stop 127
      Take-profit child; --stop is the planned stop for the Risk Guardian.

orders place

Place any single Alpaca order: market/limit/stop/stop-limit/trailing, every TIF, fractional or notional, client id, position intent. Through the gateway; live needs a code.

Usage: idiotproof orders place <symbol> <side> [<qty>] [--notional <decimal>] [--type <market|limit|stop|stop-limit|trailing-stop>] [--limit <decimal>] [--stop-price <decimal>] [--trail-percent <decimal>] [--trail-price <decimal>] [--tif <string>] [--ext] [--client-id <string>] [--intent <string>] [--stop <decimal>] [--target <decimal>] [--mode <sandbox|paper|live>] [--note <string>]
Risk: money

Parameters:
  <symbol>                                                 Ticker, e.g. NVDA. (required)
  <side>                                                   buy or sell. (required)
  <qty>                                                    Shares; fractions allowed (0.25, DAY only). Leave out and pass --notional to size by dollars.
      --notional <decimal>                                 Size by dollar amount instead of shares (DAY only).
      --type <market|limit|stop|stop-limit|trailing-stop>  market, limit, stop, stop-limit or trailing-stop. Default: worked out from the prices given (none = market).
  -l, --limit <decimal>                                    Limit price (limit and stop-limit orders).
      --stop-price <decimal>                               Stop trigger price (stop and stop-limit orders).
      --trail-percent <decimal>                            Trailing stop distance in percent.
      --trail-price <decimal>                              Trailing stop distance in dollars.
      --tif <string>                                       Time in force: day (default), gtc, opg (at the open), cls (at the close), ioc or fok. (default: day)
      --ext                                                Extended hours (premarket/after-hours); limit + day only. (default: false)
      --client-id <string>                                 Your own order id (Alpaca client_order_id, up to 128 characters).
      --intent <string>                                    Position intent: buy-to-open, buy-to-close, sell-to-open or sell-to-close.
  -s, --stop <decimal>                                     Planned protective stop for an entry (the Risk Guardian refuses entries without one).
  -t, --target <decimal>                                   Planned take-profit (for the reward:risk check).
  -m, --mode <sandbox|paper|live>                          Where it routes: sandbox (simulator, the default), paper, or live (needs confirmation). (default: sandbox)
      --note <string>                                      Why — kept in the audit trail.

Examples:
  idiotproof orders place NVDA buy 10 --limit 131.20 --stop 127.50 --tif gtc --mode paper
  idiotproof orders place AAPL buy 0.5 --stop 220 --mode paper
      Fractional market buy (DAY only).
  idiotproof orders place TSLA sell 5 --type trailing-stop --trail-percent 3 --tif gtc --mode paper
      Trailing stop exit.
  idiotproof orders place NVDA sell 10 --type stop-limit --stop-price 120 --limit 119.5 --client-id exit-nvda-1 --mode live

orders replace

Change a working order's quantity, limit/stop/trail, TIF or client id (Alpaca PATCH; it gets a new id). Through the gateway; live needs a code.

Usage: idiotproof orders replace <id> [--qty <decimal>] [--limit <decimal>] [--stop-price <decimal>] [--trail <decimal>] [--tif <string>] [--client-id <string>] [--stop <decimal>] [--mode <sandbox|paper|live>] [--note <string>]
Risk: money

Parameters:
  <id>                             The working order to change (from `orders list`). (required)
      --qty <decimal>              New share count (fractions allowed).
  -l, --limit <decimal>            New limit price.
      --stop-price <decimal>       New stop trigger price.
      --trail <decimal>            New trailing distance, in the order's own unit (percent or dollars).
      --tif <string>               New time in force: day, gtc, opg, cls, ioc or fok.
      --client-id <string>         New client order id for the replacement order.
      --stop <decimal>             Protective stop for the position, needed when --qty raises an entry's size (the Risk Guardian checks the whole new size).
  -m, --mode <sandbox|paper|live>  The account the order is in: paper (default) or live (needs confirmation). (default: paper)
      --note <string>              Why — kept in the audit trail.

Examples:
  idiotproof orders replace 61e69015-8549-4bfd-b9c3-01e75843f47d --limit 131.50
  idiotproof orders replace 61e69015-8549-4bfd-b9c3-01e75843f47d --qty 5 --tif gtc --mode live

orders show

One Alpaca order in full, by id or client id: prices, fills, timestamps (ET) and its nested bracket/OCO/OTO/multi-leg legs.

Usage: idiotproof orders show [<id>] [--client-id <string>] [--mode <all|paper|live>]
Risk: read

Parameters:
  <id>                         The Alpaca order id (from `orders list`). Leave out and pass --client-id to look up by your own id.
      --client-id <string>     Look the order up by its client order id instead.
      --mode <all|paper|live>  paper, live or all (default all: whichever account has it). (default: all)

Examples:
  idiotproof orders show 61e69015-8549-4bfd-b9c3-01e75843f47d
  idiotproof orders show --client-id exit-nvda-1 --mode paper

orders stream

Live order events from Alpaca (new, fill, partial fill, canceled, replaced, rejected, expired); the Hub records every fill in the trade diary and audit log.

Starts (or joins) the Hub's trade_updates listener for each account; once started it keeps recording fills until the Hub stops. A terminal streams events until Ctrl+C; MCP and --json get the events of a bounded window (--seconds, default 15) plus the last few seen.

Usage: idiotproof orders stream [--mode <all|paper|live>] [--fills-only] [--seconds <int>] [--max <int>]
Risk: read

Parameters:
      --mode <all|paper|live>  paper, live or all (default all: every account with keys). (default: all)
      --fills-only             Show only fills and partial fills. (default: false)
      --seconds <int>          Stop after this many seconds (a terminal streams until Ctrl+C; MCP/--json default 15, at most 300).
      --max <int>              Stop after this many events.

Examples:
  idiotproof orders stream
  idiotproof orders stream --mode paper --fills-only

positions

positions close

Close (or trim) one Alpaca position as a market exit through the TransactionGateway. Live needs a confirmation code.

Usage: idiotproof positions close <symbol> [--qty <decimal>] [--percentage <decimal>] [--mode <sandbox|paper|live>] [--preview]
Risk: money

Parameters:
  <symbol>                         Ticker or OCC option symbol of the position to close, e.g. NVDA. (required)
      --qty <decimal>              Close only this many shares/contracts (default: all of it).
      --percentage <decimal>       Close this percent of the position (0-100) instead of all of it.
  -m, --mode <sandbox|paper|live>  Which Alpaca account: paper (default) or live (needs a confirmation code). (default: paper)
      --preview                    Run every gate and show the exit without sending it. (default: false)

Examples:
  idiotproof positions close HIHO --mode paper
  idiotproof positions close NVDA --percentage 50 --mode paper
      Sell half.
  idiotproof positions close TSLA --qty 5 --mode live
      Prints a confirmation code first.

positions close-all

Close every Alpaca position in one account with market exits through the TransactionGateway; optionally cancel open orders first. Live needs a confirmation code.

Usage: idiotproof positions close-all [--cancel-orders] [--mode <sandbox|paper|live>] [--preview]
Risk: money

Parameters:
      --cancel-orders              Cancel every open order first (frees shares held by working sells/stops). (default: false)
  -m, --mode <sandbox|paper|live>  Which Alpaca account: paper (default) or live (one confirmation code covers the whole set). (default: paper)
      --preview                    Run every gate and list everything that would close, without sending anything. (default: false)

Examples:
  idiotproof positions close-all --preview
      List what would close in paper; send nothing.
  idiotproof positions close-all --cancel-orders --mode paper
  idiotproof positions close-all --cancel-orders --mode live
      Prints the full list and one confirmation code.

positions list

Every open position in your Alpaca paper and live accounts: price, today's move, unrealized P&L.

Usage: idiotproof positions list [--mode <all|paper|live>]
Risk: read

Parameters:
      --mode <all|paper|live>  paper, live or all (default all). (default: all)

Examples:
  idiotproof positions list
  idiotproof positions list --mode paper

positions reconcile

Read-only report: what Alpaca actually holds vs what your strategies book (PositionQty), per account.

Usage: idiotproof positions reconcile [--mode <all|paper|live>] [--problems]
Risk: read

Parameters:
      --mode <all|paper|live>  paper, live or all (default all). (default: all)
      --problems               Only the rows where the broker and the strategies disagree. (default: false)

Examples:
  idiotproof positions reconcile
  idiotproof positions reconcile --mode paper --problems

positions show

One position in your Alpaca paper/live accounts, the IdiotProof strategy that owns it, and its latest trade-diary row.

Usage: idiotproof positions show <symbol> [--mode <all|paper|live>]
Risk: read

Parameters:
  <symbol>                     Ticker, OCC option symbol or crypto pair, e.g. NVDA. (required)
      --mode <all|paper|live>  paper, live or all (default all). (default: all)

Examples:
  idiotproof positions show NVDA
  idiotproof positions show HIHO --mode paper

prefs

prefs get

Show your preferences: theme, account pill and Risk Guardian limits.

Usage: idiotproof prefs get [<field>]
Risk: read

Parameters:
  <field>  One preference (theme, account-type, risk.max-loss-per-trade, ...); omit for all.

Examples:
  idiotproof prefs get
  idiotproof prefs get risk.max-loss-per-day

prefs set

Change one of your preferences (risk limits keep the Settings page's sanity rules).

Usage: idiotproof prefs set <field> <value>
Risk: write

Parameters:
  <field>  theme, account-type or a risk.* limit (see `prefs get`). (required)
  <value>  The new value. (required)

Examples:
  idiotproof prefs set risk.max-loss-per-day 250
  idiotproof prefs set account-type paper

replay

replay all

Replay every strategy family on one ticker/day and rank them by realized P&L (best fit first).

Usage: idiotproof replay all <symbol> [<date>] [--pages] [--out <string>]
Risk: write

Parameters:
  <symbol>            The ticker to try every family on. (required)
  <date>              The ET trading day (yyyy-MM-dd); default the last completed trading day.
      --pages         Render each run's page and the archive indexes (HTML only). (default: true)
      --out <string>  Archive folder for the pages (default the mindattic.com replays folder).

Examples:
  idiotproof replay all NVDA 2026-10-29
  idiotproof replay all ABCD --no-pages

replay compare

Two replay runs side by side: strategy, day, fires, round-trips, win rate, hold time and P&L, with the difference.

Usage: idiotproof replay compare <run-a> <run-b>
Risk: read

Parameters:
  <run-a>  First run id or prefix. (required)
  <run-b>  Second run id or prefix. (required)

Examples:
  idiotproof replay compare 0190a3f2 0190b7c1

replay families

The built-in strategy families `replay run --family` and `replay all` use, with what each trades.

Usage: idiotproof replay families
Risk: read

Examples:
  idiotproof replay families

replay list

The replay archive, newest first: ticker, day, strategy, sim or live, fired and P&L.

Usage: idiotproof replay list [--symbol <string>] [--since <date>] [--kind <string>] [--fired] [--limit <int>]
Risk: read

Parameters:
      --symbol <string>  Only this ticker.
      --since <date>     Only runs of ET trading days on or after this date (yyyy-MM-dd).
      --kind <string>    Only sim (hypothetical replays) or live (the Monitor's real trades).
      --fired            Only runs that fired. (default: false)
      --limit <int>      At most this many runs, newest first (default 50). (default: 50)

Examples:
  idiotproof replay list
  idiotproof replay list --symbol NVDA --since 2026-10-01 --fired

replay live

Render the Monitor's real trades for a day (from the trade diary) on that day's bars as LIVE runs in the archive.

Usage: idiotproof replay live [<symbol>] [--date <date>] [--pages] [--out <string>]
Risk: write

Parameters:
  <symbol>            Only this ticker (default every ticker the Monitor traded that day).
  -d, --date <date>   The ET day whose real trades to render (default today ET).
      --pages         Render the run pages and archive indexes (HTML only; publishing stays manual). (default: true)
      --out <string>  Archive folder for the pages (default the mindattic.com replays folder).

Examples:
  idiotproof replay live
  idiotproof replay live NVDA --date 2026-10-29

replay regen

Regenerate the replay archive's HTML (every run page and index) from SQL; never uploads or deploys.

Usage: idiotproof replay regen [--out <string>]
Risk: write

Parameters:
      --out <string>  Archive folder to (re)write (default the mindattic.com replays folder).

Examples:
  idiotproof replay regen
  idiotproof replay regen --out C:\temp\replays

replay run

Replay a strategy, gapper profile or built-in family over one past day with the Monitor's own evaluator; saves the run and its page.

Usage: idiotproof replay run <symbol> [<date>] [--strategy <string>] [--profile <string>] [--family <string>] [--repeat] [--pages] [--out <string>]
Risk: write

Parameters:
  <symbol>                 The ticker to replay. (required)
  <date>                   The ET trading day (yyyy-MM-dd); default the last completed trading day.
  -s, --strategy <string>  Replay this saved strategy (id, id prefix, stamp id or symbol) instead of the symbol's own.
  -p, --profile <string>   Replay a gapper profile on the fly (e.g. classic-gapper, penny-runner).
  -f, --family <string>    Replay a built-in family (momentum, reversal, rsireversal, emabreak, rthdrive, shortfade, swingreversal).
  -r, --repeat             Re-arm after every exit to show each round-trip the day offered. (default: false)
      --pages              Render the run page and archive indexes (HTML only; publishing stays manual). (default: true)
      --out <string>       Archive folder for the pages (default the mindattic.com replays folder).

Examples:
  idiotproof replay run NVDA 2026-10-29
  idiotproof replay run ABCD 2026-10-29 --profile penny-runner
  idiotproof replay run TSLA --family rthdrive --repeat --no-pages

replay show

One replay run: its round-trips with entry features and its per-bar features (OHLCV, VWAP, volume ratio, conditions passed).

Usage: idiotproof replay show <run> [--bars <string>]
Risk: read

Parameters:
  <run>                Run id or its first 6+ characters (from `replay list`). (required)
      --bars <string>  Which per-bar rows to print: marked (entries/exits, default), session (in-session bars) or all. (default: marked)

Examples:
  idiotproof replay show 0190a3f2
  idiotproof replay show 0190a3f2 --bars session

research

research analyze

Extract catalysts and portents from a ticker's news, a URL or pasted text via the LLM (--save to keep them).

Uses your Claude key (else the host's). Without --save nothing is written; with --save the claims join the research feed like scanned ones.

Usage: idiotproof research analyze <target> [--ticker <string>] [--text <string>] [--source <string>] [--days <int>] [--max-articles <int>] [--save]
Risk: write

Parameters:
  <target>                  A ticker (analyzes its recent Alpaca news, or --text) or an http(s) URL of an article or filing. (required)
      --ticker <string>     The company a URL is about (required with a URL).
      --text <string>       Analyze this text instead of fetching anything.
      --source <string>     Source name to record (default: the URL's host, Alpaca's outlet, or "manual").
      --days <int>          News lookback for a ticker, 1-30 days (default 3). (default: 3)
      --max-articles <int>  Most news articles to analyze for a ticker, 1-20 (default 5). (default: 5)
      --save                Persist the extracted claims to the research feed (skips a URL already analyzed). (default: false)

Examples:
  idiotproof research analyze NVDA
  idiotproof research analyze https://www.sec.gov/Archives/edgar/data/1045810/x.htm --ticker NVDA --save
  idiotproof research analyze AMD --text "AMD signs a preliminary $4B supply deal, closing next quarter"

research backfill

Record what each old enough claim's stock actually did (Alpaca daily closes) and settle portents.

Usage: idiotproof research backfill [--min-wait-days <int>] [--window-days <int>] [--max <int>]
Risk: write

Parameters:
      --min-wait-days <int>  Only claims at least this many days old, 1-365 (default 5). (default: 5)
      --window-days <int>    Measure the price move this many days after the claim, 1-365 (default 7). (default: 7)
      --max <int>            Most claims to backfill this run, 1-5000 (default 200). (default: 200)

Examples:
  idiotproof research backfill
  idiotproof research backfill --min-wait-days 10 --window-days 10 --max 500

research claim

One research claim in full: source, trigger, outcome, insider lines and its score breakdown.

Usage: idiotproof research claim <claim>
Risk: read

Parameters:
  <claim>  Claim id, or the 8-character prefix `research claims` shows. (required)

Examples:
  idiotproof research claim 3f2a91c0

research claims

Ranked research feed: catalysts and portents by significance score, filterable by ticker, date, score and macro.

Usage: idiotproof research claims [--ticker <string>] [--since <date>] [--min-score <number>] [--macro] [--portents] [--limit <int>]
Risk: read

Parameters:
      --ticker <string>     Only claims about this symbol (and macro claims that name it).
      --since <date>        First ET date a claim was found, yyyy-MM-dd (default: 14 days ago).
      --min-score <number>  Only claims scored at least this (0-100); unscored claims are left out.
      --macro               Only macro/regulatory claims (no single ticker). (default: false)
      --portents            Only pending portents: announced, not yet happened. (default: false)
      --limit <int>         Most claims to show, 1-500 (default 50). (default: 50)

Examples:
  idiotproof research claims
  idiotproof research claims --ticker NVDA --since 2026-10-01
  idiotproof research claims --min-score 60 --portents
  idiotproof research claims --macro

research gappers build-universe

Gapper study T1/T6 + universe: every Alpaca us_equity asset's daily bars and splits, then U(D), exclusions, candidates, ADV deciles and price tiers per the frozen protocol, and sample.json.

Research rows only, on the research database (the connection string must name a database containing '_Research_'); read-only market data; no orders. Every number comes from docs/research/gapper-study-2026-11/params.json. Resumable: covered symbols are not re-pulled; universe rows for the range are rebuilt.

Usage: idiotproof research gappers build-universe --from <date> --to <date> [--smoke] [--symbols <string>] [--max-calls <int>]
Risk: read

Parameters:
      --from <date>       First trading day D of the universe (ET, yyyy-MM-dd). (required)
      --to <date>         Last trading day D (ET, yyyy-MM-dd). (required)
      --smoke             Smoke run: only --symbols, daily bars from 60 days before --from, rows tagged split 'smoke', sample.smoke.json. (default: false)
      --symbols <string>  Comma-separated symbols for a --smoke run.
      --max-calls <int>   Stop pulling after this many Alpaca requests (0 = no cap); the run stays resumable. (default: 0)

Examples:
  idiotproof research gappers build-universe --from 2021-11-01 --to 2026-10-30
  idiotproof research gappers build-universe --smoke --symbols GOGO,STAK,BE --from 2026-11-03 --to 2026-11-05

research gappers catalysts

Re-run the deterministic CatalystPreClassifier over every backfilled catalyst row (idempotent) and spend an optional Haiku budget on rows never classified; each article/filing is classified at most once.

Research rows only, on the research database (the connection string must name a database containing '_Research_'); read-only market data; no orders.

Usage: idiotproof research gappers catalysts [--llm-budget <int>]
Risk: read

Parameters:
      --llm-budget <int>  At most this many never-classified backfilled rows get a Haiku classification (default 0). (default: 0)

Examples:
  idiotproof research gappers catalysts
  idiotproof research gappers catalysts --llm-budget 200

research gappers label

Gapper study labels: next-bar-open entry and forward returns per horizon, reach-20 by 09:45, premarket/RTH/full-session high times and bucket, fade, extension from open, velocity death, death-to-HOD, halt proxy and VWAP-loss time, per the frozen definitions.

Research rows only, on the research database (the connection string must name a database containing '_Research_'); read-only market data; no orders. Same holdout lock as snapshot.

Usage: idiotproof research gappers label --split <string> [--smoke] [--from <date>] [--to <date>]
Risk: read

Parameters:
      --split <string>  train, validation or holdout (holdout needs holdout-unlock.txt and runs once). (required)
      --smoke           Label the smoke-tagged rows instead. (default: false)
      --from <date>     Restrict to days on or after this ET date.
      --to <date>       Restrict to days on or before this ET date.

Examples:
  idiotproof research gappers label --split train
  idiotproof research gappers label --split train --smoke

research gappers pull

Gapper study data tiers: minute bars for candidate/prior/control days into the file store (then gapper tiers and controls), Alpaca news, ticker-CIK map, EDGAR form index with acceptance times, splits. Resumable, rate-limited, --max-calls capped.

Research rows only, on the research database (the connection string must name a database containing '_Research_'); read-only market data; no orders. Minute bars go to D:\IdiotProofData\gapper-study\bars (setting gapperStudy.barRoot) as packed day blocks; a killed pull is rerun, not restarted.

Usage: idiotproof research gappers pull --tier <string> [--smoke] [--from <date>] [--to <date>] [--max-calls <int>]
Risk: read

Parameters:
      --tier <string>    bars (T2 minute bars + gapper classification + controls), news (T3), cik (T5), edgar (T4 form index + acceptance times), splits (T6), or all. (required)
      --smoke            Operate on the smoke-tagged universe rows only. (default: false)
      --from <date>      Restrict to candidate days on or after this ET date.
      --to <date>        Restrict to candidate days on or before this ET date.
      --max-calls <int>  Stop after this many API requests per tier (0 = no cap); the pull resumes from its coverage marks next time. (default: 0)

Examples:
  idiotproof research gappers pull --tier bars
  idiotproof research gappers pull --tier all --smoke
  idiotproof research gappers pull --tier edgar --max-calls 5000

research gappers snapshot

Gapper study feature snapshots: every candidate and control day at every frozen decision time through the shared GapperFormationFeatures.Compute, written as Source=backtest rows; fits and saves data/tod-profile.json on train control days first.

Research rows only, on the research database (the connection string must name a database containing '_Research_'); read-only market data; no orders. The holdout split refuses to run unless holdout-unlock.txt holds the frozen commit hash, and refuses a second run.

Usage: idiotproof research gappers snapshot --split <string> [--smoke] [--from <date>] [--to <date>]
Risk: read

Parameters:
      --split <string>  train, validation or holdout (holdout needs holdout-unlock.txt and runs once). (required)
      --smoke           Snapshot the smoke-tagged rows instead (profile goes to data/tod-profile.smoke.json). (default: false)
      --from <date>     Restrict to days on or after this ET date.
      --to <date>       Restrict to days on or before this ET date.

Examples:
  idiotproof research gappers snapshot --split train
  idiotproof research gappers snapshot --split train --smoke

research gappers status

What the gapper study holds per split (universe days, candidates, gappers per tier, controls, minute-bar coverage, snapshots, labels), the data tiers' row counts, and the holdout lock state.

Research rows only, on the research database (the connection string must name a database containing '_Research_'); read-only market data; no orders.

Usage: idiotproof research gappers status
Risk: read

Examples:
  idiotproof research gappers status

research index-events

S&P 500 / S&P 100 additions and removals: announced and effective dates, pending or done.

Usage: idiotproof research index-events [--since <date>] [--ticker <string>] [--pending]
Risk: read

Parameters:
      --since <date>     First announcement date, yyyy-MM-dd (default: 180 days ago).
      --ticker <string>  Only this symbol.
      --pending          Only events whose effective date has not passed yet. (default: false)

Examples:
  idiotproof research index-events
  idiotproof research index-events --pending
  idiotproof research index-events --ticker DDOG --since 2026-01-01

research insiders

Form 4 insider transactions for a ticker: filer, role, buy/sell, shares, price, value.

Usage: idiotproof research insiders <symbol> [--days <int>] [--code <string[]>] [--limit <int>]
Risk: read

Parameters:
  <symbol>               Ticker symbol, e.g. NVDA. (required)
      --days <int>       Transactions dated within this many days, 1-3650 (default 180). (default: 180)
      --code <string[]>  SEC transaction codes, comma-separated: P purchase, S sale, A award, M exercise, F tax, G gift (default: all).
      --limit <int>      Most lines to show, 1-1000 (default 100). (default: 100)

Examples:
  idiotproof research insiders NVDA
  idiotproof research insiders TSLA --code P,S --days 365

research macro

Macro and regulatory claims (rule changes, listing standards) with the tickers each affects.

Usage: idiotproof research macro [--since <date>] [--affects <string>] [--limit <int>]
Risk: read

Parameters:
      --since <date>      First ET date a claim was found, yyyy-MM-dd (default: 30 days ago).
      --affects <string>  Only claims whose affected-ticker list names this symbol.
      --limit <int>       Most claims to show, 1-500 (default 50). (default: 50)

Examples:
  idiotproof research macro
  idiotproof research macro --since 2026-09-01 --affects SOUN

research scan

Run one research scan pass now in the Hub (news, SEC filings, regulatory, index events, backfill, scoring).

Targeted with --tickers; otherwise watchlist + the next rotating batch of the ticker universe. Writes claims and a ScanRun row; the Monitor's trading loop is untouched.

Usage: idiotproof research scan [--tickers <string[]>] [--batch <int>] [--days-back <int>]
Risk: write

Parameters:
      --tickers <string[]>  Scan just these symbols, comma-separated (default: every watchlist symbol plus the next rotating batch of the universe).
      --batch <int>         Rotating-batch size beyond the watchlist, 1-5000 (default 300, or IDIOTPROOF_RESEARCHSCAN_BATCHSIZE).
      --days-back <int>     Lookback per source in days, 1-30 (default 2, or IDIOTPROOF_RESEARCHSCAN_DAYSBACK).

Examples:
  idiotproof research scan --tickers NVDA,AMD
  idiotproof research scan --batch 50 --days-back 3

research score

Explain a claim's 0-100 significance score term by term (magnitude, confidence, history, source, watchlist, recency).

Usage: idiotproof research score <claim>
Risk: read

Parameters:
  <claim>  Claim id, or the 8-character prefix `research claims` shows. (required)

Examples:
  idiotproof research score 3f2a91c0

research similar

Look-alike past claims (LSH neighbours) and what their stocks did afterwards.

Usage: idiotproof research similar <claim> [--max-distance <int>] [--limit <int>]
Risk: read

Parameters:
  <claim>                   Claim id, or the 8-character prefix `research claims` shows. (required)
      --max-distance <int>  Largest Hamming distance (of 64 signature bits) that counts as similar, 0-64 (default 20). (default: 20)
      --limit <int>         Most neighbours to list, 1-100 (default 20). (default: 20)

Examples:
  idiotproof research similar 3f2a91c0
  idiotproof research similar 3f2a91c0 --max-distance 12 --limit 10

research ticker

Everything research knows about one ticker: claims, portents, macro and index events, insiders, outcomes.

Usage: idiotproof research ticker <symbol> [--days <int>] [--limit <int>]
Risk: read

Parameters:
  <symbol>           Ticker symbol, e.g. NVDA. (required)
      --days <int>   Look back this many days, 1-3650 (default 90). (default: 90)
      --limit <int>  Most claims to list, 1-200 (default 15). (default: 15)

Examples:
  idiotproof research ticker NVDA
  idiotproof research ticker SMCI --days 365 --limit 30

research universe list

The tracked ticker universe the research scan sweeps: symbol, exchange, last price, freshness.

Usage: idiotproof research universe list [--exchange <string>] [--prefix <string>] [--min-price <decimal>] [--max-price <decimal>] [--limit <int>]
Risk: read

Parameters:
      --exchange <string>    Only NASDAQ or NYSE.
      --prefix <string>      Only symbols starting with this text.
      --min-price <decimal>  Only tickers whose last price is at least this.
      --max-price <decimal>  Only tickers whose last price is at most this.
      --limit <int>          Most rows to show, 1-10000 (default 100). (default: 100)

Examples:
  idiotproof research universe list
  idiotproof research universe list --exchange NASDAQ --max-price 5 --limit 50
  idiotproof research universe list --prefix NV

research universe refresh

Reload the tracked ticker universe (asset list and last prices) from Alpaca when stale, or --force.

Usage: idiotproof research universe refresh [--force] [--max-age-hours <int>]
Risk: write

Parameters:
      --force                Reload even when the cache is fresher than --max-age-hours. (default: false)
      --max-age-hours <int>  Only reload when the newest row is older than this, 1-720 (default 24). (default: 24)

Examples:
  idiotproof research universe refresh
  idiotproof research universe refresh --force

risk

risk check

Dry-run a setup through your Risk Guardian: approved or why not, worst case, and the largest size allowed. Places nothing.

Usage: idiotproof risk check <symbol> --entry <decimal> --stop <decimal> --qty <int> [--target <decimal>] [--short]
Risk: read

Parameters:
  <symbol>                Ticker, e.g. NVDA. (required)
      --entry <decimal>   Planned entry price. (required)
      --stop <decimal>    Planned protective stop price. (required)
      --qty <int>         Planned share count. (required)
      --target <decimal>  Planned take-profit price, for the reward:risk warning.
      --short             A short entry (stop above entry) instead of a long. (default: false)

Examples:
  idiotproof risk check NVDA --entry 100 --stop 98 --qty 20
  idiotproof risk check TSLA --entry 250 --stop 255 --qty 5 --target 240 --short

risk kill-switch

Halt every new entry now (on), or resume (off, which needs a confirmation code); exits always go through.

Usage: idiotproof risk kill-switch <state>
Risk: write

Parameters:
  <state>  on (halt every new entry now) or off (resume; needs a confirmation code). (required)

Examples:
  idiotproof risk kill-switch on
  idiotproof risk kill-switch off
      Returns a code; re-run with --confirm <code> to resume entries.

risk set

Change Risk Guardian limits; unnamed ones keep their value and today's loss counter is preserved.

Usage: idiotproof risk set [--max-loss-per-trade <decimal>] [--max-loss-per-day <decimal>] [--min-stop-percent <decimal>] [--max-stop-percent <decimal>] [--account-balance <decimal>] [--max-account-risk-percent <decimal>]
Risk: write

Parameters:
      --max-loss-per-trade <decimal>        Most a single trade may lose in the worst case, in dollars.
      --max-loss-per-day <decimal>          Daily loss that trips the circuit breaker, in dollars (at least the per-trade limit).
      --min-stop-percent <decimal>          Tightest allowed stop, percent of entry (0.01-50).
      --max-stop-percent <decimal>          Widest allowed stop, percent of entry (at least the minimum).
      --account-balance <decimal>           Balance the position size is measured against, in dollars.
      --max-account-risk-percent <decimal>  Most of the balance one trade may risk, percent (0-100).

Examples:
  idiotproof risk set --max-loss-per-trade 50 --max-loss-per-day 200
  idiotproof risk set --max-stop-percent 8 --account-balance 25000

risk show

Your six Risk Guardian limits (per-trade and daily loss, stop range, balance, account risk %) and the kill switch.

Usage: idiotproof risk show
Risk: read

Examples:
  idiotproof risk show

risk status

Today's realized P&L, losses counted against the daily breaker, remaining room, breaker and kill-switch state.

Usage: idiotproof risk status
Risk: read

Examples:
  idiotproof risk status

scan

scan movers

Screen today's top gainers to the gapper band; --replay replays each survivor with a gapper profile and saves the runs.

Usage: idiotproof scan movers [--date <date>] [--replay] [--top <int>] [--min-gap <number>] [--min-price <number>] [--max-price <number>] [--profile <string>] [--pages] [--out <string>]
Risk: write

Parameters:
  -d, --date <date>         ET day to replay the survivors on (default today ET — movers are live).
  -r, --replay              Replay each survivor with the gapper profile and save the runs (and pages). (default: false)
      --top <int>           Keep at most this many gappers (default 10, max 25). (default: 10)
      --min-gap <number>    Minimum percent change (default 5). (default: 5)
      --min-price <number>  Lowest price (default 1). (default: 1)
      --max-price <number>  Highest price (default 50). (default: 50)
  -p, --profile <string>    Gapper profile or family to replay with (default classic-gapper). (default: classic-gapper)
      --pages               With --replay: render run pages and archive indexes (HTML only). (default: true)
      --out <string>        Archive folder for the pages (default the mindattic.com replays folder).

Examples:
  idiotproof scan movers
  idiotproof scan movers --min-gap 10 --max-price 20 --replay

settings

settings get

Show one runtime setting: value, default, range and meaning.

Usage: idiotproof settings get <key>
Risk: read

Parameters:
  <key>  The setting key, e.g. Options.RiskFreeRate. (required)

Examples:
  idiotproof settings get Options.RiskFreeRate

settings list

List the app's runtime settings with current value, default, range and meaning.

Usage: idiotproof settings list [--all]
Risk: read

Parameters:
      --all  Also show internal bookkeeping keys the app writes for itself. (default: false)

Examples:
  idiotproof settings list
  idiotproof settings list --all

settings set

Change one runtime setting (type- and range-checked; unknown and internal keys refused).

Usage: idiotproof settings set <key> <value>
Risk: write

Parameters:
  <key>    The setting key (see `settings list`). (required)
  <value>  The new value; checked against the key's type and range. (required)

Examples:
  idiotproof settings set Options.RiskFreeRate 0.045
  idiotproof settings set decay.be-bex.threshold 10

strategy

strategy activate

Hand a strategy to the Monitor. A Live strategy needs a confirmation code.

Usage: idiotproof strategy activate <strategy>
Risk: money

Parameters:
  <strategy>  Id, id prefix, stamp id (IP-XXXX-XXXX) or symbol. (required)

Examples:
  idiotproof strategy activate NVDA

strategy bulk

Activate or deactivate many strategies at once (--all, --symbol, --mode). Live activations need one confirmation code for the batch.

Deactivation skips strategies holding a position (that would orphan the exit). Activation skips quarantined and soft-deleted strategies; when the batch would turn on any Live strategy, nothing happens until you re-run with the confirmation code, which is bound to exactly that batch.

Usage: idiotproof strategy bulk <action> [--all] [--symbol <string>] [--mode <sandbox|paper|live>]
Risk: money

Parameters:
  <action>                         activate or deactivate. (required)
      --all                        Every strategy you own (soft-deleted ones excluded). (default: false)
      --symbol <string>            Only strategies on this symbol.
      --mode <sandbox|paper|live>  Only strategies in this broker mode (sandbox, paper, live).

Examples:
  idiotproof strategy bulk deactivate --all
  idiotproof strategy bulk activate --symbol NVDA --mode paper

strategy clone

Copy a strategy (optionally onto another symbol) as a new, inactive Sandbox strategy.

The copy gets the same canon (re-validated), never the original's position, history or Live routing. Cloning onto another symbol warns about fixed prices that belonged to the original's chart.

Usage: idiotproof strategy clone <strategy> [--symbol <string>] [--title <string>] [--mode <sandbox|paper|live>]
Risk: write

Parameters:
  <strategy>                       Id, id prefix, stamp id or symbol of the strategy to copy. (required)
      --symbol <string>            Trade a different symbol with the same rules.
      --title <string>             Title for the copy (default: "<title> (copy)").
  -m, --mode <sandbox|paper|live>  Broker mode for the copy: sandbox (default) or paper. (default: sandbox)

Examples:
  idiotproof strategy clone NVDA
  idiotproof strategy clone NVDA --symbol AMD --title "AMD VWAP reclaim"

strategy create

Create a strategy from IdiotScript or canonical JSON after validating it. It starts inactive in Sandbox.

Exactly one of --script or --canon. A strategy with no size buys 1 share. Errors (no stop, stop on the wrong side of the target, a broken canon) stop the save; warnings are shown.

Usage: idiotproof strategy create [--script <string>] [--canon <string>] [--title <string>] [--ticker <string>] [--description <string>] [--mode <sandbox|paper|live>] [--dry-run]
Risk: write

Parameters:
  -s, --script <string>            The strategy as IdiotScript text (`-` reads stdin).
      --canon <string>             The strategy as canonical JSON (what `strategy export --format json` prints) (`-` reads stdin).
      --title <string>             Title (default: the strategy's own name, else "SYM strategy").
      --ticker <string>            Symbol to use when the script doesn't name one.
      --description <string>       Free-form description stored with the strategy.
  -m, --mode <sandbox|paper|live>  Broker mode: sandbox (default) or paper. Live is a separate, confirmed step. (default: sandbox)
      --dry-run                    Validate and show the stamp without saving anything. (default: false)

Examples:
  idiotproof strategy create --script "Stock.Ticker(\"NVDA\").IsAboveVwap().Long().StopLoss(170).TakeProfit(190).Build()"
  idiotproof strategy create --canon - --mode paper
      Reads canonical JSON from stdin.

strategy deactivate

Stop the Monitor evaluating a strategy (refused while it holds a position).

Usage: idiotproof strategy deactivate <strategy>
Risk: write

Parameters:
  <strategy>  Id, id prefix, stamp id (IP-XXXX-XXXX) or symbol. (required)

Examples:
  idiotproof strategy deactivate NVDA

strategy delete

Soft-delete a strategy: deactivate it and mark it [deleted] (reversible with --restore). Refused while it holds a position.

Deleting is a reversible disable (HOUSE-LAW-2): the row, canon and history stay, and `strategy list` hides it unless --deleted. --hard permanently removes a strategy that is already deleted — a separate, explicit second step.

Usage: idiotproof strategy delete <strategy> [--restore] [--hard]
Risk: destructive

Parameters:
  <strategy>     Id, id prefix, stamp id or symbol. (required)
      --restore  Undo a delete: take the [deleted] marker off (it stays inactive). (default: false)
      --hard     Permanently remove an ALREADY deleted strategy and its progress row. Cannot be undone. (default: false)

Examples:
  idiotproof strategy delete NVDA
  idiotproof strategy delete 0193ab12 --restore
  idiotproof strategy delete 0193ab12 --hard

strategy diff

Compare two strategies field by field at the canon level (what the Monitor actually runs), plus title, mode and state.

Usage: idiotproof strategy diff <a> <b>
Risk: read

Parameters:
  <a>  First strategy: id, id prefix, stamp id or symbol. (required)
  <b>  Second strategy: id, id prefix, stamp id or symbol. (required)

Examples:
  idiotproof strategy diff NVDA AMD
  idiotproof strategy diff IP-P4AY-UXZU IP-Q7RB-K2MD

strategy explain

Explain a strategy in plain English, phase by phase — generated from its canon, no LLM, the same words every time.

Usage: idiotproof strategy explain <strategy>
Risk: read

Parameters:
  <strategy>  Id, id prefix, stamp id (IP-XXXX-XXXX) or symbol. (required)

Examples:
  idiotproof strategy explain NVDA

strategy export

Export a strategy as a stamp, armored payload, canonical JSON or IdiotScript.

Usage: idiotproof strategy export <strategy> [--format <stamp|armor|json|script>]
Risk: read

Parameters:
  <strategy>                              Id, id prefix, stamp id or symbol. (required)
  -f, --format <stamp|armor|json|script>  stamp (default), armor (payload only), json (canonical) or script (IdiotScript). (default: stamp)

Examples:
  idiotproof strategy export NVDA --format json

strategy fires

Why a strategy did or didn't fire: its recent gate verdicts (conditions met, LLM veto, Risk Guardian block, order placed or rejected) and where it stands now.

Usage: idiotproof strategy fires <strategy> [--limit <int>]
Risk: read

Parameters:
  <strategy>         Id, id prefix, stamp id or symbol. (required)
  -n, --limit <int>  How many verdicts to show (default 20, max 200). (default: 20)

Examples:
  idiotproof strategy fires NVDA
  idiotproof strategy fires NVDA --limit 50

strategy from-text

Turn a plain-English description into a strategy (via the LLM), show its stamp, and save it only when you confirm.

The first call writes the IdiotScript, validates it and shows the stamp with a confirmation code; nothing is saved. Re-run with --confirm <code> to save exactly what was shown (the LLM is not called again). It saves inactive, in Sandbox by default, 1 share when unsized.

Usage: idiotproof strategy from-text <description> [--ticker <string>] [--mode <sandbox|paper|live>] [--title <string>]
Risk: write

Parameters:
  <description>                    The strategy in plain English (`-` reads stdin). (required)
  -t, --ticker <string>            The symbol to trade (default: the first ticker-looking word, e.g. $NVDA or NVDA).
  -m, --mode <sandbox|paper|live>  Broker mode for the saved strategy: sandbox (default) or paper. (default: sandbox)
      --title <string>             Title for the saved strategy (default: its own name, else "SYM strategy").

Examples:
  idiotproof strategy from-text "Buy NVDA when it reclaims VWAP with volume, stop 2% under, take profit at 190"
  idiotproof strategy from-text "long on a 9 EMA reclaim above VWAP, 3% stop" --ticker AMD --mode paper

strategy from-watchlist

Create one strategy per item of a watchlist JSON file (the Monitor's create-strategies, through the CLI).

Each item's script is validated like `strategy create`; an item that fails is reported and skipped. Items already present (same symbol and title) or repeated in the file are skipped, so re-running is safe. New strategies start inactive in Sandbox with 1 share when unsized; --activate turns on the items marked active.

Usage: idiotproof strategy from-watchlist <file> [--mode <sandbox|paper|live>] [--activate] [--dry-run]
Risk: write

Parameters:
  <file>                           A watchlist JSON file (absolute path: the Hub reads it), the JSON itself, or `-` for stdin: [{"title","symbol","script","description","author","originTranscript","active"}]. (required)
  -m, --mode <sandbox|paper|live>  Broker mode for every new strategy: sandbox (default) or paper. (default: sandbox)
      --activate                   Activate items marked "active": true (default: everything starts inactive). (default: false)
      --dry-run                    Validate every item and report what would happen without saving. (default: false)

Examples:
  idiotproof strategy from-watchlist D:/watchlists/2026-10-30.json
  idiotproof strategy from-watchlist -
      Reads the watchlist JSON from stdin, e.g. `type watchlist.json | idiotproof strategy from-watchlist -`.
  idiotproof strategy from-watchlist - --mode paper --activate --dry-run

strategy history

A strategy's trail, newest first: Monitor verdicts and fills, diary trades, and the CLI/MCP commands that touched it.

Usage: idiotproof strategy history <strategy> [--limit <int>]
Risk: read

Parameters:
  <strategy>         Id, id prefix, stamp id or symbol. (required)
  -n, --limit <int>  How many events to show (default 40, max 500). (default: 40)

Examples:
  idiotproof strategy history NVDA
  idiotproof strategy history NVDA --limit 100

strategy import

Create a strategy from a stamp, canonical JSON or IdiotScript. It starts inactive in Sandbox.

Usage: idiotproof strategy import <source> [--title <string>] [--mode <sandbox|paper|live>]
Risk: write

Parameters:
  <source>                         A pasted stamp/armor/IPS1 payload, canonical JSON, or IdiotScript text (`-` reads stdin). (required)
      --title <string>             Title for the new strategy (default: the strategy's own name or symbol).
  -m, --mode <sandbox|paper|live>  Broker mode for the new strategy: sandbox (default) or paper. Live is a separate, confirmed step. (default: sandbox)

Examples:
  idiotproof strategy import -
      Reads the pasted stamp from stdin, e.g. `type gapper-stamp.txt | idiotproof strategy import -`.
  idiotproof strategy import "Ticker(\"NVDA\").IsAboveVwap().StopLoss(2)" --mode paper

strategy list

List your strategies with mode, position and live condition progress.

Usage: idiotproof strategy list [--active] [--symbol <string>] [--mode <sandbox|paper|live>] [--deleted]
Risk: read

Parameters:
  -a, --active                     Only strategies the Monitor is evaluating. (default: false)
      --symbol <string>            Only this symbol.
      --mode <sandbox|paper|live>  Only this broker mode (sandbox, paper, live).
      --deleted                    Include soft-deleted strategies (hidden by default). (default: false)

Examples:
  idiotproof strategy list
  idiotproof strategy list --active --mode live

strategy mode

Route a strategy to sandbox, paper or live. Switching to live needs a confirmation code.

Usage: idiotproof strategy mode <strategy> <mode>
Risk: money

Parameters:
  <strategy>  Id, id prefix, stamp id or symbol. (required)
  <mode>      sandbox, paper or live (live needs a confirmation code). (required)

Examples:
  idiotproof strategy mode NVDA paper
  idiotproof strategy mode NVDA live

strategy progress

How close a strategy is to firing: conditions passing N/M, the first failing verb and the last price, optionally watched.

Reads the row the Monitor writes every tick. --watch samples it every --every seconds and reports each change, stopping when every condition passes: in a terminal each change streams live until Ctrl+C; for MCP and --json it takes --samples samples (at most two minutes in all).

Usage: idiotproof strategy progress <strategy> [--watch] [--every <int>] [--samples <int>]
Risk: read

Parameters:
  <strategy>           Id, id prefix, stamp id or symbol. (required)
  -w, --watch          Keep sampling the Monitor's progress row and report each change: a terminal streams until Ctrl+C or all conditions pass; MCP/--json are bounded by --samples. (default: false)
      --every <int>    Seconds between samples while watching (0-60, default 5). (default: 5)
      --samples <int>  How many samples to take while watching (1-120; default 12 for MCP/--json, unlimited in a terminal).

Examples:
  idiotproof strategy progress NVDA
  idiotproof strategy progress NVDA --watch --every 10 --samples 6

strategy quarantine

List strategies the Monitor refuses to evaluate (canon unreadable, or no canon and a script that doesn't parse), with the reason.

A quarantined strategy never fires; one that is quarantined while holding a position has NO managed exit and is listed first.

Usage: idiotproof strategy quarantine [--symbol <string>]
Risk: read

Parameters:
      --symbol <string>  Only this symbol.

Examples:
  idiotproof strategy quarantine

strategy rename

Give a strategy a new title. Its canon, stamp id and state are untouched.

Only the title changes, so the stamp id stays the same. The Monitor's audit lines carry the title at the time, so `strategy history` matches the new title from now on.

Usage: idiotproof strategy rename <strategy> <title>
Risk: write

Parameters:
  <strategy>  Id, id prefix, stamp id or symbol. (required)
  <title>     The new title (1-200 characters). (required)

Examples:
  idiotproof strategy rename NVDA "NVDA VWAP reclaim"

strategy resync-canon

Re-derive your strategies' canons from their scripts where the script now yields a richer canon; dry run unless --apply.

The repair for verbs an older parser dropped silently. A row is rewritten only when the re-derived canon has at least as many entry conditions and branches as the stored one; anything that would lose a condition is skipped and reported. Only the canon (ScriptJson) changes — position bookkeeping is untouched.

Usage: idiotproof strategy resync-canon [--apply]
Risk: write

Parameters:
      --apply  Write the repaired canons (default is a dry run that changes nothing). (default: false)

Examples:
  idiotproof strategy resync-canon
  idiotproof strategy resync-canon --apply

strategy samples

List the built-in sample strategies, or show one as IdiotScript, a stamp or canonical JSON.

Samples are worked examples you can save and edit: `idiotproof strategy samples vwap-reclaim --format json | idiotproof strategy create --canon -`.

Usage: idiotproof strategy samples [<name>] [--format <stamp|armor|json|script>]
Risk: read

Parameters:
  <name>                                  A sample's name to show in full (omit to list them all).
  -f, --format <stamp|armor|json|script>  How to show one sample: script (default), stamp or json. (default: script)

Examples:
  idiotproof strategy samples
  idiotproof strategy samples vwap-reclaim
  idiotproof strategy samples sune-wedge --format stamp

strategy set

Edit a strategy's stop, target, trailing, size, sell-by time or session; the canon is rewritten and re-validated.

Only the named fields change. The result must still validate (a stop, stop below target on a long, ...). A Live strategy needs a confirmation code bound to exactly these changes.

Usage: idiotproof strategy set <strategy> [--stop <decimal>] [--stop-percent <decimal>] [--target <decimal>] [--target-percent <decimal>] [--trailing <decimal>] [--giveback <decimal>] [--qty <int>] [--notional <decimal>] [--sell-by <string>] [--session <premarket|rth|after-hours|extended>]
Risk: money

Parameters:
  <strategy>                                          Id, id prefix, stamp id or symbol. (required)
      --stop <decimal>                                Stop-loss price (replaces a percent stop).
      --stop-percent <decimal>                        Stop-loss percent from the fill (replaces a price stop).
      --target <decimal>                              Take-profit price (replaces a percent target and any scale-out ladder).
      --target-percent <decimal>                      Take-profit percent from the fill (replaces a price target).
      --trailing <decimal>                            Trailing-stop percent; 0 removes it.
      --giveback <decimal>                            Peak-giveback exit percent; 0 removes it.
      --qty <int>                                     Share quantity per entry (replaces a notional size).
      --notional <decimal>                            Dollar size per entry (replaces a share quantity).
      --sell-by <string>                              Sell anything still held at this ET time (HH:mm); "none" removes it.
      --session <premarket|rth|after-hours|extended>  Trading session: premarket, rth, afterhours or extended.

Examples:
  idiotproof strategy set NVDA --stop 168.5 --target 195
  idiotproof strategy set NVDA --qty 2 --sell-by 15:45

strategy show

Everything about one strategy: settings, script, position, progress.

Usage: idiotproof strategy show <strategy>
Risk: read

Parameters:
  <strategy>  Id, id prefix, stamp id (IP-XXXX-XXXX) or symbol. (required)

Examples:
  idiotproof strategy show NVDA
  idiotproof strategy show IP-P4AY-UXZU

strategy stamp

Print the strategy's ASCII stamp: header, phase flow, exit ladder, fingerprint and a paste-back payload.

Usage: idiotproof strategy stamp <strategy> [--unicode] [--qr] [--compact]
Risk: read

Parameters:
  <strategy>     Id, id prefix, stamp id or symbol. (required)
  -u, --unicode  Box-drawing characters instead of plain ASCII. (default: false)
      --qr       Add a terminal QR code of the payload. (default: false)
      --compact  Leave out the armored payload block (picture only). (default: false)

Examples:
  idiotproof strategy stamp NVDA
  idiotproof strategy stamp IP-P4AY-UXZU --unicode --qr

strategy step

Where a sequenced strategy stands (step k/N, armed or awaiting its transition); --reset starts it over at step 1.

Usage: idiotproof strategy step <strategy> [--reset]
Risk: write

Parameters:
  <strategy>   Id, id prefix, stamp id (IP-XXXX-XXXX) or symbol. (required)
      --reset  Put the sequence back at step 1 (refused while it holds a position). (default: false)

Examples:
  idiotproof strategy step NVDA
  idiotproof strategy step NVDA --reset

strategy validate

Check a saved strategy or a script: parse, canon round-trip, phase rules and a risk preview. Changes nothing.

Usage: idiotproof strategy validate [<strategy>] [--script <string>] [--canon <string>]
Risk: read

Parameters:
  <strategy>             Id, id prefix, stamp id or symbol of a saved strategy (omit with --script/--canon).
  -s, --script <string>  Validate this IdiotScript text instead of a saved strategy (`-` reads stdin).
      --canon <string>   Validate this canonical JSON instead of a saved strategy (`-` reads stdin).

Examples:
  idiotproof strategy validate NVDA
  idiotproof strategy validate --script "Stock.Ticker(\"AMD\").IsAboveVwap().Long().StopLoss(150).Build()"

trade

trade buy

Buy shares (open or add to a long). Sandbox by default; live needs a confirmation code.

Usage: idiotproof trade buy <symbol> [<qty>] [--dollars <decimal>] [--limit <decimal>] [--stop <decimal>] [--target <decimal>] [--mode <sandbox|paper|live>] [--ext] [--tif <string>] [--note <string>]
Risk: money

Parameters:
  <symbol>                         Ticker, e.g. NVDA. (required)
  <qty>                            Shares. Leave out and pass --dollars to size by amount.
      --dollars <decimal>          Size by dollar amount instead of shares (fractional, regular hours only).
  -l, --limit <decimal>            Limit price. Without it the order is a market order.
  -s, --stop <decimal>             Protective stop price for an entry; the Risk Guardian refuses entries without one.
  -t, --target <decimal>           Take-profit price (for the reward:risk check).
  -m, --mode <sandbox|paper|live>  Where it routes: sandbox (simulator, the default), paper, or live (needs confirmation). (default: sandbox)
      --ext                        Extended hours (premarket/after-hours); requires --limit, DAY. (default: false)
      --tif <string>               Time in force: day (default) or gtc. (default: day)
      --note <string>              Why — kept in the audit trail.

Examples:
  idiotproof trade buy NVDA 10 --limit 131.20 --stop 127.50
      Sandbox limit buy with a protective stop.
  idiotproof trade buy AAPL --dollars 500 --stop 220 --mode paper
  idiotproof trade buy GAPT 100 --limit 4.12 --stop 3.90 --ext --mode live
      Premarket live buy; prints a confirmation code first.

trade confirm

Execute a pending Live order by its confirmation code (exactly what was previewed, once).

Usage: idiotproof trade confirm <code>
Risk: money

Parameters:
  <code>  The six-character code a Live preview returned. (required)

Examples:
  idiotproof trade confirm K7Q2ZP

trade cover

Buy to cover a short.

Usage: idiotproof trade cover <symbol> [<qty>] [--dollars <decimal>] [--limit <decimal>] [--stop <decimal>] [--target <decimal>] [--mode <sandbox|paper|live>] [--ext] [--tif <string>] [--note <string>]
Risk: money

Parameters:
  <symbol>                         Ticker, e.g. NVDA. (required)
  <qty>                            Shares. Leave out and pass --dollars to size by amount.
      --dollars <decimal>          Size by dollar amount instead of shares (fractional, regular hours only).
  -l, --limit <decimal>            Limit price. Without it the order is a market order.
  -s, --stop <decimal>             Protective stop price for an entry; the Risk Guardian refuses entries without one.
  -t, --target <decimal>           Take-profit price (for the reward:risk check).
  -m, --mode <sandbox|paper|live>  Where it routes: sandbox (simulator, the default), paper, or live (needs confirmation). (default: sandbox)
      --ext                        Extended hours (premarket/after-hours); requires --limit, DAY. (default: false)
      --tif <string>               Time in force: day (default) or gtc. (default: day)
      --note <string>              Why — kept in the audit trail.

Examples:
  idiotproof trade cover TSLA 5 --mode paper

trade flatten

Flatten a symbol, a strategy's position, or the whole account with market exits through the TransactionGateway. Live needs a confirmation code.

Usage: idiotproof trade flatten [--symbol <string>] [--strategy <string>] [--all] [--mode <sandbox|paper|live>] [--preview]
Risk: money

Parameters:
      --symbol <string>            Close the whole broker position in this symbol.
      --strategy <string>          Close what this strategy books (id, id prefix, stamp id or symbol), capped at what the broker holds.
      --all                        Close every position in the account. (default: false)
  -m, --mode <sandbox|paper|live>  paper or live (live needs a confirmation code). Default: the strategy's mode with --strategy, else paper.
      --preview                    Run every gate and list the exits without sending them. (default: false)

Examples:
  idiotproof trade flatten --symbol HIHO --mode paper
  idiotproof trade flatten --strategy IP-P4AY-UXZU
      Uses the strategy's own mode.
  idiotproof trade flatten --all --mode live --preview
      List every Live exit without sending anything.

trade notional

Buy (or sell) a dollar amount of a stock: a fractional, DAY, market order sized in dollars. Live needs a code.

Usage: idiotproof trade notional <symbol> <amount> [--side <buy|sell>] [--stop <decimal>] [--target <decimal>] [--mode <sandbox|paper|live>] [--note <string>]
Risk: money

Parameters:
  <symbol>                         Ticker, e.g. AAPL. (required)
  <amount>                         Dollars to buy (or sell) — Alpaca works out the fractional shares. (required)
      --side <buy|sell>            buy (default, opens/adds to a long) or sell (trims a long by dollar value). (default: buy)
  -s, --stop <decimal>             Protective stop price for a buy; the Risk Guardian refuses entries without one.
  -t, --target <decimal>           Take-profit price (for the reward:risk check).
  -m, --mode <sandbox|paper|live>  Where it routes: sandbox (simulator, the default), paper, or live (needs confirmation). (default: sandbox)
      --note <string>              Why — kept in the audit trail.

Examples:
  idiotproof trade notional AAPL 500 --stop 220 --mode paper
  idiotproof trade notional AAPL 250 --side sell --mode live
      Trim $250 of a long; prints a confirmation code first.

trade pending

List Live confirmations still waiting for a yes.

Usage: idiotproof trade pending
Risk: read

Examples:
  idiotproof trade pending

trade preview

Run every gate on an order without placing it (no code issued).

Usage: idiotproof trade preview <action> <symbol> [<qty>] [--dollars <decimal>] [--limit <decimal>] [--stop <decimal>] [--target <decimal>] [--mode <sandbox|paper|live>] [--ext]
Risk: read

Parameters:
  <action>                         buy, sell, short or cover. (required)
  <symbol>                         Ticker. (required)
  <qty>                            Shares (or use --dollars).
      --dollars <decimal>          Size by dollar amount.
  -l, --limit <decimal>            Limit price.
  -s, --stop <decimal>             Protective stop price.
  -t, --target <decimal>           Take-profit price.
  -m, --mode <sandbox|paper|live>  sandbox (default), paper or live. (default: sandbox)
      --ext                        Extended hours. (default: false)

Examples:
  idiotproof trade preview buy NVDA 10 --limit 131 --stop 127 --mode live

trade sell

Sell shares you hold (close or trim a long). Exits always clear the gates.

Usage: idiotproof trade sell <symbol> [<qty>] [--dollars <decimal>] [--limit <decimal>] [--stop <decimal>] [--target <decimal>] [--mode <sandbox|paper|live>] [--ext] [--tif <string>] [--note <string>]
Risk: money

Parameters:
  <symbol>                         Ticker, e.g. NVDA. (required)
  <qty>                            Shares. Leave out and pass --dollars to size by amount.
      --dollars <decimal>          Size by dollar amount instead of shares (fractional, regular hours only).
  -l, --limit <decimal>            Limit price. Without it the order is a market order.
  -s, --stop <decimal>             Protective stop price for an entry; the Risk Guardian refuses entries without one.
  -t, --target <decimal>           Take-profit price (for the reward:risk check).
  -m, --mode <sandbox|paper|live>  Where it routes: sandbox (simulator, the default), paper, or live (needs confirmation). (default: sandbox)
      --ext                        Extended hours (premarket/after-hours); requires --limit, DAY. (default: false)
      --tif <string>               Time in force: day (default) or gtc. (default: day)
      --note <string>              Why — kept in the audit trail.

Examples:
  idiotproof trade sell NVDA 10 --mode paper

trade short

Sell short (open a short). Needs a stop above entry; margin + shortable name at the broker.

Usage: idiotproof trade short <symbol> [<qty>] [--dollars <decimal>] [--limit <decimal>] [--stop <decimal>] [--target <decimal>] [--mode <sandbox|paper|live>] [--ext] [--tif <string>] [--note <string>]
Risk: money

Parameters:
  <symbol>                         Ticker, e.g. NVDA. (required)
  <qty>                            Shares. Leave out and pass --dollars to size by amount.
      --dollars <decimal>          Size by dollar amount instead of shares (fractional, regular hours only).
  -l, --limit <decimal>            Limit price. Without it the order is a market order.
  -s, --stop <decimal>             Protective stop price for an entry; the Risk Guardian refuses entries without one.
  -t, --target <decimal>           Take-profit price (for the reward:risk check).
  -m, --mode <sandbox|paper|live>  Where it routes: sandbox (simulator, the default), paper, or live (needs confirmation). (default: sandbox)
      --ext                        Extended hours (premarket/after-hours); requires --limit, DAY. (default: false)
      --tif <string>               Time in force: day (default) or gtc. (default: day)
      --note <string>              Why — kept in the audit trail.

Examples:
  idiotproof trade short TSLA 5 --limit 240 --stop 246

users

users create

Create an IdiotProof account (blocklist and password rules of web sign-up; Argon2id via MindAttic.Authentication).

Usage: idiotproof users create <email> --password <string> [--role <string>] [--must-change]
Risk: write

Parameters:
  <email>                  The new account's email (also its user name). (required)
      --password <string>  Initial password: 8 to 128 characters with at least one digit. (required)
      --role <string>      User (default) or Admin. (default: User)
      --must-change        Make them choose a new password at first sign-in. (default: false)

Examples:
  idiotproof users create trader@example.com --password <password>
  idiotproof users create admin@example.com --password <password> --role Admin --must-change

users list

List the IdiotProof accounts (test fixtures hidden unless --all); * marks who you act as.

Usage: idiotproof users list [--all]
Risk: read

Parameters:
      --all  Include test-fixture accounts (@idiotproof.local and bare user names), hidden by default. (default: false)

Examples:
  idiotproof users list
  idiotproof users list --all

watchlist

watchlist add

Add symbols to your IdiotProof watchlist (creates a 'Main' workspace when you have none).

Usage: idiotproof watchlist add <symbols>... [--workspace <string>]
Risk: write

Parameters:
  <symbols>                 One or more ticker symbols (space or comma separated). (required)
      --workspace <string>  Which workspace (name or id); needed only when you have more than one.

Examples:
  idiotproof watchlist add NVDA AAPL
  idiotproof watchlist add TSLA --workspace Main

watchlist list

Your IdiotProof watchlist: the symbols on each of your workspaces (not Alpaca's watchlists).

Usage: idiotproof watchlist list [--workspace <string>]
Risk: read

Parameters:
      --workspace <string>  Only this workspace (name or id).

Examples:
  idiotproof watchlist list
  idiotproof watchlist list --workspace Main

watchlist remove

Remove symbols from your IdiotProof watchlist.

Usage: idiotproof watchlist remove <symbols>... [--workspace <string>]
Risk: write

Parameters:
  <symbols>                 One or more ticker symbols (space or comma separated). (required)
      --workspace <string>  Which workspace (name or id); needed only when you have more than one.

Examples:
  idiotproof watchlist remove AAPL

watchlists

watchlists add

Add symbols to an Alpaca watchlist (by id or name).

Usage: idiotproof watchlists add <watchlist> <symbols>... [--mode <paper|live>]
Risk: write

Parameters:
  <watchlist>              Watchlist id or name. (required)
  <symbols>                One or more symbols (space or comma separated). (required)
      --mode <paper|live>  Alpaca account: paper (default) or live. (default: paper)

Examples:
  idiotproof watchlists add tech AMD AVGO

watchlists create

Create an Alpaca watchlist, optionally with symbols.

Usage: idiotproof watchlists create <name> [<symbols>...] [--mode <paper|live>]
Risk: write

Parameters:
  <name>                   Name for the new watchlist. (required)
  <symbols>                Symbols to start with (space or comma separated).
      --mode <paper|live>  Alpaca account: paper (default) or live. (default: paper)

Examples:
  idiotproof watchlists create tech AAPL MSFT NVDA

watchlists delete

Delete an Alpaca watchlist (by id or name).

Usage: idiotproof watchlists delete <watchlist> [--mode <paper|live>]
Risk: destructive

Parameters:
  <watchlist>              Watchlist id or name. (required)
      --mode <paper|live>  Alpaca account: paper (default) or live. (default: paper)

Examples:
  idiotproof watchlists delete tech

watchlists list

Your Alpaca server-side watchlists (not IdiotProof's local watchlist): name, id, last update.

Usage: idiotproof watchlists list [--mode <paper|live>]
Risk: read

Parameters:
      --mode <paper|live>  Alpaca account: paper (default) or live. (default: paper)

Examples:
  idiotproof watchlists list
  idiotproof watchlists list --mode live

watchlists remove

Remove symbols from an Alpaca watchlist (by id or name).

Usage: idiotproof watchlists remove <watchlist> <symbols>... [--mode <paper|live>]
Risk: write

Parameters:
  <watchlist>              Watchlist id or name. (required)
  <symbols>                One or more symbols (space or comma separated). (required)
      --mode <paper|live>  Alpaca account: paper (default) or live. (default: paper)

Examples:
  idiotproof watchlists remove tech AMD

watchlists rename

Rename an Alpaca watchlist, keeping its symbols.

Usage: idiotproof watchlists rename <watchlist> <new-name> [--mode <paper|live>]
Risk: write

Parameters:
  <watchlist>              Watchlist id or current name. (required)
  <new-name>               The new name. (required)
      --mode <paper|live>  Alpaca account: paper (default) or live. (default: paper)

Examples:
  idiotproof watchlists rename tech megacaps

watchlists show

One Alpaca watchlist (by id or name) and its symbols.

Usage: idiotproof watchlists show <watchlist> [--mode <paper|live>]
Risk: read

Parameters:
  <watchlist>              Watchlist id or name. (required)
      --mode <paper|live>  Alpaca account: paper (default) or live. (default: paper)

Examples:
  idiotproof watchlists show tech
  idiotproof watchlists show 3174d6df-7726-44b4-a5bd-7fda5ae6e009 --mode live