mirror of
https://github.com/QuantEngines/fx_quant_engine.git
synced 2026-07-28 02:47:50 +00:00
47 lines
1.3 KiB
Python
47 lines
1.3 KiB
Python
|
|
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
|