mirror of
https://github.com/xavierchuan/FX-ML-Trading-Engine.git
synced 2026-07-27 18:17:44 +00:00
50 lines
1.3 KiB
Python
50 lines
1.3 KiB
Python
#!/usr/bin/env python3
|
|
"""Validate config/stress_scenarios.yaml definitions."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import argparse
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
BASE_DIR = Path(__file__).resolve().parents[1]
|
|
import sys
|
|
|
|
if str(BASE_DIR) not in sys.path:
|
|
sys.path.insert(0, str(BASE_DIR))
|
|
|
|
from scripts.scenario_utils import ALLOWED_FIELDS, load_scenarios, validate_data
|
|
|
|
DEFAULT_PATH = Path("config/stress_scenarios.yaml")
|
|
|
|
|
|
def parse_args() -> argparse.Namespace:
|
|
parser = argparse.ArgumentParser(description="Validate stress scenario catalog")
|
|
parser.add_argument(
|
|
"--path",
|
|
default=str(DEFAULT_PATH),
|
|
help="Path to stress_scenarios YAML (default: config/stress_scenarios.yaml)",
|
|
)
|
|
return parser.parse_args()
|
|
|
|
|
|
def main() -> None:
|
|
args = parse_args()
|
|
path = Path(args.path).expanduser()
|
|
try:
|
|
raw = load_scenarios(path)
|
|
except Exception as exc:
|
|
print(f"Validation failed: {exc}")
|
|
sys.exit(1)
|
|
errors = validate_data(raw)
|
|
if errors:
|
|
print("Validation failed:")
|
|
for err in errors:
|
|
print(f" - {err}")
|
|
sys.exit(1)
|
|
print(f"{path} OK ({len(ALLOWED_FIELDS)} allowed fields validated, {len(raw)} scenarios).")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|