joaomaia commited on
Commit
5fdfbc2
·
verified ·
1 Parent(s): 1e8f418

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +63 -0
app.py ADDED
@@ -0,0 +1,63 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import pandas as pd
2
+ import gradio as gr
3
+
4
+ # Função para determinar a faixa de probabilidade
5
+ def determinar_faixa(prob):
6
+ if 0.95 <= prob <= 1.00:
7
+ return "95-100%"
8
+ elif 0.90 <= prob < 0.95:
9
+ return "90-95%"
10
+ elif 0.80 <= prob < 0.90:
11
+ return "80-85%"
12
+ elif 0.70 <= prob < 0.80:
13
+ return "70-75%"
14
+ elif 0.60 <= prob < 0.70:
15
+ return "60-65%"
16
+ elif 0.50 <= prob < 0.60:
17
+ return "50-55%"
18
+ else:
19
+ return None
20
+
21
+ # Função principal para calcular EV ajustado e proporção de aposta
22
+ def calcular(df_jogos, df_precisao):
23
+ df_jogos['faixa'] = df_jogos['probabilidade'].apply(determinar_faixa)
24
+ df_jogos = df_jogos.merge(df_precisao, left_on='faixa', right_on='Faixa', how='left')
25
+
26
+ df_jogos['EV'] = df_jogos['probabilidade'] * df_jogos['retorno'] - (1 - df_jogos['probabilidade'])
27
+ df_jogos['EV_ajustado'] = df_jogos['EV'] * df_jogos['Precisao']
28
+ df_jogos['proporcao_aposta'] = df_jogos['EV_ajustado'] / df_jogos['EV_ajustado'].sum()
29
+
30
+ return df_jogos[['id_jogo', 'retorno', 'probabilidade', 'faixa', 'Precisao', 'EV', 'EV_ajustado', 'proporcao_aposta']]
31
+
32
+ # Interface Gradio
33
+ def gradio_interface(data):
34
+ df_jogos = pd.DataFrame(data)
35
+
36
+ # Faixas de probabilidade e suas precisões correspondentes
37
+ dados_precisao = {
38
+ "Faixa": ["50-55%", "60-65%", "70-75%", "80-85%", "90-95%", "95-100%"],
39
+ "Precisao": [0.784753, 0.786517, 0.818182, 0.822222, 0.853618, 0.902997]
40
+ }
41
+
42
+ df_precisao = pd.DataFrame(dados_precisao)
43
+
44
+ # Calcular EV ajustado e proporção de aposta
45
+ result_df = calcular(df_jogos, df_precisao)
46
+
47
+ return result_df
48
+
49
+ # Definição das entradas para Gradio
50
+ inputs = [
51
+ gr.inputs.Dataframe(headers=["id_jogo", "retorno", "probabilidade"], datatype=["number", "number", "number"])
52
+ ]
53
+
54
+ # Definição da saída
55
+ output = gr.outputs.Dataframe()
56
+
57
+ # Construção da interface Gradio
58
+ iface = gr.Interface(fn=gradio_interface, inputs=inputs, outputs=output, title="Calculadora de Apostas",
59
+ description="Insira os dados das apostas (id_jogo, retorno_odds, probabilidade modelo) para calcular EV ajustado e proporção de aposta.")
60
+
61
+ # Executa a interface
62
+ if __name__ == "__main__":
63
+ iface.launch()