raghava4u's picture
Upload folder using huggingface_hub
d53dc44 verified
Raw History Blame Contribute Delete
1.21 kB
"""
strategy/base.py — Abstract strategy interface.
All strategies must implement generate_signal().
"""
from __future__ import annotations
from abc import ABC, abstractmethod
import pandas as pd
from contracts import TechnicalScore, PriceTarget
class Strategy(ABC):
"""Abstract base class for all trading strategies."""
name: str = "base"
@abstractmethod
def generate_signal(
self,
symbol: str,
df_5m: pd.DataFrame,
df_1h: pd.DataFrame | None = None,
df_1d: pd.DataFrame | None = None,
open_positions: dict[str, str] | None = None,
corr_matrix: pd.DataFrame | None = None,
) -> tuple[TechnicalScore, PriceTarget]:
"""Generate a technical signal and price target for a symbol.
Args:
symbol: Stock symbol
df_5m: 5-minute OHLCV bars
df_1h: 1-hour OHLCV bars (optional, for multi-timeframe)
df_1d: Daily OHLCV bars (optional, for trend filter)
open_positions: {symbol: "buy"|"sell"} of open positions
corr_matrix: Correlation matrix for guard
Returns: (TechnicalScore, PriceTarget)
"""