Documentação Oficial

LION·QUANTEDGE
Bot Manager

Sistema de envio automático de value bets via Telegram com modelos estatísticos profissionais

5
Modelos
10
Mercados
3
Tipos de Stake
Utilizadores
Índice
01

O que é e como funciona

O Lion QuantEdge Bot Manager é um sistema autónomo que lê os dados do scraper de futebol (ficheiro unified_data.json), aplica modelos matemáticos de probabilidade para calcular Expected Value (EV) real de cada mercado, compara com as odds disponíveis, e envia automaticamente as value bets que passam nos filtros configurados para um canal do Telegram.

Fluxo de funcionamento

1
Leitura dos dados
O bot-engine lê o unified_data.json gerado pelo scraper. Extrai para cada jogo: equipas, data, hora, λH/λA (médias de golos esperados) e odds por mercado.
2
Cálculo da matriz de probabilidades
Para cada jogo, constrói uma matriz 10×10 de placares possíveis usando o modelo configurado (Poisson, Dixon-Coles, etc.) com os valores λH e λA desse jogo.
3
Cálculo do EV e Kelly
Para cada mercado ativo, calcula a probabilidade justa a partir da matriz e compara com a odd real: EV = (odd_real × prob_justa − 1) × 100%. Calcula também o stake recomendado via Critério de Kelly.
4
Filtros por mercado
Aplica os thresholds individuais: EV mínimo, probabilidade mínima, range de odds. Jogos que já iniciaram são automaticamente ignorados (buffer de 5 minutos antes do kickoff).
5
Deduplicação e envio
Compara com o histórico local para evitar reenvios da mesma dica no mesmo dia. As dicas aprovadas são enviadas ao Telegram e registadas no Fechamento para acompanhamento de resultados.
6
Ciclo periódico
O bot repete o processo no intervalo configurado (padrão: 30 min). Também re-analisa automaticamente quando o ficheiro de dados é atualizado pelo scraper.
02

Instalação e Primeiro Arranque

Pré-requisitos

ComponenteVersãoNotas
Node.js≥ 18LTS recomendado
npm≥ 9Incluído com Node.js
unified_data.jsonGerado pelo scraper do Lion QuantEdge

Instalação

# 1. Instalar dependências
cd /var/www/BotLionQuant
npm install

# 2. Iniciar o servidor do manager
node server.js

# Ou via PM2 (recomendado em produção)
pm2 start server.js --name lion-bot
pm2 save

Primeiro acesso

1
Abrir o painel
Aceder a http://seudominio.com:5562 (ou localhost:5562 localmente)
2
Login inicial
Email: admin@lionsportstrading.com · Senha: lion2026 — alterar imediatamente em Admin → Utilizadores
3
Configurar caminho dos dados
Ir a Sistema → campo "Caminho do unified_data.json" → inserir o caminho completo: /var/www/BotLionQuant/data/unified_data.json → Guardar
4
Configurar Telegram
Ir a Telegram → inserir token do bot e chat ID do canal → Testar → Guardar
5
Configurar mercados e iniciar
Configurar os mercados ativos com os thresholds desejados → clicar ▶ Iniciar no topo
💡
O bot-engine é iniciado e parado pelo próprio painel — não é necessário executar manualmente. O Manager Server (node server.js) apenas precisa de estar sempre a correr.
03

Configuração do Telegram

Cada utilizador tem as suas próprias credenciais Telegram — token e canal completamente independentes.

Como obter o Token do Bot

1
Criar um bot no @BotFather
Abrir o Telegram → pesquisar @BotFather → enviar /newbot → seguir as instruções. Guardar o token no formato 123456:ABC-DEF...
2
Obter o Chat ID do canal
Para um canal público: usar o username @nomecanal. Para canal privado: adicionar o bot ao canal → enviar uma mensagem → aceder a api.telegram.org/bot{TOKEN}/getUpdates → copiar o chat.id (valor negativo, ex: -1001234567890)
3
Testar a ligação
No painel → Telegram → preencher Token e Canal → clicar 📨 Testar → verificar se a mensagem chegou ao canal

Formato da mensagem enviada

