Skip to main content
POST
Update personal risk settings.

Body

application/json

Fields a trader may change. Every one is optional: an absent field is left untouched, an explicit null clears it.

account_id
string<uuid>
required
auto_bracket_enabled
boolean | null
auto_bracket_stop_loss
number<double> | null
auto_bracket_take_profit
number<double> | null
auto_breakeven_trigger
number<double> | null
auto_stop_units
string | null

"dollars" or "ticks" — unit for breakeven trigger and trail distance.

blocked_symbols
string[] | null
bracket_mode
string | null
cancel_pending
boolean | null

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.

daily_loss_action
string | null
daily_loss_limit
number<double> | null
daily_loss_trailing
boolean | null
daily_loss_trailing_type
string | null
daily_profit_action
string | null
daily_profit_target
number<double> | null
lock_for_day
boolean | null

Freeze every setting until the next 17:00 CT session start. One-way. Superseded by lock_settings_for; kept so existing clients keep working.

lock_settings_for
string | null

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

max_trades_per_day
integer<int32> | null
max_trades_per_week
integer<int32> | null
symbol_contract_limits
object | null
trading_window_action
string | null

"block" (default) or "flatten" — what a window close does to an open position.

trading_windows
any[] | null

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.

trailing_stop_distance
number<double> | null

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.

account_id
string<uuid>
required
auto_bracket_enabled
boolean
required
auto_stop_units
string
required

Unit for the two values above: "dollars" (position P&L) or "ticks" (raw price distance on the contract's tick grid).

blocked_symbols
string[]
required
bracket_mode
string
required
daily_loss_action
string
required
daily_loss_fired_today
boolean
required

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.

daily_loss_trailing
boolean
required
daily_loss_trailing_type
string
required
daily_profit_action
string
required
daily_profit_fired_today
boolean
required

True when the profit target already fired this trading day. Unlike the loss limit, this does not gate new entries.

day_boundary_label
string
required

Human-readable boundary for day_clock, e.g. "17:00 CT" or "00:00 ET".

day_clock
string
required

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.

est_flatten_fees
number<double>
required

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").

firm_policy
any
required
settings_locked
boolean
required
symbol_contract_limits
object
required
trades_this_week
integer<int32>
required
trades_today
integer<int32>
required
trading_window_action
string
required

Outside every window: block (refuse new entries only) or flatten (also close positions + cancel orders once at the window close).

trading_window_open
boolean
required

True while new entries are allowed by the windows (always true when none are set).

trading_windows
any[]
required

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.

auto_bracket_stop_loss
number<double> | null
auto_bracket_take_profit
number<double> | null
auto_breakeven_trigger
number<double> | null
daily_loss_floor
number<double> | null

Equity level at which the limit fires — what a gauge should point at.

daily_loss_limit
number<double> | null
daily_loss_trailing_peak
number<double> | null

Session peak the trailing limit is measured from (trailing mode only).

daily_profit_target
number<double> | null
max_trades_per_day
integer<int32> | null
max_trades_per_week
integer<int32> | null
pending
any | null
settings_locked_until
string | null

While set and in the future, no field above can be loosened.

trades_remaining_today
integer<int32> | null
trades_remaining_week
integer<int32> | null
trading_window_active_label
string | null

Label of the window that is open right now, if it has one.

trading_window_closes_at
string | null

RFC 3339 close of the current open window (while open).

trading_window_opens_at
string | null

RFC 3339 start of the next window (while closed).

trading_window_opens_at_label
string | null

trading_window_opens_at phrased in the window's own zone, e.g. "Thu 09:30 EDT".

trailing_stop_distance
number<double> | null