PropFirm Account Rules let a firm enforce proprietary-trading (“prop firm”) risk rules on individual accounts, evaluated continuously by the T4 Account Handler. The first available rule is the Trailing Drawdown: the account tracks a high-water mark (HWM), and if the account's net liquidation value falls to the trailing floor, T4 liquidates all positions, cancels all working orders, and disables the account.
The rule formula:
Breach when: NLV <= Min( HWM - Drawdown, Starting Balance )
| Requirement | Detail |
|---|---|
| Account Mode | Must be Auto Liq. |
| Account Fees | Must be configured (not None) — the rule needs T4-calculated fees. |
| Starting Balance | PropFirmStartingBalance must be greater than 0. |
| Server | The account's Account Handler must run the prop-firm engine (arranged by CTS). |
Two fields on the account (set via the Admin API account endpoints, or the Admin Portal where available):
| Field | Meaning |
|---|---|
PropFirmStartingBalance | The plan size. Seeds the HWM and caps the trailing floor. |
PropFirmRulesJSON | The rules document (below). Saving it with a null/empty value preserves the existing document; the explicit clear is {“Rules”:[]}. |
The rules document:
{
"SchemaVersion": 1,
"Epoch": 1,
"Rules": [
{
"Type": "TrailingDrawdown",
"RuleIndex": 0,
"Enabled": true,
"Params": {
"DrawdownAmount": 2000,
"Variant": "EndOfDay"
}
}
]
}
| Parameter | Values | Meaning |
|---|---|---|
Epoch | integer | Version counter for the rule state. Incrementing it resets the rule (see below). |
Enabled | true/false | A disabled rule is not evaluated and keeps no state. |
DrawdownAmount | > 0 | Drawdown as a dollar amount. Exactly one of DrawdownAmount / DrawdownPercent must be set. |
DrawdownPercent | 0–100 | Drawdown as a percentage of the Starting Balance. |
Variant | Intraday (default) or EndOfDay | When the HWM ratchets — see the examples below. |
The breach check runs continuously in both variants. The variants differ only in when the floor tightens, not in when a breach is detected — an EndOfDay account that hits its floor mid-session is liquidated mid-session.
On first activation (and after every epoch bump) the HWM seeds at Max(Starting Balance, current NLV).
$50,000 plan, DrawdownAmount 2000, Variant Intraday. HWM seeds at 50,000; the floor starts at 48,000.
| Session activity | NLV peak | EOD balance | HWM | Floor (Min(HWM−2,000, 50,000)) | |
|---|---|---|---|---|---|
| Day 1 | Buys 2 ES, rallies to +$1,250 open profit, closes out at +$800 | 51,250 | 50,800 | 51,250 | 49,250 |
| Day 2 | Rallies to +$1,600 open profit, closes at +$1,150 | 52,400 | 51,950 | 52,400 | 50,000 (capped) |
| Day 3 | Short NQ moves against the account | — | — | 52,400 | 50,000 |
49998.50 ⇐ Min(52400.00 - 2000.00, 50000.00) = 50000.00.
$50,000 plan, DrawdownPercent 4 (4% of 50,000 = $2,000), Variant EndOfDay. HWM seeds at 50,000; the floor starts at 48,000.
| Session activity | NLV peak | EOD balance | HWM after day roll | Floor | |
|---|---|---|---|---|---|
| Day 1 | Up $1,900 at the session high, closes at +$1,200 | 51,900 | 51,200 | 51,200 | 49,200 |
| Day 2 | Gives back $900 | 51,300 | 50,300 | 51,200 (no change) | 49,200 |
| Day 3 | Losing streak continues intraday | — | — | 51,200 | 49,200 |
On breach, T4 immediately:
The floor is the trigger level, not a guaranteed exit value — liquidation orders fill at prevailing market prices, so the account's realized balance after enforcement depends on those fills.
The breach then latches: re-enabling the account without resetting the rule causes the engine to disable it again. The only way to re-arm a breached account is an epoch bump.
After a payout, a plan reset, or a breach review, increment the Epoch in the rules document (the Admin API provides a one-call endpoint for this). The engine then:
Max(Starting Balance, current NLV),Note: an epoch bump does not change the account balance. Adjust the balance first (e.g. after a payout), then bump the epoch so the HWM re-seeds from the adjusted value.
Fees charged by auto-liquidation fills are added back to the rule's NLV permanently, so liquidation costs do not push the rule calculation (further) toward the floor. The firm-level setting CommissionExclusionScope controls the scope:
| Scope | Excluded from the rule NLV |
|---|---|
LiquidationFeeOnly (default) | Only the per-liquidation charge. |
AllAutoLiqFillCosts | The per-liquidation charge plus ordinary commission and fees on auto-liq fills. |
| Endpoint | Purpose |
|---|---|
GET /admin/v1/accounts/{accountID} | Returns propFirmRulesJSON and propFirmStartingBalance with the account details. |
POST/PUT account create/update | Accepts PropFirmRulesJSON and PropFirmStartingBalance. Invalid documents are rejected with a 400 and a reason. |
GET /admin/v1/accounts/{accountID}/propfirm/state | The live rule state: HWM, epoch, breach time, cost exclusions. Read-only. |
POST /admin/v1/accounts/{accountID}/propfirm/epoch | Bumps the epoch and saves the document — the one-call account reset. |
Rule state fields returned by the state endpoint:
| Field | Meaning |
|---|---|
Hwm | Current high-water mark. |
Epoch | The epoch this state belongs to. |
BreachedAt | Set when the account is latched breached; null otherwise. |
CumulativeExcludedLiqFees / …Commissions | Auto-liq costs excluded from the rule NLV to date. |
InitializedAt / InitReference | When the HWM was seeded and from what NLV (diagnostics). |