Sei sulla pagina 1di 7

Un modello di ricerca operativa per le scommesse sportive

Di Cristiano Armellini, cristiano.armellini@alice.it

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 1 X 2

Quote k1 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 : min( x1 + x 2 + x3 )
 f .obiettivo : s = x1 + x 2 + x3 r = k x − s ≥ 0
r = k x − s ≥ 0 1 1 1
 1 1 1
r2 = k 2 x 2 − s ≥ 0
r2 = k 2 x 2 − s ≥ 0 o se voglio minimizzare S 
r = k x − s ≥ 0 r3 = k 3 x3 − s ≥ 0
3 3 3
s = x1 + x 2 + x3 < MAX , s > 0
var iabili : x1 , x 2 x3 > 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

2r = k 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, cristiano.armellini@alice.it

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