from datetime import datetime, timedelta, timezone from pathlib import Path from fx_quant_engine import FXQuantEngine def test_engine_signal_schema() -> None: root = Path(__file__).resolve().parents[1] engine = FXQuantEngine(config_dir=root / "config") end = datetime.now(timezone.utc) start = end - timedelta(days=200) out = engine.run_asset("USDINR", start, end) signal = out["signal"] required = { "engine", "timestamp", "asset", "signal_type", "signal_direction", "signal_strength", "confidence", "regime", "expected_volatility", "risk_flags", "drivers", "recommended_action", "position_sizing_multiplier", } assert required.issubset(signal.keys()) assert 0.0 <= signal["signal_strength"] <= 1.0 assert 0.0 <= signal["confidence"] <= 1.0 def test_engine_relative_value_schema() -> None: root = Path(__file__).resolve().parents[1] engine = FXQuantEngine(config_dir=root / "config") end = datetime.now(timezone.utc) start = end - timedelta(days=200) out = engine.run_relative_value("USDINR", "EURINR", start, end) assert "hedge_ratio" in out assert "spread_zscore" in out assert "signal" in out assert 0.0 <= out["signal"]["signal_strength"] <= 1.0