deltaforge-real-time-cross-.../deltaforge/coordinator.py

28 lines
1.3 KiB
Python

from __future__ import annotations
from typing import List
from .dsl import MarketSignal, PlanDelta
class Coordinator:
"""
Lightweight ADMM-like coordinator.
It collects MarketSignals from multiple venues and emits a PlanDelta
representing a synchronized hedging action.
This is a minimal, deterministic stub suitable for MVP testing.
"""
def __init__(self, contract_id: str = "default-contract"):
self.contract_id = contract_id
self.last_plan: PlanDelta | None = None
def coordinate(self, signals: List[MarketSignal], author: str = "coordinator") -> PlanDelta:
# Very small heuristic: if two assets present, generate a delta-neutral hedge
actions: List[dict] = []
# Simple rule: create a hedge adjustment based on price relative to last plan
for s in signals:
if s.asset.type == "equity":
actions.append({"action": "hedge", "symbol": s.asset.symbol, "size": -0.5, "price": s.price, "ts": s.timestamp})
elif s.asset.type == "option":
actions.append({"action": "adjust", "symbol": s.asset.symbol, "size": -0.25, "premium": s.price, "ts": s.timestamp})
plan = PlanDelta(delta=actions, timestamp=signals[0].timestamp if signals else 0.0, author=author, contract_id=self.contract_id)
self.last_plan = plan
return plan