Files
etf/framework/signals/__init__.py
aszerW 30ea2970bd refactor(framework): 框架只保留抽象接口,具体实现移至strategies/shared
- FactorBase/FactorRegistry/FactorCombiner: 因子抽象接口
- SignalGenerator: 信号生成抽象接口
- RiskControl/Position/CallbackHook: 风控抽象接口
- StrategyBase: 策略抽象基类
- Executor/Portfolio: 执行器抽象接口
- ConfigLoader: 配置加载器
- 删除framework/factors/momentum.py(具体实现)
2026-05-11 23:09:01 +08:00

54 lines
1.3 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""
信号层抽象接口(通用)
只提供抽象基类具体信号生成器在strategies/shared/signals/
"""
from abc import ABC, abstractmethod
from typing import List, Optional, Any
import pandas as pd
class SignalGenerator(ABC):
"""
信号生成器抽象基类
所有信号生成器必须实现generate方法
"""
mode: str = "base"
def __init__(self, **params):
"""初始化信号生成器参数"""
self._params = params
@abstractmethod
def generate(self, factor_data: pd.DataFrame) -> pd.DataFrame:
"""
生成交易信号
Args:
factor_data: 因子数据DataFrame
Returns:
包含'signal'列的DataFrame
"""
pass
def validate_factor_data(self, factor_data: pd.DataFrame) -> bool:
"""验证因子数据是否有效"""
if factor_data.empty:
return False
if 'signal' in factor_data.columns:
print("Warning: factor_data already contains 'signal' column")
return True
def __repr__(self) -> str:
params_str = ', '.join([f"{k}={v}" for k, v in self._params.items()])
return f"{self.__class__.__name__}({params_str})"
# 导出抽象接口
__all__ = ['SignalGenerator']