Same-game parlays (SGPs) have become the fastest-growing and highest-margin betting product category. When SGPs launched commercially in 2015-2016, they represented <1% of operator volume. Today, SGPs represent 30-40% of betting volume at major operators, with some specializing in SGPs reporting they represent >50% of revenue.
This explosive growth creates unique technical challenges. SGP data is fundamentally different from traditional betting data. A traditional operator might need 20-40 distinct odds per match. An SGP-focused operator might need 1,000+ distinct odds per match (representing different combinations of correlated outcomes).
This guide explains the unique data requirements for SGPs and how to architect infrastructure that supports profitable SGP operations.
Why SGP Data is Different
Understanding Correlations
In traditional betting, odds for different outcomes are independent:
Example: 1X2 market
- Home Win: 1.50 (66.7% probability)
- Draw: 3.50 (28.6% probability)
- Away Win: 5.00 (20% probability)
These probabilities don't interact; you calculate odds independently for each outcome.
SGP: Combining correlated outcomes
A customer bets:
- Home Win AND
- Over 2.5 Goals AND
- Specific player scores
These outcomes are correlated:
- If Home team wins, they scored goals (increases "Over 2.5" probability)
- If specific player scores, Home team is more likely to win
- If Over 2.5 is true, Home team winning is more likely
Traditional odds multiplication doesn't work: 1.50 × 1.90 × 3.50 = 9.98 isn't accurate because outcomes are correlated.
Proper SGP odds must account for this correlation: the actual SGP odds might be 8.20 (not 9.98) because the legs are positively correlated.
Data Volume Explosion
Because SGPs need separate odds for every combination:
Traditional football match:
- 1X2 market: 3 outcomes
- Totals: 2-3 outcomes
- Handicaps: 5-10 outcomes
- Key props: 10-15 outcomes
- Total unique odds: 30-50
SGP with same teams and markets:
- Combinations of above: 3 × 3 × 7 × 12 = ~750 distinct combinations
- Each combination requires separate correlation-adjusted odds
- Total unique odds: 500-1,500+
Scale this across a full Sunday NFL slate (8-13 games) or NBA All-Star weekend and you're talking about 10,000+ distinct odds per event requiring real-time management.
Data Requirements for SGP Operations
Core SGP Data
For each SGP market combination, track:
-
Leg definitions: Specific outcomes included
- Example: "Home Win + Over 2.5 Goals + Player Scores"
-
Correlation coefficient: Mathematical measure of relationship between legs
- Range: -1.0 (perfectly negatively correlated) to 1.0 (perfectly positively correlated)
- 0.0 = no correlation (independent)
- Higher positive correlation = more discount from simple multiplication
-
Base odds for each leg: Unadjusted odds for each component
- Home Win: 1.50
- Over 2.5: 1.90
- Player Scores: 3.50
-
SGP-adjusted odds: Final odds accounting for correlation
- Simple multiplication: 1.50 × 1.90 × 3.50 = 9.98
- Correlation-adjusted: 8.20 (discount for positive correlation)
-
Availability: Can this SGP be bet currently?
- Available: Yes, active betting
- Locked: Match started, bets not accepted
- Unavailable: Market doesn't exist or not offered
Supporting Data for SGP Calculation
To calculate correlation-adjusted odds, data providers need:
- Historical correlation matrices: Past years' data showing how legs correlate
- Live game state: Current score, time, events that affect correlations
- Player status: Is the player in the game? (affects player prop odds)
- Market liquidity: Are there enough bets on each leg? (affects pricing)
- Betting flow signals: Which legs are getting heavy action? (affects correlations)
Example: If thousands of bets come in on "Home Team Wins + Player Scores", data provider sees high correlation between these legs, adjusts correlation coefficient downward.
SGP Correlation Models
Different correlation approaches create different accuracy levels:
Model 1: Static Historical Correlation
Use historical data to calculate correlation, don't update during matches:
Formula:
SGP Odds = Leg1 * Leg2 * Leg3 * (1 - Correlation Discount)
Correlation Discount = (Correlation Coefficient × Combined Legs × 0.02)
Advantages:
- Simple to implement
- Lower computational cost
- Stable (doesn't fluctuate wildly during matches)
Disadvantages:
- Inaccurate when game state changes dramatically
- Can't account for live developments
- Risk of arbitrage (bettors exploit stale correlations)
Model 2: Dynamic Game-State Correlation
Update correlations based on live game state:
Triggers for updates:
- Score changes
- Player substitutions
- Player injuries
- Major momentum shifts
Advantages:
- More accurate to actual current probabilities
- Reduces arbitrage opportunities
- Better customer experience (odds reflect game state)
Disadvantages:
- Complex implementation
- High computational cost
- Risk of correlation adjustments being wrong (customer confusion if odds change unexpectedly)
Model 3: Machine Learning Correlation Prediction
Use ML models trained on historical data to predict correlations:
Input features:
- Historical correlation data
- Current game state
- Betting flow data
- Player/team statistics
- Recent performance trends
Output: Correlation coefficient for each leg combination
Advantages:
- Most accurate
- Adapts to changing conditions
- Sophisticated operators differentiate with ML-based pricing
Disadvantages:
- Expensive (requires ML expertise)
- Complex to maintain and update models
- Risk of model bias if training data is unrepresentative
SGP Data Infrastructure Requirements
Latency Requirements
SGP markets are highly sensitive to timing:
- Pre-match SGPs: Update frequency every 5-30 minutes (opening odds shift creates customer expectations)
- In-play SGPs (first half, early quarters): Update every 10-30 seconds
- In-play SGPs (late game): Update every 5-10 seconds (as game outcome becomes uncertain)
- Critical moments: Update <1 second after major event (goal, player substitution)
Total latency budget:
- Event happens (goal) → 100ms
- League reports event → 200ms
- Data provider processes → 200ms
- Your system updates SGP → 200ms
- Customer sees update → 100ms
- Total: <1 second (demanding)
Market Availability Management
SGP availability is complex and must update automatically:
Unavailable situations:
- Player hasn't taken the field yet (player prop SGPs)
- Match outcome is mathematically impossible (only 5 minutes left, team down by 3 touchdowns)
- One leg has already resulted (player already scored, so "Player Scores" SGP no longer valid)
- Market is manually locked (due to suspicious betting activity)
Your data infrastructure must:
- Monitor live game state
- Calculate which SGP combinations are still valid
- Push updates to disable invalid combinations in real-time
- Log all availability changes (for compliance)
Data Volume Management
A complete SGP feed for all four Big Four sports could include:
- NFL Sunday: 8-13 games × 1,500 SGP combinations = 12,000-19,500 odds
- Each game generates 2-3 major events/minute: 50,000+ SGP updates per hour
- Weekly peak: 200,000-300,000 SGP data point updates during NFL Sunday
This is 50-100x higher volume than traditional betting data. Your infrastructure must handle this gracefully.
Implementation Patterns for SGPs
Pattern 1: Simple Discount Model
Suitable for operators just entering SGP market:
function calculateSGPOdds(leg1, leg2, leg3, correlationCoeff) {
// Simple multiplication
const simpleOdds = leg1 * leg2 * leg3;
// Apply correlation discount
// Higher positive correlation = more discount
const discount = 1 - (correlationCoeff * 0.05); // 5% discount per correlation point
return simpleOdds * discount;
}
// Example:
// legs: 1.50, 1.90, 3.50
// correlation: 0.3 (moderate positive)
// simpleOdds = 9.98
// discount = 1 - (0.3 * 0.05) = 0.985
// SGPOdds = 9.98 * 0.985 = 9.83
Pros: Easy to implement, explainable, stable Cons: Less accurate, potential arbitrage opportunities
Pattern 2: Leg-Specific Correlation
Different pairs of legs have different correlations:
function calculateAdvancedSGPOdds(legs, legCorrelations) {
// Start with simple product
let odds = 1.0;
// Apply correlation adjustments for each pair
legs.forEach((leg, i) => {
odds *= leg;
// For each other leg, apply correlation adjustment
legs.forEach((otherLeg, j) => {
if (i < j) {
const pairKey = `${i}-${j}`;
const correlation = legCorrelations[pairKey] || 0;
odds *= (1 - correlation * 0.03);
}
});
});
return odds;
}
// Example: Correlations might vary
// Home Win + Over 2.5: 0.4 correlation
// Home Win + Player Scores: 0.2 correlation
// Over 2.5 + Player Scores: 0.1 correlation
Pros: More accurate to actual relationships Cons: More complex, requires detailed correlation data
Pattern 3: Dynamic Game-State Model
Update correlations based on real-time game state:
function calculateDynamicSGPOdds(legs, baseCorrelations, gameState) {
// Get dynamic correlation adjustments
const dynamicAdjustments = calculateDynamicAdjustments(gameState);
// Combine base correlations with dynamic adjustments
const adjustedCorrelations = baseCorrelations.map((corr, i) => {
return corr + (dynamicAdjustments[i] || 0);
});
// Calculate odds using adjusted correlations
return calculateOddsWithCorrelations(legs, adjustedCorrelations);
}
function calculateDynamicAdjustments(gameState) {
const adjustments = {};
// If score is close, home win and over are more correlated
if (Math.abs(gameState.homeScore - gameState.awayScore) <= 3) {
adjustments['homeWin-overGoals'] = 0.15;
}
// Late game: player prop likelihood changes
if (gameState.minuteElapsed > 75) {
adjustments['playerScores'] = -0.10; // Less likely late
}
return adjustments;
}
Pros: Most accurate, responsive to game conditions Cons: Complex, expensive computationally, requires careful validation
Building SGP Markets: From Data to Offer
Step 1: Identify Available Legs
Not all sports support all legs. Define what's available per sport:
NFL Example Available Legs:
- Game outcome: Home Win, Away Win, Total Over/Under
- Team stats: Home Rushing Yards Over/Under, Home Passing Yards O/U
- Player stats: QB Passing Yards, RB Rushing Yards, WR Receiving Yards
- Scoring: First Touchdown Scorer, TD Scorer Type (Pass/Rush)
- Defensive: Total Sacks, Interceptions, Forced Fumbles
Basketball Example Available Legs:
- Game outcome: Home Win, Away Win, Total Over/Under
- Player stats: Player Points, Assists, Rebounds
- Team stats: Team Assists, Three-Pointers Made
- Specific actions: First Three-Pointer, Lead at End of Quarter
Each sport has different available legs. Understand your sport deeply before designing SGP matrix.
Step 2: Calculate Correlation Matrix
Build historical correlation matrix showing which legs correlate:
def build_correlation_matrix(historical_data):
"""
Calculate how outcomes correlate
"""
correlations = {}
for leg1 in all_legs:
for leg2 in all_legs:
if leg1 >= leg2: # Avoid duplicates
continue
# Get historical outcomes
leg1_outcomes = [game[leg1] for game in historical_data]
leg2_outcomes = [game[leg2] for game in historical_data]
# Calculate correlation
corr_coeff = pearson_correlation(leg1_outcomes, leg2_outcomes)
correlations[f"{leg1}-{leg2}"] = corr_coeff
return correlations
# Example output:
{
"Home-Win-Over": 0.35, # Positive: if home wins, more likely over
"Home-Win-QB-Yards": 0.28, # Moderate: if home wins, QB likely threw more
"Over-QB-Yards": 0.42, # Strong: if over, QB likely threw a lot
"Over-RB-Yards": 0.38, # Moderate: if over, RB likely ran a lot
}
Step 3: Define SGP Availability Rules
Create rules for which SGP combinations are allowed:
Logical exclusion rules:
- Can't combine contradictory outcomes (Home Win + Away Win)
- Can't have player prop after player leaves game
- Can't have team prop after team game ends
Business rules:
- Don't offer SGP combinations with negative expected value
- Don't offer extremely high-correlation combos (exploit risk)
- Don't offer exotic combinations (low volume, operational headache)
Example rule set:
IF Home Win is selected:
- Don't allow Away Win
- Allow Team Under/Over
- Allow Player Props (if player is on Home team)
- Don't allow Away Player Props
IF Player Prop is selected:
- Don't allow contradictory player props
- Allow team outcomes (Home Win, Over, etc.)
- Don't allow conflicting player props (same player two different limits)
Step 4: Set SGP Odds
Apply correlation discount to calculate final SGP odds:
def calculate_sgp_odds(legs, correlations):
"""
Calculate SGP odds with correlation adjustment
"""
# Start with simple multiplication
base_odds = 1.0
for leg in legs:
base_odds *= leg['odds']
# Apply correlation discounts for each pair
total_discount = 0
for i, leg1 in enumerate(legs):
for j, leg2 in enumerate(legs[i+1:], i+1):
key = f"{leg1['id']}-{leg2['id']}"
correlation = correlations.get(key, 0.0)
# Positive correlation = more discount (legs related)
# Each 0.1 correlation = 2% discount
discount = max(0, correlation * 0.02)
total_discount += discount
# Apply total discount
sgp_odds = base_odds * (1 - total_discount)
return sgp_odds
# Example:
# Legs: Home Win (1.50) + Over 2.5 (1.90)
# Base: 1.50 * 1.90 = 2.85
# Correlation: 0.35 (positive)
# Discount: 0.35 * 0.02 = 0.70% (7 basis points)
# SGP Odds: 2.85 * 0.993 = 2.83
Step 5: Manage Availability
Update SGP availability in real-time based on game state:
def update_sgp_availability(game_state, all_sgp_combos):
"""
Mark SGP combos as available or unavailable
"""
available = []
for combo in all_sgp_combos:
can_offer = True
# Check each leg in combo
for leg in combo['legs']:
# Is this outcome still possible?
if not is_outcome_possible(leg, game_state):
can_offer = False
break
# Is this leg settled already?
if is_leg_settled(leg, game_state):
can_offer = False
break
# Is player in game (for player props)?
if leg['type'] == 'player_prop':
if not is_player_in_game(leg['player'], game_state):
can_offer = False
break
if can_offer:
available.append(combo)
return available
Managing SGP Profitability
Monitoring for Arbitrage
SGP pricing creates arbitrage opportunities if not careful:
Example arbitrage:
- SGP odds for "Home Win + Over 2.5 + Player Scores" = 6.50
- Customer could hedge by:
- Betting Home Win at 1.50
- Betting Over 2.5 at 1.90
- Betting Player Scores at 3.50
- Combined: 1.50 × 1.90 × 3.50 = 9.98
- Arbitrage: Bet SGP at 6.50 and hedge for 9.98, guaranteed 33% profit (if outcomes occur)
Monitor for this and adjust SGP odds downward if detected.
Tracking SGP Hold Percentage
Monitor win rate on SGPs vs. traditional bets:
Traditional Bets Hold: 3-4% (typical for well-priced books)
SGP Hold: 5-8% (higher because of correlation complexity)
If your SGP hold is <4%:
→ Odds are too generous, adjust downward
→ Consider more sophisticated correlation model
If your SGP hold is >12%:
→ Odds may be too tight, customers will go to competitors
→ Consider loosening to remain competitive
Risk Management
SGPs concentrate risk in specific outcomes:
Example risk:
- SGP: "Team A Wins + Over 2.5 + Star Player Scores" at 1-0-1000 moneyline (1000:1)
- If Team A is favored 2:1 and Star Player scores 40% of games
- Historical loss: €1M during mega-event with high SGP volume
Implement:
- Per-SGP combination limits: Cap total exposure on any single SGP
- Per-game limits: Cap total SGP exposure per game (e.g., <€5M)
- Risk monitoring dashboard: Real-time visibility into potential big losses
Testing and Validation
Backtesting SGP Models
Before deploying new correlation model, backtest against historical data:
1. Take historical odds and outcomes
2. Calculate what SGP odds would have been under new model
3. Compare to actual SGP odds you offered
4. Calculate hypothetical P&L
5. Validate hold percentage is acceptable
If new model produces lower hold than required, it's not ready for production.
Live Testing
Deploy new SGP model with restrictions first:
- Phase 1 (Week 1): New model with €50k per-game limit, monitor closely
- Phase 2 (Week 2-3): Expand limit to €200k, validate hold is stable
- Phase 3 (Week 4+): Full deployment with standard limits
Monitor metrics:
- Hold percentage stability
- Customer complaint rates
- Arbitrage activity
- Model accuracy vs. outcomes
Conclusion
SGPs have fundamentally changed operator data infrastructure requirements. Traditional betting data is no longer sufficient; SGP-focused operators need specialized data, sophisticated correlation models, and real-time market management.
The operators winning in 2026 are those who:
- Invested in SGP-specific data infrastructure early
- Moved beyond simple discount models to dynamic correlation
- Automated SGP availability and market management
- Monitor profitability continuously and adjust models
Operators still operating with traditional betting data infrastructure are leaving significant revenue on the table. SGP represents 30-40% of market volume—ignoring it means ignoring the highest-margin, fastest-growing product category.
CTA: Evaluate Your SGP Infrastructure
Download the SGP Data Infrastructure Assessment to evaluate your current setup against market best practices.
[Download Assessment]
Or schedule a 30-minute SGP strategy session with our betting infrastructure team. We'll evaluate your SGP operations and identify specific opportunities to increase profitability.
[Schedule Strategy Session]
Last updated: March 2026. Based on operator interviews, data provider documentation, and profitability analysis. © 2026 FairPlay Sports Media.
Ready to explore BetTech for your business?
Talk to the FairPlay team about how our platform can work for your business.
Get Started








