Coverage for src / monte_neo / core / config.py: 100%
39 statements
« prev ^ index » next coverage.py v7.13.1, created at 2026-01-28 16:27 +0200
« prev ^ index » next coverage.py v7.13.1, created at 2026-01-28 16:27 +0200
1"""Generator configuration module."""
3from __future__ import annotations
5from dataclasses import dataclass, field
6from typing import TYPE_CHECKING
8if TYPE_CHECKING:
9 from monte_neo.indicators.base import BaseIndicator
12@dataclass
13class GeneratorConfig:
14 """Generator configuration."""
16 max_iterations: int = 1000000000
17 target_metrics: dict[str, float] = field(default_factory=dict)
18 indicator_types: list[str] = field(
19 default_factory=lambda: ["sma", "rsi", "macd", "dynamic"]
20 )
21 mc_iterations: int = 1000
22 use_mc_shuffling: bool = True
23 use_mc_noise: bool = True
24 use_mc_sensitivity: bool = True
25 use_mc_walk_forward: bool = True
26 use_mc_block_bootstrap: bool = True
27 use_sequential_mc: bool = False
28 early_stopping: bool = True
29 min_trades: int = 30
30 population_size: int = 50
31 generations: int = 20
32 mutation_rate: float = 0.3
33 crossover_rate: float = 0.7
34 initial_capital: float = 100000.0
35 leverage: float = 1.0
37 # Risk Management
38 stop_loss_pct: float = 1.0 # Default 1%
39 take_profit_pct: float = 2.0 # Default 2% (2:1 RR)
40 use_sl_tp: bool = True
42 # Validation
43 mc_pass_threshold: float = 0.80 # Default 80% for production
45 # Hardware Acceleration
46 use_gpu: bool = True
47 gpu_precision: str = "float32"
48 metal_driver: str = "auto" # auto, cpp, objc, swift
51@dataclass
52class GeneratorResult:
53 """Generator result."""
55 success: bool
56 indicator: BaseIndicator | None
57 parameters: dict
58 final_metrics: dict
59 mc_pass_rate: float
60 iterations_tried: int
61 elapsed_time: float
62 candidates_found: int
63 mc_details: dict = field(default_factory=dict)