You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
FactorSimulator/core/models.py

65 lines
1.7 KiB

# -*- 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