from abc import ABC, abstractmethod from enum import Enum from typing import Dict, Optional, cast import pandas as pd from pt_trading.results import BacktestResult from pt_trading.trading_pair import TradingPair NanoPerMin = 1e9 class PairsTradingFitMethod(ABC): TRADES_COLUMNS = [ "time", "action", "symbol", "price", "disequilibrium", "scaled_disequilibrium", "pair", ] @abstractmethod def run_pair( self, pair: TradingPair, bt_result: BacktestResult ) -> Optional[pd.DataFrame]: ... @abstractmethod def reset(self) -> None: ... @abstractmethod def create_trading_pair( self, config: Dict, market_data: pd.DataFrame, symbol_a: str, symbol_b: str, price_column: str ) -> TradingPair: ...