Cryptolean
// Methodology · match

Phase 4 step 3 — candidate generation for cross-venue matching.

Current definition match-v3. Charts stamped with it were computed by src/resolution/matching.py, and every value plotted for a past date could have been computed on that date.

Definition and failure modes

The design is candidates -> LLM verification -> manual review. This module is only the first stage, and deliberately so: it is free, deterministic, and reproducible, which the other two are not. Nothing here writes verified=True.

TF-IDF cosine over question text, implemented directly rather than pulling in scikit-learn for one function.

Numbers are deliberately kept OUT of the similarity vector and used only as a contradiction check. See the comment on numbers() — folding them into the vector is what made v1 unusable.

Version history

Newest first. Each entry says what changed and whether values that had already been published moved with it, followed by the sentence from the module that decided the verdict.

  1. match-v32026-08-05Not statedCurrent

    Dates stripped before numbers are read. v2 still let a date's parts become thresholds: "2026-07-05" gave 7 and 5, which then AGREED with an inflation question about 5.00% and cancelled the very penalty meant to separate them — "inflation in Brazil above 5.00%" scored 0.709 against "Will Brazil win on 2026-07-05?". Years are still read from the original text, because a year inside a date is exactly the deadline worth comparing.

    The module does not say whether values already published moved. We would rather show this gap than close it with a guess.

  2. match-v22026-08-05Not stated

    Words and numbers separated. v1 tokenised on [a-z0-9']+, so "$4.07" became {4, 07} and "2026-07-07" became {2026, 07}. Rare digit fragments earn high IDF, so a question scored against an unrelated one purely on a shared "07" — "Will average gas prices be above $4.07?" matched "Will Argentina win on 2026-07-07?" at 0.71, above genuine same-event pairs. Numbers now carry no similarity weight; instead, two questions that both quote thresholds but share none are penalised, because "above $4.07" and "above $4.04" are different markets.

    The module does not say whether values already published moved. We would rather show this gap than close it with a guess.

  3. match-v12026-08-05Initial

    TF-IDF cosine candidates, unverified by construction.

    The first version of this metric. There is no earlier definition to restate.

Charts drawn with it

None on the site today. The definition is versioned and exported, and no chart currently carries its stamp — either a chart is missing from the export or the module is no longer drawn. The catalogue reports the gap rather than hiding the metric, because a definition nobody can see the output of is exactly the thing a reader should be told about.

Current version
match-v3
Versions on record
3
First dated
2026-08-05
Restatement policy
Not stated
At least one bump does not say whether values already published moved with it, so this metric cannot be called stable. The unresolved versions are marked below.
Charts
0
Source
src/resolution/matching.py
Public functions
candidates, numbers, strip_dates, tokenize, years
Machine-readable
catalog.json · llms.txt