Olá, Habr! Neste artigo, explicarei como ganhei dinheiro com apostas esportivas usando Python e matemática básica. Quem se importa, bem-vindo sob o corte!
Garfo de casa de apostas
Existe um termo nas apostas desportivas como bifurcação da casa de apostas. A surebet é uma situação em que a diferença nas probabilidades em duas ou mais casas de apostas permite que você faça uma aposta em cada resultado mutuamente exclusivo com casas de apostas diferentes e continue lucrando com qualquer resultado. Começaremos procurando por essas surebets.
Como funciona?
, 16.07 . . marathonbet:
: 1/K1 +1/K2 1, , , ,
K1 —
K2 — .
. marathonbet , plusminus , , 1/1.125+ 1/3.92 = 1.1439909297052153. , : 1/5.7 + 1/1.24 = 0.9818902093944539 , .
?
, , : ? :
summa_min = (K1 x summa_max)/K2, K1<K2;
summa_max — , ;
summa_min — , .
. , , 100$, summa_min = ( 1.24 x100)/5.7; summa_min = 21.75438596491228$. , 5.7 21.75438596491228$, 1.24 100$, 2.2456140350877263$. , 21.75438596491228$ , , .
, , , , . :
import requests
from bs4 import BeautifulSoup
from difflib import SequenceMatcher
from collections import defaultdict
html- :
def get_html(url):
r = requests.get(url)
return r.text
marathonbet:
def get_all_event_marathonbet(html):
all_players = []
all_K = []
soup = BeautifulSoup(html, 'lxml')
all_event = soup.find('div',
class_ = "sport-category-content").find_all('div',
class_='bg coupon-row')
for players in all_event:
players = players['data-event-name'].\
replace('- ', '.').split('.')
player_1 = players[1].strip()
player_2 = players[3].strip()
all_players.append(player_1)
all_players.append(player_2)
for g in all_event:
K1 = g.find('td',colspan="1").find('span',
class_="selection-link active-selection").text
K2 = g.find('td', colspan="1").find('span',
class_="selection-link active-selection").\
findNext('span').text
all_K.append(K1)
all_K.append(K2)
return all_players, all_K
, github. , , :
def create_arr_couple(arr_players):
arr_couple = []
for i in range(0, len(arr_players), 2):
arr_couple.append(arr_players[i] + ' V '
+ arr_players[i + 1])
return arr_couple
, : {' V ': ['1.24', '3.92']}. :
def create_dict(arr_couple, arr_key):
cat = defaultdict(list)
scet = 0
try:
for i in range(len(arr_couple)):
cat[arr_couple[i]].append(arr_key[scet])
cat[arr_couple[i]].append(arr_key[scet + 1])
scet += 2
return dict(cat)
except IndexError:
print('ERROR!')
4 , :
1) :
def similar(a, b):
return SequenceMatcher(None, a, b).ratio()
0 1, , , -. , Sarmiento , .
2) 1/K1 +1/K2 :
def find_vilka(K1, K2):
return 1/float(K1)+1/float(K2)
3) , :
def profit(K, summa_max,summa_min):
print(" : "+
str((float(K)*summa_max)-summa_min-summa_max))
4) , :
def raschet_vilki(K1,K2,summa_max = 100):
if K1<K2:
summa_min = (float(K1)*summa_max)/float(K2)
print(' {}'.format(K1)+
' {} '.format(summa_max))
print(' {}'.format(K2) +
' {} '.format(summa_min))
profit(K1, summa_max, summa_min)
else:
summa_min = (float(K2) * summa_max) / float(K1)
print(' {}'.format(K1) +
' {} '.format(summa_min))
print(' {}'.format(K2) +
' {} '.format(summa_max))
profit(K2, summa_max, summa_min)
Assim, em pouco mais de um mês consegui ganhar $ 30 com um investimento de $ 120. Sim, não é muito, já que o programa foi escrito para duas casas de apostas, apenas para tênis e eu monitorava as probabilidades de jogos de 3 a 5 vezes ao dia. Em média, consegui encontrar dois garfos por dia. Basicamente, havia apostas certas de 0. 97 e superiores, que, respectivamente, trouxeram apenas alguns por cento da aposta.