feat: market event

This commit is contained in:
OpenSquared
2026-06-29 11:27:28 +02:00
parent 4be3ad9ce3
commit 7ac7c4c619
2 changed files with 32 additions and 5 deletions

View File

@@ -885,19 +885,33 @@ def analyze_event(body: AnalyzeRequest):
# Évaluation du graphe
node_values = evaluate_graph(graph, inputs, body.coef_overrides or {})
# Lag effectif : max des lag_min/lag_days sur toutes les arêtes menant à un market_asset
edges = graph.get("edges", [])
nodes_map = {n["id"]: n for n in graph.get("nodes", [])}
# Lag effectif : max sur toutes les arêtes du graphe
# (filtre output_ids optionnel mais peu fiable si types de nœuds non standards)
edges = graph.get("edges", [])
nodes_map = {n["id"]: n for n in graph.get("nodes", [])}
output_ids = {n["id"] for n in graph.get("nodes", []) if n.get("type") in ("market_asset", "output")}
edges_to_output = [e for e in edges if e.get("to") in output_ids]
edges_for_lag = edges_to_output if edges_to_output else edges # fallback : toutes arêtes
effective_lag = max(
(e.get("lag_min", 0) or 0 for e in edges if e.get("to") in output_ids),
(e.get("lag_min", 0) or 0 for e in edges_for_lag),
default=0,
)
effective_lag_days = max(
(e.get("lag_days", 0) or 0 for e in edges if e.get("to") in output_ids),
(e.get("lag_days", 0) or 0 for e in edges_for_lag),
default=0,
)
# Diagnostic : combien d'arêtes portent un lag_days > 0
edges_with_lag_days = sum(1 for e in edges if (e.get("lag_days") or 0) > 0)
lag_debug = {
"output_ids": list(output_ids),
"edges_to_output": len(edges_to_output),
"edges_with_lag_days": edges_with_lag_days,
"used_all_edges": not edges_to_output,
}
# Instruments : utiliser tous ceux du template si aucun spécifié
if body.instrument:
instruments = list({body.instrument} | set(tmpl.get("instruments", [body.instrument])))
@@ -944,6 +958,7 @@ def analyze_event(body: AnalyzeRequest):
"prices_mode": prices.get("mode", "none"),
"effective_lag_min": effective_lag,
"effective_lag_days": effective_lag_days,
"lag_debug": lag_debug,
"analyzed_at": analyzed_at,
"graph_json": graph, # structure complète pour visualisation frontend
}