Get the FREE Ultimate OpenClaw Setup Guide →
N

football-value-bets

Scanned

@nandichi

npx machina-cli add skill @nandichi/football-value-bets --openclaw
Files (1)
SKILL.md
7.7 KB

Football Value Bets

Generate professional, data-driven football bet slips. No gut feelings, purely statistics and value analysis.

When to activate

Activate this skill when the user:

  • Asks for a football bet, bet slip, accumulator, or picks
  • Asks for match analysis for betting purposes
  • Asks for bet statistics, results, or ROI
  • Asks for a pick or tip for football

Prerequisites

Install dependencies (one-time):

pip install requests

Set API key (free via football-data.org/client/register):

export FOOTBALL_DATA_API_KEY="your-key-here"

Or fill in the key at {baseDir}/config/settings.json under api_key.


Mode 1: Generate Bet Slip

Step 1 -- Fetch data

Fetch current match data:

python3 {baseDir}/scripts/match_fetcher.py --mode full

This returns a JSON package with:

  • All scheduled matches for today and tomorrow
  • League standings and form data per team
  • Head-to-head history (last 5 encounters)

Coverage: Premier League, Bundesliga, Serie A, La Liga, Ligue 1, Eredivisie, Champions League.

If the user wants a specific date:

python3 {baseDir}/scripts/match_fetcher.py --mode full --date-from 2026-02-15 --date-to 2026-02-15

Step 2 -- Analyse each match

Analyse EVERY match from the data on these factors (in order of importance):

A. Form (last 5-10 matches)

  • Use the form field from the standings data (e.g. "W,W,D,L,W")
  • Calculate win percentage, goals per match
  • Pay attention to home form vs away form trends

B. Home/away statistics

  • Home team: goals for/against at home
  • Away team: goals for/against away
  • Compare goal difference at home vs on the road

C. Head-to-head (H2H)

  • Review the h2h data: who wins historically?
  • Look for patterns: does one team always score? Are these low- or high-scoring games?

D. Table position and motivation

  • Top of the table (title/CL spots): high motivation, consistent
  • Mid-table: unpredictable, be cautious
  • Bottom (relegation): can be surprisingly strong or weak
  • Difference in table position as an indicator

E. Additional factors (via web search) After the data analysis, search the web for EVERY shortlisted match:

  • Injuries and suspensions of key players (FotMob, Transfermarkt)
  • Recent news (manager change, internal issues, transfer saga)
  • xG (expected goals) data from recent matches
  • Weather conditions for outdoor matches in winter months

Use search terms like: "[Team A] vs [Team B] team news injuries" and "[Team A] xG stats 2025-26"

F. Odds estimation

  • Estimate realistic odds per outcome (based on your analysis)
  • Compare with common bookmaker odds (search the web if needed)
  • VALUE = when your estimated probability is higher than the implied probability of the odds
  • Implied probability = 1 / odds (e.g. odds 2.00 = 50% implied)

Step 3 -- Pick selection

Select ONLY picks that meet all criteria:

  1. Estimated win probability > 45%
  2. Odds per pick: 1.70 - 2.50 (value range)
  3. Clear motivation based on data
  4. No more than 1 pick per match

Allowed pick types:

  • 1 / X / 2: Home win, draw, away win
  • 1X / X2: Double chance
  • BTTS Yes/No: Both Teams To Score
  • Over/Under 2.5 goals
  • Handicap -1: Team wins by 2+ goals

Step 4 -- Honesty check

If you find FEWER than 3 picks with real value:

Do NOT generate a bet slip. Say honestly:

"No strong bet slip possible today. The matches offer insufficient value based on the data. Reasons: [brief explanation]. Wait for better odds or the next matchday."

This is MANDATORY. Never force it. Honesty > revenue.

Step 5 -- Generate output

Generate TWO variants:

Variant A: Main slip (3-4 picks, total odds 8x-15x)

MatchPickOddsMotivationProb %Risk
Ajax - PSVBTTS Yes1.85Both teams scored in 8/10 recent matches, H2H always goals52%Low
Arsenal - ChelseaOver 2.51.90Avg 3.2 goals per match this season, both attack-minded48%Medium
..................

Total odds: XX.XX Recommended stake: 5-10 EUR Potential payout: XX.XX EUR

Variant B: Backup (2-3 picks, total odds 4x-8x)

Same table format but with safer picks (higher probabilities, lower odds).

Always include at the bottom:

  • Estimated hitrate per variant (e.g. "Main slip: ~15% chance of all picks hitting, individual picks ~50% average")
  • Alternative advice: "Consider singles if you want to play it safer"
  • Disclaimer: "Gamble responsibly. Max stake 5-10 EUR per slip, monthly limit 75 EUR."

Step 6 -- Save bet

Automatically save the bet slip for tracking:

python3 {baseDir}/scripts/bet_tracker.py --mode save --data '{
  "type": "main",
  "stake": 5.0,
  "picks": [
    {
      "match": "Ajax - PSV",
      "competition": "Eredivisie",
      "pick": "BTTS Yes",
      "odds": 1.85,
      "estimated_probability": 0.52,
      "motivation": "Both teams scored in 8/10 recent matches",
      "risk": "low"
    }
  ],
  "total_odds": 12.50,
  "notes": ""
}'

Repeat for the backup slip with "type": "backup".


Mode 2: Record results

When the user says a bet has won or lost:

# Mark entire slip
python3 {baseDir}/scripts/bet_tracker.py --mode result --date 2026-02-15 --slip-idx 1 --result win

# Mark specific pick
python3 {baseDir}/scripts/bet_tracker.py --mode result --date 2026-02-15 --slip-idx 1 --pick-idx 2 --result loss

Result options: win, loss, void

Always ask the user for the date and which slip (main or backup) it concerns.


Mode 3: View statistics

When the user asks about results, stats, ROI, or hitrate:

python3 {baseDir}/scripts/bet_tracker.py --mode stats

Present the JSON output as a readable summary:

  • All-time hitrate and ROI
  • Current month: staked, returned, profit/loss, budget remaining
  • Best and worst month

Warn if the monthly budget is almost spent (>80% used).


Mode 4: View history

python3 {baseDir}/scripts/bet_tracker.py --mode history --days 30

Show an overview of all bets from the last N days.


Analysis quality rules

These rules are HARD. Always follow them:

  1. Never more than 5 picks per slip. More picks = exponentially lower chance.
  2. Never odds below 1.50 or above 3.00 per pick. Too low = no value, too high = too risky.
  3. Never 2 picks from the same match. Correlation destroys value.
  4. Never a pick without data backing. "Gut feeling" is not an argument.
  5. Always run the honesty check. No slip is better than a bad slip.
  6. Avoid derbies and cup matches unless the data is overwhelming. Too unpredictable.
  7. Always check injuries. A team without key players is a different team.
  8. Factor in the season phase. Early season = unreliable data. End of season = varying motivation.

Budget and responsible gambling

Configuration is in {baseDir}/config/settings.json:

  • Per bet: 5-10 EUR
  • Monthly limit: 75 EUR
  • Always check the stats for monthly spending before generating a new slip

If the monthly budget is at or nearly at its limit (>90%):

  • Inform the user
  • Advise waiting until next month
  • Do NOT generate a new slip unless the user explicitly states they want to proceed

Tone and style

  • Output in English
  • Professional but accessible
  • No hype, no promises
  • Data and percentages front and center
  • Honest about risks

Source

git clone https://clawhub.ai/nandichi/football-value-betsView on GitHub

Overview

Football Value Bets generates professional, data-driven bet slips for football matches using form, H2H, standings, injuries, and value analysis. It tracks results with hit rate and ROI to help users evaluate performance and make informed picks.

How This Skill Works

The skill fetches current match data via the football-data API, analyzes factors A–F (form, home/away stats, H2H, table position, and extra factors from web search), and estimates win probabilities and odds. Picks are selected only when they meet criteria (win probability >45%, odds 1.70–2.50, clear motivation) and at most one pick per match; if fewer than 3 value picks exist, it will not generate a strong bet slip and will explain why.

When to Use It

  • Asks for a football bet, bet slip, accumulator, or picks
  • Asks for match analysis for betting purposes
  • Asks for bet statistics, results, or ROI
  • Asks for a pick or tip for football
  • Wants to review data-driven guidance before placing bets

Quick Start

  1. Step 1: Install dependencies and set API key (pip install requests; export FOOTBALL_DATA_API_KEY=\"your-key-here\").
  2. Step 2: Fetch data: python3 {baseDir}/scripts/match_fetcher.py --mode full
  3. Step 3: Run analysis and review generated bet slips; if value is insufficient, you’ll see a no-strong-bet message.

Best Practices

  • Use win probability > 45% and odds 1.70–2.50 as the core threshold for picks
  • Rely on up-to-date data: form, home/away stats, and H2H trends
  • Incorporate injuries, suspensions, and xG data from web sources when available
  • Limit to at most one pick per match to avoid overexposure
  • Track ROI and hit rate over time to monitor performance

Example Use Cases

  • Example: A Premier League match with strong home form and favorable H2H yields a 2.10 odds pick with >45% win probability.
  • Example: A two-match accumulator includes a BTTS Yes and an Under 2.5 goals pick where both meet value criteria.
  • Example: If data shows insufficient value, the system returns No strong bet slip and explains why.
  • Example: A Handicap -1 pick is selected when one team shows clear 2+ goal superiority in recent form.
  • Example: A match analysis highlights clear motivation gaps between teams leading to a high-confidence single pick.

Frequently Asked Questions

Add this skill to your agents
Sponsor this space

Reach thousands of developers