2026-03-30 17:20:45 +05:30
|
|
|
from __future__ import annotations
|
|
|
|
|
|
|
|
|
|
import json
|
|
|
|
|
from datetime import datetime, timedelta, timezone
|
|
|
|
|
from pathlib import Path
|
2026-03-30 17:48:16 +05:30
|
|
|
import sys
|
|
|
|
|
|
|
|
|
|
ROOT = Path(__file__).resolve().parents[1]
|
|
|
|
|
SRC = ROOT / "src"
|
|
|
|
|
if str(SRC) not in sys.path:
|
|
|
|
|
sys.path.insert(0, str(SRC))
|
2026-03-30 17:20:45 +05:30
|
|
|
|
|
|
|
|
from fx_quant_engine import FXQuantEngine
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def main() -> None:
|
2026-03-30 17:48:16 +05:30
|
|
|
root = ROOT
|
2026-03-30 17:20:45 +05:30
|
|
|
engine = FXQuantEngine(config_dir=root / "config")
|
|
|
|
|
|
|
|
|
|
end = datetime.now(timezone.utc)
|
|
|
|
|
start = end - timedelta(days=260)
|
|
|
|
|
|
|
|
|
|
assets = ["USDINR", "EURINR", "GBPINR", "JPYINR", "EURUSD", "USDJPY"]
|
|
|
|
|
out_dir = root / "examples" / "runs"
|
|
|
|
|
out_dir.mkdir(parents=True, exist_ok=True)
|
|
|
|
|
|
|
|
|
|
outputs = {}
|
|
|
|
|
for asset in assets:
|
|
|
|
|
outputs[asset] = engine.run_asset(asset, start, end)
|
|
|
|
|
|
|
|
|
|
rv = engine.run_relative_value("USDJPY", "EURUSD", start, end)
|
|
|
|
|
outputs["relative_value"] = rv
|
|
|
|
|
|
|
|
|
|
ts = datetime.now(timezone.utc).strftime("%Y%m%d_%H%M%S")
|
|
|
|
|
out_file = out_dir / f"engine_run_{ts}.json"
|
|
|
|
|
out_file.write_text(json.dumps(outputs, indent=2), encoding="utf-8")
|
|
|
|
|
print(f"Saved engine output to {out_file}")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
|
main()
|