ConceptioArchivearXiv CS
arXiv CSopen access

LLM-Generated Feature Pools for Time Series Anomaly Detection

· arxiv_cs
arXiv CS · Papers · License: Open Access
Open Source ↗Direct PDF ↓
knowledge-representationreasoning
artificial intelligence, reasoning, knowledge representation

LLM-Generated Feature Pools for Time Series Anomaly Detection Youssef Attia El Hili12 , Malik Tiomoko1 , Corinne Ancourt2 1 Huawei Noah’s Ark Lab, Paris, France

arXiv:2609.21801v1 [cs.AI] 18 Sep 2026

2

Centre de Recherche en Informatique, Mines Paris, PSL University [email protected]

Abstract We study how far a simple statistical pipeline can go on univariate time series anomaly detection under a strict selection protocol. The method extracts a small pool of statistics over sliding windows, scores each window with a transductive robust (MAD) model, and selects a feature subset per domain on a held-out tuning split. On TSB-AD-U it reaches 0.529 per-series VUS-PR, above the best neural (0.45) and statistical (0.44) entries on the public leaderboard and within 0.06 of the strongest pretrained foundation model, several of which use more supervision than ours. Ablations locate the cause: across three selection strategies and a hindsight oracle the score moves by 0.031, and across the aggregation grid by 0.096, while changing the candidate pool moves it by 0.226. The candidate pool sets the ceiling; the search over it is second-order. We therefore generate a pool per domain by prompting a multimodal LLM with in-context example windows from that domain. The generated pools match the hand-crafted one under matched selection, and the two cover different domains: selecting over their union improves on the generated pool in all twelve generator–seed pairs and lifts the pipeline to 0.588, matching the performance of the best entry on the leaderboard.

1

Introduction

Time series anomaly detection spans a broad range of methods, from simple to complex. At the simple end, distance, density, and statistical detectors score points or windows against a model of normal behaviour built from a few summary features. At the complex end, reconstruction and forecasting models, deep neural detectors, and pretrained foundation models learn that model of normality from data. The usual expectation is that the complex end should dominate, since it can capture richer structure. Under a common protocol with comparable tuning, however, classical detectors remain competitive with substantially more elaborate ones [15, 18]. If elaborating the detector is not what determines performance, it is worth asking what does. For a feature-based detector, much of the answer is fixed before the detector runs. Such a method can only react to what its features encode: if no feature in its pool captures the signature of an anomaly, that anomaly is invisible to the detector, and no scoring rule or search over feature subsets can recover it. The difficulty is that the signature is not one thing. What makes a window anomalous differs in kind across domains, from shifts in level to changes in variance regime, distortions of shape or periodicity, and violations of context that no marginal statistic exposes, so a fixed pool is a bet, placed before the data is seen, on which of these will matter. Any individual blind spot is easy to patch once it has been named, but naming it requires having already studied the domain, and the 1

Time-RCD + MAFT

0.59

union pool (ours)

0.59 0.55

TSPulse_FT hand-crafted (ours)

0.53

Time-RCD

0.52 0.50

CHARM StreamVAE

0.45

MMPAD

0.44 0.42

Sub-PCA

0.39

MOMENT_FT

0.35

MatrixProfile

0.30

IForest

0.0

0.2

0.4

ours pretrained no pretraining

0.6

per-series VUS-PR Figure 1: Per-series VUS-PR on TSB-AD-U. Our pipeline scores each series with a transductive median/MAD model over a small pool of window statistics. With hand-crafted features it already clears the best neural (StreamVAE) and statistical (MMPAD) entries; with a pool discovered per domain by a language model and unioned with the hand-crafted one, it reaches the level of the best pretrained entry on the leaderboard. Red marks our two variants, dark grey the pretrained foundation models, and light grey the methods without pretraining. Leaderboard values are as published. patch does not transfer to the next one. Nor does the scalable version of patching work: a large generic library is that response taken to its limit, and catch22 [16], curated across thousands of candidate statistics, is the weakest pool we run on this benchmark (Section 5.2). A feature-based pipeline is therefore limited less by its detector or its selection procedure than by the vocabulary it is handed, and the way to improve that vocabulary is to condition it on the problem rather than to enlarge it. This paper targets the vocabulary directly. The result (Figure 1) is a transductive, parameter-free detector whose hand-crafted form clears every statistical and neural pipeline on the TSB-AD-U leaderboard and that can be combined with features generated by a multimodal LLM to match the strongest pretrained foundation model. That vocabulary has usually been static. Feature-based detection relies on fixed, expert-curated libraries of statistics, from broad collections such as catch22 [16] and tsfresh [3] to smaller hand-tuned pools, on the assumption that a rich enough generic set transfers to any task. We adopt a deliberately minimal pipeline in this tradition: sliding-window statistics, a transductive robust median/MAD detector fit on each series alone, and a feature subset chosen per domain on a held-out tuning split, 2

with the evaluation split never seen during selection. It has no learned parameters beyond per-series statistics, yet under this strict protocol it reaches 0.529 per-series VUS-PR on TSB-AD-U, well above the best neural (0.45) and statistical (0.44) entries on the public leaderboard and within a few points of pretrained foundation models, which are the only method family that beats it. Its performance is bounded by the pool, not by the selection or aggregation one would normally tune. Across three selection strategies the score moves by three points, and a per-domain oracle chosen with hindsight is barely better; sweeping the score-aggregation grid moves it by ten. Changing the candidate pool moves it by twenty-three (Figure 4). The obvious response, a larger curated library, does not help either: catch22, more than twice the size of our pool, scores lower, because a static vocabulary cannot encode what it was not designed to capture. Enlarging the static set is the wrong response. The productive axis is orthogonal: from a fixed vocabulary to feature discovery conditioned on the problem. We prompt a multimodal language model with example windows from a domain and ask it to propose problem-specific feature functions, then run the same selection protocol on the generated pool. Language models are natural tools for adaptive feature discovery because they can synthesize new representation hypotheses from only a few examples of the target domain. We find that the stronger generators are competitive on their own, with no manual feature engineering. A language model alone is not uniformly reliable, so the real gain is complementarity. Expert priors and discovered features fail on different domains, so selecting over their union beats either alone across all three generators and lifts the statistical pipeline to 0.588, closing the gap with the best entry on the leaderboard. Our contributions are as follows. We show that a minimal transductive statistical pipeline, under a strict per-domain selection protocol, outperforms the best neural and statistical entries on TSB-AD-U and is competitive with pretrained foundation models. We show, through matched ablations over feature selection and over score aggregation, that the candidate feature pool rather than the selection or the aggregation is the binding constraint, and that enlarging a static library (catch22) does not lift it. We give a procedure that discovers a per-domain pool automatically with a language model, competitive on its own for the stronger generators and complementary to expert features, so that their union reaches the level of the strongest pretrained model on the leaderboard. We frame this as a shift from enlarging static feature libraries to adaptive, task-conditioned feature discovery, and find that feature generation, more than selection, is what limits these pipelines.

