feat: market event
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user