"""
执行器抽象基类
"""

from abc import ABC, abstractmethod
import pandas as pd


class Executor(ABC):
    """
    执行器抽象基类
    
    所有执行器必须实现 execute 方法
    """
    
    mode: str = "base"
    
    def __init__(self, **params):
        """
        初始化执行器参数
        
        Args:
            **params: 执行参数（如 initial_capital, trade_cost 等）
        """
        self._params = params
    
    @abstractmethod
    def execute(self, signals: pd.DataFrame, data: pd.DataFrame) -> dict:
        """
        执行信号
        
        Args:
            signals: 信号 DataFrame
            data: 收益率数据 DataFrame
        
        Returns:
            回测结果字典，包含：
            - result: 回测 DataFrame（含净值、收益率）
            - portfolio: 组合对象（可选）
            - metrics: 绩效指标（可选）
        """
        pass
    
    def __repr__(self) -> str:
        params_str = ', '.join([f"{k}={v}" for k, v in self._params.items()])
        return f"{self.__class__.__name__}({params_str})"
