Home/Projects/KAIROS

KAIROS

An autonomous ML research agent that knows when its validation set is lying, and refuses to believe it.

When
Oct 2026
Task
KuaiRand-Pure · within-user ranking on long_view · mean(GAUC, nDCG@5)
Agent
An LLM plans, another LLM codes, a critic checks · static audits · sandboxed runs
Code
github.com/ahsiwt101/kairos-automl-research-agent ↗
Be the agent · real numbers from the control arm

Four pipelines, four validation scores. Pick the one you'd submit. Then we'll check the hidden test set.

Waiting for your pickGo on, trust the validation score. Everyone does.
Why it happens

The leak is structural, not a typo.

Evaluation ranks each user's impression list as a set. A time-ordered history feature lets a validation row peek at the labels of its own list-mates, which is exactly what the metric asks the model to predict. Test rows can't do that, because their labels stop at the horizon. So the feature looks like genius on validation and is dead weight on test.

The fix: freeze every aggregate at the start of its evaluation window, not at each row's own timestamp. That collapses the validation→test gap from +0.1409 to +0.0070.

Which signal to trust
Official validation ↔ hidden test
−0.612

rank correlation. It's negatively correlated, so optimising it harder makes your submission worse.

Backtest-fold transfer ↔ hidden test
+0.685

rank correlation. So KAIROS selects on transfer across three temporal backtest folds instead.

How it works

Two gates between an idea and "accepted".

01Propose

Plan a hypothesis, its mechanism, and one falsifiable prediction. Then write the code. A critic checks that the logic holds.

02 · gateStatic audit

Allowlisted sandbox and blocked outcome columns. A leakage probe requires exactly zero within-user variance.

03Run

Isolated subprocess, bounded in time and memory, with an RSS watchdog.

04Evaluate

Vectorised GAUC and nDCG@5. Matches the organisers' evaluator to 4.4e-16 and runs 13× faster.

05 · gateBacktest

It beat the incumbent on validation? Fine. Does it hold up on the backtest folds?

06Ledger

Log the hypothesis, diff, metrics, and prediction, then check the stop rule. The hidden test is scored once, at the very end.

The audit's strongest check is a proof, not a heuristic. Within-user ranking can't see anything that's constant across a user's list, so a user-level statistic has to have exactly zero within-user variance. Under the naive construction it was 1.24e-01. With the frozen-window fix it's 0.000e+00.

The result
ValidHidden testvs baseline
Official FM baseline (reproduced exactly)0.60160.5946—
Greedy validation-following agent0.73390.5790−0.0156
Hand-built ensemble (reference ceiling)0.60450.5976+0.0030
KAIROS (the submission)0.60300.5983+0.0037
Iterations10
Accepted2
Wall clock941 s
LLM cost≈ $1.37

0 manual interventions, 0 GPU-hours, 164,789 tokens. Both accepted candidates were independently backtest-confirmed. Bonus: on KuaiRand-1k, the same agent with one environment variable changed went from 0.5856 to 0.6536.

Next project
Inference Gateway →