from __future__ import annotations import random from typing import Dict from .contracts import Signal, SignalDelta class VenueAdapter: name: str def __init__(self, name: str): self.name = name def extract_signal(self) -> Signal: raise NotImplementedError def __repr__(self) -> str: return f"" class ExchangeVenueAdapterA(VenueAdapter): def __init__(self): super().__init__("ExchangeA") def extract_signal(self) -> Signal: # Simple synthetic signal representing liquidity proxy metrics = { "liquidity_proxy": random.random(), "order_flow_intensity": random.uniform(0, 1), } return Signal(venue=self.name, timestamp=0, metrics=metrics, version=1) class BrokerVenueAdapterB(VenueAdapter): def __init__(self): super().__init__("BrokerB") def extract_signal(self) -> Signal: metrics = { "liquidity_proxy": random.random(), "imbalance": random.uniform(-1, 1), } return Signal(venue=self.name, timestamp=0, metrics=metrics, version=1)