feat: add local correlation filters and full recheck action
Deploy production / deploy (push) Successful in 54s
Deploy production / deploy (push) Successful in 54s
This commit is contained in:
@@ -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)))
|
||||
|
||||
Reference in New Issue
Block a user