mirror of
https://github.com/QuantEngines/fx_quant_engine.git
synced 2026-07-27 18:37:47 +00:00
38 lines
1.5 KiB
Python
38 lines
1.5 KiB
Python
from __future__ import annotations
|
|
|
|
from typing import Any
|
|
|
|
from fx_quant_engine.schemas import SignalPayload
|
|
|
|
|
|
class OutputFormatter:
|
|
def __init__(self, config: dict[str, Any]) -> None:
|
|
self.config = config.get("output", {})
|
|
|
|
def to_json_payload(self, signal: SignalPayload) -> dict[str, Any]:
|
|
p = self.config.get("precision", 4)
|
|
data = signal.to_dict()
|
|
data["signal_strength"] = round(float(data["signal_strength"]), p)
|
|
data["confidence"] = round(float(data["confidence"]), p)
|
|
data["expected_volatility"] = round(float(data["expected_volatility"]), p)
|
|
data["position_sizing_multiplier"] = round(float(data["position_sizing_multiplier"]), p)
|
|
return data
|
|
|
|
def trader_summary(self, signal: SignalPayload) -> str:
|
|
return (
|
|
f"{signal.asset} | {signal.signal_type} | {signal.signal_direction} | "
|
|
f"strength={signal.signal_strength:.2f} confidence={signal.confidence:.2f} "
|
|
f"action={signal.recommended_action} size={signal.position_sizing_multiplier:.2f} "
|
|
f"regime={signal.regime.get('combined', 'neutral')}"
|
|
)
|
|
|
|
def dashboard_payload(self, signal: SignalPayload) -> dict[str, Any]:
|
|
return {
|
|
"asset": signal.asset,
|
|
"score": signal.signal_strength,
|
|
"confidence": signal.confidence,
|
|
"action": signal.recommended_action,
|
|
"risk_flags": signal.risk_flags,
|
|
"regime": signal.regime,
|
|
}
|