Method

What the on-site model uses, when picks are sealed, and how /record is scored — no accuracy-lead claims; not betting advice

What the model uses

The on-site model (raceprob-v1.0) ranks runners with offline LightGBM dual picks from pre-race public card-related features only: about 173 features, explained via six factor groups (horse form/ability, trip/going/weight fit, pace/field, jockey partnership, trainer combinations, draw interactions). Odds are not inputs; we do not mirror HKJC odds or official tables.

Features & explain frame

  • Pre-race public card / form history (no odds)
  • ~173 features → winner-rank dual pick (#1 + #2)
  • Six-factor relative contributions for explain — not fixed weights or causality
  • Score is a model / factor score, not win probability

When predictions are sealed

Dual picks are generated offline with LightGBM, written into static meetings.json, then deployed. Cloudflare Workers only read sealed JSON — no live inference. After race day we only append settlement to records; sealed picks never change. Each race page shows the seal timestamp (generatedAt). If a day has no seal, the site falls back to the card-factor pipeline (raceprob-factors-v0.1).

How /record is scored

Settlement runs only after race day against official finishing order. We do not invent results or show sample hit rates.

  • Win hit: sealed pick #1 finishes 1st.
  • Dual hit: sealed dual-pick covers the actual top-2 in any order.

What we explicitly do not do

  • Score ≠ win probability; explain factors ≠ accuracy
  • No accuracy-lead claims or return promises
  • Not betting advice; no bets accepted; no proxy betting; no paid tips
  • No mirrored HKJC odds; official cards and odds stay on HKJC