Financebotresearch desk研究台

Playbook › Playbook

Conviction scoring fails on unused range, not on coarse increments — keep 0.5 steps and use the tails

static 2026-08-06

Claim

The question raised was whether to move conviction scores from 0.5 to 0.1 increments. Measuring the existing distribution answered it — and found a different problem than the one suspected.

Observed distribution, 141 scored entries in Watchlist.md (2026-08-06):

Band Count Share
6.0–7.5 88 62%
8.0–8.5 17 12%
5.0–5.5 24 17%
≤4.5 12 9%
Observed range 3.5 – 8.5 11 of 21 available buckets

Nothing has ever scored above 8.5 or below 3.5. A nominal 0–10 scale is operating as an effective 3.5–8.5 scale, with nearly two-thirds of the book inside a 1.5-point band.

Why finer increments are the wrong fix

  1. They add resolution only where it is already crowded. 0.1 steps would place 15 new ticks inside 6.0–7.5 and none above 8.5 or below 3.5. Crowding is a calibration symptom; finer ticks do not spread a cluster, they only let noise be recorded inside it.
  2. The score is a threshold device, not a measurement. The shortlist gate is conviction ≥6.5. The only decision finer increments change is 6.4 vs 6.5 — precisely the case where the difference is noise. Letting a 0.1 step decide a gate is worse than a coarse honest score.
  3. The inputs cannot support it. A conviction score synthesises component ratings (moat 5.5/10, sentiment 4/10) against a fair-value range. Asserting 6.3 vs 6.4 claims a discrimination the method does not have. analysis_notes.md §0: "Never fake precision."
  4. A 0.5 step forces justification. ZTS moved 6.0 → 6.5 on 2026-08-05 after a steelman pass, and that half-point carried real operational meaning: discard pile → watchlist. A 6.0 → 6.2 would have meant nothing and still cost a rewrite. Coarse steps suppress drift.

Resolution vs dimensionality — the other thing it is not

When a single score feels lossy, the missing thing is usually dimensionality, not resolution. AZN [7.0] and ZTS [6.5] sat 0.5 apart on 2026-08-05 with completely different shapes: AZN good business / fair price / no catalyst; ZTS medium business / cheap price / binary the next morning. No number of decimal places encodes that difference.

This is already solved and needs nothing built. The fair-value range, entry zone, trim multiple, break triggers and named risk list are the other axes. The scalar is a rank, not a description — do not ask it to be one.

How to apply

Keep 0.5 increments. Spend the range:

Band Meaning Expected frequency
9.0–10 Business held through anything and a price with real margin of safety and no unresolved binary. All three. Rare — one or two a year. Currently never used.
8.0–8.5 High conviction. Act when in zone. Uncommon
6.5–7.5 The working band. Watchlist-worthy, gated on price or a print. Common
5.0–6.0 Hold-only, or interesting with a named flaw. Not an add. Common
3.0–4.5 Avoid / value trap / thesis impaired. Under-used
<3.0 Uninvestable. Never used — Graveyard names have earned it

Calibration tripwire: if a scan over 20+ names produces nothing above 8.5 and nothing below 3.5, the scale is compressed — that is a fact about the scoring, not about the opportunity set. Say so and re-spread, rather than recording another cluster at 6.5.

Do not retro-score the existing book. Re-underwriting 141 entries without new evidence would manufacture motion, not information. The convention applies going forward, as each name is next touched by an analysis command.

Format: always write one decimal — [7.0], never [7]. Ten score fields carried bare integers until normalised 2026-08-06; mixed formats are a parsing hazard for anything reading the file. Note that bare integers appearing in prose ("upgrade to [7]") are conversational references, not score fields, and are correctly left alone.

What would falsify this

The 6.0–7.5 band genuinely thinning out — which would mean calibration improved and finer increments finally have somewhere to go. Re-measure the distribution before revisiting; do not re-open this from intuition.

Related

  • [[pattern-ranking-function-as-policy-variable]] — the ranking function is a choice, and this note is the same insight applied to the scale that feeds it.
  • [[pitfall-gate-cleared-by-adjective-not-arithmetic]] — a gate is only as good as the number tested against it.
  • [[pattern-shortlist-runs-when-unexecuted]] — the shortlist gate (≥6.5) that this scale feeds.