2

Related Work

Time series anomaly detection and benchmarks. The field spans forecasting-based, reconstruction-based, distance-based, and density-based detectors [18]. A recurring lesson from recent benchmarking efforts is that evaluation protocol and tuning matter as much as method family, and that classical detectors are hard to beat once everyone is tuned consistently [15, 18]. We adopt TSB-AD-U [15] and its VUS-PR evaluation [17] so that our comparison is on the same footing as published baselines. Pretrained foundation models and deep detectors have advanced quickly and are among the strongest entries on this benchmark [1, 6, 8]. Static feature libraries. A long line of work distills time series analysis into fixed libraries of statistics, from broad collections such as catch22 and tsfresh to smaller curated pools [3, 16]. These libraries embody a static-vocabulary paradigm: they are designed once, independent of any domain or detector, on the bet that a rich enough set of generic features transfers to any task. This is powerful but has a structural limit, since a feature not in the library cannot be recovered by selecting

3

over it. Our hand-crafted pool is a compact instance of the same paradigm, and we use catch22 as its strongest representative when we test whether enlarging the static vocabulary closes the gap. Language models as feature generators. Language models have been applied in context to both ends of the machine learning pipeline, proposing new features for a downstream learner [10] and selecting models or hyperparameters from a fixed space [20]. They have also been used to write and refine code against an objective [19], and to operate directly on time series [9, 11]. We use a language model in a narrow but different role from a static library: rather than selecting from a fixed vocabulary, it proposes problem-specific representation hypotheses, small feature functions conditioned on examples from the target domain, which are then compiled and scored by a fixed statistical detector. Of the two roles above we use only the first. The model never sees the evaluation split and never scores anomalies itself.

3

Method

3.1

Pipeline overview

The pipeline maps a single univariate series to a per-point anomaly score in five steps (Figure 2). It is fully transductive: every quantity is computed from the series being scored. 1. Windowing. We slide a window of length w with stride s over the series. By default w is the series’ own dominant period, estimated without labels, and s = ⌊w/2⌋. 2. Feature extraction. For each window we compute a fixed vector of statistical features, giving a matrix X ∈ Rnw ×d of nw windows and d features. 3. Robust scoring. We fit a median/MAD model per feature column on X and compute a robust z-score |Z| for every entry. 4. Feature aggregation. We reduce |Z| across features to one score per window (default: mean). 5. Point aggregation. We map overlapping window scores back to per-point scores by averaging the windows that cover each point.

3.2

Robust detector

Let X:,j be the j-th feature column over the nw windows of a series. We fit mj = median(X:,j ),



madj = median |X:,j − mj | ,

replacing any madj = 0 with 1 to avoid division by zero, and score each entry with |Zij | = |(Xij − mj )/madj |. The per-window score is the mean of |Zij | across the selected features. The median/MAD estimator is standard in robust statistics because it tolerates a substantial fraction of contaminated points [13], which suits a setting where anomalies are present but unlabelled at scoring time. The detector has no learned weights: fit and score both reduce to per-column medians on the target series.

4

Series → sliding windows (w = dominant period, stride w/2) Per-window features X ∈ Rnw ×d Transductive median/MAD fit, robust |Z| per feature Feature-agg: |Z| → one score per window (mean) Point-agg: overlapping windows → per-point score (mean) VUS-PR under the TSB-AD protocol

Figure 2: The pipeline. Steps 1–5 are transductive and label-free; labels enter only in the per-domain feature selection that fixes which columns of X are used (Section 3.4).

3.3

Handcrafted feature pool

The hand-crafted pool contains ten features chosen to be cheap and interpretable: standard deviation, interquartile range, skewness, kurtosis, mean absolute change, mean absolute second derivative, zero-crossing count, lag-1 and lag-2 autocorrelation, and a histogram entropy. Each is a pure function of one window returning a finite scalar. This pool is intentionally small; a central question of the paper is whether a comparable or better pool can be produced automatically.

3.4

Feature selection

Selection is the only place labels are used, and it happens strictly on the tuning split. For a domain with tuning series {(xk , yk )}, the objective of a candidate subset S is the mean VUS-PR obtained by scoring each tuning series with the detector restricted to S. During selection we use a fast AUC-PR proxy for this objective to keep the search cheap; the reported evaluation scores always use full VUS-PR. We consider three selection strategies: greedy forward selection, top-k by single-feature relevance, and mRMR-style redundancy-penalised selection. Each strategy is run on the tuning split. Greedy forward selection evaluates O(d2 ) candidate subsets, which is affordable for a ten-feature pool but not for the larger ones, so for pools of twenty features or more, namely catch22 and the union pool, we run only top-k and mRMR. Section 5.2 shows that this restriction does not drive any of the comparisons.

3.5

Adaptive feature discovery with a language model

Instead of selecting from a fixed vocabulary, we let a language model propose representation hypotheses conditioned on the problem. To build a pool for a domain, we first sample a small set of example windows from that domain’s tuning series, split into windows that contain a labelled anomaly and windows that do not (Figure 3). Each window is rendered as a line plot on a shared y-axis, so that level and magnitude differences between windows are visible, and the plots are passed to a multimodal language model together with a short instruction. We show the model only a

5

Tuning windows per domain, split into anomalous vs. normal Rendered as plots on a shared axis Multimodal LLM + narrow instruction Ten fenced Python feature functions Compile, run on probe windows, drop invalid Generated pool → same selection protocol

Figure 3: Automatic pool generation (Section 3.5). The model sees only rendered tuning windows and a fixed instruction; it never sees the evaluation split, the detector, or any score. Everything downstream of the pool is identical to the hand-crafted pipeline, so the candidate pool is the only variable that changes. handful of examples per class; it never sees the evaluation split, the detector, or any score. To limit the risk that a pretrained model recalls domain-specific features it may have seen during pretraining, we never name the domain or dataset in the prompt and pass only the window plots, so the model must reason from the visible patterns rather than from prior knowledge of the benchmark. The instruction is deliberately narrow. It states the task (separate anomalous from normal windows with a robust median/MAD detector), points the model at the failure modes it can read off the plots, and constrains the output to compilable, self-contained code. The operative part of the prompt is: Propose exactly ten Python feature functions that would help a robust (median/MAD) detector separate anomalous windows from normal ones in this domain. Study the plots and target the failure modes you see (level shifts, spikes, variance changes, shape or periodicity changes). Each function takes a 1-D window x, uses only np, returns a finite float, and is robust to windows as short as two samples.

