from typing import TypedDict

from .common import TaskBaseParameters


class GlobalBacktestSettings(TypedDict):
    """全局回测配置（覆盖各策略 core_config）"""

    start_date: str       # 回测开始日期 "YYYY-MM-DD"
    end_date: str         # 回测结束日期 "YYYY-MM-DD"
    initial_capital: float  # 初始资金
    commission: float     # 手续费率
    benchmark: str        # 基准指数代码


class StrategyEntry(TypedDict):
    """单策略条目"""

    security_type: str   # "stk" | "cb" | "etf"
    label: str           # 策略唯一标签（用于输出列名）
    core_config: dict    # 策略核心配置（不含 global_settings 字段）


class MultiStrategyParameters(TaskBaseParameters):
    """多策略相关性分析参数"""

    global_settings: GlobalBacktestSettings
    strategies: list[StrategyEntry]  # 至少 2 个，labels 唯一
    rolling_period: int              # 滚动相关系数计算窗口（期数）
