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