Strokes-Gained Engine
PinFlag’s engine implements Mark Broadie’s strokes-gained methodology on published baselines, interpolated with natural splines and guarded by a strict unit contract. The engine is frozen: its source is hash-verified in CI and every computation is stamped with that hash.
The PinFlag iOS app is in pre-release. Leave your email and we’ll tell you the moment it’s available.
PinFlag’s engine implements Mark Broadie’s strokes-gained methodology: published expected-strokes baselines (version 2026.4, anchored to Every Shot Counts), natural-spline interpolation, and a per-shot identity where the four categories sum exactly to the total. The engine is cryptographically frozen — its source is hash-verified in CI and every computation is stamped with that hash.
Why it matters
- Strategy numbers are only as good as the engine pricing them.
- A frozen engine means the number you saw in June means the same thing in October.
How it works
- 1
Published baselines
Expected strokes for every lie and distance, anchored to Broadie’s published tables — quirks preserved and pin-tested, not smoothed away.
- 2
The identity
Every shot: SG = expected(before) − expected(after) − 1 − penalty. The four categories sum exactly to the total.
- 3
The freeze
A SHA-256 hash over the engine’s modules is checked in CI; drift fails the build.
Everything Strokes-Gained Engine does
- Broadie-verified baselines — published values, quirks preserved and pin-tested
- Per-shot identity: SG = expected(before) − expected(after) − 1 − penalty
- Four categories — OTT, Approach, Around-the-Green, Putting — sum exactly to the total
- Putting keyed in feet, everything else in yards — a guarded unit contract
- Frozen and hash-verified: the same engine on phone, server, and CI
- Round roll-ups plus a clearly-labeled estimated index — never an official handicap
A worked example — real numbers
One shot through the identity
A 155-yard fairway approach finishes 25 feet from the hole. The identity prices it end to end.
Before: 155 yd, fairway
- Expected strokes
- 2.960
After: 25 ft putt
- Expected strokes
- 1.931
The shot
- Strokes gained
- 2.960 − 1.931 − 1 = +0.029
A hair better than the baseline golfer — priced, not guessed.
Every PinFlag number reduces to this arithmetic, and the app will show you the math for any shot you tap.
Numbers computed with PinFlag’s engine (frozen SG engine, Broadie-verified baselines v2026.4, app lineage c21ee22); script: scripts/marketing-examples/expected-strokes.ts.
Who it’s for
Anyone who wants to know what is under the readout before trusting it — players, coaches, and the technically curious.
What’s different
- Verified against the published tables, including the awkward stretches other implementations smooth over.
- Frozen and hash-stamped — the engine cannot drift silently.
- Units are a contract: putting in feet, everything else in yards, tested.
Frequently asked questions
- Is this Mark Broadie’s methodology?
- Yes — the engine implements Broadie’s strokes-gained framework on his published expected-strokes baselines, and the implementation is verified against those values in tests.
- What does “frozen engine” mean?
- The engine’s source files are hashed, the hash is checked in CI, and every computation is stamped with it — so results can’t drift without the change being loud and deliberate.
- Does PinFlag compute an official handicap?
- No. PinFlag computes a clearly-labeled estimated index for context; it does not post scores to any handicap service.
Be first on the tee
The PinFlag iOS app is in pre-release. Leave your email and we’ll tell you the moment it’s available.
