22 lines
659 B
Python
22 lines
659 B
Python
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)
|