🔥 VALUE BET
Sporting CP vs Arsenal
📅 2026-04-07 · 20:00
🏆 Liga Nível 1
🎯 Mercado: Over 2.5 Gols
💰 Odd: 1.95 Justa: 1.62
📊 Prob: 61.7% EV: +20.3%
📐 Stake: R$ 100.00 (1% da banca)
Biv.Poisson · xG 2.10 — 1.45
CampoSignificado
🔥 / ⚡ / ✅Badge de EV: 🔥 ≥ 15% · ⚡ ≥ 10% · ✅ ≥ 5%
Odd RealOdd disponível na casa de apostas, lida do JSON
Odd Justa1 / probabilidade_modelo — sem margem da casa
ProbProbabilidade calculada pelo modelo para este mercado
EVEdge real em %: (odd_real × prob − 1) × 100
StakeValor recomendado pela gestão de banca configurada
xG H — AGolos esperados por equipa usados no modelo
04

Modelos Estatísticos

O bot partilha exatamente o mesmo motor matemático do Lion QuantEdge. A diferença é que no QuantEdge você explora os cálculos interativamente; aqui, o bot executa automaticamente com as configurações guardadas.

📐 Poisson
Modelo clássico. Gols de cada equipa são independentes e seguem distribuição de Poisson com médias λH e λA.
Usar para: Overs altos (3.5+), mercados de gols onde correlação é baixa
🎯 Dixon-Coles
Correção para placares baixos (0-0, 1-0, 0-1, 1-1). Parâmetro ρ (rho) ajusta a dependência nesses placares.
Usar para: BTTS Não, Under 2.5, mercados onde 0-0 e 1-0 são frequentes. Melhor modelo geral.
0️⃣ ZIP (Zero-Inflado)
Aumenta a probabilidade de zero gols além do esperado pelo Poisson. πH e πA controlam a inflação de zeros por equipa.
Usar para: Ligas defensivas, equipas com muitos 0-0, Under 1.5
📊 Neg. Binomial
Permite overdispersão — maior variância que o Poisson. φH e φA controlam a dispersão de cada equipa.
Usar para: Ligas com alta variância de golos, equipas imprevisíveis
🔗 Biv. Poisson (Bivariate)
Introduz correlação positiva entre os golos das duas equipas através de um terceiro processo de Poisson partilhado. Parâmetro cov controla a força da correlação.
Usar para: BTTS Sim (correlação positiva entre atacantes), Over 2.5, jogos de alto ritmo onde ambas as equipas tendem a marcar juntas

Modelo por Mercado

Cada mercado pode ter o seu próprio modelo independente, substituindo o modelo global. Esta funcionalidade permite, por exemplo:

MercadoModelo RecomendadoPorquê
Over 2.5 GolsBiv. Poisson (cov 0.15)Captura correlação entre atacantes
BTTS SimBiv. Poisson (cov 0.10-0.20)Correlação explica ambas marcarem
BTTS NãoDixon-Coles (ρ -0.13)Corrige sobre-representação de 0-0
Under 1.5ZIP (π 0.15)Inflação de zeros em ligas defensivas
Under 2.5Dixon-ColesMelhor calibração geral nos baixos
Over 3.5+PoissonCorrelação irrelevante a placares altos
ℹ️
Se nenhum modelo específico for selecionado para um mercado, o mercado usa o modelo global configurado no painel Modelo. A configuração por mercado sobrepõe-se à global apenas para aquele mercado.

Parâmetros recomendados por contexto

ContextoModeloParâmetros
Uso geral (padrão)Dixon-Colesρ = −0.13
Ligas top europeuDixon-Colesρ = −0.15 a −0.18
Ligas defensivas / Sul AméricaZIPπH = πA = 0.12 a 0.18
Ligas de gols / CopaBiv. Poissoncov = 0.10 a 0.20
Alta imprevisibilidadeNeg. BinomialφH = φA = 3 a 8
05

Mercados — Configuração Individual

Cada mercado tem os seus próprios thresholds independentes. Esta configuração granular é a principal vantagem do sistema — permite exigir critérios diferentes para mercados com características distintas.

Os 4 parâmetros por mercado

ParâmetroO que controlaEfeito
EV Mínimo (%)Edge mínimo exigidoMais alto = menos dicas, mais seletivo
Prob. Mínima (%)Confiança do modeloMais alto = só eventos com prob. elevada
Odd MínimaFiltra odds sem valorElimina mercados sobre-cotados pela casa
Odd MáximaFiltra odds excessivasElimina eventos onde o modelo pode errar mais

