How to Build a Position Sizing Model That Adapts to Trailing Drawdown in Real Time
Static position sizing breaks down on trailing drawdown accounts because the floor moves while you trade. A dynamic model that adjusts contract count based on current cushion is how the pros handle it.
How to Build a Position Sizing Model That Adapts to Trailing Drawdown in Real Time
Static position sizing — same number of contracts every trade — makes sense on accounts where your risk capital doesn't change during the session. It makes progressively less sense on trailing drawdown accounts, where your effective risk capital fluctuates continuously as the floor moves.
Here's the problem in concrete terms: you sized at 2 NQ contracts because your cushion was $3,000 at session open. Forty minutes and two good trades later, your cushion is still $3,000 but the floor has moved up $1,800 (because those trades hit $1,800 in unrealized peak before closing at +$400 net). Your risk capital is still $3,000 in theory — but if the market reverses now, you have less effective recovery room than you did at session open because the floor has permanently captured those equity peaks.
A dynamic model sizes each entry based on current cushion conditions, not session-open conditions. Here's how to build one.
The Tier System: Connecting Cushion Levels to Contract Sizes
The practical implementation for most traders is a tier system rather than a continuous real-time calculation. Continuous calculation requires running math before every entry — realistic, but cognitively demanding during active trading. A tier system pre-defines the position size for each cushion range, so the decision at entry is: "what tier am I in right now?" rather than "let me recalculate from scratch."
Example tier system for an Apex PA $100K account (maximum drawdown $3,000), trading NQ:
| Cushion Level | Contract Size | Rationale |
|---|---|---|
| $2,500 – $3,000 (100% – 83%) | 2 NQ contracts (or 20 MNQ) | Full size — cushion is healthy |
| $1,800 – $2,500 (60% – 83%) | 1 NQ contract (or 10 MNQ) | Reduced — cushion has compressed meaningfully |
| $1,000 – $1,800 (33% – 60%) | 5 MNQ contracts | Minimum viable — protecting remaining cushion |
| Below $1,000 (<33%) | 1-2 MNQ contracts or flat for session | Emergency — preserve the account |
The thresholds above are illustrative — calibrate them to your specific account size, risk tolerance, and strategy. The principle (full size at healthy cushion, stepped reductions as cushion compresses) is what matters.
The Critical Calculation: Current Cushion on an Intraday Trailing Account
For Apex accounts, current cushion at any given moment is:
Current cushion = Current equity (including open P&L) − Current floor (highest equity peak this session)
The trap: most NinjaTrader account displays show "Account Value" or "Net Liquidation" — current equity including unrealized. They don't necessarily show the current floor position unless you've specifically added it to your display. You need both numbers to calculate the cushion.
The floor for Apex intraday trailing is the highest equity point reached since the account was funded (or since the last trailing reset, if applicable). NinjaTrader's account history and the Apex portal both show this — check the current trailing drawdown threshold in the Apex dashboard rather than trying to manually track the equity peak yourself.
Building the Real-Time Check Into Your Session Routine
Before every new entry — every single one, not just the first trade of the day — run a two-second check:
- Open the account summary display in NinjaTrader
- Note current equity (including any open positions' unrealized P&L)
- Note current trailing floor (from Apex portal or NinjaTrader account display if configured)
- Calculate cushion = equity − floor
- Identify tier from your pre-defined table
- Set contract size accordingly
On sessions with no open positions between trades, this check takes 5-10 seconds. On sessions where you're managing an open position while considering a second entry on a different instrument, it requires more discipline — but that's the exact scenario where the check matters most, because a second entry while already holding a position doubles your concurrent exposure to cushion compression.
Automating the Tier System in Copilink
The manual pre-entry check works. For traders who want the tier system enforced automatically — removing the human verification step — Copilink's dynamic position sizing can monitor per-account cushion levels in real time and apply the appropriate contract ratio from your pre-configured tier table automatically.
Configuration: define the cushion thresholds and corresponding contract ratios for each account. As the account's cushion moves through tiers during the session, Copilink adjusts the ratio applied to that account's followers automatically. The leader trades the same size throughout — the ratio adjustment happens at the follower level, allowing different accounts at different cushion levels to carry appropriately sized positions simultaneously.
This is particularly useful when you're managing multiple accounts at different stages. Account A might be at full cushion ($3,000), account B at 70% ($2,100), and account C at 45% ($1,350) from prior drawdown activity. Without automation, tracking three different contract sizes across three accounts during a live session is error-prone. With automation, each account self-adjusts to its appropriate tier independently.
See the full dynamic sizing guide in our dynamic position sizing with trade copiers article for the specific Copilink configuration steps.
Related Articles
The Minimum Capital You Need Before a Prop Firm Account Actually Makes Sense
5 min readThe Prop Firm Challenge Survival Calculator: Modeling Your Evaluation With Real Probability Math
5 min readHow to Prevent Slippage on Market Orders During NFP Without Switching to Limit Orders
6 min readReady to Start Trade Copying?
Try Copilink free for 7 days. No credit card required. Copy trades across unlimited prop firm accounts.