The returned code is parsed from a single fenced block, executed in a restricted namespace with numpy exposed as np, and each function is validated on a set of probe windows; functions that raise, that require imports, or that always return non-finite values are discarded. The surviving functions form the generated pool. Listing 1 shows a representative output. The example windows are drawn with a fixed random seed, and different seeds yield slightly different pools, which we exploit to report seed variability. We compare several feature sources under this fixed procedure. The handcrafted source uses our ten-feature pool. The catch22 source uses the 22 features of the catch22 library [16], a strong static representative curated across thousands of candidates, as an off-the-shelf pool. The llm source uses the generated pool alone. The union source selects over the concatenation of the generated and hand-crafted pools, roughly twenty candidate features. Everything downstream, the detector, the windowing, the selection protocol, and the evaluation, is held fixed across sources; only the candidate pool changes.

6

def feat_mean_level ( x ) : return float ( np . mean ( x ) ) def f eat_median_level ( x ) : return float ( np . median ( x ) ) def feat_min_level ( x ) : return float ( np . min ( x ) ) def feat_q25_level ( x ) : return float ( np . percentile (x , 25) ) def f e a t _ r a t i o _ a b o v e _ m i n u s _ h u n d r e d ( x ) : return float ( np . mean ( x > -100) ) def f e a t _ m e d i a n _ a b s o l u t e _ d e v i a t i o n ( x ) : med = np . median ( x ) return float ( np . median ( np . abs ( x - med ) ) )

Listing 1: Six of the ten functions generated for the human activity domain (gemini-3.5-flash). The model read level shifts off the plots and proposed a battery of location statistics. The hand-crafted pool contains no such feature, which is why it cannot see these anomalies (Table 5).

4

Experimental Setup

Data. We evaluate on TSB-AD-U, the univariate track of the TSB-AD benchmark [15], which groups series into nine domains: environment, facility, finance, human activity, medical, sensor, synthetic, traffic, and web services. The benchmark provides a fixed split of 48 tuning series and 350 evaluation series. Throughout, feature selection and any window-length tuning are performed on the tuning split of each domain in isolation, and the 350 evaluation series are scored exactly once, after all design choices are frozen. This protocol is the same one applied to the published baselines, so the comparison is like for like. Evaluation metric. We report VUS-PR [17], the volume under the precision-recall surface, computed under the TSB-AD protocol in which the evaluation window is set to each series’ estimated period. VUS-PR is threshold-free and tolerant to small localisation errors, which makes it the standard choice for this benchmark. We aggregate into a single per-series mean over all 350 evaluation series, weighting each domain by its number of series, which is the aggregate reported in the benchmark’s own tables and on its leaderboard. Baselines. We position the pipeline against the public TSB-AD-U leaderboard, taking the best entry in each method family: MOMENT_FT [8], Time-RCD + MAFT [12], CHARM [5], and TSPulse_FT [6] among pretrained foundation models, StreamVAE [23] among neural detectors, and MMPAD [21] among statistical ones, together with MatrixProfile [22], Sub_PCA [15], and IForest [14] for context. These values are reported as published. Several baselines use more supervision than our pipeline: the foundation models are pretrained on external corpora and finetuned on the tuning set. Our detector has no trained parameters and consults tuning labels only in the per-domain feature-selection step and generation when an LLM is used. Generators. Pools are generated by three multimodal models, gemini-3.5-flash [7], gemini-3.1-flash-lite [4], and claude-sonnet-5 [2], using the procedure of Section 3.5, each accessed through its provider’s API. For each model we generate an independent pool under four random seeds, which vary the sampled example windows, and report the mean over seeds together

7

with the population standard deviation across seeds. All generated-pool runs use the period-based window and mean/mean score aggregation. Score aggregation and comparability. The pipeline reduces per-feature robust scores |Z| to a per-window score (feature aggregation) and then combines overlapping windows into per-point scores (point aggregation). Sweeping the full pool without selection over this grid, mean/mean ranks first, and we use it for every result in the paper, so all comparisons are on matched aggregation.

5

Results

We organise the results as a progression. First, the hand-crafted pipeline clears every method on the leaderboard that, like it, is trained on nothing outside the series being scored, and trails only pretrained foundation models (Table 1). Second, neither the selection strategy nor the score aggregation explains the remaining gap: both move the score far less than the candidate pool does (Figure 4), and a larger static library, catch22, moves it in the wrong direction (Table 3). Third, adaptively discovered pools are competitive on their own, and selecting over the union of expert and discovered features beats either and closes the gap to the best pretrained entry (Table 4). Fourth, a per-domain analysis shows why: expert and discovered pools fail on different domains, so generation, more than selection, is what limits the pipeline (Table 5).

5.1

Comparison with tuned baselines

Table 1 places the hand-crafted pipeline against the TSB-AD-U leaderboard, organised by method family. The pattern is clean at the family level. Against detectors that are, like ours, trained on nothing outside the series being scored, the pipeline is ahead by a wide margin: 0.529 against 0.45 for the best neural entry (StreamVAE) and 0.44 for the best statistical one (MMPAD), a relative gain of roughly a fifth over each. Against pretrained foundation models it is competitive: it sits above MOMENT_FT (0.39), CHARM (0.50) and Time-RCD (0.52), below TSPulse_FT (0.55), and 0.06 below the leaderboard’s best entry, Time-RCD + MAFT (0.59). Pretraining helps on this benchmark, and a detector without it starts at a disadvantage. Within the untrained regime, though, the pipeline dominates: a ten-feature pool with a median/MAD score already clears every untrained baseline, which leaves the question of what stops it from closing the remaining gap. Sections 5.2 and 5.3 answer that the pool is what stops it, and that closing the gap is a matter of writing better features.

5.2

Selection, aggregation, and the candidate pool

The pipeline exposes three choices and no others: how a feature subset is selected, how the per-feature robust scores are collapsed into a per-point score, and which features are candidates in the first place. We vary each in turn under otherwise identical conditions and measure how far the per-series score moves (Figure 4). A practitioner would reach first for the selection rule and the aggregation; we show that the candidate pool matters more than either. Selection strategy is second-order. Holding the hand-crafted pool fixed, we vary the selection strategy. Figure 4 (top) shows the three strategies for which we compute full VUS-PR (greedy forward, top-k, and mRMR), each selecting on the tuning split and scored on evaluation, alongside a per-domain oracle that picks, in hindsight, the best of the three for each domain. Across all three strategies and the oracle the score spans 0.520 to 0.551, a range of 0.031, and the tuning-selected 8

Method

Family

Pretrain. VUS-PR

Pretrained on time series Time-RCD + MAFT† foundation TSPulse_FT† foundation † Time-RCD foundation CHARM† foundation † MOMENT_FT foundation

✓ ✓ ✓ ✓ ✓

