DDP Prop Firm Drawdown Protection
The specific rules that keep you funded — compliance deep dive
Learning Objectives
- •Understand FTMO-style drawdown rules and how they shape system design
- •Know daily vs total drawdown limits and how to monitor them
- •Master the buffer strategy for staying below hard thresholds
- •Build a mental model for daily risk budgeting
Explain Like I'm 5
A prop firm gives you a funded account, but there's a catch: lose 5% in a day or 10% total and you're done. Account revoked. So you set your own limits lower than theirs — internal buffers that give you margin for error. Like setting your alarm 15 minutes early because you know you'll snooze once.
Think of It This Way
Prop firm limits are a cliff edge. You don't walk right up to it — you build a fence 10 feet back. Even if you trip, you don't go over. The internal limits are your fence.
1The Rules
2The Buffer Strategy
Hard Limits vs Internal Limits (Buffer Strategy)
3Daily Risk Budgeting
4Daily Risk Capacity on a Bad Day
Daily Risk Capacity Remaining (Bad Day Scenario)
5Common Breach Causes
Key Formulas
Daily Risk Remaining
Risk capacity left = daily limit minus today's realized losses minus max risk on open positions. If this goes negative, stop trading immediately.
Hands-On Code
Compliance Monitor
class ComplianceMonitor:
"""Real-time compliance monitoring for funded accounts."""
def __init__(self, initial_balance, daily_limit_r=4.5, total_limit_r=9.5):
self.initial_balance = initial_balance
self.daily_limit_r = daily_limit_r
self.total_limit_r = total_limit_r
self.daily_loss_r = 0.0
self.total_loss_r = 0.0
def can_trade(self):
daily_left = self.daily_limit_r - self.daily_loss_r
total_left = self.total_limit_r - self.total_loss_r
if daily_left < 1.0:
return False, f"DAILY: only {daily_left:.1f}R left"
if total_left < 2.0:
return False, f"TOTAL: only {total_left:.1f}R left"
return True, "CLEAR"
def record_trade(self, result_r):
if result_r < 0:
self.daily_loss_r += abs(result_r)
self.total_loss_r += abs(result_r)
else:
self.total_loss_r = max(0, self.total_loss_r - result_r)Continuous monitoring is not optional. The system stops trading automatically when approaching limits. This is the hard constraint everything else works within.
Knowledge Check
Q1.Your funded account grew from $100K to $110K. What is the total loss floor?
Assignment
Build a compliance monitor that tracks daily and total risk in real-time. Simulate a month of trades and verify it correctly stops trading when limits are approached.