joaomaia commited on
Commit
ced7bae
·
verified ·
1 Parent(s): e22cd7c

Update app.py

Browse files

Explicação das Modificações:
Novas Entradas: Foram adicionados sliders para definir o percentual máximo e mínimo da banca que pode ser apostado em cada aposta.

Cálculo do Percentual Recomendado:

A função calcular_percentual_recomendado usa a fórmula de Kelly adaptada, mas limita o resultado ao intervalo definido pelo usuário (mínimo e máximo).
A fração de Kelly é calculada com base na probabilidade fornecida pelo modelo e ajustada dentro dos limites definidos.
Interface Gradio: A interface agora inclui os sliders para definir os percentuais máximo e mínimo, e o resultado inclui o percentual recomendado da banca para a aposta, além das informações anteriores.

Files changed (1) hide show
  1. app.py +36 -23
app.py CHANGED
@@ -10,7 +10,23 @@ def converter_para_float(valor):
10
  # Substitui vírgula por ponto e converte para float
11
  return float(valor.replace(',', '.'))
12
 
13
- def fazer_previsao(ODD_H, ODD_D, ODD_A):
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14
  # Converter entradas para float
15
  ODD_H = converter_para_float(ODD_H)
16
  ODD_D = converter_para_float(ODD_D)
@@ -18,6 +34,7 @@ def fazer_previsao(ODD_H, ODD_D, ODD_A):
18
 
19
  data = pd.DataFrame(
20
  {'H/A': [ODD_H / ODD_A], 'Diff': [(ODD_H / ODD_D) - (ODD_H / ODD_A)]})
 
21
  previsao_LayAway = model_LayAway.predict(data)[0]
22
  previsao_LayHome = model_LayHome.predict(data)[0]
23
 
@@ -33,43 +50,39 @@ def fazer_previsao(ODD_H, ODD_D, ODD_A):
33
  100 * model_LayAway.predict_proba(data)[0][1], 2)
34
  probabilidade_LayHome = round(
35
  100 * model_LayHome.predict_proba(data)[0][1], 2)
36
-
37
- if probabilidade_LayAway > 68.2:
38
- entrada_Home = 'SIM'
39
- else:
40
- entrada_Home = 'NAO'
41
-
42
- if (probabilidade_LayAway < 26.1) & (probabilidade_LayHome > 88.5):
43
- entrada_Away = 'SIM'
44
- else:
45
- entrada_Away = 'NAO'
46
-
47
- if previsao_LayHome == 1:
48
- entrada_LayHome = 'SIM'
49
- else:
50
- entrada_LayHome = 'NAO'
51
 
52
  resultado = f"entrada LayAway (se Odd> 1.17): {entrada_LayAway}\n" \
53
  f"---> probabilidade: {probabilidade_LayAway}%\n" \
 
54
  f"\n" \
55
- f"entrada Home: {entrada_Home}\n" \
56
  f"obs: Muito risco, apenas 67% de acerto (odds>1.489)\n" \
57
  f"\n" \
58
- f"entrada LayHome (se Odd> 1.28): {entrada_LayHome}\n" \
59
  f"---> probabilidade: {probabilidade_LayHome}%\n" \
60
- f"\n" \
61
 
62
  return resultado
63
 
64
  # Criar uma interface Gradio
65
  iface = gr.Interface(
66
  fn=fazer_previsao,
67
- inputs=[gr.Textbox(label="Odds para CASA vencer"),
68
- gr.Textbox(label="Odds para EMPATE"),
69
- gr.Textbox(label="Odds para VISITANTE vencer")],
 
 
 
 
70
  outputs="text",
71
  title="Redução de Risco em Apostas",
72
- description="Insira as Odds e obtenha uma sugestão para entradas LayAway (CASA vence ou EMPATA) e LayHome (VISITANTE vence ou EMPATA)."
73
  )
74
 
75
  iface.launch()
 
10
  # Substitui vírgula por ponto e converte para float
11
  return float(valor.replace(',', '.'))
12
 
13
+ def calcular_percentual_recomendado(probabilidade, max_percent, min_percent):
14
+ # Usar a fórmula de Kelly ajustada
15
+ b = 1 # Supondo odds justas (ajuste de acordo com suas odds reais)
16
+ p = probabilidade / 100
17
+ q = 1 - p
18
+
19
+ # Calcula a fração de Kelly
20
+ f_star = (b * p - q) / b
21
+
22
+ # Ajustar para dentro dos limites fornecidos
23
+ f_star = max(min(f_star, max_percent / 100), min_percent / 100)
24
+
25
+ # Converte para percentual
26
+ percentual_recomendado = round(f_star * 100, 2)
27
+ return percentual_recomendado
28
+
29
+ def fazer_previsao(ODD_H, ODD_D, ODD_A, max_percent, min_percent):
30
  # Converter entradas para float
31
  ODD_H = converter_para_float(ODD_H)
32
  ODD_D = converter_para_float(ODD_D)
 
34
 
35
  data = pd.DataFrame(
36
  {'H/A': [ODD_H / ODD_A], 'Diff': [(ODD_H / ODD_D) - (ODD_H / ODD_A)]})
37
+
38
  previsao_LayAway = model_LayAway.predict(data)[0]
39
  previsao_LayHome = model_LayHome.predict(data)[0]
40
 
 
50
  100 * model_LayAway.predict_proba(data)[0][1], 2)
51
  probabilidade_LayHome = round(
52
  100 * model_LayHome.predict_proba(data)[0][1], 2)
53
+
54
+ percentual_recomendado = calcular_percentual_recomendado(
55
+ probabilidade_LayAway if entrada_LayAway == 'SIM' else probabilidade_LayHome,
56
+ max_percent,
57
+ min_percent
58
+ )
 
 
 
 
 
 
 
 
 
59
 
60
  resultado = f"entrada LayAway (se Odd> 1.17): {entrada_LayAway}\n" \
61
  f"---> probabilidade: {probabilidade_LayAway}%\n" \
62
+ f"---> Percentual recomendado da banca: {percentual_recomendado}%\n" \
63
  f"\n" \
64
+ f"entrada Home: {'SIM' if probabilidade_LayAway > 68.2 else 'NAO'}\n" \
65
  f"obs: Muito risco, apenas 67% de acerto (odds>1.489)\n" \
66
  f"\n" \
67
+ f"entrada LayHome (se Odd> 1.28): {'SIM' if previsao_LayHome == 1 else 'NAO'}\n" \
68
  f"---> probabilidade: {probabilidade_LayHome}%\n" \
69
+ f"---> Percentual recomendado da banca: {percentual_recomendado}%\n"
70
 
71
  return resultado
72
 
73
  # Criar uma interface Gradio
74
  iface = gr.Interface(
75
  fn=fazer_previsao,
76
+ inputs=[
77
+ gr.Textbox(label="Odds para CASA vencer"),
78
+ gr.Textbox(label="Odds para EMPATE"),
79
+ gr.Textbox(label="Odds para VISITANTE vencer"),
80
+ gr.Slider(5, 40, label="Percentual Máximo da Banca (%)"),
81
+ gr.Slider(5, 40, label="Percentual Mínimo da Banca (%)")
82
+ ],
83
  outputs="text",
84
  title="Redução de Risco em Apostas",
85
+ description="Insira as Odds e obtenha uma sugestão para entradas LayAway (CASA vence ou EMPATA) e LayHome (VISITANTE vence ou EMPATA), juntamente com o percentual recomendado da banca."
86
  )
87
 
88
  iface.launch()