All guides
Published September 8, 20267 min read

How We Count Our Record: The Formula and the Timestamps

methodologyverificationtransparency

The Tricks Hiding in Most Published Records

Before any formula, it is worth knowing what a published record can conceal. Almost every trick works the same way: it manipulates the denominator, or it manipulates the clock.

  • Quiet deletion. Losing calls are removed and the surviving screenshot is genuine — every remaining item really did win. The sample is the lie, not the items.
  • The unstated denominator. A "78% hit rate" with no accompanying count of signals is not a rate. Over what number? Over what period? A rate without a denominator is a mood.
  • Retroactive publication. A result posted after full time, framed as though it had been called before kickoff. This is the most common trick and the hardest to spot, because the content of the post can be entirely truthful.
  • Selective windows. The record starts on a date chosen after the fact, so that the run before it disappears. Every record has a good month in it somewhere.
  • Undefined outcome buckets. Asian handicap markets produce partial results — half won, half lost, and pushes. A record that never defines how those are handled has a free parameter, and free parameters always move in the publisher's favour.
  • Unit inflation. Results reported in "units" with no stated base, so that a big number can be built out of an inconsistent one.

None of these require lying about a single match. That is exactly why the fix cannot be "trust us more." It has to be a stated method plus timestamps you can check yourself.

Our Formula, Stated Plainly

Every published signal settles into one of four buckets against the real final score:

  1. 1.Won — the position resolved in favour of the published side.
  2. 2.Lost — it resolved against.
  3. 3.Half — a partial outcome. Quarter-ball Asian handicap lines split, so a signal can land half won or half lost rather than cleanly either way.
  4. 4.Void — the position was returned with no outcome at all: a push, or a match that never produced a settleable result.

The win rate is then:

  • win rate = won ÷ (won + lost + half)

Two decisions in that line are the whole methodology, so it is worth being explicit about both.

Void is excluded from the denominator. A voided position had no outcome to be right or wrong about; counting it would either pad the sample or distort the rate depending on which side of the line you put it on. It is reported separately and left out of the calculation.

Half stays in the denominator, in full. This is the choice that goes against us, and it is deliberate. A partial result could plausibly be counted as half a signal, or split into fractions, or set aside like void. Instead, each one occupies a full slot in the denominator while contributing nothing to the numerator. Every convention here dilutes the rate rather than inflating it. When a methodology has a free parameter, it should be set against the publisher — otherwise you have no way to tell a good method from a flattering one.

We are not going to quote a figure in this article, and you should be suspicious of any article that does. Numbers in blog posts go stale, and a stale number is indistinguishable from a cherry-picked one. The live figures in the bot are the reference — check them there, and cross-check them against the public posts.

Why the Losses Get Published Too

Publishing losses is not humility. It is what makes the number mean anything.

A win rate is a claim about a sample. If the sample is curated after the fact, the rate describes the curation, not the model. The only way a reader can tell those apart is if the losers are still there to count. Which means the losing signals are doing real work in the record: they are the part that makes the winning part checkable.

There is a second reason. A selective filter — this one keeps roughly one candidate in twenty-two — produces streaks in both directions, and a run of losses is a normal output of a working system, not evidence of a broken one. Hiding the losses would make ordinary variance look like failure whenever it surfaced, which is precisely the pressure that leads publishers to start hiding things in the first place.

So: every published signal gets settled, and every settlement is posted. On X at @Oddsflow_Nat and on Threads at @oddsflow.ai, daily, losses included.

How Timestamps Prove Pre-Match Publication

The formula only matters if the signals were published before the outcome was known. Otherwise it is arithmetic performed on hindsight.

Three things establish that:

Publication time. Every signal goes out with a timestamp, on a public channel, before kickoff or before the in-match moment it refers to. Public channels are append-only in practice — an edit or a deletion is itself visible, and readers who saw the original are a witness the publisher does not control.

Observation time. Separately from publication, there is the moment the odds snapshot the signal was built on was actually observed. Those two are not the same instant, and keeping them distinct matters: it is what stops "we saw it earlier, we just posted it late" from being an unfalsifiable excuse. The price on the card is the observed price, not a price found afterwards.

The elapsed minute. For in-play signals, the card carries the match minute at which the signal fired. Pair that with the publication timestamp and an in-play claim becomes fully checkable: you can see both where the match was and when the post existed. An in-play signal without a minute is unfalsifiable by construction — a point covered in more detail in How to Read Signal Cards.

Taken together, these are why a signal can be wrong without the record being dishonest. Being wrong in public, on the clock, is the cost of a record that means something.

Verify It Yourself

Do not accept this methodology on the strength of an article describing it. The whole point is that you do not have to.

  1. 1.Open the public feeds. X at @Oddsflow_Nat and Threads at @oddsflow.ai. Scroll back past today. Look for the losing posts — if they are not there, the method described here is not the method being used.
  2. 2.Check the timestamps against the fixtures. Take any signal and compare its post time to the kickoff time of the match it names. Then do the same on a few in-play cards using the elapsed minute.
  3. 3.Follow signals forward, not backward. Pick three published today and check them yourself after full time. Reading a record backwards always flatters it; reading it forwards is the only honest sample.
  4. 4.Read the live figures in the bot. New users get a three-day full trial, and there is a free daily pick after that — enough to watch the process without committing anything. The access mechanics are laid out in VIP, Tokens and the Free Trial.
  5. 5.Apply the same questions elsewhere. These tests are not specific to us, and they should not be. Choosing a Football Data Analysis Site: Seven Revealing Questions turns them into a checklist you can run against any service, including this one.

A published record is only as good as the method behind it and the timestamps under it. That is the standard we are asking to be held to — and the reason the formula is written out here in one line, rather than summarised as a number.