{"skill":{"slug":"football-value-bets","displayName":"football-value-bets","summary":"Professional football bet analysis skill. Generates data-driven bet slips based on form, H2H, standings, injuries and value analysis. Includes result trackin...","description":"---\nname: football-value-bets\ndescription: >-\n  Professional football bet analysis skill. Generates data-driven bet slips\n  based on form, H2H, standings, injuries and value analysis. Includes\n  result tracking with hitrate and ROI. Use when the user asks for a\n  football bet, bet slip, accumulator, tips, or picks.\nmetadata:\n  openclaw:\n    requires:\n      bins: [\"python3\"]\n      env: [\"FOOTBALL_DATA_API_KEY\"]\n    primaryEnv: \"FOOTBALL_DATA_API_KEY\"\n---\n\n# Football Value Bets\n\nGenerate professional, data-driven football bet slips. No gut feelings, purely statistics and value analysis.\n\n## When to activate\n\nActivate this skill when the user:\n- Asks for a football bet, bet slip, accumulator, or picks\n- Asks for match analysis for betting purposes\n- Asks for bet statistics, results, or ROI\n- Asks for a pick or tip for football\n\n## Prerequisites\n\nInstall dependencies (one-time):\n\n```bash\npip install requests\n```\n\nSet API key (free via football-data.org/client/register):\n\n```bash\nexport FOOTBALL_DATA_API_KEY=\"your-key-here\"\n```\n\nOr fill in the key at `{baseDir}/config/settings.json` under `api_key`.\n\n---\n\n## Mode 1: Generate Bet Slip\n\n### Step 1 -- Fetch data\n\nFetch current match data:\n\n```bash\npython3 {baseDir}/scripts/match_fetcher.py --mode full\n```\n\nThis returns a JSON package with:\n- All scheduled matches for today and tomorrow\n- League standings and form data per team\n- Head-to-head history (last 5 encounters)\n\nCoverage: Premier League, Bundesliga, Serie A, La Liga, Ligue 1, Eredivisie, Champions League.\n\nIf the user wants a specific date:\n\n```bash\npython3 {baseDir}/scripts/match_fetcher.py --mode full --date-from 2026-02-15 --date-to 2026-02-15\n```\n\n### Step 2 -- Analyse each match\n\nAnalyse EVERY match from the data on these factors (in order of importance):\n\n**A. Form (last 5-10 matches)**\n- Use the `form` field from the standings data (e.g. \"W,W,D,L,W\")\n- Calculate win percentage, goals per match\n- Pay attention to home form vs away form trends\n\n**B. Home/away statistics**\n- Home team: goals for/against at home\n- Away team: goals for/against away\n- Compare goal difference at home vs on the road\n\n**C. Head-to-head (H2H)**\n- Review the `h2h` data: who wins historically?\n- Look for patterns: does one team always score? Are these low- or high-scoring games?\n\n**D. Table position and motivation**\n- Top of the table (title/CL spots): high motivation, consistent\n- Mid-table: unpredictable, be cautious\n- Bottom (relegation): can be surprisingly strong or weak\n- Difference in table position as an indicator\n\n**E. Additional factors (via web search)**\nAfter the data analysis, search the web for EVERY shortlisted match:\n- Injuries and suspensions of key players (FotMob, Transfermarkt)\n- Recent news (manager change, internal issues, transfer saga)\n- xG (expected goals) data from recent matches\n- Weather conditions for outdoor matches in winter months\n\nUse search terms like: \"[Team A] vs [Team B] team news injuries\" and \"[Team A] xG stats 2025-26\"\n\n**F. Odds estimation**\n- Estimate realistic odds per outcome (based on your analysis)\n- Compare with common bookmaker odds (search the web if needed)\n- VALUE = when your estimated probability is higher than the implied probability of the odds\n- Implied probability = 1 / odds (e.g. odds 2.00 = 50% implied)\n\n### Step 3 -- Pick selection\n\nSelect ONLY picks that meet all criteria:\n\n1. Estimated win probability > 45%\n2. Odds per pick: 1.70 - 2.50 (value range)\n3. Clear motivation based on data\n4. No more than 1 pick per match\n\nAllowed pick types:\n- **1 / X / 2**: Home win, draw, away win\n- **1X / X2**: Double chance\n- **BTTS Yes/No**: Both Teams To Score\n- **Over/Under 2.5 goals**\n- **Handicap -1**: Team wins by 2+ goals\n\n### Step 4 -- Honesty check\n\nIf you find FEWER than 3 picks with real value:\n\n**Do NOT generate a bet slip.** Say honestly:\n\n\"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.\"\n\nThis is MANDATORY. Never force it. Honesty > revenue.\n\n### Step 5 -- Generate output\n\nGenerate TWO variants:\n\n**Variant A: Main slip (3-4 picks, total odds 8x-15x)**\n\n| Match | Pick | Odds | Motivation | Prob % | Risk |\n|-------|------|------|------------|--------|------|\n| Ajax - PSV | BTTS Yes | 1.85 | Both teams scored in 8/10 recent matches, H2H always goals | 52% | Low |\n| Arsenal - Chelsea | Over 2.5 | 1.90 | Avg 3.2 goals per match this season, both attack-minded | 48% | Medium |\n| ... | ... | ... | ... | ... | ... |\n\nTotal odds: XX.XX\nRecommended stake: 5-10 EUR\nPotential payout: XX.XX EUR\n\n**Variant B: Backup (2-3 picks, total odds 4x-8x)**\n\nSame table format but with safer picks (higher probabilities, lower odds).\n\n**Always include at the bottom:**\n- Estimated hitrate per variant (e.g. \"Main slip: ~15% chance of all picks hitting, individual picks ~50% average\")\n- Alternative advice: \"Consider singles if you want to play it safer\"\n- Disclaimer: \"Gamble responsibly. Max stake 5-10 EUR per slip, monthly limit 75 EUR.\"\n\n### Step 6 -- Save bet\n\nAutomatically save the bet slip for tracking:\n\n```bash\npython3 {baseDir}/scripts/bet_tracker.py --mode save --data '{\n  \"type\": \"main\",\n  \"stake\": 5.0,\n  \"picks\": [\n    {\n      \"match\": \"Ajax - PSV\",\n      \"competition\": \"Eredivisie\",\n      \"pick\": \"BTTS Yes\",\n      \"odds\": 1.85,\n      \"estimated_probability\": 0.52,\n      \"motivation\": \"Both teams scored in 8/10 recent matches\",\n      \"risk\": \"low\"\n    }\n  ],\n  \"total_odds\": 12.50,\n  \"notes\": \"\"\n}'\n```\n\nRepeat for the backup slip with `\"type\": \"backup\"`.\n\n---\n\n## Mode 2: Record results\n\nWhen the user says a bet has won or lost:\n\n```bash\n# Mark entire slip\npython3 {baseDir}/scripts/bet_tracker.py --mode result --date 2026-02-15 --slip-idx 1 --result win\n\n# Mark specific pick\npython3 {baseDir}/scripts/bet_tracker.py --mode result --date 2026-02-15 --slip-idx 1 --pick-idx 2 --result loss\n```\n\nResult options: `win`, `loss`, `void`\n\nAlways ask the user for the date and which slip (main or backup) it concerns.\n\n---\n\n## Mode 3: View statistics\n\nWhen the user asks about results, stats, ROI, or hitrate:\n\n```bash\npython3 {baseDir}/scripts/bet_tracker.py --mode stats\n```\n\nPresent the JSON output as a readable summary:\n- All-time hitrate and ROI\n- Current month: staked, returned, profit/loss, budget remaining\n- Best and worst month\n\nWarn if the monthly budget is almost spent (>80% used).\n\n---\n\n## Mode 4: View history\n\n```bash\npython3 {baseDir}/scripts/bet_tracker.py --mode history --days 30\n```\n\nShow an overview of all bets from the last N days.\n\n---\n\n## Analysis quality rules\n\nThese rules are HARD. Always follow them:\n\n1. **Never more than 5 picks per slip.** More picks = exponentially lower chance.\n2. **Never odds below 1.50 or above 3.00 per pick.** Too low = no value, too high = too risky.\n3. **Never 2 picks from the same match.** Correlation destroys value.\n4. **Never a pick without data backing.** \"Gut feeling\" is not an argument.\n5. **Always run the honesty check.** No slip is better than a bad slip.\n6. **Avoid derbies and cup matches** unless the data is overwhelming. Too unpredictable.\n7. **Always check injuries.** A team without key players is a different team.\n8. **Factor in the season phase.** Early season = unreliable data. End of season = varying motivation.\n\n## Budget and responsible gambling\n\nConfiguration is in `{baseDir}/config/settings.json`:\n\n- Per bet: 5-10 EUR\n- Monthly limit: 75 EUR\n- Always check the stats for monthly spending before generating a new slip\n\nIf the monthly budget is at or nearly at its limit (>90%):\n- Inform the user\n- Advise waiting until next month\n- Do NOT generate a new slip unless the user explicitly states they want to proceed\n\n## Tone and style\n\n- Output in English\n- Professional but accessible\n- No hype, no promises\n- Data and percentages front and center\n- Honest about risks\n","tags":{"latest":"1.0.0"},"stats":{"comments":0,"downloads":1467,"installsAllTime":1,"installsCurrent":1,"stars":0,"versions":1},"createdAt":1771193480694,"updatedAt":1778990828307},"latestVersion":{"version":"1.0.0","createdAt":1771193480694,"changelog":"- Initial release of football-value-bets skill.\n- Generates professional football bet slips using data-driven analysis (form, H2H, standings, injuries, value).\n- Tracks bet results with hitrate and ROI; provides statistics and bet history.\n- Strict criteria for pick selection, slip generation, and responsible gambling limits.\n- Honest output: only generates bet slips when real value is found.\n- Activation on user requests for football bets, accumulators, tips, or match analysis.","license":null},"metadata":{"setup":[{"key":"FOOTBALL_DATA_API_KEY","required":true}],"os":null,"systems":null},"owner":{"handle":"nandichi","userId":"s17f83xef303knyqc64rgqttk9884zcd","displayName":"Naoufal Andichi","image":"https://avatars.githubusercontent.com/u/89518229?v=4"},"moderation":null}