Skip to main content
POST
Create a new trading rule

Authorizations

Authorization
string
header
required

JWT Bearer token for user session auth. Format: "Bearer {token}". Used by User and Organization endpoints.

Body

application/json
name
string
required

Rule name (must be unique within your organization)

Example:

"Aggressive 100K Challenge"

description
string

Rule description

Example:

"High risk tolerance rules for experienced traders"

profitTarget
number

Profit target to pass ($)

Example:

10000

dailyProfit
number

Max daily profit cap (0 = unlimited)

Example:

0

maxProfit
number

Max total profit cap (0 = unlimited)

Example:

0

dailyLoss
number

Max loss allowed per day ($)

Example:

2500

maxLoss
number

Max total loss from starting balance ($)

Example:

5000

dailyDrawdown
number

Max drawdown from day's starting balance ($)

Example:

2500

maxDrawdown
number

Max drawdown from the reference. Percent of the reference by default (must be <= 100); a fixed dollar amount when drawdownDenomination is "dollars".

Required range: x >= 0
Example:

5

drawdownType
enum<string>
default:static

How drawdown is calculated. "static" = fixed from initial balance. "trailing" = real-time from high water mark. "eod" = trailing but only updates at end of day.

Available options:
static,
trailing,
eod
Example:

"trailing"

drawdownDenomination
enum<string>

Unit of maxDrawdown. "percent" (default) = % of the reference. "dollars" = a fixed dollar amount below the reference — required for zero-based (e.g. $0 sim funded) accounts, where any percent of $0 is a $0 floor. Example: drawdownType "trailing" + denomination "dollars" + maxDrawdown 1000 = a $1,000 trailing max loss whose floor starts at -$1,000.

Available options:
percent,
dollars
Example:

"percent"

drawdownTrailCeiling
number

For trailing drawdowns: the floor stops climbing once it reaches initialBalance + this many dollars and locks there (the "ceiling"). Example: 100 on a $0 sim funded locks the floor at +$100 once equity has peaked $1,100. null/absent = the floor trails forever.

Example:

100

newsTradingAllowed
boolean

Display-only permission flag shown to traders: trading during news events (default true). Not engine-enforced.

Example:

true

microscalpingAllowed
boolean

Display-only permission flag shown to traders: microscalping (default true). Not engine-enforced.

Example:

true

weekendHoldingAllowed
boolean

Display-only permission flag shown to traders: holding positions over the weekend (default true). Not engine-enforced.

Example:

true

overnightHoldingAllowed
boolean

Display-only permission flag shown to traders: holding positions overnight (default true). Not engine-enforced.

Example:

true

consistency
number

Consistency rule % — max share of profit any single day may reach (0 = disabled). See the consistency notes for the full formula and companion fields.

Example:

30

consistencyEnforced
boolean

Opt-in enforcement switch. false (default) = consistency % is informational only. true = the engine gates evaluation completion (evaluation accounts) or payout eligibility (sim_funded accounts) on the consistency rule.

Example:

true

consistencyBase
enum<string>

What the consistency % applies to. null (default) = automatic by account type: evaluation → max_target_or_pnl (cap grows once total PnL exceeds the target), sim_funded → cycle_profit (profit since the last consistency reset). max_profit_target_or_pnl is accepted as an alias of max_target_or_pnl.

Available options:
max_target_or_pnl,
max_profit_target_or_pnl,
total_pnl,
profit_target,
cycle_profit
Example:

"max_target_or_pnl"

consistencyTolerancePct
number

Daily-cap buffer as a percent of starting balance, added on top of base × consistency%. Example: 0.2 = $100 buffer on a $50,000 account.

Required range: x >= 0
Example:

0.2

consistencyLeniency
number

Flat dollar buffer added to the daily cap (e.g. 40 = $40 leniency on funded payout consistency).

Required range: x >= 0
Example:

40

consistencyMinDays
integer

Minimum profitable days required to pass an evaluation. null (default) = automatic ceil(100 / consistency), e.g. 50% → 2 days, 40% → 3 days. 0 = disabled.

Required range: x >= 0
Example:

2

consistencyProfitableDayMin
number

A trading day counts as profitable when its net PnL is at least this many dollars. Default 0 (any non-negative traded day counts).

Required range: x >= 0
Example:

0

maxPayouts
integer

When set, the Nth processed payout fires the account.max_payouts_reached webhook (e.g. "trader goes live after 5 payouts"). null = unlimited.

Required range: x >= 1
Example:

5

payoutMllLockOffset
number

Default loss-floor offset used by payouts requesting move_mll_to_lock: floor = initial balance + offset. Can be overridden per payout with lockBalance.

Required range: x >= 0
Example:

100

maxPositionByMarket
object

Per-market position limits in each market's own unit{"BINANCE": 0.5} is half a Bitcoin, not 500 of anything. A market listed here is measured against this limit instead of maxContracts, so it is never gated twice; markets left out fall back to maxContracts in mini-equivalents. Prefer this over maxContracts for any market whose contract steps fractionally.

Example:
maxContracts
number

Max position size in mini-equivalent contracts (micros converted via microConversionRatio). A rule is not tied to a market, so this is always counted in ENGINE units: one unit is one futures contract, but 0.001 BTC on the Binance perpetual. A 0.1 BTC cap is therefore 100, and 1 BTC is 1000. Read quantityStep on the contract to convert.

Example:

10

microConversionRatio
integer

How many micro contracts (MES, MNQ, ...) count as 1 unit toward maxContracts. Default 10 (CME notional ratio). Use 5 for 5-micros-per-mini plans, or 1 to count micros the same as minis.

Required range: x >= 1
Example:

10

scalingPlan
object

Profit-based contract scaling tiers. Overrides maxContracts when set (see notes).

Example:
personalRiskPolicy
object

Bounds on the risk controls traders set for themselves on accounts using this rule set (see notes). Omit to leave traders unconstrained.

Example:
metadata
object

Custom metadata for your organization

Example:

Response

Rule created successfully

success
boolean
Example:

true

message
string
Example:

"Trading rule created successfully"

data
object
Example: