feat: add local correlation filters and full recheck action
Deploy production / deploy (push) Successful in 54s

This commit is contained in:
yuxuanhui
2026-09-13 00:03:17 +08:00
parent bbf0e37130
commit 2080f812b4
13 changed files with 309 additions and 15 deletions
+16
View File
@@ -195,6 +195,22 @@ def list_statement(filters):
query = query.where(Alpha.submission_blocked == filters.submission_blocked)
if filters.submission_blocked:
query = query.where(submission_condition("UNSUBMITTED"))
if (filters.local_correlation_status is not None or filters.local_correlation_min is not None
or filters.local_correlation_max is not None):
# One cache row per Alpha keeps totals/export stable; stale overrides the displayed status.
query = query.outerjoin(SelfCorrelation, SelfCorrelation.alpha_id == Alpha.id)
status = filters.local_correlation_status
if status == "not_cached":
query = query.where(SelfCorrelation.alpha_id.is_(None))
elif status == "stale":
query = query.where(SelfCorrelation.stale.is_(True))
elif status is not None:
query = query.where(SelfCorrelation.stale.is_(False), SelfCorrelation.result["status"].as_string() == status)
coefficient = SelfCorrelation.result["max_correlation"].as_float()
if filters.local_correlation_min is not None:
query = query.where(coefficient >= filters.local_correlation_min)
if filters.local_correlation_max is not None:
query = query.where(coefficient <= filters.local_correlation_max)
source_filters = {k: getattr(filters, k) for k in ("source", "source_reference", "research_id", "backtest_run_id")}
if any(source_filters.values()):
query = query.where(Alpha.id.in_(source_alpha_ids(**source_filters)))