Quand tout semble être contre vous, souvenez-vous que l'avion décolle face au vent, et non avec lui.
Henry Ford
Si vous êtes familier de ce genre de visuel cette application d'aide aux paris est vraiment faites pour vous!
Cette image est extraite du très pratique cotes.fr dont la vocation est de comparer les côtes de différents sites de paris sportifs
En saisissant ces côtes dans l'application on obtient :
Un surebet, littéralement un pari certain, est un événement rare qui permet au parieur d'empocher de façon certaine un peu d'argent.
Imaginons un match de tennis entre John Doe (côté à 1.8/1) et Paul Smith (côté à 3.6/1). Savez-vous qu'il est possible de gagner de façon certaine ?
Avec l'application :
Ainsi si on joue 2€ à 1.8/1 et 1€ à 3.6/1 on dépense 3€... Si John l'emporte on gagne 2x1.8=3.6 € pour un bénéfice net de 0.60€. Si par contre il perd, Paul l'emporte, on empoche 3.6€ pour un bénéfice de 0.60€
Ainsi le bénéfice minimum est de 0.60€ pour un investissement de 3€ soit 20% du capital investi !
Quand le surebet n'est pas envisageable l'application vous informe sur les variations de côtes nécessaires pour rendre un tel pari possible !
Beaucoup plus fréquent que le surebet est le valuebet. Il s'agit d'un pari, pas toujours gagnant (donc risqué au sens probabiliste) mais rentable : Il s'appuie sur un erreur de cotation des bookmakers.
Pour bien comprendre le valuebet je vous conseille la lecture de cet article sur le blog
Code Python traduit en HTML:
# -*- coding: utf-8 -*-
# version 1.0.0
# by Laurent Petitprez
"""Cette œuvre est mise à disposition sous licence Attribution 4.0 International.
Pour voir une copie de cette licence, visitez http://creativecommons.org/licenses/by/4.0/
ou écrivez à Creative Commons, PO Box 1866, Mountain View, CA 94042, USA."""
bankroll_max=100
def moyenne(liste):
"""renvoie la moyenne d'une liste
cela correspond à la fonction moyenne du module statistics"""
num=0
liste=list(liste)
for l in liste:
num+=l
den=len(liste)
if den!=0:
return num/den
else:
return "Erreur : liste vide"
def cout(args):
x=0
for i in args:
x+=i
return x
def gain_min(l,args):
gains=[]
for k in range(len(l)):
gains.append(args[k]*l[k])
return min(gains)
def cherche_valuebet(l):
"""l est une liste de cote (*1000) - nombres entiers"""
## print("Recherche de Value Bet avec les côtes moyennes." )
probas=[1000/x for x in l]
somprobas=0
for p in probas:
somprobas+=p
benef_bm=round(somprobas,2)
return [round(1000*benef_bm/x) for x in probas]
def test_surebet(l):
"""l est une liste de cote (*1000) - nombres entiers"""
den=1
num=0
for c in l:
den*=c
for c in l:
num+=1000*den/c
if numprint("SureBet possible !" )
nb=len(l)
if nb>3:
print("Alerte : la recherche peut prendre beaucoup de temps !" )
mises_p=[x for x in range(bankroll_max+1)]
mises=[[x] for x in mises_p]
for i in range(nb-1):
mises=[x+[y] for x in mises for y in mises_p]
#mises contient les mises possibles
rentabilite=0
solution=[]
for m in mises:
if gain_min(l,m)>0:
if (gain_min(l,m)-cout(m)*1000)/cout(m)>rentabilite:
rentabilite=(gain_min(l,m)-cout(m)*1000)/cout(m)
solution=m
if len(solution)==0:
print("Pas de solution avec les contraintes financières !" )
return True
else:
print ("Rentabilité maximum " ,round(rentabilite/10,2),"%" )
print("Mises :" ,end=" " )
for s in solution:
print(s,"€(" ,round(l[solution.index(s)]/1000,2),"/1)" , end=" " )
print()
print( "coût :" , cout(solution), "€" )
print ("Bénéfice minimum :" , round(gain_min(l,solution)/1000-cout(solution),2),"€" )
return True
else:
if num==den:
print("Cas limitte - La somme des probas associées est 1." )
return False
def cherche_surebet(l):
"""l est une liste de cote (*1000) - nombres entiers"""
co=0
for c in l:
co+=1000/c
if co>1:
print("Bookmakers (Plus value sur proba) :" ,round( (co-1)*100,2),"%" )
print("Corrections sur les meilleurs côtes pour Surebet :" )
for n in range(len(l)):
a=[]
for i in l:
if l.index(i)==n:
c=co-1000/i
if c>0 and c<1:
a.append(">" +str(round(1/(1-c),2)))
else:
a.append("+ infini" )
else:
a.append(round(i/1000,3))
for j in a:
print(j,end=" " )
print()
def uneliste():
global leslistes, fini
l=input("Liste " +str(len(leslistes)+1)+":" ).split()
li=list(round(float(x)*1000) for x in l if float(x)>1)
if len(l)>len(li):
print("alerte : Certaine valeurs ont été ignorées ! (" ,len(l)-len(li),")" )
if len(leslistes)>1 and len(li)==0:
fini=True
## print("Saisie terminée." )
return
elif len(li)==0:
print("liste vide : erreur" )
else:
#la liste n'est pas vide
if len(leslistes)==0:
leslistes.append(li)
elif len(leslistes[0])!=len(li):
print("Erreur :listes de longueurs différentes !" )
else :
leslistes.append(li)
caption={
"complet" :
"""Entrez les listes de côtes, séparées par des espaces.
Chaque valeur doit être un nombre décimal supérieur à 1 avec au plus 3 chiffres significatifs.
Si le nombre de chiffres est supérieure les valeurs sont arrondies.
Si un nombre est inférieur à 1, il est ignoré.
Vous pouvez ajouter autant de listes que vous le désirez, et finissez par ENTREE
Un seul imperatif : les listes doivent être de longueurs égales.
""" ,
"simple" :
"""Entrez les listes de côtes, séparées par des espaces. (3 chiffres significatifs)
Les listes doivent être de longueurs égales.""" ,
"minimum" :
"Listes de côtes : "
}
while 1:
fini=False
leslistes=[]
print(caption["minimum" ])
while not fini:
uneliste()
## print("Analyse :" )
## print("Nombre de bookmaker :" ,len(leslistes[0]),"Nombre de paris :" ,len(leslistes))
## print("côtes (minimum, moyenne, meilleure):" )
lesmax=[]
lesmoy=[]
for li in leslistes:
lesmax.append(max(li))
lesmoy.append(moyenne(li))
## print (round(min(li)/1000,2),round(moyenne(li)/1000,2),round(max(li)/1000,2))
if not(test_surebet(lesmax)):
print("Pas de SureBet !" )
vr=cherche_surebet(lesmax)
vb=cherche_valuebet(lesmoy)
print("Côtes en valuebet " ,end=":" )
for v in vb:
print(round(v/1000,2), end=" " )
print()
print("--------------------------------------------------------" )
print()
Mon travail vous intéresse et vous désirez participer aux frais du site ?
Vous pouvez faire un don ici