Un modello di ricerca operativa per le scommesse sportive

Un modello di ricerca operativa per le scommesse sportive
Di Cristiano Armellini, [email protected]
Supponiamo di dover giocare una certa somma di denaro (esempio s = 100 euro) sulla partita
MILAN- JUVE. Le quote SNAI sono quelle riportate nella tabella qui sotto: al risultato “1” +
pagato k1 volte la puntata, il paraggio paga k 2 volte mentre il risultato “2” è pagato k 3 volte la
posta.
MILAN
JUVE
Quote
1
X
k1
2
k2
k3
Come sviluppare un modello matematico che azzeri il rischio del gioco ? Va detto che in generale
un sistema sicuro può non esistere. Tuttavia ragioneremo in questo modo:
s è la somma che siamo disposti a investire ne gioco e x1 , x 2 x3 sono gli importi che giocheremo
rispettivamente nei risultati 1, X, 2 (un risultato deve uscire per forza). Quindi s = x1 + x 2 + x3 . Se
vincesse il MILAN (risultato 1) allora il nostro ricavo sarà r1 = k1 x1 − s , se ci fosse un pareggio
(risultato X) allora il nostro ricavo sarà r2 = k 2 x 2 − s mentre se vincesse la JUVE (risultato 2)
avremo ovviamente r3 = k 3 x3 − s . In tutti i tre i casi non vogliamo perdere il che equivale che i
nostri ricavi non dovranno mai essere negativi. Quindi il modello matematico sarà:
 f .obiettivo : s = x1 + x 2 + x3
r = k x − s ≥ 0
1 1
 1
o se voglio minimizzare S
r2 = k 2 x 2 − s ≥ 0
r = k x − s ≥ 0
3 3
3
var iabili : x1 , x 2 x3 > 0
 f .obiettivo : min( x1 + x 2 + x3 )
r = k x − s ≥ 0
1 1
1
r2 = k 2 x 2 − s ≥ 0

r3 = k 3 x3 − s ≥ 0
s = x1 + x 2 + x3 < MAX , s > 0

var iabili : x1 , x 2 x3 > 0
Oppure se voglio impostare una vincita con un importo minimo tenendo fissa la somma da giocare
1
 f .obiettivo : s = x1 + x 2 + x3
r = k x − s ≥ min
1 1
 1
r
=
k
2
2 x 2 − s ≥ min
r = k x − s ≥ min
3 3
3
var iabili : x1 , x 2 x3 > 0
Un’altra interessante variante (dove minimizzo la somma da giocare e imposto una quota minima da
vincere) è:
 f .obiettivo : minimo( x1 + x 2 + x3 )
r = k x − s ≥ min
1 1
1
r2 = k 2 x 2 − s ≥ min

r3 = k 3 x3 − s ≥ min
var iabili : x , x x > 0
1
2 3

s = x1 + x 2 + x3 < MAX

s > 0
Dove min è il valore minimo di guadagni che vogliamo comunque ottenere. Da notare che nei
modelli abbiamo posto le quote X_i > 0 ma più ragionevolmente potevamo metterle come
X_i > importo_minimo_giocabile come pure possiamo considerare solo X_i interi.
Fissate le quote e fissato l’importo complessivo che siamo disposti a giocare il problema è
determinare i singoli importi da investire nei singoli risultati per in modo tale da non perdere mai
qualsiasi risultato esca. Come abbiamo detto è un tipico problema di ricerca operativa che può
essere impostato e risolto con il risolutore di Microsoft Excel o di Open Office oppure usando
programmi più sofisticati non alla portata di tutti come il GAMS, il LINGO o il LINDO. Non è
detto però che il problema ammetta sempre soluzioni perché ciò dipende dall’importo che siamo
disposti a giocare ma soprattutto dalle quote che vengono assegnate ai risultati delle singole partite.
Un metodo combinatorio potrebbe essere quello di considerare le xi variabili intere positive (
semplificazione del modello, programmazione lineare intera) e controllare tra tutte le combinazioni
possibili quella che più si avvicina alla soluzione cercata. Una possibile variante più complessa al
problema è:
2
 f .obiettivo : z = max( x1k1 + x2 k 2 + x3 k 3 )
z > 0

s = x1 + x2 + x3

