Files
FX-ML-Trading-Engine/Q Research/scripts/check_risk_report.py
T
2025-11-14 23:16:51 +00:00

43 lines
1.3 KiB
Python

#!/usr/bin/env python3
"""Fail CI if risk report exceeds thresholds."""
from __future__ import annotations
import argparse
import csv
from pathlib import Path
def parse_args() -> argparse.Namespace:
parser = argparse.ArgumentParser(description="Validate risk report thresholds")
parser.add_argument("--report", default="results/risk/report.csv", help="CSV produced by risk_report.py")
parser.add_argument("--max-rejects", type=int, default=0)
parser.add_argument("--max-kill", type=int, default=0)
return parser.parse_args()
def main() -> None:
args = parse_args()
report = Path(args.report)
if not report.exists():
raise SystemExit(f"Report not found: {report}")
rejects = 0
kills = 0
with report.open("r", encoding="utf-8") as fh:
reader = csv.DictReader(fh)
for row in reader:
if row.get("event") == "reject":
rejects += 1
elif row.get("event") == "kill_switch":
kills += 1
if rejects > args.max_rejects or kills > args.max_kill:
raise SystemExit(
f"Risk report exceeded thresholds: rejects={rejects} (max {args.max_rejects}), "
f"kill_switch={kills} (max {args.max_kill})"
)
print(f"Risk report OK (rejects={rejects}, kill_switch={kills})")
if __name__ == "__main__":
main()