import logging from typing import Optional, Tuple class MetricsCalculator: def __init__(self): self.cvd_cumulative = 0.0 self.obi_value = 0.0 def update_cvd_from_trade(self, side: str, size: float) -> None: if side == "buy": volume_delta = float(size) elif side == "sell": volume_delta = -float(size) else: logging.warning(f"Unknown trade side '{side}', treating as neutral") self.cvd_cumulative += volume_delta def update_obi_from_book(self, total_bids: float, total_asks: float) -> None: self.obi_value = float(total_bids - total_asks)