Core idea
- Performance is evaluated ball-by-ball during an over; buy/sell is paused while the over is running.
- At the start of the over, we take a snapshot of valuations and compute expected runs (constant for the full over).
- Each ball updates payouts; ball payouts are summed at over end and applied to update each player’s Cricketer points holdings.
Important: “Actual runs” means runs off the bat only (extras are excluded). This keeps the performance signal clean.
Expected favorable run
Expected favorable run is calculated at the start of the over (using valuations at over start) and stays constant for the whole over.
For batsman point holders
Expected favorable run is the minimum bat-runs a batsman should score against the bowler
so that you earn more points.
For bowler point holders
Expected favorable run is the maximum bat-runs a bowler can concede against a batsman
so that you earn more points.
Quick example
HoldingValuation = 61.25, OpponentValuation = 78.75
ExpectedRun = 4.20
This expected value applies to all legal balls in the over.
If a batsman is dismissed/retired and a new batsman comes in mid-over, expected runs are recalculated using the
same over-start valuation snapshot for the new batsman vs the bowler (and vice versa).
Who is included in the payout pool for a ball
For any delivery, we only consider players who hold points in the involved Cricketers.
- all_users means: all players holding points of the relevant batsman and/or bowler for that delivery.
- Strike rotation changes which batsman is the striker for the next ball, so “batsman pool” follows the striker where applicable.
- Only bowler-attributed wickets use the wicket rule below; other dismissals are treated as normal deliveries and then the batsman changes.
Wager per ball
- For legal balls, a player’s wager for a Cricketer on a ball is: wager = holding / 6.
- If a batsman faces fewer than 6 balls in the over, we still use holding/6 for the balls they actually face.
- Illegal deliveries (wide/no-ball) do not count as balls, but they can affect the next wager for bowler holders via a penalty mechanism.
Normal delivery (legal ball)
Uses actual bat-runs, expected run, each player’s wager (holding/6), and per-ball give-away points (FPB).
Payouts are computed per ball per player, then summed across the over and applied to update holdings at over end.
Bowler wicket delivery (legal ball)
If the wicket is credited to the bowler, batsman holders lose their wager for that ball (their payout becomes 0),
and the “pot” is redistributed among bowler holders.
Why “+ bowler_wager”? The pot contains batsman wagers + FPB.
Returning bowler_wager ensures bowler holders don’t lose their own stake on a successful wicket ball.
If there are no bowler holders, the pot is added back to the remaining innings give-away pool (FPB for remaining balls of the over stays unchanged).
Wide / No-ball (illegal delivery)
Wides and no-balls do not count as balls, but they apply a penalty to bowler holders that rewards striker batsman holders.
Penalty fractions
- Wide: FRAC = 0.10
- No-ball: FRAC = 0.30
Key rules
- Bowler holders get no payout on that illegal delivery.
- Batsman holders’ earnings are only payout (no “+ wager”).
- The remaining bowler wager carries forward as the bowler wager for the next delivery.
If there are no batsman holders (total_wager_bats = 0), the pot is added to the remaining innings give-away pool.
FPB for remaining balls of the over remains unchanged.
Conservation rules (auditable invariants)
The system is designed so every ball is “accounted for” and can be audited.
Normal delivery invariant
After scaling, the total payout across all included users equals:
Sum(payouts) = total_wager + FPB
Bowler wicket invariant
The pot is redistributed to bowler holders and each bowler holder also receives back their own wager:
Sum(bowler_final_earning) = pot + total_wager_bowl
Wide / No-ball invariant
Bowler holders lose a portion (penalty) and it is redistributed to striker holders:
Sum(bat_final_earning) = pot
Sum(bowler_final_earning) = 0
Remaining bowler wager is carried forward to the next delivery.
Important notes
- Expected runs and valuations used during the over are based on the over-start snapshot.
- “Actual runs” are off the bat only; extras are excluded from the normal-delivery formula.
- Only bowler-attributed wickets trigger the wicket redistribution rule.
- All calculations are rounded to 2 decimals for display; internal math should use Decimal.