Every bet placed by a bettor goes through the platform's risk engine before it's accepted. The engine ensures you can never owe more than your pool can pay out, no matter which number wins.


The core problem: a hot number can ruin you

In Swertres you pay 450× stake when a Straight bet hits. If 100 bettors stake ₱1,098 each on the number 777 and 777 wins, you owe 100 × 20 × 450 = ₱49,392,000. The risk engine's job is to reject the bet that would have pushed your exposure on any single number past what your pool can cover.

You set three caps. A bet is rejected if accepting it would breach any one of them.


α (alpha) — pool-fraction capdefault 20%

The worst-case payout for a single draw is at most α × pool. With α = 20% you guarantee that even if the hottest number on a draw wins, you only pay out 20% of your pool — so you survive at least 5 consecutive worst-case draws before the pool runs dry.

Example

You have a pool of ₱2,744,000 USDC (₱2,744,000).

α = 0.20 → worst-case-loss cap = ₱109,760 USDC (₱548,800).

For Straight (450×), maximum total stake on any one number = ₱548,800 ÷ 450 ≈ ₱1,220.

i.e. as soon as the total stakes on 473 reach about ₱22, you stop accepting new Straight bets on 473 for this draw.

Lower α = safer but less revenue. If you set α = 5%, you survive 20 worst-case draws but reject many more bets. Most operators run between 15% and 25%.


β (beta) — reserve bufferdefault 1.10×

When draws overlap in time (you accept bets for tomorrow's 14:00 while bets are still open for today's 21:00), you need to reserve enough pool to cover the worst case on all open draws simultaneously. β is the safety multiplier on top of the raw worst-case sum.

Example

Three draws open simultaneously, worst-case per-draw exposure is ₱439,040, ₱493,920, ₱548,800.

Sum of worst cases: ₱1,481,760

With β = 1.10, the pool reserve required is ₱1,481,760 × 1.10 = ₱1,629,936.

If your pool is ₱2,744,000, you have ₱1,114,064 of headroom — new bets keep getting accepted until exposure climbs into that headroom.

β > 1 covers FX volatility (USDC ↔ PHP rate moves between bet acceptance and payout), Base network gas fees, and oracle/scraper delays. Lower it to 1.05 if you want more headroom; raise it to 1.20 if you're paranoid.


Hard cap per drawdefault min(25% pool, ₱2,744,000)

The hard cap is an absoluteceiling on the worst-case payout for any single draw, independent of pool size. It's a sanity check: even if α × pool computes to ₱4,390,400, you might want to cap any single draw at ₱2,744,000 to avoid catastrophic concentration.

Effective cap = min(α × pool, hard cap)

Pool = ₱5,488,000, α = 0.20 → α-derived cap = ₱1,097,600

Hard cap = ₱823,200

→ Effective cap = ₱823,200 (the smaller one wins)


Platform feedefault 5%

The fee the platform charges you on every stake. It's deducted beforethe bet enters your pool — the bettor sees no change in their stake or payout. This is the platform's revenue from your operations.

Example

A bettor stakes ₱5,488 on a Straight bet.

Platform fee at 5%: ₱274 → flows to platform

Your pool grows by ₱5,214

If the bet wins, you pay ₱2,469,600 (450× the original ₱5,488) — full payout to the bettor.

The bettor's economics don't change; the operator's economics are slightly worse because the fee comes out of stake-into-pool. You can absorb it (better player experience) or pass it on by adjusting multipliers.


Putting it all together: the acceptance rule

When a new bet arrives, the engine runs this check, atomically:

for each draw the bet covers:
  new_exposure_on_number = current + (stake × multiplier)
  worst_case_on_draw     = max over all numbers of new_exposure

  if worst_case_on_draw > hard_cap          → REJECT "hard cap"
  if worst_case_on_draw > α × pool          → REJECT "pool fraction"

reserved = β × sum(worst_case for every open draw)
  if reserved > pool                         → REJECT "insufficient pool"

else → ACCEPT, write bet, update exposures

Sensible starting values

ParameterDefaultReasoning
α (pool fraction)0.20Survives 5 consecutive max-loss draws.
β (reserve buffer)1.1010% cushion over the worst case for FX / gas / oracle delay.
Hard cap25% × poolHybrid pool-aware floor with an absolute sanity bound.
Platform fee5%Standard B2B platform rate; can be negotiated per operator.

You can change all of these on the risk configuration page. Changes apply to new bets only; existing exposures are not retroactively re-checked.


What the risk engine does not do

  • It does not protect against bettors picking the same number across multiple operators (you can't see other operators' books). For nationwide concentration risk, talk to your underwriter about reinsurance / layoff.
  • It does not use probability-weighted (Kelly) sizing. The engine always reserves for the worst case, not the expected case. This is intentionally conservative.
  • It does not protect against a bug in the multiplier table. If you set Straight to 1000× by mistake, the engine will still happily accept bets at that multiplier and reserve accordingly — but your margin will be terrible. Always verify multipliers match the official PCSO Swertres rules.