0.59 0.55 0.52 0.50 0.39

No time-series pretraining Union pool (ours) statistical Hand-crafted (ours) statistical StreamVAE† neural † MMPAD statistical Sub_PCA† statistical † MatrixProfile distance IForest† isolation

LLM‡ — — — — — —

0.588 0.529 0.45 0.44 0.42 0.35 0.30

Table 1: TSB-AD-U, per-series mean VUS-PR over the 350 evaluation series. † as published on the leaderboard; ✓marks pretraining on time series. ‡ The union pool’s candidate features are written offline by a general-purpose language model, not a time-series foundation model, while its detector is untrained and transductive. Our two rows are the hand-crafted pool (Section 5.2) and the union with the generated pool (Table 4, best generator, seed-averaged); the hand-crafted pipeline leads the non-pretrained baselines by 8 points and the union by 14, and the union comes close to the leaderboard’s best entry. configuration is within two points of the hindsight oracle. Tuning selected greedy forward in every domain, yielding compact subsets of two to five features. It is the choice among strategies that is second-order, not selection itself. Scoring the full ten-feature pool with no selection at all gives 0.435 (Table 2), so selecting per domain is worth 0.094. Score aggregation is second-order too. The pipeline collapses the per-feature robust scores |Z| to one value per window (feature aggregation) and then combines overlapping windows into per-point scores (point aggregation). We sweep the full 9 × 2 grid on the hand-crafted pool with no selection, so that the sweep is not entangled with the selection step (Table 2). Mean/mean ranks first and is the configuration used for every result in the paper, so all comparisons elsewhere are on matched aggregation. The grid spans 0.096, wider than the selection range, but the spread sits almost entirely in the degenerate corners. Averaging over the windows that cover a point beats taking their maximum at all nine feature aggregations, and among the eight non-median feature aggregations under mean point aggregation the spread is only 0.021. The ordering is interpretable: the score is highest when evidence is pooled across features and decays monotonically as the aggregation moves toward order statistics that rest on fewer and fewer of them (q75 → q90 → q95 → q99 → max). The pool is the ceiling. Against those two, we now vary the candidate pool and hold everything else fixed, and we test the standard response to a weak pool, a larger curated library. Table 3 reports four pools: catch22, the canonical off-the-shelf library of 22 generic time-series features [16]; our handcrafted pool of ten statistics; the adaptively generated pool of the next section (gemini-3.5-flash); 9

point aggregation feature aggregation

mean

max

mean q75 top-3 q90 top-2 q95 q99 max median

0.435 0.433 0.430 0.428 0.424 0.424 0.416 0.414 0.388

0.389 0.389 0.384 0.384 0.380 0.380 0.372 0.366 0.339

Table 2: Score-aggregation ablation (per-series VUS-PR), full hand-crafted pool with no feature selection, so the absolute level is below the selected pipeline (0.529) throughout. Rows are ordered by the mean point-aggregation column. Mean point aggregation dominates max at every one of the nine feature aggregations, and mean/mean is best overall; it is the setting used for every other result in the paper. Feature pool Union (generated ∪ hand) Generated (gemini-3.5) Hand-crafted statistics catch22 (generic library)

#feat.

VUS-PR

20 10 10 22

0.588 ±0.016 0.569 ±0.025 0.529 0.362

Table 3: The pool is the ceiling (per-series VUS-PR). Same detector, window, aggregation, and per-domain selection; only the candidate pool changes. The generic catch22 library is the weakest despite being the largest; the adaptively generated pool beats the hand-crafted one; their union is best. The generated and union rows are the mean ± standard deviation over four generation seeds. and the union of the last two. Every pool runs through the identical detector, window, aggregation, and selection protocol. The one difference is that greedy forward selection is too costly for the two large pools, so catch22 and the union pool select with top-k and mRMR only. This does not manufacture either result. On the hand-crafted pool mRMR is the strongest of the three strategies and greedy the weakest (Figure 4). The pool alone moves per-series VUS-PR from 0.362 (catch22) to 0.588 (union), a range seven times the selection range and more than twice the full aggregation grid, and the aggregation grid earns even that width from settings no one would choose. Feature generation, not feature selection or score aggregation, is the dominant factor. The larger static library is the weakest pool: catch22 has more than twice the features of our hand-crafted pool yet scores well below it, so enlarging a generic vocabulary is the wrong axis. catch22 is built for normalised series and largely omits location, which is what several domains’ level-shift anomalies require. The adaptively generated pool, by contrast, already beats the hand-crafted one, and the union of the two is best, which the next two sections examine across generators.

10

range oracle

selection strategy

0.031 top-k mean/mean

score aggregation

0.096

median/max union

feature pool

0.226 catch22

0.3

0.4

0.5

0.6

per-series VUS-PR Figure 4: Effect size of the three design choices on one axis. Each bar spans the configurations we ran for that choice, dots are individual configurations, and only the two endpoints are named; the number at the right is the range. Selection strategy moves per-series VUS-PR by 0.031 even when a hindsight oracle is allowed, and score aggregation by 0.096, while the candidate feature pool moves it by 0.226. The aggregation sweep runs on the full pool without selection, so that row sits at a lower absolute level than the other two.

5.3

Adaptive feature discovery

We now replace the static pool with an automatically discovered one and hold everything else fixed. Table 4 reports the two feature sources of Section 3.5: llm, which selects over the generated pool alone, and union, which selects jointly over the generated and hand-crafted pools. Each entry is the mean over four seeds. The stronger generators are competitive on their own. Both Gemini pools match or beat the hand-crafted pipeline (per-series 0.529) with no manual feature engineering, gemini-3.5-flash reaching 0.569; the weaker claude-sonnet-5 pool trails at 0.497, so “competitive alone” holds for the better generators but not uniformly. Discovery can substitute for the manual design of the pool, but it is not reliable on its own. The complementarity is the more robust result. The cleanest evidence avoids the series-correlation problem entirely: within a seed the union pool is exactly that seed’s generated pool plus the hand-crafted features, so union − llm is an exact paired difference. Across three generators and four seeds, union wins all twelve pairs, by margins from 0.006 to 0.061 (two-sided sign test, p = 4.9 × 10−4 ). The largest per-seed margins belong to claude-sonnet-5, the weakest generator, which shows the blind-spot mechanism at the level of individual runs. The strongest union configuration (gemini-3.5-flash, per-series 0.588) exceeds both the hand-crafted pipeline and every generated pool in isolation.

11

Generator gemini-3.5-flash gemini-3.1-flash-lite claude-sonnet-5

llm

union

0.569 ±0.025 0.540 ±0.018 0.497 ±0.024

0.588 ±0.016 0.564 ±0.025 0.551 ±0.028

