# Methodology — TSFM publication study (2026-05-21)

Detailed reproducibility notes for *How TSFM Research Evolved: A Data-Driven
Look at 2021–2026*. This file accompanies the four chart-data JSON files in the
same directory.

## 1. Data source

We used the [OpenAlex Works API](https://docs.openalex.org/api-entities/works)
(free, no auth, ~100k requests/day quota with `mailto` polite-pool header).

OpenAlex's `search` parameter applies stemming, stop-word handling, and
relevance ranking (`relevance_score`, blending text similarity and citation
signal) across the searchable Work fields — including title, abstract, and
indexed fulltext. Per OpenAlex's
[searching guide](https://developers.openalex.org/guides/searching),
double-quoted phrases enforce phrase membership, but the broader OR-combined
query can still surface documents matching only some of the clauses with high
relevance score.

We therefore treated OpenAlex results as **candidates** and applied a strict
local post-filter (see §3) before admitting a paper into the corpus.

## 2. Candidate retrieval

Single OR-combined search query, applied via `GET /works`:

```
"time series foundation model" OR "time series foundation models"
OR "foundation model for time series" OR "foundation models for time series"
OR "pretrained time series" OR "pre-trained time series"
OR "large time series model" OR "time series pretraining"
OR "time series pre-training"
OR "TimeGPT" OR "TimesFM" OR "Lag-Llama" OR "Moirai" OR "TSFM"
```

Date filter: `from_publication_date:2020-01-01,to_publication_date:2026-05-31`.

Pagination: `per_page=200`, cursor-based.

Candidate pool: **3,009 Works** (as of the 2026-05-21 snapshot — this number drifts by a few per day as OpenAlex re-indexes; the strict post-filter admits 679 of them).

(Some other named models — Chronos, MOMENT, Toto, Xihe, Sundial, Kronos,
EarthPT, Timer, Time-MoE, Aurora, UniTS, Granite TTM, FlowState — were *not*
in the candidate query but were caught by the strict post-filter when those
papers also contained one of the phrase clauses above. Papers mentioning only
those names without any of the strict phrases would be missed; this is the
primary precision bias of the corpus. See §6 for our estimate of the size of
this gap.)

## 3. Strict post-filter (inclusion rules)

A candidate Work is admitted iff its (title + reconstructed abstract) text,
lowercased, contains at least one of the following phrase patterns. Phrases
with context requirements must additionally contain at least one of the
listed co-occurrence terms.

### 3.1 Phrase-only rules (no co-occurrence needed)

- `time series foundation model`
- `time series foundation models`
- `foundation model for time series`
- `foundation models for time series`
- `pretrained time series`
- `pre-trained time series`
- `large time series model`
- `time series pretraining`
- `time series pre-training`
- `timegpt`
- `timesfm`
- `lag-llama` / `lag llama`

### 3.2 Phrase + context rules (disambiguation for common-English names)

| Phrase | Required co-occurrence (any) |
|--------|------------------------------|
| `moirai` | `time series` |
| `tsfm` | `time series` |

Other named models (Chronos, MOMENT, Toto, Xihe, Sundial, Kronos, EarthPT,
Timer, Time-MoE, Aurora, UniTS) were not added as strict-filter rules because
they were not in the candidate query and adding them post-hoc would not
recover any papers we did not already retrieve.

The exact filter code is in
[fetch_v3.py](https://github.com/metis-forecasting/fleet/blob/main/packages/tsfm-web/public/blog/tsfm-publication-curve-2021-2026/data/fetch_v3.py)
(not yet committed in this PR — will follow).

## 4. Abstract reconstruction

OpenAlex stores abstracts as an inverted index (`abstract_inverted_index`:
`{word: [positions]}`). We reconstructed the surface form by sorting tokens
by position and joining with spaces. The reconstruction is lossy at the
sentence-boundary level (punctuation is collapsed) but preserves token
ordering and is sufficient for substring phrase matching.

## 5. Deduplication

OpenAlex Work IDs are globally unique, so deduplication within a single
OpenAlex query result is automatic. Cross-version deduplication (preprint
vs. published version) is handled by OpenAlex itself: each canonical work
has a single ID with multiple `locations`. We did not attempt further
arXiv-vs-conference dedup beyond what OpenAlex already does.

## 6. Known coverage gaps

1. **Papers introducing a new TSFM under an unanticipated name without using
   any TSFM-specific phrase.** A paper titled "FooNet: a transformer for
   forecasting" with an abstract that does not include "foundation model",
   "pretrained time series", or any of our phrases, would be missed. We
   estimate this gap is small for 2024 onwards (the dominant TSFM phrases
   are explicitly in the query) and possibly larger in 2021–2022 (where
   pretraining vocabulary was less standardized).
2. **arXiv-only papers that OpenAlex has not indexed.** OpenAlex has a known
   lag of 2–8 weeks for new arXiv submissions. May 2026 partial counts
   should be expected to revise upward.
3. **Workshop and conference proceedings papers** are indexed at
   publication, not at submission. ICLR 2026 (April 2026) proceedings
   finish indexing in OpenAlex in late June 2026 historically; the May 21
   snapshot does not yet include those.
4. **Closed-venue or non-English papers.** OpenAlex coverage skews toward
   English-language, open-citation venues. Non-English TSFM work
   (particularly Chinese-language journal articles) is under-represented.

## 7. Model release timeline

The 43-record release timeline was assembled by hand from primary sources:

- arXiv abstract pages for paper-release dates
- GitHub release tags or repository commit history for weights-release dates
- Hugging Face model card "created" timestamps where available
- Company blog post dates for closed-API or announcement-first releases

Each record specifies which basis is used for the date. Where paper-release
and weights-release dates differ (e.g., TimesFM had its arXiv paper on
2023-10-14 and its initial 200m weights checkpoint on 2024-02-12), we list
both as separate records.

The set is "release records," not "distinct foundation models" in the
narrower checkpoint-family sense — Moirai 1.0 and Moirai 1.1 count as two
records, as do Chronos and Chronos-Bolt.

## 8. Classification

Each paper was assigned to exactly one category by a priority-ordered
keyword classifier on title + abstract:

1. **survey** — title or abstract contains "survey", "review", "tutorial", "position paper", "overview"
2. **introduces-model** — title contains a known TSFM model name AND abstract contains "we introduce/propose/present/develop/release"; OR title matches a known TSFM model-intro pattern (e.g., `X: A ... foundation model`)
3. **benchmark** — title contains "benchmark", "benchmarking", "evaluation suite", "leaderboard", or "comparative study"; OR abstract contains "benchmark" + a "comprehensive/empirical/comparative/extensive" qualifier
4. **adaptation** — title or abstract contains "fine-tune/fine-tuning", "parameter-efficient", "LoRA", "PEFT", "prompt-tuning", "adapter", "in-context", "domain adaptation", "transfer learning", "few-shot"
5. **theory** — title or abstract contains "scaling laws", "chinchilla", "compute-optimal", "theoretical analysis", "expressivity", "capacity"
6. **application** — title or abstract matches a domain pattern: energy / electricity / power; healthcare / clinical / medical / ECG / EEG / glucose; finance / stock / trading; weather / climate / atmospheric; traffic / transportation; IoT / industrial / manufacturing; retail / inventory / supply chain; network / telecom; epidemiology / COVID; crop / agricultural / hydrology
7. **methods** — fallback for papers mentioning "transformer", "attention", "encoder", "decoder", or "architecture" that did not match any earlier category
8. **other** — none of the above

### 8.1 Classifier limitations

We did **not** formally validate the classifier against a hand-labeled
gold-standard set. Specific category counts should be treated as
approximate, particularly for the boundary cases (adaptation vs. methods,
benchmark vs. application, model-introduction vs. architecture). The
**trend shapes** in the chart — particularly the declining share of
"introduces-model" and rising share of "application" and "adaptation" over
time — are robust to classifier noise as long as that noise is not
systematically biased by year, which we have no reason to suspect.

A formal classifier audit is the most important methodology improvement
the next iteration of this study should make.

## 9. Author / institution affiliation

We extracted `authorships[].institutions[].display_name` and
`country_code` from each paper's OpenAlex record. Country code uses ISO
3166-1 alpha-2. We did not attempt to manually resolve institution
ambiguity (e.g., multiple "University of Hong Kong" sub-units roll up to a
single entry; conversely, "Chinese Academy of Sciences" and "University of
Chinese Academy of Sciences" remain separate). About 12% of papers in the
corpus have at least one unresolved affiliation; these are not counted in
the institution totals.

(This data was generated but is not used in the current post — the
geography angle was cut for narrative focus. The aggregates are available
on request.)

## 10. Reproduction

To rebuild the corpus:

```python
import urllib.request, urllib.parse, json
BASE = "https://api.openalex.org/works"
SEARCH = ' OR '.join([
    '"time series foundation model"',
    '"time series foundation models"',
    '"foundation model for time series"',
    '"foundation models for time series"',
    '"pretrained time series"',
    '"pre-trained time series"',
    '"large time series model"',
    '"time series pretraining"',
    '"time series pre-training"',
    '"TimeGPT"', '"TimesFM"', '"Lag-Llama"', '"Moirai"', '"TSFM"',
])
params = {
    "search": SEARCH,
    "filter": "from_publication_date:2020-01-01,to_publication_date:2026-05-31",
    "per_page": 200,
    "cursor": "*",
    "mailto": "you@example.com",
}
# ... paginate via cursor ...
```

Then apply the §3 strict filter locally. We will publish the full
end-to-end fetch + filter + chart scripts as a companion repository in
a follow-up update.

## 11. Versions and updates

This snapshot is dated **2026-05-21**. We will refresh once ICLR 2026
proceedings finish indexing in OpenAlex (expected late June 2026), at
which point we expect the 2026 numbers to revise upward by an estimated
30–50 papers.
