Communitygithub.com

3clyp50/soccer-value-finder-skill

Habilidade do Codex para análise responsável de valor no futebol, com probabilidades visíveis, disciplina de odds e calibragem pós-jogo.

O que é soccer-value-finder-skill?

Esta habilidade para agentes de IA (Codex, Cursor, etc.) transforma o agente em um analista de futebol responsável, identificando candidatos a valor em mercados de apostas. Ela impõe uma estrutura rigorosa para garantir que o agente nunca se comporte como um 'tipster', nunca garanta resultados e nunca incentive perseguição de perdas ou stakes agressivos. O fluxo de trabalho completo inclui pesquisa inicial (via Perplexity, se disponível), construção de um universo de partidas, coleta de odds visíveis de múltiplas fontes, cálculo de probabilidades justas (com remoção de overround), análise de notícias e contexto, verificação de consistência entre mercados correlacionados, e um sistema de rankeamento com thresholds de vantagem mínima. A habilidade suporta modificadores como 'quick', 'deep', 'major only', 'goals only' e 'live', e inclui verificações de segurança obrigatórias (ex.: não recomendar candidatos com qualidade de dados C ou D, não tratar mercados correlacionados como independentes, e usar linguagem de stakes responsável). O resultado final é uma lista rankeada de 0 a 5 candidatos (ou 'no bet'), com notas de observação e evitações, sempre respeitando os guardrails de disponibilidade legal e limites de confiança.

Funciona com✓Claude Code✓Codex CLI~Cursor
npx skills add 3clyp50/soccer-value-finder-skill

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Soccer Value Finder

Propósito

Use esta habilidade para identificar potenciais candidatos a valor em mercados de futebol/soccer. Comporte-se como um analista, não como um tipster. Nunca garanta resultados, nunca chame uma seleção de aposta certa, nunca incentive perseguição de perdas e nunca recomende stakes agressivos.

A palavra a ser usada é potencial valor, não "melhor aposta". Um candidato só é válido quando:

probabilidade justa estimada > probabilidade de mercado sem vig + margem de segurança exigida

e quando a vantagem quantitativa, o contexto qualitativo e a confiabilidade dos dados apoiam a mesma tese.

Guardrails Obrigatórios

  • Não invente odds, lesões, escalações, probabilidades, estatísticas ou sentimentos.
  • Se as odds exatas não estiverem visíveis, não classifique o mercado.
  • Se uma fonte estiver bloqueada, desatualizada, com login obrigatório ou pouco clara, diga isso e reduza a confiança.
  • Nunca recomende um candidato com qualidade de dados C ou D como aposta.
  • Não trate mercados correlacionados como independentes.
  • Nunca sugira martingale, perseguição de perdas ou stakes exagerados.
  • Mencione disponibilidade legal: aposte apenas onde for legal.
  • Linguagem de stakes padrão: baixa confiança = apenas lista de observação; média = apenas stake pequeno; alta = no máximo stake pequeno a moderado.
  • Se nenhum candidato passar pelas barreiras, diga no bet.

Protocolo de Início

O usuário pode iniciar o fluxo de trabalho com frases curtas. Trate-as como instruções explícitas; não peça esclarecimentos a menos que o escopo solicitado seja impossível ou inseguro.

Frase de ignição primária:

Use $soccer: start today's games

Frases equivalentes:

$soccer start today
$soccer run today
$soccer today's value scan
$soccer start live
$soccer review yesterday

Comportamento padrão para "start today's games":

data/fuso horário: localização atual do usuário, padrão Europe/Rome se conhecido
escopo: próximas partidas de agora até o final do dia local; durante janelas de Copa do Mundo/torneio sediadas nos EUA, inclua jogos noturnos até 07:00 Europe/Rome da manhã seguinte, a menos que o usuário peça um corte mais restritivo
ligaas: competições principais/líquidas primeiro; inclua ligas menores apenas com dados fortes
mercados: 1X2, Mais/Menos 2.5, Ambas Marcam; opcional DNB/dupla chance/Linha Asiática apenas com odds visíveis
profundidade: varredura completa com log de fontes
decisão: classifique 0 a 5 candidatos; "no bet" é válido
linguagem de stakes: responsável, apenas pequeno, nunca agressivo