Table 4: Generated pools (per-series VUS-PR), mean ± standard deviation over four generation seeds. llm selects over the generated pool alone; union over the generated and hand-crafted pools jointly. union beats llm for every generator, and the best union beats the hand-crafted pipeline (0.529). Domain

n

Hand

environment facility finance human activity medical sensor synthetic traffic web services

18 87 8 43 47 39 39 5 64

0.360 0.348 0.408 0.603 0.673 0.656 0.768 0.745 0.743 0.238 0.513 0.528 0.593 0.540 0.590 0.686 0.643 0.756 0.483 0.471 0.502 0.440 0.394 0.394 0.534 0.554 0.530

per-series per-domain

350 0.529 0.569 0.588 9 0.523 0.543 0.567

llm

union

Table 5: Per-domain VUS-PR for the best generator (gemini-3.5-flash, seed-averaged). “Hand” is the hand-crafted pipeline, llm the generated pool, union the two pools selected over jointly; best per row in bold. Neither source wins everywhere, and the union exceeds both on four domains, which is why it leads overall.

5.4

Per-domain analysis

Table 5 decomposes the best generator by domain against the hand-crafted pipeline. Neither pool dominates: the hand-crafted one leads on finance, medical, and traffic, the generated one on facility and web services, and the two differ by more than 0.27 on human activity in the generated pool’s favour. The union does more than pick the better parent. It exceeds both pools on environment, human activity, sensor, and synthetic, so the selected subset draws features from each source rather than collapsing onto the stronger one, and where it trails the better parent it trails by 0.03 or less, except on traffic, the smallest domain at five series. Human activity is the clearest case: the hand-crafted pool is invariant to the level shifts that the generated code targets (Listing 1), and scores 0.238 against 0.513 for the generated pool.

6

Discussion and Conclusion

Feature-based anomaly detection has largely relied on static, expert-curated libraries and on searching well within them. In our setting the search is close to exhausted: three selection strategies and a hindsight oracle lie within 0.031 of one another, and the defensible aggregation settings within 0.021, while changing the candidate pool moves the score by 0.226. What limits this pipeline is therefore 12

the pool it is handed rather than the search over it, and the one larger generic library we tried did not help: catch22 is the weakest of the four pools we run. Task-conditioned discovery addresses that constraint directly. A static library encodes prior expert knowledge, a discovered pool encodes hypotheses conditioned on the target domain, and the two fail on disjoint subsets of domains. Selecting over their union exceeds both constituents on four of nine domains and improves on the generated pool in all twelve generator-seed pairs, with the largest gains where the generated pool is weakest. Augmenting an expert pool with discovered candidates is therefore low-risk and does not depend on any individual generator: strong generation lifts the result, and weak generation leaves the expert features in the candidate set. The resulting detector has no trained parameters and scores each series transductively. In its hand-crafted form it uses no pretraining at all and still exceeds every non-pretrained entry on the TSB-AD-U leaderboard by a wide margin; unioning in a language-model-written pool matches the best pretrained entry, using a pretrained model to design features offline rather than to score. Limitations. The complementarity is consistent across seeds but concentrated in the blind-spot domains, and nine domains afford little power for per-generator claims. The generator comparison covers three models and four seeds each rather than an exhaustive sweep. The leaderboard entries are tuned by their own authors under the benchmark’s protocol rather than ours which requires less tuning, so we make claims at the level of method families and do not claim to exceed the best pretrained entry, only to reach it. Future work. Two natural extensions remain. Applying the protocol to the multivariate TSB-AD track would test whether the findings extend beyond the univariate setting. An iterative loop that returns the tuning score of a pool to the generator and requests a revision would establish whether a single generation round leaves gains unrealised.

References [1] Abdul Fatir Ansari, Lorenzo Stella, Ali Caner Turkmen, Xiyuan Zhang, Pedro Mercado, Huibin Shen, Oleksandr Shchur, Syama Sundar Rangapuram, Sebastian Pineda Arango, Shubham Kapoor, Jasper Zschiegner, Danielle C. Maddix, Hao Wang, Michael W. Mahoney, Kari Torkkola, Andrew Gordon Wilson, Michael Bohlke-Schneider, and Bernie Wang. Chronos: Learning the language of time series. Transactions on Machine Learning Research, 2024. ISSN 2835-8856. URL https://openreview.net/forum?id=gerNCVqqtR. Expert Certification. [2] Anthropic. Claude sonnet 5. Large language model, 2026. URL https://claude.ai. [3] Maximilian Christ, Nils Braun, Julius Neuffer, and Andreas W. Kempa-Liehr. Time series feature extraction on basis of scalable hypothesis tests (tsfresh – a python package). Neurocomputing, 307:72–77, 2018. ISSN 0925-2312. doi: https://doi.org/10.1016/j.neucom.2018.03.067. URL https://www.sciencedirect.com/science/article/pii/S0925231218304843. [4] Google DeepMind. Gemini 3.1 flash-lite: Model card. Technical report, March 2026. URL https://deepmind.google/models/model-cards/gemini-3-1-flash-lite/. [5] Utsav Dutta, Sina Khoshfetrat Pakazad, and Henrik Ohlsson. Time to embed: Unlocking foundation models for time series with channel descriptions, 2025. URL https://arxiv.org/abs/ 2505.14543.

13

