Update personal risk settings.
Only the fields present in the body change. Values are clamped down to the firm’s policy, and once the trader has locked settings for the day nothing that loosens risk is accepted until the next session.
Body
Fields a trader may change. Every one is optional: an absent field is left untouched, an explicit null clears it.
"dollars" or "ticks" — unit for breakeven trigger and trail distance.
Drop a loosening that is waiting for the next trading day, keeping the live (stricter) settings. Other fields in the same body apply on top of the live settings.
Freeze every setting until the next 17:00 CT session start. One-way.
Superseded by lock_settings_for; kept so existing clients keep working.
How long to freeze every setting on this account. One-way — a lock
cannot be lifted early, by the trader or by support.
today — until the next session starts at 17:00 CT
week — until the trading week closes on Friday at 16:00 CT
"block" (default) or "flatten" — what a window close does to an open position.
Replace the trading windows. An empty list removes the restriction.
Each window: {days:[1..7 ISO weekdays], start:"HH:MM", end:"HH:MM", timezone:"America/New_York", label?}; validated, not silently fixed.
Response
Updated personal risk settings. When settings are locked for the day (or firm-locked) the update is rejected with the same envelope: success=false and a code of SETTINGS_LOCKED.
Trader-owned risk configuration, plus the firm bounds it must respect and the live counters the UI renders.
Unit for the two values above: "dollars" (position P&L) or "ticks" (raw price distance on the contract's tick grid).
True when the loss limit already fired this trading day: positions were flattened and NEW entries are rejected until the next session. Editing the limit does not clear it.
True when the profit target already fired this trading day. Unlike the loss limit, this does not gate new entries.
Human-readable boundary for day_clock, e.g. "17:00 CT" or "00:00 ET".
Which clock this account's day-scoped limits and locks run on:
cme_session rolls at the Globex open, continuous at the firm's
configured 24/7 day boundary. The UI needs this to avoid promising a
crypto trader a "next session" that never comes.
Estimated cost of closing the current open position right now (exchange fees + commission across all open contracts; 0 when flat). Enforcement evaluates equity MINUS this ("equity if flattened now", see check_rules_for_account) — any "remaining before the limit" display must subtract it too, or the trader reads more headroom than the engine will give them (Discord 26 Aug: breaches "~$100 early").
Outside every window: block (refuse new entries only) or flatten
(also close positions + cancel orders once at the window close).
True while new entries are allowed by the windows (always true when none are set).
Recurring hours during which new entries are allowed (empty = no
restriction). Each: {days:[1..7 ISO], start:"HH:MM", end:"HH:MM", timezone:IANA, label?}; end before start is an overnight window.
Equity level at which the limit fires — what a gauge should point at.
Session peak the trailing limit is measured from (trailing mode only).
While set and in the future, no field above can be loosened.
Label of the window that is open right now, if it has one.
RFC 3339 close of the current open window (while open).
RFC 3339 start of the next window (while closed).
trading_window_opens_at phrased in the window's own zone, e.g.
"Thu 09:30 EDT".