> ## Documentation Index
> Fetch the complete documentation index at: https://tbignite.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# How drawdown & failure work

> The one rule behind every drawdown type - equity vs. the failure threshold - and which phase settings produce each behavior.

Every drawdown type (Which maximum-loss rule the account uses: a fixed limit, or a trailing limit that moves up as the account makes new highs.) is the **same rule**. What differs is the value each one measures down from - its **anchor**. Get this page, and every account's failure behavior follows.

> [!NOTE]
>
> **At a glance:** an account fails the instant its **equity** touches its **failure threshold**. The [phase settings](https://tbignite.mintlify.site/challenge-phases.md) decide where that threshold sits and when it moves. For step-by-step examples with the numbers filled in, see [Drawdown scenarios](https://tbignite.mintlify.site/drawdown-scenarios.md).

## The one rule

```
equity            = balance + unrealized P&L
failure threshold = anchor - max drawdown

The account FAILS the instant equity <= failure threshold
```

Three facts, true of every type without exception:

1. **Equity includes unrealized P\&L - in both directions.** Whenever a position is open, equity and balance are different numbers. An open *losing* position breaches an account exactly like a closed one, so holding a loser open never protects you. An open *winning* position pushes equity **above** balance - and on a trailing account that raises the peak, and with it the floor.
2. **The check is live, on every tick** - not at the close, not on realized P\&L only.
3. **The failure threshold never moves down.** A losing day never lowers it.

Every type measures its floor **down from an anchor** - a reference value such as the starting balance, or the highest point the account has reached. The drawdown type decides only **where that anchor sits** and **when it moves**. Nothing else.

> [!NOTE]
>
> **Balance and equity are not the same number.** **Current balance** is realized only; **Current equity** adds the unrealized P\&L of whatever is still open. Starting from a \$50,000 balance:
>
> | Open position | Current balance | Current equity |
> | - | - | - |
> | None (flat) | \$50,000 | \$50,000 |
> | \$3,000 in profit | \$50,000 | **\$53,000** |
> | \$2,000 down | \$50,000 | **\$48,000** |
>
> **Every drawdown check reads equity, never balance** - which is why the charts on this page plot both lines. Scenario [S2](https://tbignite.mintlify.site/drawdown-scenarios.md#static-max-drawdown-only) is the case where that distinction decides the outcome.

> [!NOTE]
>
> The failure threshold is **derived, never stored**. With **Lock trailing drawdown** off it is `anchor - max drawdown`. With it on it is `min(anchor - max drawdown, initial balance + Max trailing DD limit)` - the lock ceiling caps it. Any value that cannot be reproduced from the anchor, the max drawdown and the lock ceiling is wrong. The CRM displays it as **Failure threshold**.

> [!WARNING]
>
> **All amounts on this page are illustrative.** They show how the rules behave - they are not live product settings. For any real account, read the values from its [phase configuration](https://tbignite.mintlify.site/challenge-phases.md).

## Which fields control it

Everything on this page traces back to fields on the **phase**, set on [Challenge phases](https://tbignite.mintlify.site/challenge-phases.md). This is the map:

| Phase setting | What it controls |
| - | - |
| **Global drawdown type** | Where the anchor sits and when it moves - Static, Trailing (intraday), or End of day. |
| **Global DD threshold** | The max drawdown: how far below the anchor the floor sits. **Always a hard breach (The moment an account crosses one of its loss limits.).** |
| **Max trailing DD limit** | The ceiling a trailing floor stops climbing at - initial balance plus this offset. |
| **Lock trailing drawdown** | Whether that ceiling is applied at all. |
| **Daily drawdown** | A second floor, reset every session. |
| **Check daily drawdown** | **Master switch** for the daily floor. Off = the amount is ignored entirely. |
| **Soft breach** | Whether a daily breach **pauses** the account or **fails** it. Daily only - it never affects max drawdown. |
| **Auto-flatten before market close** | **Off = swing (The account may hold positions overnight instead of being closed out at the session end.)** - the account may hold overnight, and the floor is checked around the clock. |
| **Initial balance** | The static anchor, and the reference point for the lock ceiling. |

> [!NOTE]
>
> **The phase is the source of truth.** An account is bound to a phase, and that phase's values are what get enforced - a phase may carry a different initial balance from its parent challenge (The evaluation program an account is created under - its starting balance, profit target, and risk rules.).
>
> **A valid configuration satisfies all of these:**
>
> * **Global DD threshold** is greater than zero and strictly under **Initial balance**
> * The account's starting balance equals the phase's **Initial balance**
> * **Daily drawdown** is strictly under the **Global DD threshold**, or **Check daily drawdown** is off
> * Every active account has a max-drawdown rule bound to it
> * Day N's closing balance equals day N+1's starting balance, net of commissions
>
> **A valid Failure threshold satisfies all of these:** it reproduces exactly from the anchor, the **Global DD threshold** and the lock ceiling; it never decreases over the life of the account; and with **Lock trailing drawdown** on it never exceeds `Initial balance + Max trailing DD limit`.

## The breach is the touch

![EOD breach](https://mintcdn.com/tbignite/a_HuvRSRGCAuRzpO/images/drawdown/eod-breach.png?fit=max\&auto=format\&n=a_HuvRSRGCAuRzpO\&q=85\&s=72711175dc248819c0e7ca632b19ac01)

The account fails at the intraday touch, even if it closes green.

The instant equity reaches or falls below the failure threshold, the account has **failed** - and it is immediately flattened (every position closed, every order cancelled). A later recovery does **not** un-fail it. Failure is decided by the **lowest point equity reached**, never by where the day ended.

> A \$50,000 account with the floor at \$49,000 touches \$48,900 at 11:00, then rallies to close at \$51,300. **It failed at 11:00.** After 11:00 it held no position, so that \$51,300 close is a number it could never actually reach.

> [!WARNING]
>
> **Never evaluate an account on its closing balance.** A closing-balance check passes an account that already failed intraday - the most expensive mistake available in these rules. Evaluate against the intraday low, on equity.

> [accordion] What happens during the flatten
>
> The flatten (Close all of an account's open positions immediately.) is not instantaneous. It holds for **about 6 seconds**, or until every position is confirmed closed - whichever is longer - and no new orders can be submitted during that window.
>
> On a fast move the liquidation can fill at a worse price than the floor, so the final balance can end up **below** the level that triggered the breach. That is expected and does not change the verdict: **the breach is the touch that started the flatten, not the price the flatten happened to fill at.**

*Step-by-step examples: [Breach mechanics B1–B3](https://tbignite.mintlify.site/drawdown-scenarios.md#breach-mechanics).*

## The three types

**Global drawdown type** selects the anchor - that is the only thing that differs between them.

| Type | Anchor | When the anchor moves |
| - | - | - |
| **Static** | Initial balance | Never |
| **Trailing** (intraday) | Highest equity ever reached, including unrealized | Continuously, on every new equity high |
| **End of day** | Highest **closing** balance ever reached | Once per day at the close, and only on a new high |

### Static

Set **Global drawdown type** to **Static**. The floor is `initial balance - Global DD threshold`, fixed for the life of the account.

![Static](https://mintcdn.com/tbignite/a_HuvRSRGCAuRzpO/images/drawdown/static.png?fit=max\&auto=format\&n=a_HuvRSRGCAuRzpO\&q=85\&s=ff4b59004fccf0ef44eae4095a203404)

Static - a fixed floor, so every dollar of profit widens the gap to it.

A line in the sand set on day one. The more the account banks, the more it can lose in a single day without failing.

**\$50,000 account, \$2,000 Global DD threshold. Floor = \$48,000, forever.**

| Day | Balance at open | Can lose before failing |
| - | - | - |
| 1 | \$50,000 | \$2,000 |
| 30 | \$60,000 | **\$12,000** |

> [!WARNING]
>
> **The single-day allowance grows without bound.** A profitable static account with no daily limit really can lose a very large amount in one session and survive, because the only floor is that fixed line. Add a **Daily drawdown** if you want to cap each session.

*Step-by-step examples: [Static scenarios S1–S4](https://tbignite.mintlify.site/drawdown-scenarios.md#static-max-drawdown-only).*

### Trailing (intraday)

Set **Global drawdown type** to **Trailing**. The peak equity updates on every tick - **including unrealized** - and the floor is `peak equity - Global DD threshold`.

![Intraday trailing](https://mintcdn.com/tbignite/a_HuvRSRGCAuRzpO/images/drawdown/intraday.png?fit=max\&auto=format\&n=a_HuvRSRGCAuRzpO\&q=85\&s=f4fc5da9f259837382ac7613333f45c6)

Intraday trailing - the floor follows the peak up; unrealized counts.

The floor follows the account up in real time, and **unrealized profit counts**. This is the tightest of the three, and the one traders dispute - a trade that goes green and round-trips costs drawdown room while making no money.

**\$50,000 account, \$2,500 Global DD threshold.**

| Moment | Equity | Peak | Floor |
| - | - | - | - |
| Open | \$50,000 | \$50,000 | \$47,500 |
| Position runs 1,000 in profit (unrealized) | \$51,000 | \$51,000 | **\$48,500** |
| Position round-trips back to flat | \$50,000 | \$51,000 | \$48,500 - does not move back down |
| Trader then loses 1,600 | \$48,400 | \$51,000 | **FAILED** |

Down only \$1,600 on the day, failed on a \$2,500 drawdown account. The unrealized high did that.

*Step-by-step examples: [Trailing scenarios I1–I3](https://tbignite.mintlify.site/drawdown-scenarios.md#trailing-intraday-max-drawdown-only).*

### End of day

Set **Global drawdown type** to **End of day**. During the session the floor is `highest closing balance - Global DD threshold` and is **frozen**. At the close, once, the anchor moves up - but only if that close is a new high.

More forgiving intraday: the account can run a position deep into profit and give it all back without moving the floor. The floor only advances if the gain is **banked** and the day closes at a new high.

> [!NOTE]
>
> **"End of day" describes when the anchor *moves*, not when the breach is *checked*.** An End-of-day account is checked live, on equity, every second of the session - against a floor that is frozen for that session. **Frozen, not suspended.** That is exactly the case in the chart at the top of this page.

**\$50,000 account, \$2,000 Global DD threshold.**

| Day | Intraday high | Closing balance | Floor after the close |
| - | - | - | - |
| 1 | \$50,750 (unrealized) | \$50,000 | **\$48,000** - the close was not a new high |
| 2 | \$51,300 | \$51,000 | **\$49,000** - new high, so the floor moves up |
| 3 | \$51,200 | \$49,500 | \$49,000 - a losing day never lowers it |

Two properties of that closing balance this depends on:

* **It is net of commissions.** A gross figure drifts from the true balance and misplaces the floor.
* **Day N's closing balance is day N+1's starting balance.** Always the same number. If the two ever disagree, that is a commission or carry issue, not a rule difference.

*Step-by-step examples: [End-of-day examples E1–E5](https://tbignite.mintlify.site/drawdown-scenarios.md#end-of-day-max-drawdown-only).*

## Three values that sound alike

[Account details](https://tbignite.mintlify.site/account-details.md) shows three different "peak" figures, and picking the wrong one is the most common mistake in this whole rule set. They are not interchangeable:

| Field | What it records | Anchors which drawdown type |
| - | - | - |
| **Peak equity** | The highest **equity** the account ever reached - so it **includes unrealized profit** from open positions. | **Trailing (intraday)** |
| **Peak realized balance** | The highest **realized balance** the account reached at **any moment**, including mid-session. | **None.** It anchors nothing - this is the trap. |
| **EOD peak balance** | The highest **closing** balance - the value is sampled **only at the session close**. | **End of day** |

> [!WARNING]
>
> **Peak realized balance is not the end-of-day peak balance.** A balance high reached at 13:00 and given back before the close raises **Peak realized balance** but leaves **EOD peak balance** untouched. Anchoring an End-of-day account to the wrong one puts the floor too high and fails accounts that should have survived.

![Peak balance vs EOD peak balance](https://mintcdn.com/tbignite/a_HuvRSRGCAuRzpO/images/scenarios/E5.png?fit=max\&auto=format\&n=a_HuvRSRGCAuRzpO\&q=85\&s=4be512616df70e2be67840c2990821a4)

The balance peaks intraday at \\$51,500, but only the \\$50,800 close moves the end-of-day anchor.

Here it is in numbers: the account opens at \$50,000 and the trader banks winners through the morning, so the realized balance climbs to **\$51,500** by 13:00. Afternoon losses give some back and the day **closes at \$50,800**.

* **Peak realized balance = \$51,500** - a real high, but it is not what the end-of-day rule reads.
* **EOD peak balance = \$50,800** - the close, and the only value that moves the anchor up.
* Tomorrow's floor is therefore `50,800 - 2,000 =` **\$48,800**, not `51,500 - 2,000 =` \$49,500.

> [!NOTE]
>
> The same principle explains [E2](https://tbignite.mintlify.site/drawdown-scenarios.md#end-of-day-max-drawdown-only): an **unrealized** intraday high does not move the anchor either. Only the closing balance does - realized or not, mid-session highs are ignored by the end-of-day rule.

## Locking a trailing floor

Two fields work together: **Lock trailing drawdown** turns locking on, and **Max trailing DD limit** sets the offset. The ceiling is `initial balance + Max trailing DD limit`.

Once the trailing floor reaches that ceiling it **locks and never moves again**. From that point the account behaves exactly like a **Static** account, including the growing single-day allowance.

![Locking](https://mintcdn.com/tbignite/a_HuvRSRGCAuRzpO/images/drawdown/locking.png?fit=max\&auto=format\&n=a_HuvRSRGCAuRzpO\&q=85\&s=350d6421d35abf7067d2d2a9df71dd72)

The trailing floor climbs, then locks at the ceiling and stops.

| Offset | Ceiling on a \$50,000 account | Effect |
| - | - | - |
| \$100 | \$50,100 | The floor locks just above break-even. |
| \$0 | \$50,000 | The floor locks **at** the initial balance - any loss below the starting balance then fails the account. |

> [!WARNING]
>
> **There is no universal offset.** It is set per firm, and sometimes per challenge - anywhere from \$0 upward. Always read **Max trailing DD limit** from the phase configuration; never assume a value.

> [!NOTE]
>
> **The ceiling applies whatever the Global drawdown type.** Whenever **Lock trailing drawdown** is on, the failure threshold is `min(anchor - Global DD threshold, initial balance + Max trailing DD limit)` - for Static, Trailing and End of day alike. On **Static** the cap can never take effect, because the anchor is the initial balance itself. On **End of day** it takes effect once the EOD peak balance has climbed more than `Global DD threshold + Max trailing DD limit` above the initial balance.

> [!NOTE]
>
> Before the floor reaches the ceiling it is still trailing. It becomes static only **after** it locks.

*Step-by-step examples: [Locking scenarios L1–L4](https://tbignite.mintlify.site/drawdown-scenarios.md#trailing-with-a-lock).*

## Daily loss limit

A second, independent floor that resets every session: `daily floor = start-of-day balance - Daily drawdown`.

The daily total **includes unrealized P\&L**, exactly like the max drawdown - it is `realized today + unrealized - commissions today`.

Two toggles govern it:

* **Check daily drawdown** - the master switch. Off, and the **Daily drawdown** amount is ignored entirely, whatever value is stored.

> [!WARNING]
>
> **Do not leave Daily drawdown at `0` or blank while Check daily drawdown is on.** The test is `equity <= daily floor`, and a `0` amount puts the daily floor exactly at the start-of-day balance - so the account breaches on its first tick into loss and never gets a chance to trade. If you do not want a daily limit, turn **Check daily drawdown** off instead.

* **Soft breach** - whether a daily breach pauses the account for the session or fails it permanently.

| Breach | What happens | Afterwards |
| - | - | - |
| **Soft breach** | Flatten, cancel, and no trading for the rest of the session. | **Trades again next session** |
| **Hard breach** | Flatten, cancel, fail. | **Never trades again** |

> [!WARNING]
>
> **Max drawdown is always a hard breach.** **Soft breach** applies *only* to the daily drawdown - it has nothing to do with the Global DD threshold.

> [!NOTE]
>
> **A soft breach flattens exactly like a hard one.** The instant it triggers, every position is closed and every order cancelled, and the trader can take no action for the rest of the session. The only difference is what happens next.

### What happens on each kind of breach

Once an account has breached, every order it submits is rejected, and the reason given states which floor was crossed. The outcome and the stated reason must agree - and both are decided by **which floor was breached**, nothing else.

| Breach | Account outcome | Status | Stated reason |
| - | - | - | - |
| **Max drawdown** (any type) | Terminal - the account has failed | `FAILED` | The account's equity has reached or fallen below the failure threshold, so trading is no longer allowed on this account. **Never "suspended," never a resume time.** |
| **Daily, soft** | Flattened and closed out for the session; reactivates next open | `DONE_FOR_DAY` | The account hit its daily drawdown limit, so no further trading is allowed for the remainder of this session. It resumes at the next session open. |
| **Daily, hard** | Terminal | `FAILED` | The daily drawdown reached the allowed daily drawdown, so trading is no longer allowed on this account. |
| **Daily, with Check daily drawdown off** | Nothing happens | unchanged | Nothing is stated and no order is rejected - the rule is not enforced. |

> [!NOTE]
>
> The max-drawdown reason names **two live values**: the account's **current equity** at the moment it breached, and the **Failure threshold** computed for it. Neither is a fixed drawdown amount, and neither may be hardcoded - both are derived from the account's own phase configuration.

> [!WARNING]
>
> **`DONE_FOR_DAY` is an engine state, not a status you can look up.** It does **not** appear in the Accounts grid's Account status column, and you cannot filter on it. A soft-breached account still reads as **Active** there, because it has not failed and it trades again next session. To see that an account stopped for the session, check its [Account events](https://tbignite.mintlify.site/user-events-and-audit-logs.md) rather than its status.

> [!WARNING]
>
> A max-drawdown breach must **never** produce a "suspended until…" message - there is no time at which that account returns. And where there *is* a resume time, it is the **next session open** (futures 6:00 PM EST), never the session close.

> [!NOTE]
>
> **Do not express "this product has no daily limit" by setting Daily drawdown equal to the Global DD threshold.** Turn **Check daily drawdown** off instead. Equal amounts happen to behave correctly on a trailing account, but silently impose a real daily cap on a profitable static one.

*Step-by-step examples: [Static with a daily limit](https://tbignite.mintlify.site/drawdown-scenarios.md#static-with-a-daily-limit), [Trailing](https://tbignite.mintlify.site/drawdown-scenarios.md#trailing-with-a-daily-limit) and [End of day](https://tbignite.mintlify.site/drawdown-scenarios.md#end-of-day-with-a-daily-limit) with a daily limit, plus the [hard and disabled variants](https://tbignite.mintlify.site/drawdown-scenarios.md#daily-limit-hard-and-disabled).*

## Evaluation order

Max drawdown is always checked **first**. If it breaches, the account fails and the daily branch never runs.

```mermaid theme={null}
flowchart TD
  T["Every tick: equity = balance + unrealized PnL"] --> M{"equity at or below the failure threshold?"}
  M -- Yes --> F["FAILED - flatten, cancel, permanent"]
  M -- No --> C{"Check daily drawdown on?"}
  C -- No --> OK["No daily rule enforced"]
  C -- Yes --> D{"daily total reached the Daily drawdown?"}
  D -- No --> OK
  D -- Yes --> S{"Soft breach on?"}
  S -- Yes --> P["DONE_FOR_DAY - flatten, resumes next session"]
  S -- No --> F2["FAILED - flatten, permanent"]
```

## Two floors: which one stops the trader first

An account with both rules has two thresholds, and **on the way down the higher one is reached first**. The the floor reached first is the higher of the failure threshold and the daily floor.

![Which floor is reached first, the daily floor or the failure threshold](https://mintcdn.com/tbignite/a_HuvRSRGCAuRzpO/images/drawdown/two-floors.png?fit=max\&auto=format\&n=a_HuvRSRGCAuRzpO\&q=85\&s=2a617031fa90d326546641d23c1109ec)

With both floors, the higher one is hit first.

> [!WARNING]
>
> **The Failure threshold shown in the CRM is the max-drawdown floor only - it does not account for the daily loss limit.** On any day where the daily floor sits higher, the trader is stopped **above** the displayed number, and the CRM gives no indication of it. The number on screen is correct; it is just not the whole picture.

**\$50,000 End-of-day account. Global DD threshold \$2,000 (Failure threshold \$48,000). Daily drawdown \$1,100.**

| Day | Start balance | Daily floor | Failure threshold | Reached first |
| - | - | - | - | - |
| 1 | \$50,000 | **\$48,900** | \$48,000 | Daily floor |
| 2 | \$49,000 | \$47,900 | **\$48,000** | Failure threshold |

**Day 1.** Equity touches \$48,900 and the **daily floor** stops the trader, because it is the higher of the two. With **Soft breach** on, that is a pause for the session - the account survives and reactivates next session. The Failure threshold at \$48,000 was never approached.

**Day 2.** The trader loses another \$1,000 and touches \$48,000. This time the **Failure threshold** is the higher of the two, so it is reached first and **the account fails permanently**. The daily floor at \$47,900 was never reached.

On day 2 the trader lost \$1,000 against an \$1,100 daily limit. **They never hit their daily limit, and the account fails anyway.**

### When both break at once

A gap or a fast market can carry equity through **both** floors on a single tick.

> [!WARNING]
>
> **Max drawdown wins - a hard breach beats a soft breach.** A **soft breach** only pauses the account for the session; a **hard breach** fails it permanently. A pause can never override a failure, so when both floors are crossed on the same tick the account is **failed**, not suspended. The daily loss limit is a monitoring threshold that triggers a flatten - it is not a stop loss, and it cannot rescue an account that has already breached its Failure threshold.

### When the daily limit stops being the first floor reached

![Which floor is reached first](https://mintcdn.com/tbignite/a_HuvRSRGCAuRzpO/images/drawdown/binding-floor.png?fit=max\&auto=format\&n=a_HuvRSRGCAuRzpO\&q=85\&s=46dbe030617e8700bb7d1bfcedaf241b)

Profit lifts the Failure threshold above the daily floor, so the daily limit is no longer the first one reached.

A quick way to answer "which floor am I on today?" - compare two numbers:

```
H = Global DD threshold - Daily drawdown
G = anchor - start-of-day balance

The daily limit protects the trader only while G < H
```

| Type | What `G` is | What that means |
| - | - | - |
| **Static** | Negative while the account is in profit | **While the account is in profit**, the daily floor is the one reached first and is doing real work. Once the account falls back within one daily limit of its Failure threshold, that stops being true - see [SD3](https://tbignite.mintlify.site/drawdown-scenarios.md#static-with-a-daily-limit). |
| **End of day** | The drawdown already carried from the EOD peak | The daily limit stops protecting once that exceeds `H`. |
| **Trailing** | The gain above the session open | **Making money can lift the Failure threshold above the daily floor.** Once the trader is up more than `H` intraday, the Failure threshold is reached first and the next breach is terminal. |

*Step-by-step examples: [Trailing with a daily limit ID1–ID3](https://tbignite.mintlify.site/drawdown-scenarios.md#trailing-with-a-daily-limit) and [End of day with a daily limit ED1–ED3](https://tbignite.mintlify.site/drawdown-scenarios.md#end-of-day-with-a-daily-limit).*

## Swing accounts

**Auto-flatten before market close = off** makes a challenge **swing**: positions may be held across the session boundary and held overnight.

Swing is **not a fourth drawdown type.** It sits on top of Static, Trailing, or End of day and changes only how the floor is evaluated and carried across the overnight boundary.

![A swing account checked on equity overnight](https://mintcdn.com/tbignite/a_HuvRSRGCAuRzpO/images/drawdown/swing-overnight.png?fit=max\&auto=format\&n=a_HuvRSRGCAuRzpO\&q=85\&s=a217e4ce7954beca3d37c4968c4d8d6c)

A swing account is checked on equity around the clock, including through the overnight session.

* **Evaluated on equity, around the clock.** The unrealized P\&L of the overnight position counts exactly as it does intraday, so an overnight loser can breach the account **before the next session even opens**. There is no realized-only fallback.
* **The anchor carries on the closing value at the boundary.** For a flat-at-close account the End-of-day carry uses the realized closing balance. For a swing account holding a position at the boundary it uses **closing equity** by default, which includes that open position. Some firms carry the anchor on the *higher* of the closing balance and the closing equity instead, so an overnight loser holds the anchor at the realized balance; the two differ only when the boundary position is at a loss, so read it from the configuration rather than assuming. The failure check reads equity either way, so an overnight loser can still breach while the anchor is held at the realized balance.

### Swing accounts and the daily limit

**No swing product runs a daily limit today.** Every swing account carries a **max drawdown only**, so the two-floor machinery on this page does not apply to any swing account that currently exists. If you are checking a swing account, there is one floor to check.

> [!WARNING]
>
> **If you ever configure a daily limit on a swing account, the daily floor cannot come from the balance.** Everywhere else the daily floor is `start-of-day balance - Daily drawdown`. On a swing account carrying a losing position across the boundary, the balance does not include that loss but the equity does - so a floor derived from balance would show the account breaching its daily limit **at the open, before the trader has placed a single order that day**.
>
> Both floors on a swing account are measured from the **carried value at the boundary** - the higher of the closing balance and closing equity - not from the realized balance.
>
> **Step by step.** A \$50,000 account ends the session holding a winner: balance \$50,000, equity **\$53,000**. At the next open, both floors come off that \$53,000:
>
> | Limit | Floor at the next open |
> | - | - |
> | Daily drawdown \$2,000 | 53,000 - 2,000 = **\$51,000** |
> | Global DD threshold \$3,000 | 53,000 - 3,000 = **\$50,000** |
>
> Derive either floor from the \$50,000 balance instead and you place it \$3,000 too low. Talk to the Tickblaze team before configuring a daily limit on a swing account; none runs one today.

> [accordion] Static swing
>
> The floor is fixed at `initial balance - Global DD threshold` and never moves, so there is nothing to carry across the boundary. The only swing effect is that the fixed floor is live overnight - an overnight loser can breach it, and a recovery by morning does not un-fail the account.

> [accordion] Trailing (intraday) swing
>
> The equity peak keeps trailing **through the overnight session**, including on the unrealized highs of the open position. This is the tightest possible configuration: an overnight winner that spikes and retraces moves the floor up on the spike, and can fail the account on the retrace while the market is otherwise closed.

*Step-by-step examples: [Swing scenarios W1–W4](https://tbignite.mintlify.site/drawdown-scenarios.md#swing-accounts).*

## Operational edge cases

These are the cases where the account's state does not match what the rules would produce. Each one is rare, and each has a defined recovery.

### When auto-flatten does not run

**Auto-flatten before market close = on** means the account should be flat at the session close. If it does not run - for any reason - the position is still open afterwards, and an intraday account ends up holding into a window it was never meant to be in.

**The rule does not change.** Futures keep trading after the 5:00 PM close, so equity keeps moving on that position, and the floor is still checked against it on every tick. If equity reaches the failure threshold in that window, **the account fails there**, exactly as it would have intraday.

> [!WARNING]
>
> **The failure stands regardless of why the position was still open.** The breach is decided by equity reaching the failure threshold, not by whether the position should have been closed an hour earlier. An account that should have been flattened at 5:00 PM and instead breached at 5:40 PM has failed at 5:40 PM.

An intraday account holding past its session close is not expected behaviour. Tell the Tickblaze team - the failure itself is correct and stands, but the position surviving the auto-flatten is not.

### A position that outlives the flatten

Normally the flatten leaves nothing behind. But a position can still be open after a breach - during those first few seconds, on a swing account that breaches overnight, or where something goes wrong and one position stays open to the close.

**None of that re-opens the question.** The rules do not run again:

* The account failed the instant equity reached the failure threshold. **That recorded failure is the authoritative one**, and nothing after it is evaluated. A surviving position cannot un-fail the account, and it cannot fail it a second time.
* **The surviving position's profit and loss still moves the account balance.** So the closing balance can end up above or below the failure threshold, and **neither tells you anything about whether the account failed.**

> [!WARNING]
>
> **This is exactly why the failure is recorded the moment it happens.** Once a position outlives the flatten, the balance keeps moving, so the end-of-day figure is no longer evidence of the account's state. Read the **recorded failure** on the account, never the closing snapshot. It is on [Account details](https://tbignite.mintlify.site/account-details.md#status) → **Status**, which shows the status change and the reason it was recorded with.

**If a position is still open on a failed account:**

1. **Expect the platform to close it.** The flatten runs on its own, and normally clears everything without anyone stepping in.
2. **If it is still open, flatten it by hand.** [Pause the Accounts grid](https://tbignite.mintlify.site/accounts.md#pausing-and-resuming-the-grid), then use **Flatten** on that row.
3. **If a manual flatten does not close it either, tell the Tickblaze team on Slack.** At that point it is a platform issue - do not try to resolve it by editing the account.

### A failure on an account that never traded

An account can show as **Failed** while having **no trades, no positions and no orders in its entire history**. It cannot have breached: equity never moved off the starting balance, so it never reached the failure threshold.

**Check [Account events](https://tbignite.mintlify.site/account-details.md) before doing anything else.** Two very different things look identical from the account list, and they need opposite responses:

| What Account events shows | What it means | What to do |
| - | - | - |
| A **manual failure**, with the actor and timestamp | Someone failed the account deliberately. | Nothing is wrong. Leave it, or reverse it if the person acted in error. |
| **No manual failure** - it failed automatically | The account was marked failed when nothing could have failed it. | Recover it, and report it. |

**A failure with nothing behind it does not mean the account was set up wrong.** The initial balance, the **Global DD threshold** and the failure threshold derived from them can all be correct; the account simply got marked failed when it should not have been.

**If there is no manual failure behind it:**

1. **Reactivate the account.** An authorized operator can set it back to Active from [Account details](https://tbignite.mintlify.site/account-details.md) → **Status** → **Update status**. The trader carries on with the same account.
2. **Expect it to behave normally afterwards.** Nothing about the account was ever below its failure threshold, so reactivating it does not leave it on the edge of failing again. Trades placed after reactivation go through like any other.

> [!WARNING]
>
> **This only holds because the account never traded.** Reactivating an account that failed on a **genuine** breach puts it straight back below its failure threshold - it fails again on the next tick. Bringing a real failure back needs its balance restored as well, which is what [Account reset](https://tbignite.mintlify.site/account-reset.md) is for.

3. **Tell the Tickblaze team.** A failure with no trading and no manual action behind it points at something that needs investigating, even once the account is back up.

> [!NOTE]
>
> Everywhere else in these rules, a **Failed** status means equity genuinely reached the threshold. Check the account's events for the breach before assuming otherwise - this case is the exception, not a general licence to disregard a failure.

## Session timing (EST)

| Instrument | Session runs | Session **closes** - anchor moves up, daily limit resets | Next session **opens** |
| - | - | - | - |
| **Stocks** | 4:00 AM – 4:00 PM | 4:00 PM | 4:00 AM next day |
| **Futures** | 6:00 PM – 5:00 PM the next day | 5:00 PM | 6:00 PM the same day |

> [!NOTE]
>
> **Two different times, and they are an hour apart on futures.** The **close** (5:00 PM) is when the session's work happens - the end-of-day anchor moves up if the close was a new high, and the daily limit resets. The **open** (6:00 PM) is when trading resumes. An account stopped by a soft breach sits out the rest of the session and comes back at the **6:00 PM open**, not at the 5:00 PM close. The hour between them is the daily break.

## Step-by-step examples

> [card] [Drawdown scenarios](https://tbignite.mintlify.site/drawdown-scenarios.md)
>
> 35 step-by-step examples with the full arithmetic - every drawdown type, with and without a daily limit, plus locking, breach mechanics, and swing.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.