Configurações recomendadas por mercado

⚡ Over 2.5 Gols RECOMENDADO
EV mín: +10 a +15%
Prob mín: 60-65%
Odd: 1.45 – 2.20
Modelo: Biv. Poisson
✅ BTTS Sim RECOMENDADO
EV mín: +10 a +15%
Prob mín: 60-65%
Odd: 1.50 – 2.20
Modelo: Biv. Poisson
▼ Under 3.5 Gols MODERADO
EV mín: +12 a +15%
Prob mín: 65-70%
Odd: 1.40 – 2.00
Modelo: Dixon-Coles
⚡ Over 1.5 Gols MODERADO
EV mín: +8%
Prob mín: 70%+
Odd: 1.20 – 1.80
Modelo: Dixon-Coles
🔥 Over 3.5 Gols AVANÇADO
EV mín: +15%+
Prob mín: 40-50%
Odd: 1.60 – 4.00
Modelo: Poisson
❌ BTTS Não AVANÇADO
EV mín: +10%
Prob mín: 55%
Odd: 1.30 – 2.50
Modelo: Dixon-Coles
⚠️
Atenção ao range de odds. Odds muito baixas (ex: Over 0.5 a 1.05) têm EV positivo matemático mas a margem real é muito pequena e não compensa o risco operacional. Filtrar a partir de 1.30–1.40 é geralmente mais saudável para o bankroll.

Como o EV mínimo afeta o volume de dicas

EV MínimoVolume esperadoPerfil
+5%Alto (20-50 dicas/dia)Explorativo — confirmar edge real ao longo do tempo
+10%Médio (5-15 dicas/dia)Equilibrado — bom para começar
+15%Baixo (1-5 dicas/dia)Conservador — alta seletividade, baixa frequência
+20%+Muito baixo (<2/dia)Ultra-seletivo — apenas grandes oportunidades
06

Stake / Gestão de Banca

📐
Kelly Criterion
Calcula automaticamente a stake ótima com base no EV e na probabilidade. Usa fração (¼, ½ ou Pleno) da banca total configurada.
🔒
Stake Fixa
Valor fixo em R$ por aposta, independente do EV. Simples de gerir, sem variação de risco entre dicas.
📊
% da Banca
Percentagem fixa da banca total por aposta. Crescimento proporcional ao bankroll, fácil de entender.

Fração de Kelly — qual usar?

FraçãoRiscoCrescimentoRecomendação
¼ KellyBaixo75% do ótimo✅ Padrão recomendado para uso real
½ KellyMédio~90% do ótimoSó com histórico de edge confirmado
Kelly PlenoAlto100% do ótimo❌ Não recomendado — draws elevados
💡
Exemplo com ¼ Kelly: Banca R$ 10.000 · Over 2.5 a 1.95 com 61.7% de prob → Kelly pleno = 10% → ¼ Kelly = 2.5% = R$ 250 por aposta.

Quando usar % da Banca

A stake por percentagem (ex: 1%) é ideal para quem ainda está a validar o sistema ou prefere uma gestão mais simples e controlada. Com 1%, mesmo 20 dicas perdidas consecutivas reduzem a banca em apenas ~18%, mantendo sempre capital para recuperar.

07

Filtros Globais

Os filtros globais aplicam-se antes das regras individuais de cada mercado. Atualmente o único filtro global disponível é o Nível de Liga.

Filtro por Nível de Liga

Os níveis no sistema seguem a numeração do scraper. Deixar o campo vazio aceita todas as ligas.

NívelTipo de competiçãoExemplos
1Top divisão nacionalPremier League, La Liga, Série A, Bundesliga
2Segunda divisãoChampionship, Segunda División, Série B
3Terceira divisãoLeague One, Segunda B, Série C
4+Divisões inferioresLigas regionais, semiprofissionais
15 / OutrosCopas e torneiosChampions League, Copa do Rei, Copa do Brasil
⚠️
Ligas de nível 4+ têm menos dados históricos de qualidade e as odds dos scrapers podem ser menos fiáveis. Para uso conservador, considerar filtrar com 1,2,3 inicialmente.
08

Fechamento Manual e Automático

O painel Fechamento é onde se regista o resultado final de cada dica enviada. Cada utilizador tem o seu histórico completamente separado.

Fechamento Manual