[6] Vijay Ekambaram, Subodh Kumar, Arindam Jati, Sumanta Mukherjee, Tomoya Sakai, Pankaj Dayama, Wesley M. Gifford, and Jayant Kalagnanam. Tspulse: Tiny pre-trained models with disentangled representations for rapid time-series analysis, 2026. URL https://arxiv.org/abs/ 2505.13033. [7] Google DeepMind. Gemini 3.5 flash: Model card, 2026. URL https://deepmind.google/models/ model-cards/gemini-3-5-flash/. [8] Mononito Goswami, Konrad Szafer, Arjun Choudhry, Yifu Cai, Shuo Li, and Artur Dubrawski. Moment: A family of open time-series foundation models. In International Conference on Machine Learning, 2024. [9] Nate Gruver, Marc Anton Finzi, Shikai Qiu, and Andrew Gordon Wilson. Large language models are zero-shot time series forecasters. In Thirty-seventh Conference on Neural Information Processing Systems, 2023. URL https://openreview.net/forum?id=md68e8iZK1. [10] Noah Hollmann, Samuel Müller, and Frank Hutter. Llms for semi-automated data science: Introducing caafe for context-aware automated feature engineering, 2023. [11] Ming Jin, Shiyu Wang, Lintao Ma, Zhixuan Chu, James Y Zhang, Xiaoming Shi, Pin-Yu Chen, Yuxuan Liang, Yuan-Fang Li, Shirui Pan, and Qingsong Wen. Time-LLM: Time series forecasting by reprogramming large language models. In International Conference on Learning Representations (ICLR), 2024. [12] Tian Lan, Hao Duong Le, Jinbo Li, Wenjun He, Meng Wang, Chenghao Liu, and Chen Zhang. Towards foundation models for zero-shot time series anomaly detection: Leveraging synthetic data and relative context discrepancy. In Forty-third International Conference on Machine Learning, 2026. URL https://openreview.net/forum?id=yXqnyIvGAy. [13] Christophe Leys, Christophe Ley, Olivier Klein, Philippe Bernard, and Laurent Licata. Detecting outliers: Do not use standard deviation around the mean, use absolute deviation around the median. Journal of Experimental Social Psychology, 49(4):764–766, 2013. ISSN 0022-1031. doi: https://doi.org/10.1016/j.jesp.2013.03.013. URL https://www.sciencedirect.com/science/ article/pii/S0022103113000668. [14] Fei Tony Liu, Kai Ming Ting, and Zhi-Hua Zhou. Isolation forest. In 2008 Eighth IEEE International Conference on Data Mining, pages 413–422, 2008. doi: 10.1109/ICDM.2008.17. [15] Qinghua Liu and John Paparrizos. The elephant in the room: Towards a reliable time-series anomaly detection benchmark. In NeurIPS 2024, 2024. [16] Carl H. Lubba, Sarab S. Sethi, Philip Knaute, Simon R. Schultz, Ben D. Fulcher, and Nick S. Jones. catch22: Canonical time-series characteristics: Selected through highly comparative time-series analysis. Data Mining and Knowledge Discovery, 33(6):1821–1852, August 2019. ISSN 1573-756X. doi: 10.1007/s10618-019-00647-x. URL http://dx.doi.org/10.1007/s10618019-00647-x. [17] John Paparrizos, Paul Boniol, Themis Palpanas, Ruey S Tsay, Aaron Elmore, and Michael J Franklin. Volume Under the Surface: A New Accuracy Evaluation Measure for Time-Series Anomaly Detection. Proceedings of the VLDB Endowment, 15(11):2774–2787, 2022.

14

[18] John Paparrizos, Yuhao Kang, Paul Boniol, Ruey S Tsay, Themis Palpanas, and Michael J Franklin. Tsb-uad: an end-to-end benchmark suite for univariate time-series anomaly detection. Proceedings of the VLDB Endowment, 15(8):1697–1711, 2022. [19] Bernardino Romera-Paredes, Mohammadamin Barekatain, Alexander Novikov, Matej Balog, M. Pawan Kumar, Emilien Dupont, Francisco J. R. Ruiz, Jordan Ellenberg, Pengming Wang, Omar Fawzi, Pushmeet Kohli, and Alhussein Fawzi. Mathematical discoveries from program search with large language models. Nature, 2023. doi: 10.1038/s41586-023-06924-6. [20] Beicheng Xu, Weitong Qian, Lingching Tung, Yupeng Lu, and Bin Cui. Tree-structured synergy of large language models and bayesian optimization for efficient cash, 2026. URL https://arxiv.org/abs/2601.12355. [21] Chin-Chia Michael Yeh. Matrix profile for time-series anomaly detection: A reproducible open-source benchmark on tsb-ad, 2026. URL https://arxiv.org/abs/2604.02445. [22] Chin-Chia Michael Yeh, Yan Zhu, Liudmila Ulanova, Nurjahan Begum, Yifei Ding, Anh Dau, Diego Silva, Abdullah Mueen, and Eamonn Keogh. Matrix profile i: All pairs similarity joins for time series: A unifying view that includes motifs, discords and shapelets. pages 1317–1322, 12 2016. doi: 10.1109/ICDM.2016.0179. [23] Kadir-Kaan Özer, René Ebeling, and Markus Enzweiler. Stream-vae: Dual-path routing for slow and fast dynamics in vehicle telemetry anomaly detection, 2026. URL https://arxiv.org/ abs/2511.15339.

15

Appendix This appendix records the experimental setup and the full results behind the reported aggregates: the dataset splits and evaluation metric, the configuration and inference cost of the language-model generators, a breakdown of every pool by selection strategy, the selected feature subsets, and the seed-level scores with their statistical analysis.

A

Dataset and Splits

Experiments are run on TSB-AD-U, the univariate track of TSB-AD [15]. The benchmark’s fixed Tuning/Eval partition is adopted without modification: 48 tuning series and 350 evaluation series, grouped into nine domains by the benchmark’s filename convention. Table 6 gives the per-domain counts. Two domains, traffic and finance, are small on both sides of the split, which limits the precision of any domain-level statement about them. The nine domains are the benchmark’s own per-series labels. Each TSB-AD-U series is distributed under a filename that encodes both its source dataset and its domain, as in 001_NAB_id_1_ Facility_tr_1007_1st_2014.csv; we read the domain token off the filename and normalise it, and no series in either split falls outside the nine labels. The only per-series preprocessing is extraction of channel 0 as a float array. No normalisation, resampling, detrending, or imputation is applied at any point, and no series is excluded: all 350 evaluation series are scored, for every feature source and every seed. Domain

Tuning

Eval

environment facility finance human activity medical sensor synthetic traffic web services

2 9 2 3 7 5 6 1 13

18 87 8 43 47 39 39 5 64

Total

48

350

Table 6: TSB-AD-U series counts per domain, as distributed by the benchmark. Evaluation metric. All scores are VUS-PR [17], computed by the benchmark’s own evaluation code so that these numbers and the published leaderboard values are produced by identical software. VUS-PR integrates the precision-recall curve over a range of buffer widths around each labelled anomalous region, which makes it threshold-free and tolerant of small localisation errors. Following the TSB-AD protocol, the buffer parameter is set per series to that series’ estimated dominant period, obtained by the benchmark’s unsupervised period estimator on the raw values. Two aggregates are used throughout. Per-series is the mean VUS-PR over all 350 evaluation series, equivalently the domain means weighted by their evaluation counts; this is the aggregate the benchmark reports on its leaderboard. Per-domain is the unweighted mean of the nine domain means. Unless stated otherwise, figures quoted in the text are per-series.

16

B

Pipeline Hyperparameters

Table 7 lists every hyperparameter of the detection pipeline, the values tried, and the final setting. The pipeline has no learned parameters: fit and score both reduce to per-column medians on the series being scored. Labels are consulted in exactly one place, the per-domain feature-selection step, and that step runs strictly on the tuning split; the 350 evaluation series are scored once, after all design choices are frozen. The window is not a fitted quantity: w is the series’ own unsupervised dominant-period estimate and s = ⌊w/2⌋, so there is nothing to tune. Selection optimises a cheap AUC-PR proxy to keep the search affordable, while every reported evaluation score uses full VUS-PR. Only three things in the table are searched at all: the two score-aggregation choices, swept once on the hand-crafted pool without selection, and the feature subset itself, chosen per domain on the tuning split. Everything under Windowing and the detector’s estimator are fixed a priori and never varied. One practical restriction applies to the search: greedy forward is O(d2 ) in objective evaluations, so on the two pools of twenty features or more, catch22 and the union pool, only top-k and mRMR are run. Hyperparameter

