# -*- coding: utf-8 -*- from dataclasses import dataclass from typing import Dict, Any, Optional @dataclass class TrainMetrics: """训练集指标""" sharpe_ratio: Optional[float] = None annual_return: Optional[float] = None max_drawdown: Optional[float] = None turnover: Optional[float] = None fitness: Optional[float] = None pnl: Optional[float] = None book_size: Optional[float] = None long_count: Optional[float] = None short_count: Optional[float] = None margin: Optional[float] = None @dataclass class TestMetrics: """测试集指标""" sharpe_ratio: Optional[float] = None annual_return: Optional[float] = None max_drawdown: Optional[float] = None turnover: Optional[float] = None fitness: Optional[float] = None pnl: Optional[float] = None @dataclass class AlphaInfo: """Alpha基本信息""" grade: Optional[str] = None stage: Optional[str] = None status: Optional[str] = None date_created: Optional[str] = None checks: Optional[Dict[str, Any]] = None @dataclass class AlphaMetrics: """Alpha因子完整指标""" train_metrics: TrainMetrics is_metrics: TestMetrics test_metrics: TestMetrics alpha_info: AlphaInfo alpha_id: Optional[str] = None @dataclass class SimulationResult: """模拟结果""" expression: str time_consuming: float formatted_time: str alpha_id: str status: str # success, error, failed description: str simulation_timestamp: str train_metrics: Optional[TrainMetrics] = None is_metrics: Optional[TestMetrics] = None test_metrics: Optional[TestMetrics] = None alpha_info: Optional[AlphaInfo] = None