33 lines
1.4 KiB
Python
33 lines
1.4 KiB
Python
from dataclasses import dataclass, field
|
||
|
||
from orchestrator.contracts.config_loader import normalize_orchestrator_fields
|
||
|
||
|
||
@dataclass
|
||
class OrchestratorConfig:
|
||
# Must be set to the local quant backtest output directory before use
|
||
quant_backtest_path: str = ""
|
||
trading_agents_config: dict = field(default_factory=dict)
|
||
quant_weight_cap: float = 0.8 # quant 置信度上限
|
||
llm_weight_cap: float = 0.9 # llm 置信度上限
|
||
llm_batch_days: int = 7 # LLM 每隔几天运行一次(节省 API)
|
||
cache_dir: str = "orchestrator/cache" # LLM 信号缓存目录
|
||
llm_solo_penalty: float = 0.7 # LLM 单轨时的置信度折扣
|
||
quant_solo_penalty: float = 0.8 # Quant 单轨时的置信度折扣
|
||
|
||
def __post_init__(self) -> None:
|
||
normalized = normalize_orchestrator_fields(
|
||
{
|
||
"quant_backtest_path": self.quant_backtest_path,
|
||
"trading_agents_config": self.trading_agents_config,
|
||
"quant_weight_cap": self.quant_weight_cap,
|
||
"llm_weight_cap": self.llm_weight_cap,
|
||
"llm_batch_days": self.llm_batch_days,
|
||
"cache_dir": self.cache_dir,
|
||
"llm_solo_penalty": self.llm_solo_penalty,
|
||
"quant_solo_penalty": self.quant_solo_penalty,
|
||
}
|
||
)
|
||
for key, value in normalized.items():
|
||
setattr(self, key, value)
|