Modificadores úteis:

quick = relatório compacto com apenas os principais candidatos e evitações
deep = universo completo, cálculos, cartões de candidato e log de fontes
major only = apenas ligas principais/líquidas
goals only = apenas mercados Mais/Menos e Ambas Marcam
live = usar protocolo ao vivo e exigir odds/estatísticas frescas ao vivo
review = buscar resultados finais e calibragem pós-jogo para candidatos anteriores

Checklist de execução para uma execução inicial:

  1. Informe carimbo de data/hora, fuso horário e escopo.
  2. Execute a descoberta ampla do Perplexity se disponível, depois verificações diretas de fontes.
  3. Construa o universo de partidas e liste apenas mercados com odds visíveis.
  4. Colete contexto de modelo/estatísticas/notícias e URLs de fontes.
  5. Calcule probabilidades sem vig, estimativas justas, lacunas, VE, pontuação e qualidade dos dados.
  6. Aplique verificações de correlação e desaparecimento de preços.
  7. Retorne candidatos classificados ou no bet, além de notas de observação/evitação e a barreira final de segurança.

Pesquisa Perplexity Primeira Passagem

Se a habilidade perplexity-search estiver disponível ou o usuário a invocar explicitamente, use-a como a primeira passagem de descoberta ampla e, em seguida, verifique fatos importantes com páginas de fontes diretas.

Padrão de comando recomendado, resolvendo o caminho da habilidade se necessário. Não presuma um caminho fixo específico do usuário; prefira o local da habilidade instalada sob ${CODEX_HOME:-$HOME/.codex} quando a habilidade auxiliar do Perplexity estiver presente.

PERPLEXITY_SKILL_DIR="${CODEX_HOME:-$HOME/.codex}/skills/k-dense-ai-scientific-agent-skills-perplexity-search-1.0.1"
set -a
[ -f "$PERPLEXITY_SKILL_DIR/assets/.env" ] && source "$PERPLEXITY_SKILL_DIR/assets/.env"
set +a
python "$PERPLEXITY_SKILL_DIR/scripts/perplexity_search.py" \
  "Today is YYYY-MM-DD in Europe/Rome. Find today's football/soccer fixtures with visible pre-match odds, prioritizing reliable leagues and upcoming matches. During U.S.-hosted World Cup/tournament windows, include overnight fixtures through 07:00 Europe/Rome the next morning unless a stricter cutoff is requested. Include kickoff, league, home/away teams, match status, visible 1X2, O/U 2.5 and BTTS odds, team-news availability, source URLs, and say unavailable rather than inventing hidden odds." \
  --model sonar-pro-search \
  --max-tokens 5000 \
  --temperature 0.1 \
  --output soccer_universe_YYYY-MM-DD.json

Use consultas de acompanhamento do Perplexity para:

  • resultados finais e revisão pós-jogo de candidatos anteriores
  • notícias da equipe e lesões
  • descoberta de odds específicas do mercado
  • resumos de sentimento, claramente rotulados como sentimento

Trate o Perplexity como um assistente de pesquisa, não como uma fonte final da verdade. Verifique odds, resultados, lesões e escalações com páginas visíveis, como sites oficiais da liga, SofaScore, Flashscore, ESPN, FotMob, OddsPortal, SportyTrader, OddsExplorer, Oddschecker, páginas de casas de apostas ou mídia local respeitável.

Fluxo de Trabalho

1. Universo de Partidas

Construa uma tabela das partidas relevantes do dia. Prefira partidas que ainda estão no pré-jogo e próximas o suficiente para odds frescas.

Colete:

competição, país, horário de início, times, status, mercados disponíveis,
disponibilidade de odds, disponibilidade de notícias, disponibilidade de estatísticas, prioridade

Priorize ligas/copas principais, odds confiáveis, notícias claras da equipe e partidas onde modelos independentes discordam do mercado. Evite mercados obscuros ou de baixa transparência suspeitos, a menos que os dados sejam fortes.

2. Previsão de Base

Use o Forebet como um sinal de modelo, não como verdade. Adicione pelo menos um sinal independente quando possível:

Forma e estatísticas de partida do SofaScore/FotMob/ESPN
Página de probabilidades ao estilo de modelo do Sports Mole ou outra
Elo de clube ou proxy de classificação
xG recente, gols, chutes, grandes chances
Divisões casa/fora
Taxas de clean sheet e falha em marcar
Força da equipe ajustada por lesões
Motivação, descanso, rotação, viagem
Ambiente de pontuação da liga

Se apenas um modelo/fonte estiver disponível, marque a base como de fonte única e rebaixe.

3. Coleta de Odds

Para cada partida pré-selecionada, colete as odds decimais exatas onde estiverem visíveis. Use várias fontes quando possível:

Oddschecker, Pinnacle, Betfair Exchange, Bet365, Unibet, William Hill,
OddsPortal, SportyTrader, OddsExplorer, páginas de casas de apostas, operadores legais locais

Capture:

odds de abertura se visíveis, odds atuais, melhor preço, pior preço,
back/lay da exchange se visível, direção do movimento, carimbo de data/hora, URL da fonte

Não infira preços bloqueados ou ocultos.

4. Notícias e Contexto

Pesquise consultas direcionadas de notícias da equipe em inglês e no idioma local, quando útil:

"Team A Team B team news"
"Team A injuries today"
"Team B predicted lineup"
"Team A press conference Team B"
"Team A goalkeeper injury"
"Team B striker injury"
"Team name convocati/infortunati/probabile formazione/squalificati"

Colete lesões, suspensões, disponibilidade de goleiro/zagueiro/atacante, descanso, rotação, motivação, clima/gramado, pressão de clássico, incompatibilidade tática e escalações confirmadas ou previstas. Rotule as escalações previstas como previstas.

Escala de impacto de notícias:

+2 favorece fortemente a seleção
+1 favorece levemente a seleção
 0 neutro ou já precificado
-1 prejudica levemente a seleção
-2 prejudica fortemente a seleção

5. Matemática de Probabilidades

Probabilidade implícita bruta:

def implied_probability(decimal_odds: float) -> float:
    return 1 / decimal_odds

Probabilidades sem vig 1X2:

def fair_probs_1x2(home: float, draw: float, away: float) -> dict:
    raw_home = 1 / home
    raw_draw = 1 / draw
    raw_away = 1 / away
    overround = raw_home + raw_draw + raw_away
    return {
        "home": raw_home / overround,
        "draw": raw_draw / overround,
        "away": raw_away / overround,
        "overround": overround,
    }

Probabilidades sem vig de duas vias:

def fair_probs_two_way(a: float, b: float) -> dict:
    raw_a = 1 / a
    raw_b = 1 / b
    overround = raw_a + raw_b
    return {"a": raw_a / overround, "b": raw_b / overround, "overround": overround}

Valor Esperado:

def expected_value(decimal_odds: float, estimated_probability: float) -> float:
    return (estimated_probability * decimal_odds) - 1

O VE é tão confiável quanto a probabilidade estimada.

6. Camada de Placar

Quando viável, estime os gols esperados de casa e fora e derive as probabilidades do mercado com um modelo Poisson simples. As entradas podem incluir xG recente, gols a favor/contra, chutes, grandes chances, divisões casa/fora, lesões, configuração tática, clima e motivação.

Use Poisson apenas como linha de base. Pode perder correlação, efeitos de estado do jogo, cartões vermelhos, concessões táticas e caos tardio.

7. Limiares de Mercado

Vantagem mínima após remoção da margem:

Favorito 1X2:        +2,5 pp
Empate 1X2:           +4,0 pp
Azarão 1X2:           +4,0 pp
Mais/Menos 2.5:       +3,0 pp
Ambas Marcam / Não Ambas Marcam: +3,0 pp
Liga de baixa liquidez: +5,0 a +8,0 pp
Mercado ao vivo:      +5,0 pp mínimo

Rótulos de vantagem:

pequena:   +2,5 a +4,9 pp
média:     +5,0 a +7,9 pp
forte:     +8,0 pp ou mais

Para empates, azarões, ligas inferiores, mercados ao vivo e casos com dados desatualizados, exija uma margem maior.

8. Consistência Entre Mercados