Values tried

Final

Windowing — fixed a priori, not searched window length w — per-series dominant period stride s — ⌊w/2⌋ period floor / — 4 / series length cap Detector location / scale — median / MAD 1.0 zero-MAD sub- — stitute feature aggrega- 9: mean, median, mean tion max, q75/90/95/99 , top-2, top-3 point aggrega- {mean, max} mean tion Feature selection — tuning split only {greedy forward, top- per domain strategy k, mRMR} objective — mean AUC-PR on tuning series no candidate imgreedy stopping — proves top-k grid k ∈ {1, . . . , d} per domain mRMR λ grid {0, 0.25, 0.5, 1.0} per domain mRMR redun- — |corr| on tuning dancy windows Candidate pool — the experimental variable pool size d 10 hand, 22 catch22, varied 10 llm, 20 union

Table 7: Pipeline hyperparameters. A dash under Values tried means the setting was fixed a priori and never varied; only the two aggregation choices and the feature subset are searched at all, both on the tuning split. The detector has no learned parameters.

17

The hand-crafted pool. The ten hand-crafted candidates are: standard deviation, interquartile range, skewness, excess kurtosis, mean absolute first difference, mean absolute second difference, mean-crossing count, lag-1 autocorrelation, lag-2 autocorrelation, and a 10-bin histogram entropy. Each is a pure function of a single window returning one finite scalar; non-finite returns are replaced by zero at extraction time.

C

Language-Model Generator Configuration

Table 8 lists the generation settings, held fixed across the three generators except where a provider does not expose the parameter. The prompt is reproduced in Section I. Each domain gets one pool, generated from ten rendered example windows, five containing a labelled anomaly, five not, drawn from that domain’s tuning series. The seed controls only which windows are sampled; the instruction, the rendering, and everything downstream are identical across domains, generators, and seeds. The returned code is parsed from a single fenced block, executed in a restricted namespace with numpy available, and each function is checked on a small set of probe windows covering the edge cases named in the prompt (very short, constant, and large-magnitude windows). Functions that raise or that always return non-finite values are discarded, and a run yielding fewer than ten valid features is retried rather than used. Across all 108 (generator, seed, domain) runs the accepted pool contains exactly ten features, so no result below rests on a partially populated pool. Setting

Value

Generators

gemini-3.5-flash [7], gemini-3.1-flash-lite [4], claude-sonnet-5 [2] Features requested 10 per domain Accepted pool size 10 (a run yielding fewer is retried) Example windows 5 normal + 5 anomalous per domain Window rendering line plot, shared y-axis across all ten plots Seeds 0, 1, 2, 3 Temperature 0.2 (Gemini); not exposed by the Anthropic endpoint for this model Max output tokens 8192 Reasoning Gemini: provider default; Claude: adaptive thinking, effort high

Table 8: Generation settings. Only the attached plots change between domains and seeds; the instruction is byte-identical throughout.

18

D

Inference Cost of the Generators

Generation is a one-off, offline cost, and the natural unit is a single domain: one API call produces one domain’s ten-function pool. The detector that then runs on the 350 evaluation series never contacts a language model. Generator

Input Output

gemini-3.5-flash 11,180 gemini-3.1-flash-lite 11,180 claude-sonnet-5 1,767

Total USD

s

546 17,075 0.070 34.9 512 11,692 0.004 2.7 1,744 3,511 0.031 14.0

Table 9: Average tokens, list-price cost and latency for one generation call, which produces one domain’s pool, measured from the providers’ usage telemetry. Prices are the providers’ published current rates per million input/output tokens: 1.50/9.00, 0.25/1.50 and 3.00/15.00 respectively. Input dominates, and differs by roughly 6× between providers because of how each tokenises the ten plots. Output is small in every case, being ten short numpy functions. For gemini-3.5-flash the total exceeds input + output because reasoning tokens are billed separately, a mean of 5,349 per call; for claude-sonnet-5 they are already inside the output count. Equipping a domain with a generated pool costs between half a cent and seven cents, once.

E

Baselines

Every baseline figure is taken as published on the public TSB-AD-U leaderboard. No baseline was trained, tuned, or re-run here, so no hyperparameters are reported for them: the settings are the original authors’ under the benchmark’s protocol, and the leaderboard and the respective papers are the reference for those details. This applies to MOMENT_FT [8], Time-RCD and TimeRCD + MAFT [12], CHARM [5], TSPulse_FT [6], StreamVAE [23], MMPAD [21], Sub_PCA [15], MatrixProfile [22], and IForest [14].

F

Results by Selection Strategy

Table 10 reports per-series VUS-PR for each candidate pool under each selection strategy that is affordable on it. Entries for the generated (llm) and union pools are means over the four generation seeds; the hand-crafted row is a single deterministic run. Greedy forward is O(d2 ) in objective evaluations and is not run on the 20-feature union pool. Strategy has little effect on a fixed pool. Within the llm row of any generator the three strategies lie within 0.005 of one another: 0.572/0.576/0.573 for gemini-3.5-flash, 0.541/0.543/0.540 for gemini-3.1-flash-lite, and 0.491/0.496/0.495 for claude-sonnet-5. The hand-crafted pool spans a slightly wider 0.521–0.543. The pool matters more than the strategy. The spread across strategies within a row is at most 0.025 (union, claude-sonnet-5) and typically under 0.005. The spread across pools at a fixed strategy is several times larger: under mRMR alone the score runs from 0.495 (claude-sonnet-5 generated) to 0.588 (gemini-3.5-flash union). The fourth candidate pool, catch22, is not broken

19

Generator

Pool

greedy top-k mRMR

gemini-3.5-flash llm union

0.572 —

0.576 0.571

0.573 0.588

gemini-3.1flash-lite

llm union

0.541 —

0.543 0.538

0.540 0.564

claude-sonnet-5 llm union

0.491 —

0.496 0.526

0.495 0.551

hand-crafted

0.529

0.521

0.543

hand

