orderflow_backtest/metrics_calculator.py

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)