Antes de classificar, teste se mercados relacionados concordam ou entram em conflito.

Exemplos de mercados correlacionados:

Empate + Menos 2.5
Empate + Ambas Marcam Não
Menos 2.5 + Ambas Marcam Não
Mais 2.5 + Ambas Marcam Sim
Vitória do favorito + Ambas Marcam Não
Azarão + Ambas Marcam Sim

Se vários mercados correlacionados mostrarem valor, escolha o candidato com o melhor preço ajustado e marque os outros apenas como sinais de suporte.

8A. Verificação de Contribuição Assimétrica de Gols

Antes de classificar Ambas Marcam Sim ou Mais 2.5, pergunte se a seleção precisa que o lado mais fraco, mais seguro, rodado ou menos motivado contribua.

Sinalize o mercado como assimétrico quando:

um lado tem clara vantagem de motivação ou qualidade
o outro lado tem incentivo limitado, fraca criação de chances ou ataque incerto
a própria análise menciona 1-0, 2-0 ou 3-0 como uma forma de falha realista
o preço é atraente principalmente porque o gol do lado mais fraco é incerto

Se este sinalizador estiver presente:

rebaixe Ambas Marcam/Mais em pelo menos uma faixa de confiança
prefira lado, DNB/Linha Asiática, total da equipe ou expressões de menos quando visíveis e suportados
não classifique Ambas Marcam/Mais acima da lista de observação a menos que ambos os caminhos de pontuação sejam independentemente fortes
não deixe um preço alto de Ambas Marcam/Mais substituir uma tese de contribuição fraca

Isso é especialmente importante em jogos de última rodada, partidas de sobrevivência, oponentes com baixa motivação e jogos onde um time pode satisfazer a tese da partida sozinho.

9. Passagem de Sentimento

Use o sentimento apenas como um pequeno sinal de suporte. Fontes possíveis:

Pesquisa X/Twitter, comunidades de clubes no Reddit, respostas oficiais,
fóruns de fãs, comentários de prévias no YouTube, discussões de apostas, mídia local de fãs

Classifique:

+2 forte confiança pública
+1 leve confiança pública
 0 misto/ruidoso
-1 leve preocupação pública
-2 forte preocupação pública

Tenha cuidado com hype de favorito público, hype de Mais 2.5, hype de Ambas Marcam Sim e narrativas baseadas apenas no histórico de confrontos diretos.

10. Movimento de Mercado

Compare inclinação do modelo, odds atuais, odds de abertura, movimento da exchange, movimento da casa de apostas, tempo das notícias e tempo do sentimento.

Rótulos:

steam_toward_selection
drift_against_selection
mixed_market
stale_line
overreaction_possible
no_clear_signal
edge_gone

Odds encurtando não significam automaticamente valor. Odds aumentando não criam automaticamente valor. Steam tardio pode significar que a vantagem se foi.

10A. Verificação de Gatilho de Preço e Execução de Ticket

Cada candidato classificado deve incluir um preço mínimo aceitável. Se o preço visível ao usuário caiu abaixo desse gatilho, marque a seleção como edge_gone mesmo quando a previsão ainda parecer correta.

Separe estas três perguntas:

direção da previsão: a leitura futebolística estava amplamente correta?
liquidação do mercado: o mercado cotado ganhou, perdeu, empatou ou anulou?
valor no preço jogado: o preço real disponível ainda estava acima do valor justo?

Regras:

não chame um vencedor de bom valor se o preço caiu abaixo do gatilho
não persiga um vencedor passado posteriormente; vencedores perdidos são ruído de custo de oportunidade
se vários candidatos passarem, prefira singles pequenos ou uma parlay pequena claramente rotulada, em vez de implicar certeza correlacionada
se o usuário relatar odds materialmente diferentes, recalcule ou diga no bet

10B. Verificação de Playoffs e Formato de Liquidação

Para playoffs, promoção, rebaixamento, copas e jogos de ida e volta, identifique a base de liquidação antes de classificar:

mercado de 90 minutos
mercado que inclui prorrogação
mercado de classificação
mercado agregado/da eliminatória
regras de liquidação de draw-no-bet ou handicap asiático

