Why two phases (and not one big matching pass)
On a P2P market, the core problem is simple: you need two people who want to stake on the two opposing sides at the same time, for a compatible amount. On popular events (Real Madrid vs Barça, BTC > 100K), that's easy. On niche events or at rare tiers, it's tighter.
Rather than dropping you into a pool at placement (and locking you into indicative odds that can move), Ktkarena makes two passes:
- Phase 1 - Live matching: for as long as the event is open, we actively try to match you P2P (person against person, stake against stake). That's the noble path: fixed odds, no sharing, no uncertainty.
- Phase 2 - Pool phase: just before the event closes, we look at what's left without a counterparty. We gather all residuals into a mutualized pool and compute fair pool odds. If they suit you (based on your preference), you enter the pool; otherwise you're refunded.
The advantage: you're never forced to accept a pool on unfavorable terms. You know exactly what happens at every step.
Phase 1 - Live matching (throughout the event)
This phase starts as soon as you place your bet and continues as long as the event is open. It runs in two stages:
1. The placement cascade (instant). The moment you tap "bet," an algorithm attempts three steps in cascade within a few seconds:
- Direct match within your tier: we look for a player betting the opposite way, exactly at your tier. Details.
- Inter-tier cascade: if nothing, we widen to the neighboring tiers. Details.
- Multi-bet aggregation: if still nothing, we assemble several smaller opposing stakes to make up the amount. Details.
If the cascade finds a full counterparty, your bet is matched. Otherwise, the residual stays waiting for an opponent (pending status) - but we don't stop there.
2. The matching loop (continuous throughout the event). As long as the event stays open, a background job re-runs the cascade on your residual every time a new bettor arrives on the opposite side, and at least once per minute. No action needed on your end; you get a notification as soon as a match is found. Matching loop details.
Phase 2 - Pool phase (at event end)
A few minutes before the event closes (adaptive duration based on the event's length - typically 15 to 60 minutes), the placement of new bets closes and the event enters the pool phase.
During the pool phase:
- No new stakes can be placed.
- Ongoing bets are locked (no user-side cancellation).
- The system lists all remaining residuals (bets without a full counterparty).
- It computes indicative pool odds from the ratio between the two sides' masses.
- For each participant, we check whether the computed odds meet their personal minimum pool odds preference.
- If yes: the participant enters the pool, their stake stays committed, their final odds are locked in.
- If not: they're refunded in full, with no penalty or commission.
It all happens in a single atomic transaction. You get a clear notification: "Your bet entered the pool at odds 1.45" or "Your bet was refunded (pool odds 1.10 below your 1.20 threshold)".
Full details on the pool phase.
Your preferences shape phase 2
Two personal settings give you control over the pool phase, available in your bet settings:
Pool acceptance (3 values):
- Always: you systematically accept the pool as long as your minimum odds are met.
- If needed (default): you accept the pool only if your bet wasn't matched P2P in phase 1.
- Never: you systematically refuse the pool. If nothing matched in phase 1, you're refunded.
Minimum pool odds (from 1.00 to 5.00, in steps of 0.10): the lowest odds you accept in a pool. Below that, automatic refund. The default value is 1.20.
Your preferences are captured at placement time: if you change your settings after betting, your ongoing bet keeps the initial values. No bad surprises that way.
Why this model is fairer than before
In the old model, as soon as a bet had no direct match, it could be absorbed immediately into a pool at indicative odds. The problem: those odds could move throughout the event (depending on who joined the pool), and you had no control.
The new model flips the logic:
- We always give you the maximum amount of time for a clean P2P match.
- We only put you in a pool as a last resort, and only with your consent (personal preferences).
- If the computed pool doesn't suit you, you walk away at no cost.
The result: you know the worst-case scenario in advance, and you're never trapped in deteriorating odds.