Rules & Limits
This page is a comprehensive reference for every rule type that TestMax enforces in Challenge Mode. Understanding these rules deeply is essential — most evaluation failures come from rule violations, not bad trading.
Drawdown rules
The drawdown rule is the single most important rule in any evaluation challenge. It defines the maximum amount your account can decline from its peak before you fail. TestMax supports four drawdown calculation methods.
Static drawdown
The simplest type. Your maximum loss is a fixed dollar amount below your starting balance, regardless of how much profit you make.
How it works:
- Drawdown floor = Starting balance - Maximum drawdown amount
- The floor never moves — not up, not down
- If your equity touches or drops below the floor, you fail
Example: $50,000 starting balance, $2,000 static drawdown.
| Event | Equity | Drawdown floor | Status |
|---|---|---|---|
| Start | $50,000 | $48,000 | OK |
| Win $3,000 | $53,000 | $48,000 | OK — floor unchanged |
| Lose $4,500 | $48,500 | $48,000 | OK — close to floor |
| Lose $600 more | $47,900 | $48,000 | FAIL — below floor |
Trailing intraday drawdown
The drawdown floor follows your equity high watermark in real time, including unrealized gains. This is the strictest drawdown type.
How it works:
- Drawdown floor = Highest equity ever reached - Maximum drawdown amount
- The floor updates on every bar as your equity changes
- Unrealized P&L counts — if you have an open position in profit, the floor moves up even before you close the trade
- The floor never moves down
Example: $50,000 starting balance, $2,000 trailing intraday drawdown.
| Event | Equity | Equity high | Drawdown floor | Status |
|---|---|---|---|---|
| Start | $50,000 | $50,000 | $48,000 | OK |
| Open trade, unrealized +$800 | $50,800 | $50,800 | $48,800 | Floor moved up |
| Price pulls back, unrealized +$200 | $50,200 | $50,800 | $48,800 | Floor stays |
| Close trade at +$500 | $50,500 | $50,800 | $48,800 | Floor stays at high |
| Win another $1,500 | $52,000 | $52,000 | $50,000 | Floor now at starting balance |
Trailing end-of-day (EOD) drawdown
Similar to trailing intraday, but the floor only updates at the end of each trading day based on your closing balance. Intraday equity fluctuations do not affect the floor.
How it works:
- At the end of each trading day, the system checks your closing account balance
- If the closing balance is a new high, the drawdown floor moves up to (new high - maximum drawdown)
- During the trading day, the floor remains at its previous level
- The floor never moves down
Example: $50,000 starting balance, $2,000 trailing EOD drawdown.
| Day | Closing balance | Balance high | Drawdown floor | Status |
|---|---|---|---|---|
| Day 1 | $50,800 | $50,800 | $48,800 | Floor trails up at EOD |
| Day 2 | $50,400 | $50,800 | $48,800 | No new high, floor stays |
| Day 3 | $51,500 | $51,500 | $49,500 | New high, floor moves up |
| Day 4 | $49,600 | $51,500 | $49,500 | Close — only $100 of room left |
Trailing EOD with lock
This is the drawdown type used by the built-in presets. It works like trailing EOD with one important addition: once the drawdown floor reaches your starting balance, it locks and stops trailing.
How it works:
- Same as trailing EOD — floor updates at end of day based on closing balance highs
- When the floor reaches the starting balance, it locks permanently
- After locking, your drawdown behaves like a static drawdown at the starting balance
Example: $50,000 starting balance, $2,000 trailing EOD with lock.
| Day | Closing balance | Balance high | Drawdown floor | Status |
|---|---|---|---|---|
| Day 1 | $50,500 | $50,500 | $48,500 | Trailing |
| Day 2 | $51,200 | $51,200 | $49,200 | Trailing |
| Day 3 | $52,100 | $52,100 | $50,100 | Locked — floor reached $50,000, locks at $50,000 |
| Day 4 | $54,000 | $54,000 | $50,000 | Floor stays at $50,000 forever |
| Day 5 | $50,200 | $54,000 | $50,000 | Safe — $200 above locked floor |
Drawdown type comparison
| Feature | Static | Trailing intraday | Trailing EOD | Trailing EOD with lock |
|---|---|---|---|---|
| Floor moves up | Never | Every bar | End of day | End of day (until locked) |
| Unrealized P&L affects floor | No | Yes | No | No |
| Floor can lock | N/A | No | No | Yes |
| Difficulty | Easiest | Hardest | Medium | Medium |
| Built-in preset | — | — | — | Yes |
Daily loss limit
The daily loss limit caps how much you can lose in a single trading day. This is separate from the trailing drawdown and is reset each day.
How it works:
- At the start of each trading day, the daily P&L counter resets to $0 (the trading day rolls at 22:00 UTC — roughly 5:00 PM CT, the Globex open)
- Both realized and unrealized P&L count toward the daily limit
- If your daily loss reaches the limit (e.g., -$1,000), the challenge fails immediately — there is no warning and the day does not simply “end”
Example: $1,000 daily loss limit.
| Trade | Trade P&L | Daily P&L | Status |
|---|---|---|---|
| Trade 1 | -$300 | -$300 | OK |
| Trade 2 | +$150 | -$150 | OK |
| Trade 3 | -$500 | -$650 | OK — still within limit |
| Trade 4 | -$400 | -$1,050 | VIOLATION — exceeded $1,000 limit |
Profit targets
Each evaluation phase has a profit target you must reach to advance.
How it works:
- Your net realized P&L in the current phase must reach the target — profit is measured from your balance at the start of the phase (Phase 1 starts from the account size; Phase 2 starts from whatever your balance was when you advanced)
- Unrealized P&L does not count — you must close the trade to book the profit
- You must also meet the minimum trading days requirement before the phase is considered passed
- Time limits are optional: you can configure a maximum number of days per phase (measured in simulation days, not wall-clock time). The built-in presets leave this disabled
Preset profit targets (single evaluation phase):
| Account size | Profit target |
|---|---|
| $50,000 | $3,000 |
| $100,000 | $6,000 |
| $150,000 | $9,000 |
Two-step challenges — the 2-step forex presets, or any custom challenge switched to 2-Step — add a second, smaller target for Phase 2. The forex presets use 10% for Phase 1 and 5% for Phase 2, each measured from that phase’s starting balance.
Minimum trading days
You must trade on a minimum number of distinct trading days before a phase can be completed. This prevents traders from passing on a single lucky day.
How it works:
- A “trading day” is a simulation date on which at least one order fill executed — days where you open the platform but do not trade do not count
- The trading day rolls at 22:00 UTC (~5:00 PM CT, the Globex open), so a fill at 23:00 UTC counts toward the next day
- You must accumulate the required number of trading days even if you hit the profit target early
- The requirement is per phase — the counter resets to zero when you advance to Phase 2
The built-in presets require 2 trading days (the EOD-trail-with-lock futures presets and the 2-day-minimum variant), 3–4 (the 2-step forex presets), or none (the plain EOD-trail futures presets and the 1-step forex preset). Custom challenges use whatever you set.
Consistency rules
Consistency rules prevent you from passing an evaluation based on one or two outsized winning days. They ensure your profit is distributed across multiple sessions.
This is a soft gate — it never fails your account. It only raises the bar you must clear.
How it works (evaluation phases):
- Your single best day’s profit must stay at or below a percentage of the profit target (the presets use 50%)
- If your best day exceeds that limit, your effective profit target increases to
best day ÷ 50%— you must earn more to pass - Losses never reduce your best day; only the locked daily totals count
- The rule mathematically requires at least two profitable days to pass
Example: 50% consistency rule, $3,000 profit target → best day must stay ≤ $1,500.
| Day | Day P&L | Total P&L | Best day | Effective target | Status |
|---|---|---|---|---|---|
| Day 1 | +$2,000 | $2,000 | $2,000 | $4,000 | Target raised ($2,000 ÷ 0.50) |
| Day 2 | +$1,200 | $3,200 | $2,000 | $4,000 | Over original target, under raised one |
| Day 3 | +$900 | $4,100 | $2,000 | $4,000 | PASS — $4,100 ≥ $4,000 |
How it works (performance phase):
In the performance phase, consistency does not block trading or raise any target. On the Consistency withdrawal path, your best day since the last withdrawal must be at or below 40% of your net profit in that window to request a withdrawal — keep trading and the ratio comes down naturally. The window resets after every withdrawal. The Standard withdrawal path has no consistency requirement. Withdrawals are simulated — nothing is transferred.
Trading hours restrictions
Rule sets often restrict trading to specific hours, typically aligned with the main US futures session.
How it works:
- You can configure allowed trading hours (UTC) in your simulation setup
- Enforcement is on open positions, not orders: holding an open position on a bar outside the allowed window fails the challenge immediately. Orders are not rejected and there is no warning — close your positions before the window ends
- Wrap-around windows are supported (e.g., the built-in presets use 22:00 → 21:00 UTC, matching the CME Globex session with its daily maintenance break)
Flat-by time
Separately from the trading-hours window, you can configure a flat-by time in UTC (the built-in presets use 20:10 UTC — 3:10 PM CT in summer, 2:10 PM CT in winter):
- From the flat-by time onward, holding an open position triggers a warning with a countdown
- If you are still holding 5 minutes past the flat-by time, the challenge fails
- The rule only applies between the flat-by time and the 22:00 UTC session roll — positions opened after the roll belong to the next trading day’s evening session and are legal
Overnight and weekend holding
Some rule sets prohibit holding positions overnight or over weekends.
How it works:
- When enabled, holding an open position across the trading-day boundary (22:00 UTC, ~5:00 PM CT) fails the challenge immediately — there is no warning at the boundary itself (use the flat-by time rule above if you want a warning window)
- The weekend rule works the same way: a position held from a Friday trading day into the next session fails the challenge
- Both rules are on/off toggles — disable them if your rule set allows overnight or weekend holding
Common configurations:
| Rule set | Overnight holding | Weekend holding |
|---|---|---|
| Built-in presets | Allowed — the EOD-trail-with-lock futures presets use the 20:10 UTC flat-by time instead | Allowed |
| Custom | Configurable | Configurable |
Rule violation consequences
Every hard rule in TestMax is enforced as hard stops: a violation fails the challenge immediately. The only soft rules are the consistency rule and the flat-by-time warning window:
| Violation | Consequence |
|---|---|
| Drawdown breached (any type) | Challenge fails immediately |
| Daily loss limit exceeded | Challenge fails immediately |
| Consistency rule not met | Effective profit target raised — keep trading (never fails the account) |
| Position open outside trading hours | Challenge fails immediately |
| Position open past flat-by time | Warning with countdown; challenge fails after 5 minutes |
| Overnight/weekend position held | Challenge fails at the day boundary |
| Order exceeds the contract limit | Order rejected (challenge continues) |