Cryptolean
// Methodology · flags

Phase 4 — the flag taxonomy. This is the product, not the plumbing.

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

Definition and failure modes

Five flag types, per the design:

1 source        the two venues name different deciding authorities
2 cutoff        different deadline or timezone convention
3 edge_case     one side says what happens on cancellation/postponement, the other does not
4 subjective    wording that requires a judgement call — "officially", "significant"
5 dispute       this venue, or this category, has contested outcomes on record

Types 4 and 5 are computable on a single venue, and are live now. Types 1-3 compare a linked pair, so they depend on the matching step and are scored only where a link exists.

Every rule here is deliberately shallow: a keyword list and a regex are not comprehension. They exist to rank what a human should read first, which is exactly what the design says the manual layer is for. A flag is a pointer, not a verdict.

MATCHING — read before adding a term

Every needle below is matched on WORD BOUNDARIES, and a trailing * marks a stem that may take a suffix. flags-v1 matched by plain substring, which was a bug with teeth once the corpus grew from 4,199 markets to 132,154:

"tie"      matched parties, securities, authorities, entities, hostilities
           — 3,400 markets, of which 2,434 had no other edge-case term and
           were credited with coverage purely because their rules say
           "the parties"
"draw"     matched withdraws (3,356 of its 9,942 hits)
"official" matched officially, so one word raised two of the four subjective
           slots — 14,996 markets carry "officially", and 2,976 of them lost
           a subjective term when the double-count was removed

The first two are the dangerous direction: a false match on an edge-case term CREDITS a contract with coverage it does not have and LOWERS its risk score. A contract that never says what happens on cancellation was passing because it said "the parties".

Fixing it made the edge-case flag much sharper, which is the point. Holding volume decile fixed, on the top decile where the money is, markets lacking edge-case coverage are disputed at 11.39% against 1.70% for those that have it — a 6.7x separation, against 1.3x for the same flag under substring matching.

Note the stems: cancel* still matches "cancelled" and "cancellation", so the fix is narrow. Only 4.2% of the corpus changes score, and the two scorings rank the corpus at a 0.995 correlation. This corrects a defect; it does not re-tune.

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. flags-v22026-08-05RestatedCurrent

    word-boundary matching with explicit stems. Scores move; see PHASE4_THRESHOLDS.md for the before/after distribution and for which flags survive a volume control. Weights are UNCHANGED and deliberately so — see DEFAULT_WEIGHTS.

    At least one value that had already been published is different now. Charts drawn before this version do not match charts drawn after it.

    • values movedScores move; see PHASE4_THRESHOLDS.md for the before/after distribution and for which flags survive a volume control.
    • unchangedWeights are UNCHANGED and deliberately so — see DEFAULT_WEIGHTS.
  2. flags-v12026-08-05Initial

    subjective wording, missing source, timezone, edge-case coverage, dispute history. Substring matching.

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

Charts drawn with it

3 charts name this metric in their readout line. None of them names it first, so a count taken from the leading stamp alone reports 0 rather than 3. A chart built on several definitions carries all of them, and being second in that list is not the same as being unused.

Current version
flags-v2
Versions on record
2
First dated
2026-08-05
Restatement policy
Restated
Has restated. At least one bump changed values that were already published; the history below says which.
Charts
3
Source
src/resolution/flags.py
Public functions
compare_pair, find, label, patterns, resolution_risk, score_market, score_markets
Machine-readable
catalog.json · llms.txt