← Back to Learn
III AdvancedWeek 31 • Lesson 84Duration: 35 min

FTMO FTMO Compliance

Prop firm rules, risk limits, and how V7 stays compliant

Learning Objectives

  • Understand FTMO rules and how V7 complies
  • Learn the challenge and verification process
  • Implement FTMO-specific risk controls

Explain Like I'm 5

FTMO gives you a funded trading account if you pass their challenge. Rules: make 10% profit without losing more than 10% total or 5% daily. V7 is specifically designed for FTMO compliance — the entire risk management system (S40, DD scaling) exists to make breach nearly impossible while still generating consistent returns.

Think of It This Way

FTMO compliance is like passing a driving test. There's a maximum speed limit (max drawdown) and you must reach the destination (profit target). V7 is like a self-driving car programmed to stay within speed limits while still making good time. 0.08% simulated breach probability means a 99.92% chance of passing.

1FTMO Rules

Challenge phase (Step 1): - Profit target: 10% of account - Max daily loss: 5% of starting equity - Max total loss: 10% of starting balance - Minimum trading days: 4 - Time limit: 30 days - No restrictions on instruments, styles, or lot sizes Verification phase (Step 2): - Profit target: 5% of account - Same drawdown rules - Time limit: 60 days Funded account: - No profit target - Same drawdown rules FOREVER - Profit split: 80-90% to trader - Monthly payout cycle How V7 handles these rules: - Daily limit: engine enforces 4.5R daily max (with 0.5R buffer under FTMO's 5%) - Total limit: S40 DD scaling reduces risk as drawdown increases - Profit target: at 4.35% monthly, challenge takes ~2.3 months, verification ~1.15 months - Breach probability: Monte Carlo validated at 0.08%

2V7 FTMO Risk Controls

The V7 engine implements multiple layers of FTMO protection: Layer 1: Base risk (config/risk_params.json) - Base risk: 0.30% per trade - Max daily R: 4.5R - Max total R: 9.5R - These are HARD limits, never exceeded Layer 2: DD scaling (S40) - NORMAL (0-4%): full risk (0.30%) - CAUTION (4-6%): reduced (0.25%) - DANGER (6-8%): survival (0.20%) - CRITICAL (8-10%): emergency (0.15%) Layer 3: Position limits - Max simultaneous positions: 10-15 - Max per cluster: 3-4 - Total open risk < daily limit Layer 4: Monte Carlo validation - 5,000+ simulations with block bootstrap - Regime-conditioned scenarios - Result: 0.08% breach probability Layer 5: Walk-forward validation - Ensures strategy works OOS, not just in backtest - WFER = 0.91 (excellent) The result: 99.92% confidence in FTMO challenge success.

Key Formulas

FTMO Daily Loss Check

FTMO checks equity at day start and compares to current equity. If the difference exceeds -5%, the account is breached. V7 uses a 4.5% buffer limit.

Hands-On Code

FTMO Compliance Monitor

python
class FTMOComplianceMonitor:
    """Monitor FTMO rule compliance in real-time."""
    
    def __init__(self, starting_balance, daily_limit_pct=5.0, total_limit_pct=10.0):
        self.starting_balance = starting_balance
        self.daily_limit = starting_balance * daily_limit_pct / 100
        self.total_limit = starting_balance * total_limit_pct / 100
        self.day_start_equity = starting_balance
    
    def check_compliance(self, current_equity):
        """Check all FTMO rules."""
        daily_loss = self.day_start_equity - current_equity
        total_loss = self.starting_balance - current_equity
        
        daily_pct = daily_loss / self.day_start_equity * 100
        total_pct = total_loss / self.starting_balance * 100
        
        daily_ok = daily_loss < self.daily_limit
        total_ok = total_loss < self.total_limit
        
        # Buffer warnings (V7 uses tighter limits)
        daily_buffer = daily_pct < 4.5  # V7 buffer
        total_buffer = total_pct < 9.5  # V7 buffer
        
        print(f"=== FTMO COMPLIANCE ===")
        print(f"Daily loss:  {daily_pct:.2f}% / 5.0%  {'[PASS]' if daily_ok else '[ALERT] BREACH'}")
        print(f"Total loss:  {total_pct:.2f}% / 10.0% {'[PASS]' if total_ok else '[ALERT] BREACH'}")
        
        if not daily_buffer:
            print(f"  [WARN] Approaching daily limit!")
        if not total_buffer:
            print(f"  [WARN] Approaching total limit!")
        
        # Recommend action based on DD zone
        if total_pct > 8:
            print(f"  [ALERT] CRITICAL: Reduce to emergency risk (0.15%)")
        elif total_pct > 6:
            print(f"  [WARN] DANGER: Reduce to survival risk (0.20%)")
        elif total_pct > 4:
            print(f"  [WARN] CAUTION: Reduce to cautious risk (0.25%)")
        
        return daily_ok and total_ok

# monitor = FTMOComplianceMonitor(starting_balance=100000)
# monitor.check_compliance(current_equity=96500)

Real-time FTMO compliance checking prevents rule violations. The V7 engine checks this BEFORE every trade and adjusts risk level based on current DD zone. Automated compliance is essential — you never want to manually track these limits.

Knowledge Check

Q1.Your FTMO account started at $100K. Current equity is $92K. What DD zone is this and what risk should you use?

Assignment

Implement a complete FTMO compliance monitor with: daily/total loss tracking, DD zone detection, automatic risk scaling (S40), and alert generation. Test it by simulating various drawdown scenarios.