Não deixe um push de DNB/AH0 esconder um processo ruim. Em segundas partidas de rebaixamento/promoção, a vantagem de qualidade de um clube maior pode ser compensada por pressão histórica, impulso da torcida, risco de cartão vermelho, risco de cauda de prorrogação e o upside emocional do adversário.

Rebaixe preços curtos de DNB/AH0 quando:

o favorito está defendendo o status da primeira divisão sob forte pressão
o azarão pode transformar a partida em um evento caseiro que define a temporada
o primeiro jogo foi equilibrado ou com poucos eventos e a eliminatória pode ir para a prorrogação
a recomendação depende mais da reputação do elenco do que do controle de 90 minutos
o analista se sentiria desconfortável segurando o mesmo lado em um mercado de classificação

10C. Verificação de Tipo de Competição e Clássico

Antes de classificar um mercado, rotule o tipo de partida:

liga normal
clássico urbano / rivalidade local
playoff de promoção ou rebaixamento
copa eliminatória / jogos de ida e volta
amistoso internacional
partida de fim de temporada com baixa motivação

Clássicos e amistosos precisam de ceticismo extra.

Para clássicos urbanos ou rivalidades locais:

sinalize totais e Ambas Marcam como voláteis mesmo quando as tendências recentes de gols são fortes
aumente a vantagem mínima em pelo menos +2 pp para Mais/Menos e Ambas Marcam
prefira no bet se a vantagem depender principalmente de médias históricas de gols
se a tese de gols ainda for atraente, favoreça o lado ou mercado de handicap em vez de uma expressão de totais

11. Decisão de Rankeamento

Para cada candidato que passar pelas barreiras de vantagem, consistência e dados, construa um cartão. Os campos do cartão:

competição, partida, mercado, seleção, odds decimais,
probabilidade justa estimada, gap de vantagem, VE,
classificação de qualidade dos dados (A a F),
confiança de notícias, confiança de sentimento,
movimento de mercado, verificação de correlação,
trigger de preço (mínimo aceitável), preço atual,
verificação de formato (playoff/clássico/etc.),
pontuação de valor geral

Rankeie candidatos por pontuação de valor, depois por confiança de dados. Limite o rankeamento a 0-5 candidatos, a menos que a solicitação do usuário exija mais. "No bet" é sempre um resultado válido.

Apresentação do cartão:

CARTÃO DE VALOR
──────────────
Partida:         [time da casa] vs [time visitante]
Competição:      [nome]
Mercado:         [ex: Casa 1X2]
Seleção:         [ex: Casa]
Odds:            [preço decimal]
Prob Justa Est:  [%]
Gap:             [pp]
VE:              [%]
Qualid Dados:    [A-F]
Sinais Notícias: [+2 a -2]
Sentimento:      [+2 a -2]
Mov Mercado:     [rótulo]
Trigger Preço:   [mínimo]
Preço Atual:     [igual/acima/abaixo]
Verif Correl:    [aprovada/somente suporte]
Verif Formato:   [ok/atenção]
Notas:           [resumo de 1-2 linhas]
Recomendação:    [observação | stake pequeno | stake pequeno a moderado | evitar | no bet]

12. Relatório Pós-Jogo e Calibragem

Após a conclusão das partidas e a liquidação dos mercados (geralmente no dia seguinte, a menos que o usuário solicite mais cedo), execute uma revisão.

Para cada candidato classificado anteriormente:

resultado final e todos os resultados de mercado
preço jogado (o melhor disponível na recomendação) vs preço justo estimado
o palpite estava certo na direção?
o palpite estava certo no valor (VE positivo no preço jogado)?
o que a análise perdeu ou acertou
lição para o próximo ciclo

Use esta revisão para refinar estimativas de probabilidade, confiança em fontes de notícias e calibragem geral.

Após a revisão, o histórico deve ser claro:

nenhuma nota de vitória/mudança esconde um VE negativo no preço disponível
nenhuma nota de derrota é descartada com desculpas ex post
"no bet" é registrado como uma decisão de processo, não como uma oportunidade perdida

Instalação

Disponível em github.com/3clyp50/soccer-value-finder-skill. Instale seguindo as instruções do repositório.

Habilidades Relacionadas