Para cada dica pendente, clicar no botão ✏️ Fechar e selecionar:

ResultadoQuando usar
GREENA dica ganhou — o mercado apostado aconteceu
REDA dica perdeu
⚠️ VOIDJogo cancelado, adiado ou resultado anulado — stake devolvida

Ao fechar, é enviada automaticamente uma notificação ao canal Telegram do utilizador com o resultado. Se a mensagem original ainda estiver disponível, é editada no próprio Telegram.

Filtros do Fechamento

FiltroOpções
MercadoBotões dinâmicos gerados a partir das dicas existentes
StatusTodos · ⏳ Pendentes · ✅ Fechados
PeríodoTodos · Hoje · Ontem · 7 dias · Data específica
OrdenarData envio · Odds · EV · Mercado A-Z

Auto-Fechamento via API-Football

O sistema pode fechar dicas automaticamente usando resultados reais da API-Football. Configurado no painel Sistema.

1
Obter API Key
Registar em api-football.com → plano gratuito inclui 100 chamadas/dia, suficiente para uso normal
2
Configurar em Sistema
Inserir a API Key → Threshold 82% (recomendado) → Intervalo 4h → Activar Scheduler → Guardar
3
Verificar aliases se necessário
Se um jogo não está a ser fechado automaticamente, é porque o nome da equipa na API-Football difere do nome nas dicas. Usar a ferramenta Testar Matching para verificar o score e depois criar um alias.
ℹ️
Threshold 82% significa que só fecha automaticamente quando o algoritmo tem ≥ 82% de confiança de que o jogo da dica corresponde ao fixture da API-Football. Abaixo disso, fica pendente para fechamento manual. Valor recomendado: 80–85%.

Performance por Mercado

No painel Fechamento, clicar em "📊 Ver Performance por Mercado" para ver ROI%, Win Rate e Lucro separados por mercado. Isto permite identificar rapidamente quais mercados estão a gerar retorno real e ajustar as configurações.

09

Sistema — API-Football e Aliases

Aliases de Nomes de Equipas

A API-Football usa nomes ligeiramente diferentes dos nomes no scraper. Exemplos comuns:

Nome na dicaNome na API-Football
Atletico MadridAtletico de Madrid · Atlético de Madrid
PSGParis Saint-Germain · Paris SG
Man CityManchester City
BenficaSL Benfica · Sport Lisboa e Benfica

Como criar um alias

1
Testar o match atual
Sistema → "🔍 Testar Matching" → inserir nome da dica e nome da API-Football → ver score. Se ≥ 82% já funciona automaticamente.
2
Criar alias se score baixo
"➕ Adicionar Alias" → Nome canónico (como aparece na dica) → Aliases: um por linha, todos os nomes possíveis na API-Football → Guardar
3
Verificar novamente
Testar novamente → agora deve mostrar ≥ 100% (match exato após normalização)
💡
O algoritmo de matching já normaliza automaticamente: remove acentos, ignora sufixos FC/SC/CF, converte para minúsculas. Na maioria dos casos, nomes semelhantes já fazem match acima de 82% sem alias.
10

Multi-Utilizador

O sistema suporta múltiplos utilizadores com isolamento total. Cada utilizador tem os seus próprios:

RecursoIsolamentoFicheiro
Configuração (modelo, mercados, stake)✅ Totaldata/bot-config-{id}.json
Token e Canal do Telegram✅ TotalDentro do bot-config
Log do bot✅ Totaldata/bot.log-{id}
Histórico de dicas enviadas✅ Totaldata/bot-history-{id}.json
Fechamento (resultados)✅ Totaldata/fechamento-{id}.json
API-Football key e aliasesPartilhado (admin)data/bot-system.json
Caminho do unified_data.jsonPartilhado (admin)data/bot-system.json

Switcher de utilizador (admin)

O admin pode gerir a conta de qualquer utilizador sem fazer logout: no topo da sidebar existe um dropdown "A gerir". Ao selecionar outro utilizador, todas as operações (config, bot, fechamento) são executadas no contexto desse utilizador.

Criar novo utilizador

1
Admin → Utilizadores → + Novo
Preencher nome, email, senha e função (Admin ou Visualizador)
2
Configurar conta do novo utilizador
Usar o switcher "A gerir" → selecionar novo utilizador → configurar o seu Token Telegram, Canal, Mercados e Stake individualmente
3
Iniciar o bot
Com a conta do novo utilizador selecionada → clicar ▶ Iniciar. O bot-engine corre como processo separado para cada utilizador.
11

