mirror of
https://github.com/triqbit/mt5-ai-xauusd-trader.git
synced 2026-11-02 06:56:15 +00:00
* feat: implement institutional-grade capital allocator with dynamic budgeting and granular rejection tracking - Add `update_budget` for adaptive capital management. - Add `release_allocation` for explicit strategy capital release. - Introduce `SCALED_TO_ZERO` rejection code for improved portfolio observability. - Export capital management classes via `src/trading/__init__.py`. - Expand unit test suite to 23 tests covering diversification scaling and edge cases. Co-authored-by: saysgrok <279469430+saysgrok@users.noreply.github.com> * feat: enhance capital allocator and update institutional standards - Implement `update_budget` and `release_allocation` in `CapitalAllocator`. - Add `SCALED_TO_ZERO` rejection tracking for better observability. - Export all capital management components in `src/trading/__init__.py`. - Create `docs/trading/CAPITAL_ALLOCATOR.md` for system documentation. - Update `TRADING_STANDARDS.md` with capital allocation guidelines. - Expand unit tests to 23 covering HHI diversification and safety limits. Co-authored-by: saysgrok <279469430+saysgrok@users.noreply.github.com> --------- Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com> Co-authored-by: saysgrok <279469430+saysgrok@users.noreply.github.com>
11 KiB
11 KiB
Trading Standards for MT5 AI/ML Trading Bot
1. Risk Management Standards
1.1 Position Sizing Rules
- Maximum Position Size: Limited to 5% of account equity per trade
- Leverage Limits: Maximum 1:50 for gold (XAUUSD) trading
- Correlation Limits: No 2+ correlated positions simultaneously
- Portfolio Heat: Maximum 70% of total budget committed across all strategies (default)
- Symbol Concentration: Maximum 40% of budget per symbol (default)
- Model Family Concentration: Maximum 40% of budget per model family (default)
1.2 Risk Parameters
# Example position sizing calculation
def calculate_position_size(
account_equity: float,
risk_percentage: float,
stop_loss_pips: float,
pip_value: float
) -> float:
"""Calculate position size based on risk management rules."""
# Risk per trade in currency
risk_amount = account_equity * (risk_percentage / 100)
# Position size in lots
position_size = risk_amount / (stop_loss_pips * pip_value)
# Apply maximum position limit (5% of equity)
max_position = (account_equity * 0.05) / (pip_value * 100)
return min(position_size, max_position)
1.3 Stop-Loss & Take-Profit Rules
- Minimum Stop Distance: 10 pips for XAUUSD
- Mandatory Stop-Loss: Every trade must have a hard stop-loss
- Risk-Reward Ratio: Minimum 1:1.5 (1 risked to gain 1.5) [ENFORCED IN SCHEMA]
- Trailing Stops: Implement after profit threshold (e.g., +50 pips)
- Profit Target Levels: Multiple profit levels with partial exits
1.4 Capital Allocation & Performance Scaling
- Adaptive Sizing: Strategy risk is scaled by a performance multiplier (0.0 to 2.0).
- Cooling-Off: Automatic multiplier floor (0.1) after 5 consecutive losses.
- Diversification Guard: Linear scaling of allocations as heat or concentration limits are approached.
- Strategy Caps: Each strategy has an absolute capital cap.
1.5 Daily Loss Limits (Circuit Breaker)
- Daily Loss Limit: 3% of account equity
- Weekly Loss Limit: 8% of account equity
- Monthly Loss Limit: 15% of account equity
- Consequence: Halt trading when limits reached, resume next period
- Alert System: Email/SMS notification when approaching limits
2. Order Management & Execution
2.1 Order Validation Framework
class OrderValidator:
"""Validate all orders before execution."""
def validate_order(self, order: Order) -> Tuple[bool, str]:
"""Validate order against all trading rules."""
checks = [
self._check_position_size(order),
self._check_daily_loss_limit(order),
self._check_correlation(order),
self._check_stop_loss(order),
self._check_take_profit(order),
self._check_market_hours(order),
self._check_news_event_risk(order),
]
for is_valid, message in checks:
if not is_valid:
return False, message
return True, "Order validated successfully"
def _check_stop_loss(self, order: Order) -> Tuple[bool, str]:
"""Ensure stop-loss is within acceptable range."""
if order.stop_loss is None:
return False, "Stop-loss is required"
distance_pips = abs(order.entry_price - order.stop_loss) / self.pip_value
if distance_pips < 10:
return False, f"Stop-loss too close: {distance_pips} pips"
return True, "Stop-loss validated"
2.2 Order Execution Standards
- Order Types: Market, Limit, Stop-Loss only (no pending orders beyond 5 minutes)
- Slippage Tolerance: Maximum 2 pips slippage acceptable
- Order Confirmation: All fills must be confirmed against MT5 platform
- Rejected Orders: Log and analyze all rejected orders
- Partial Fills: Handle partial fills explicitly in code
2.3 Trade Reconciliation
- Frequency: Real-time reconciliation with MT5
- Procedure: Every hour: verify open positions, compare P&L, check balance
- Discrepancy Handling: Halt trading, investigate, resolve before resuming
- Documentation: Log all reconciliation results
3. Backtesting Standards
3.1 Backtesting Requirements
- Historical Data Range: Minimum 5 years of OHLCV data
- Data Quality: Verified against multiple sources for accuracy
- Market Conditions: Test through multiple market regimes:
- Bull markets (2015-2017)
- Bear markets (2018, 2020)
- Sideways/consolidation periods
- High volatility periods (Brexit, COVID, Fed announcements)
3.2 Backtest Metrics
Required Performance Metrics:
- Total Return: Target 50-100% annually
- Sharpe Ratio: Target > 2.0
- Sortino Ratio: Target > 3.0
- Max Drawdown: Maximum 25% of peak equity
- Win Rate: Target 55-65%
- Profit Factor: Target > 2.0 (wins/losses)
- Recovery Factor: Target > 2.0 (net profit/max drawdown)
3.3 Backtest Validation
- Out-of-Sample Testing: 20% of data reserved for testing
- Walk-Forward Analysis: Rolling 1-year windows with quarterly recalibration
- Sensitivity Analysis: Test parameter variations (±10%, ±20%)
- Monte Carlo Simulation: Randomize order sequence, test robustness
- Optimization Risk: Avoid over-fitting with parameter limits
4. Live Trading Standards
4.1 Paper Trading Phase
- Duration: Minimum 2 weeks before live trading
- Success Criteria:
- 70%+ win rate in paper trading
- Sharpe ratio > 2.0
- No losses exceeding 2% per trade
- Consistent performance across market conditions
- Documentation: Log all paper trades for review
4.2 Live Trading Graduation
- Phase 1 (Weeks 1-2): Micro lots, 0.01 lot per trade, $100-500 risk per trade
- Phase 2 (Weeks 3-4): Mini lots, 0.1 lot per trade, $500-1,000 risk per trade
- Phase 3 (Weeks 5+): Standard lots, 0.5-1.0 lot per trade, $1,000+ risk per trade
- Graduation Criteria: Each phase requires 70%+ win rate before advancing
4.3 Live Trading Monitoring
class LiveTradingMonitor:
"""Real-time monitoring of live trading operations."""
def monitor_trade(self, trade: Trade) -> None:
"""Continuous monitoring of active trades."""
while trade.is_open:
current_price = self.get_current_price()
# Check stop-loss and take-profit
self._check_exit_conditions(trade, current_price)
# Monitor drawdown
self._check_max_drawdown(trade)
# Check for unusual price movements
self._check_price_anomalies(trade, current_price)
# Log performance metrics
self._log_trade_metrics(trade)
time.sleep(60) # Check every minute
4.4 Emergency Procedures
- System Failure: Automatic stop-loss conversion to market order
- Broker Disconnect: Hold all positions, reconnect and verify
- Unusual Price: Manual review before execution
- Margin Call: Immediately liquidate worst-performing positions
- Circuit Breaker: Halt trading if daily loss limit reached
5. Data Feed & Market Hours Standards
5.1 Approved Trading Hours
- XAUUSD Hours: Sunday 17:00 - Friday 16:00 GMT
- High Volatility Hours: 12:30-14:30 GMT (US market open)
- Low Liquidity Avoid: Friday 14:00-16:00 GMT (market close)
- Holiday Trading: NO trading on major holidays (Christmas, New Year, etc.)
5.2 Data Feed Requirements
- Price Feed: Real-time from MT5 with < 100ms latency
- Update Frequency: Ticks updated every 100-500ms
- Data Validation: Check for gaps, spikes, and anomalies
- Backup Feed: Alternative data source if primary fails
- Data Logging: Timestamp all price data for audit trail
5.3 Economic Calendar Integration
HIGH IMPACT NEWS - PAUSE TRADING 30 MINUTES BEFORE & AFTER:
- Non-Farm Payroll (1st Friday of month)
- FOMC Rate Decisions (8 times per year)
- Fed Chair Speeches (sporadic)
- ISM Manufacturing/Services
MEDIUM IMPACT - CAUTION TRADING:
- CPI/PPI Releases
- Treasury Auctions
- Unemployment Claims
- Retail Sales
6. Model Performance Validation
6.1 Strategy Performance Review
- Daily: Review P&L, win rate, drawdown
- Weekly: Analyze trade patterns, identify issues
- Monthly: Comprehensive performance audit
- Quarterly: Full strategy validation and recalibration
6.2 Signal Accuracy Metrics
- True Positive Rate: Profitable signals / Total signals
- False Positive Rate: Losing signals / Total signals
- Signal Frequency: Trades per week (target: 5-15)
- Signal Timing: Entry accuracy vs optimal entry points
6.3 Performance Degradation Detection
Retraining Triggers (Automatic):
- Win rate drops below 50% (consecutive 10 trades)
- Sharpe ratio falls below 1.5
- Monthly loss exceeds 10% of equity
- Strategy underperforms random entries for 5 consecutive days
Action: Stop trading, retrain model, run validation before resume
7. Audit & Compliance
7.1 Trade Audit Trail
- Every Trade Logged: Entry time, price, size, exit time, P&L
- Decision Log: Why each trade was taken (signals, reasoning)
- Modification Log: Any manual overrides or interventions
- Performance Attribution: Credit correct predictions, analyze errors
7.2 Compliance Checklist
- All trades have stop-loss orders
- Position sizes comply with equity rules
- Daily loss limits enforced
- No trades during prohibited hours
- Data reconciliation completed daily
- Model performance within expected parameters
- Risk metrics within tolerance
- Backup systems operational
7.3 Reporting Standards
- Daily Report: Generated automatically, sent to stakeholders
- Weekly Summary: Performance metrics, trades analysis
- Monthly Report: Detailed performance review, strategy metrics
- Quarterly Review: Strategy effectiveness, recommendations
8. Emergency Protocols
8.1 Margin Call Procedures
- Immediately notify all stakeholders
- Liquidate 50% of worst-performing positions
- If still critical, liquidate all positions
- Suspend trading until account restored to 2:1 margin
8.2 System Failure Recovery
- Detect failure within 1 minute (automated)
- Convert all pending orders to market orders
- Activate backup MT5 connection
- Reconnect within 5 minutes
- Verify all positions after reconnection
8.3 Force Stop Procedures
- Daily Loss Limit Hit: Stop all new trades immediately
- Consecutive Losses (5): Manual review required before resuming
- System Error (2+): Halt trading for 24 hours, investigate
- Model Failure: Revert to previous validated version
Last Updated: January 2026 Version: 1.0 Maintained By: Trading Operations Team Review Frequency: Monthly