Strategy-Level KPIs
Primary Metrics
| Metric | Formula | Pass | Warning | Fail |
| Sharpe Ratio | (Return - Rf) / StdDev | ≥ 1.0 | 0.7-1.0 | < 0.7 |
| Sortino Ratio | (Return - Rf) / DownsideStdDev | ≥ 1.5 | 1.0-1.5 | < 1.0 |
| Max Drawdown | Peak-to-trough / Peak | < 8% | 8-10% | > 10% |
| Profit Factor | Gross Profit / Gross Loss | ≥ 1.5 | 1.3-1.5 | < 1.3 |
| Win Rate | Winning Trades / Total Trades | ≥ 45% | 40-45% | < 40% |
| Avg R:R | Avg Win / Avg Loss | ≥ 1.5 | 1.2-1.5 | < 1.2 |
Secondary Metrics
| Metric | Formula | Pass | Warning | Fail |
| Calmar Ratio | CAGR / Max DD | ≥ 1.5 | 1.0-1.5 | < 1.0 |
| Recovery Factor | Net Profit / Max DD | ≥ 3.0 | 2.0-3.0 | < 2.0 |
| Expectancy | (Win% × AvgWin) - (Loss% × AvgLoss) | > 0.5R | 0.2-0.5R | < 0.2R |
| Trade Frequency | Trades per month | 10-50 | 5-10 or 50-100 | < 5 or > 100 |
| Avg Trade Duration | Mean holding time | Varies by TF | - | - |
Prop Firm Compliance KPIs
FTMO Parameters (Default)
| Rule | Limit | Our Target | Buffer |
| Max Daily Loss | 5% of balance | 3% | 2% |
| Max Total Loss | 10% of balance | 6% | 4% |
| Profit Target (Challenge) | 10% | - | - |
| Profit Target (Verification) | 5% | - | - |
| Min Trading Days | 4 | 10+ | 6+ |
Parameterized Limits (Per Firm)
# config/prop_firm_limits.yaml
ftmo:
daily_loss_pct: 5.0
total_loss_pct: 10.0
our_daily_limit: 3.0
our_total_limit: 6.0
mff: # MyForexFunds
daily_loss_pct: 5.0
total_loss_pct: 12.0
our_daily_limit: 3.0
our_total_limit: 8.0
topstep:
daily_loss_pct: 4.5 # Trailing
total_loss_pct: 10.0
our_daily_limit: 2.5
our_total_limit: 6.0
Portfolio-Level KPIs
| Metric | Target | Calculation Frequency |
| Total Sharpe | ≥ 1.2 | Weekly |
| Portfolio Max DD | < 15% | Daily |
| Strategy Correlation (max pairwise) | < 0.5 | Monthly |
| Active Strategies | 3-10 | Weekly |
| Capital Utilization | 50-80% | Daily |
Operational KPIs
| Metric | Target | Measurement |
| Signal-to-execution latency | < 2 seconds | Per trade |
| Fill rate | > 95% | Weekly |
| Slippage vs expected | < 1 tick avg | Weekly |
| System uptime | > 99% | Monthly |
| Missed signals | < 2% | Weekly |
| Alert delivery success | > 99% | Daily |
Validation KPIs (Pre-Deployment)
| Test | Pass Criterion |
| In-sample vs OOS gap | < 30% degradation |
| Walk-forward hit rate | ≥ 60% profitable windows |
| Monte Carlo (5th percentile) | Sharpe > 0.5 |
| Bootstrap confidence | 95% CI excludes zero |
| Regime robustness | Profitable in 2+ of 3 regimes |
Monitoring Thresholds
Real-Time Alerts
| Condition | Alert Level | Action |
| Daily P&L < -2% | Warning | Review positions |
| Daily P&L < -3% | Critical | Reduce exposure 50% |
| Single trade loss > 1.5% | Warning | Log for review |
| 3 consecutive losses | Info | Check for regime shift |
| Drawdown > 5% | Warning | Review strategy health |
| Drawdown > 8% | Critical | Pause strategy |
Weekly Review Triggers
| Condition | Action |
| 7-day Sharpe < 0.3 | Investigate |
| Win rate < 35% (20+ trades) | Review entry logic |
| Avg R:R < 1.0 | Review exit logic |
| Execution slippage > 2 ticks avg | Check liquidity/timing |
Reporting Cadence
| Report | Frequency | Contents |
| Daily summary | EOD | P&L, trades, alerts |
| Weekly review | Sunday | KPI dashboard, exceptions |
| Monthly report | 1st of month | Full metrics, strategy health |
| Quarterly audit | Every 3 months | Deep dive, correlation analysis |
KPI Dashboard Requirements
Minimum viable dashboard must display: - [ ] Real-time P&L by strategy - [ ] Drawdown gauge (current vs max allowed) - [ ] Win rate (rolling 20 trades) - [ ] Daily/weekly Sharpe - [ ] Open positions with unrealized P&L - [ ] Alert log (last 24h)