Simulador

O Simulador lê o unified_data.json atual e passa todos os jogos pelos filtros configurados sem enviar nada ao Telegram. Ideal para testar e afinar configurações antes de ligar o bot.

Como interpretar os resultados

ColunaSignificado
Odd RealOdd disponível no scraper
Odd Justa1/prob_modelo — sem margem da casa
ProbProbabilidade calculada pelo modelo para este mercado
EVExpected Value em % — verde ≥ threshold, vermelho abaixo
ModeloModelo usado (global ou override do mercado)
Status ✅ PASSAPassaria todos os filtros e seria enviado
Status ✗ EV <10%Falhou neste critério específico
💡
Fluxo de calibração recomendado: 1) Correr o Simulador com as configurações atuais → 2) Ver quantas dicas passam e com que EV → 3) Ajustar thresholds → 4) Repetir até chegar ao volume e qualidade desejados → 5) Ligar o bot.
12

Configurações Recomendadas

Configuração de referência para começar — baseada nos padrões usados em ambiente real.

Perfil Conservador (baixo volume, alta seletividade)

Modelo global:     Dixon-Coles  ρ = -0.13
Stake:             1% da banca  (ou Kelly ¼)
Intervalo:         30 minutos

Over 2.5 Gols
  EV ≥ +15%  |  Prob ≥ 65%  |  Odd 1.48 – 2.20  |  Modelo: Biv.Poisson

BTTS — Ambas Marcam
  EV ≥ +15%  |  Prob ≥ 65%  |  Odd 1.50 – 2.20  |  Modelo: Biv.Poisson

Under 3.5 Gols
  EV ≥ +15%  |  Prob ≥ 70%  |  Odd 1.40 – 2.00  |  Modelo: Dixon-Coles

Perfil Moderado (volume médio, equilibrado)

Modelo global:     Biv. Poisson  cov = 0.15
Stake:             2% da banca
Intervalo:         30 minutos

Over 1.5 Gols
  EV ≥ +8%   |  Prob ≥ 72%  |  Odd 1.20 – 1.80  |  Modelo: global

Over 2.5 Gols
  EV ≥ +10%  |  Prob ≥ 60%  |  Odd 1.40 – 2.50  |  Modelo: global

BTTS — Ambas Marcam
  EV ≥ +10%  |  Prob ≥ 60%  |  Odd 1.45 – 2.20  |  Modelo: global

Under 2.5 Gols
  EV ≥ +8%   |  Prob ≥ 50%  |  Odd 1.30 – 2.20  |  Modelo: Dixon-Coles

Dicas gerais de calibração

Começar sempre conservador. É muito mais fácil relaxar os filtros depois de ver resultados positivos do que apertar depois de perdas. Começar com EV ≥ +15% e ir descendo gradualmente.
Usar o Simulador antes de ligar. Correr o simulador com os dados do dia e verificar quantas dicas passam. Um volume de 2-5 dicas/dia é saudável para começar.
⚠️
EV calculado ≠ EV real garantido. O modelo usa os xG do scraper como input. Se os xG estiverem mal calibrados, o EV também estará. Monitorizar o ROI real no Fechamento e comparar com o EV médio das dicas.
⚠️
Odds muito apertadas (1.05–1.25) são perigosas. Mesmo com EV positivo, qualquer erro no xG ou variância no modelo pode tornar o edge negativo. Recomendar odd mínima de 1.30 em todos os mercados.
🚫
Nunca usar Kelly Pleno. O Kelly completo assume que os inputs do modelo são perfeitos. Como nunca são, o Kelly pleno causa drawdowns severos. Usar sempre ¼ Kelly ou stake fixa.

Sinais de que os filtros estão bem calibrados

IndicadorValor saudávelAção se fora
Dicas por dia2–8Ajustar EV mínimo (subir para reduzir, descer para aumentar)
Win Rate (Fechamento)≥ 55% (após 50+ apostas)Aumentar Prob. Mínima se abaixo
ROI realPróximo do EV médio das dicasSe muito abaixo, rever calibração dos xG
EV médio das dicas+12% a +25%Se abaixo de +8%, subir EV mínimo