- FactorBase/FactorRegistry/FactorCombiner: 因子抽象接口 - SignalGenerator: 信号生成抽象接口 - RiskControl/Position/CallbackHook: 风控抽象接口 - StrategyBase: 策略抽象基类 - Executor/Portfolio: 执行器抽象接口 - ConfigLoader: 配置加载器 - 删除framework/factors/momentum.py(具体实现)
54 lines
1.3 KiB
Python
54 lines
1.3 KiB
Python
"""
|
||
信号层抽象接口(通用)
|
||
|
||
只提供抽象基类,具体信号生成器在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'] |