Table 10: Per-series VUS-PR by selection strategy. Generated and union entries are seed-averaged over four generation seeds; the hand-crafted entry is a single deterministic run. out by strategy in Table 10; at 0.362 per-series it sits below every entry there despite being the largest of the four pools at 22 features. The ordering of pools is stable under every strategy. The union pool’s advantage depends on the strategy. mRMR on the union pool is the best configuration for all three generators. For claude-sonnet-5 the union pool beats the generated pool under both available strategies, 0.526 and 0.551 against a best of 0.496. For the two Gemini generators the union pool wins only under mRMR: under top-k it is level with or slightly below the generated pool alone, 0.571 against 0.576 and 0.538 against 0.543. Enlarging the candidate set therefore pays off when the selector penalises redundancy, and not otherwise. This is consistent with the union pool containing near-duplicate features across its two halves, which top-k ignores by construction. The margin is largest for the weakest generator, whose pool leaves the most for the hand-crafted features to cover.

G

Selected Feature Subsets

Table 11 gives the subsets greedy forward selects on the hand-crafted pool, together with the tuning objective that drove the choice and the resulting evaluation score. Subsets contain two to five of the ten candidates. The tuning and evaluation columns are computed on disjoint series and diverge sharply in the two smallest domains, finance with two tuning series and traffic with one. The corresponding subsets for the generated and union pools are not tabulated here, since there are 108 of them and they change with the seed. In aggregate, selected subsets contain 1–8 features on the generated pool (mean 3.2) and 1–20 on the union pool (mean 4.2), so selection on the union pool draws from both halves rather than collapsing onto one.

20

Domain

Selected features

Tun. Eval

environment

skewness, mean abs. 0.430 0.360 change facility IQR, skewness 0.751 0.604 finance std, mean abs. change, 0.212 0.768 skewness human activity zero crossings, autocorr. 0.213 0.238 lag-2, skewness medical skewness, std, entropy 0.513 0.593 sensor std, IQR 0.732 0.686 mean abs. change, 0.365 0.483 synthetic mean 2nd deriv. std, skewness, mean 0.901 0.440 traffic 2nd deriv., autocorr. lag-2 mean abs. change, en- 0.338 0.534 web services tropy, autocorr. lag-2, std, zero crossings

Table 11: Feature subsets selected by greedy forward on the hand-crafted pool. “Tun.” is the tuning objective used to make the choice; “Eval” is the full VUS-PR on that domain’s evaluation series. The per-series mean of the Eval column over all 350 series is 0.529.

H

Seed-Level Results and Statistical Analysis

Pool generation is the only stochastic component, and each (generator, source) cell is four independent runs, one per generation seed. Every run scores all 350 evaluation series. Table 12 gives the individual per-seed scores and the within-seed difference between the two pools. Pairing is exact rather than approximate: the two members of a pair differ only in whether the ten hand-crafted features were among the candidates, and are evaluated on the same 350 series with the same detector, so the usual concern about correlated series does not arise. Generator

Seed

llm

union

gemini-3.5-flash

0 1 2 3

0.563 0.589 0.531 0.594

0.591 0.599 0.562 0.600

+0.028 +0.010 +0.031 +0.006

gemini-3.1-flash-lite

0 1 2 3

0.547 0.533 0.515 0.564

0.583 0.545 0.536 0.594

+0.036 +0.012 +0.021 +0.030

claude-sonnet-5

0 1 2 3

0.537 0.476 0.495 0.481

0.597 0.537 0.546 0.526

+0.061 +0.060 +0.051 +0.046

Table 12: Per-seed per-series VUS-PR over the 350 evaluation series. Within a seed, the union pool is exactly that seed’s generated pool plus the ten hand-crafted features, so ∆ is an exact paired difference. All twelve differences are positive.

21

Statistical test. A two-sided sign test on 12 positives out of 12 gives p = 2−11 = 4.9 × 10−4 , the smallest value attainable at this sample size; the Wilcoxon signed-rank test agrees (W = 0, p = 4.9 × 10−4 ). The mean improvement is +0.033 and the median +0.031, with the smallest margin +0.006 and the largest +0.061. Selection-strategy ablation, per domain. Table 13 gives the per-domain breakdown for the hand-crafted pool. Four of the nine domains are entirely insensitive to the strategy, and the aggregate spread is driven mostly by facility (87 series) and sensor (39 series). The oracle column picks the best of the three per domain with hindsight and is not an achievable configuration; it bounds what a better selection rule could buy at 0.551 per-series, only 0.008 above the best achievable one. Domain

n

greedy top-k mRMR oracle

environment facility finance human activity medical sensor synthetic traffic web services

18 87 8 43 47 39 39 5 64

0.360 0.604 0.768 0.238 0.593 0.686 0.483 0.440 0.534

0.360 0.565 0.780 0.239 0.538 0.758 0.488 0.415 0.536

0.360 0.656 0.780 0.239 0.538 0.754 0.488 0.411 0.535

0.360 0.656 0.780 0.239 0.593 0.758 0.488 0.440 0.536

per-series per-domain

350 0.529 9 0.523

0.521 0.520

0.543 0.529

0.551 0.539

Table 13: Selection-strategy ablation on the hand-crafted pool, per domain (VUS-PR on the evaluation split).

22

I

Generation Prompt

The instruction below is across all domains, generators, and seeds; only the attached plots change. It is issued as a single user turn whose content interleaves the text fragments and the ten rendered plots in the order shown, preceded by the system message. [ system ] You are an expert time - series analyst and Python programmer specialising in unsupervised anomaly detection . You design discr iminativ e statistical features computed on a single sliding window of a univariate series . [ user ] Below are example sliding windows from this domain ’ s time series , shown as line plots ( x = sample index , y = value ) . All plots share the same y - axis so levels and magnitudes are directly comparable across windows . Note : window lengths VARY - each window spans one dominant period of its series - so your features must be length - agnostic ( do not assume a fixed len ( x ) ) . NORMAL windows ( no anomaly present ) : N1 : < plot > ... N5 : < plot > ANOMALOUS windows ( contain a labelled anomaly ) : A1 : < plot > ... A5 : < plot > Propose EXACTLY 10 Python feature functions that would help a robust ( median / MAD ) detector separate anomalous windows from normal ones in THIS domain . Study the plots and target the failure modes you see ( e . g . level shifts , spikes , variance changes , shape / periodicity changes ) . Requirements for each function : - signature : def feat_ < snake_name >( x ) : where x is a 1 - D numpy array ( one window ) - use numpy , available as ‘np ‘ ( do NOT write any import statements ) - return a single finite Python float - be deterministic , pure , and robust to short windows ( len ( x ) can be as low as 2) - no I /O , no randomness , no global state - give the 10 functions distinct , descriptive names Return ONLY one ‘‘‘ python code block containing the 10 function definitions and nothing else ( no prose , no example calls ) .

Listing 2: The generation prompt in full. The domain is never named, and no dataset identifier, detector description, score, or evaluation series is included; the model reasons from the plots alone.

23

Record · ID 1006897 · SHA-256 e6d11983c0b036ce
Retrieved via Conceptio — every document is proof-bundled with source, license, and retrieval metadata.