mercurymesh-privacy-preserv.../mercurymesh_privacy_preserv.../adapters.py

45 lines
1.1 KiB
Python

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"<VenueAdapter {self.name}>"
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)