r1 = k1 x1 − s ≥ 0

r2 = k 2 x2 − s ≥ 0
r3 = k 3 x3 − s ≥ 0

s ≤ MAX , s ≥ 0
variabili : x , x x ≥ 0

1
2 3
Oppure
 f .obiettivo : z = max( x1 k1 + x 2 k 2 + x3 k 3 )
z > 0

s = x1 + x 2 + x3

r1 = k1 x1 − s ≥ min

r2 = k 2 x 2 − s ≥ min
r3 = k 3 x3 − s ≥ min

s ≤ MAX , s ≥ 0
variabili : x , x x ≥ 0
1
2 3

In questi ultimi due casi si può prendere anche in esame la possibilità di sostituire la funzione
obiettivo z = max( x1k1 + x2 k 2 + x3 k3 ) con z = max( x1k1 + x 2 k 2 + x3 k 3 − 3S )
min è il valore minimo di guadagni che vogliamo comunque ottenere.
Ovvero massimizzo la somma delle possibili vincite :è vero che può capitare solo un caso su tre ma
i vincoli del modello fanno sì che le soluzioni trovate avranno la caratteristica di far vincere poco o
nulla nei casi di maggiore probabilità (quelli che hanno un moltiplicatore dell’importo giocato
basso) ma potranno garantire guadagni più elevati del modello precedente nei casi in cui capiti
l’evento meno probabile. MAX è ovviamente il valore massimo che siamo disponibili a giocare (si
può comunque impostare S = MAX). Il modello esclude la possibilità che tutta la somma giocata,
per effetto della massimizzazione vada sul risultato meno probabile perché in questo modo non tutti
i vincoli di positività verranno rispettati.
3
Per aumentare le quote e quindi gli importi della vincita possiamo considerare tutti i risultati due
partite la prima (1,X,2) con quote K_11 per 1, K_12 per X, K_13 per 2 mentre la seconda (1,X;2)
con quote K_21 per 1, K_22 per X, K_23 per 2. Lo spazio degli eventi sarà costituito da ben 9
possibilità con le quote che sono il prodotto delle quote dei singoli risultati delle singole partite. La
quote quindi sono più alte ma sono maggiori i risultati da considerare (ben 9) tuttavia possiamo
applicare gli algoritmi precedenti adattandoli ai 9 possibili risultati dello spazio campionario per
verificare se si sono maggiori possibilità di guadagno.
Un modello matematico per la schedina totocalcio
Di Cristiano Armellini, [email protected]
Supponiamo di dover giocare una del totocalcio in modo “intelligente” ovvero in modo da
massimizzare le probabilità di vincita. Un modello potrebbe essere:
1 13− a −b 2 a 3 b

( ) ( )
max P = ( 3 )
3 3

a = numero di doppie
b = numero di tripe

v1 = costo delle doppie
v = costo delle triple
 2
S = v1a + v2 b + v

S = somma da giocare
v = costo schedina senza doppie né triple

S < MAX
MAX = valore massimo da investire

0 < a < 13, a : integer

0 < b < 13, b : integer
S > 0


4
Ovvero stabilito l’importo massimo da giocare il sistema ci dice quante doppie, triple e singole
dobbiamo inserire nel sistema per ottimizzare la probabilità di vincita (nel modello si può
comunque impostare S=MAX). Se invece avessimo impostato il modello (vedi sotto) con la
funzione obiettivo pari alla somma da investire avremmo solo ottenuto quante doppie, triple,
singole avremmo potuto giocare con un determinato importo. Ancora una volta suggeriamo di
usare il risolutore delle equazioni o la funzione obiettivo di EXCEL , Open Office o LibreOffice ma
anche il GAMS, il LINGO o il LINDO come software perla programmazione lineare e non lineare
nell’ambito dei problemi (come questi) di ricerca operativa
 f .obiettivo : S = v1a + v2 b + v
a = numero di doppie

b = numero di tripe

v1 = costo delle doppie
v2 = costo delle triple

S = v1a + v2 b + v

S = somma da giocare
v = costo schedina senza doppie né triple

S < MAX
MAX = valore massimo da investire

0 < a < 13, a : integer

0 < b < 13, b : integer
S > 0
In Excel:
5
In Open Office (o Libre Office)
GnuNumeric
6
7