Preparatevi ad una lunga lettura.
Il metodo “Bonnie” che vi presento è volto a migliorare le analisi prematch e live che dobbiamo mettere in atto prima di iniziare a fare trading. Premetto che io non sono un trader ma da buon ingegnere sto provando ad “ingegerizzare” tutta la parte relativa ad analisi statistiche in modo da valutare il più scientificamente possibile la partite, senza farci cogliere dalle emotività.
Anzitutto abbiamo bisogno di uno strumento che faccia per noi le analisi prematch, senza dover perdere un sacco di tempo su soccerway per trovare partite appetibili per il trading (lo staff comunque ha in previsione di lavorare ad uno strumento simile).
Ho voluto quindi creare da me uno strumento per le analisi prematch che mi dia in automatico le partite valide da SO e RP/RB secondo le strategie delle guide. Vengono presi in considerazione tutti i maggiori campionati europei e anche campionati cadetti.
NB: La guida ninja prevede che vengano scartate le partite in SO se il primo gol è avvenuto dopo il 70'. Non possedendo nel mio database i minutaggi dei gol, ma solo l'indicazione se il gol è avvenuto nel primo o secondo tempo, tale operazione viene rimandata ad un controllo manuale da parte dell'utente.
Fin qui niente di complicato, già altri ninja hanno i loro strumenti per individuare le partite, l’idea che però mi è sorta è affiancare ad ogni partita un rating di affidabilità sulla base di statistiche prematch e live. Ad esempio per la strategia SO:
PREMATCH:
Accanto ad ogni partita da SO voglio avere un rating di affidabilità che consideri non solo banalmente i risultati SO in casa e trasferta delle ultime 5 partite delle squadre:
rating = (posizione + affidabilità + SG + pH + pA + SG + SOH + SOA + TgolHt)
dove:
• Posizione: Valutazione sulla posizione in classifica delle squadre (evitare scontri salvezza o non dare peso a squadre appaiate in classifica)
• Affidabilità: tradare su una partita dove abbiamo 5/5 SO per entrambe le squadre nelle ultime 5 giornate di campionato è meglio di partite con meno frequenza di SO
• pH e pA: l'attitudine al gol delle due squadre della partita sulla base della media gol di ogni singola squadra in relazione delle altre squadre di campionato da inizio campionato
• SG: l'incidenza al gol della partita oggetto di studio valutabile in base a quanti gol ci sono stati negli ultimi 5 SO di entrambe le squadre (tutte partite che finiscono con tanti gol sono meglio di 10 partite tutte 1-1 o 2-0)
• SOH e SOA: valutazione del SO sui gol della sola squadra che gioca in casa e sui gol della sola squadra che gioca in trasferta negli ultimi 5 turni di campionato (in modo da non dare troppo peso a squadre che fanno SO solo perchè hanno pessime difese)
• TgolHt: Attitudine al gol delle squadre nel segnare entro il primo tempo, fondamentale nella strategia SO, in quanto siamo in perdita se non riusciamo a concludere entro metà del secondo tempo anche se i gol arrivano comunque. Il campione di riferimento viene preso per ogni squadra da inizio campionato.
Ognuna delle variabili che compongono il rating ha un peso, a definire l’importanza che ha ogni singola variabile sul rating finale: ad esempio il parametro TgolHt, che indica l’incidenza di una squadra a segnare entro breve tempo ha un peso maggiore rispetto alla variabile affidabilità, in quanto sono maggiormente interessato a chiudere il trade velocemente piuttosto che trovarmi a a ridosso del 70’ minuto prima di vedere il primo gol.
LIVE:
Il software vuole fornire anche un rating di attitudine al gol per eventi nella partita: per la data squadra voglio sapere mediamente quanti gol si realizzano per tiro in porta, quanti gol per tiri fuori dallo specchio e quanti corner devo aspettarmi prima di vedere un gol. Questo è fondamentale per capire ad esempio che la Sampdoria realizza tanti tiri in porta e pochi gol, per cui se da sofascore in live vedo tanti tiri e 0 gol devo capire che è normale e non entrare solo perchè vedo tanti tiri, l'Inter colleziona valangate di calci d'angolo ma non realizza mai gol da calci d'angolo, la Juventus è cinica per cui se vedo tanti tiri in porta e ancora non c'è stato il gol allora so che posso entrare senza farmi troppi problemi perché il gol arriverà a momenti. I dati "live" in genere non li pubblico nei palinsesti per non appesantire troppo le discussioni, ma potete richiedermeli se volete sapere quanto una squadra è avezza o meno al gol
Lo strumento è ancora in fase embrionale, lo ho creato giusto 4 o 5 giorni fa, ha ad ora circa 400 righe di codice ed è sicuramente migliorabile, soprattutto per quanto concerne il calcolo del rating, i calcoli che ho eseguito per le variabili e i pesi di ogni singola variabile per il rating finale.
Vediamo nello specifico come calcolo i parametri che compongono il rating:
Posizione: Poiché a database possiedo solo le partite ed i risultati, l’algoritmo calcola i punti in classifica delle 2 squadre coinvolte nella partita, viene calcolato quindi lo “spread” in valore assoluto della differenza tra una squadra e l’altra con la formula
Spread = (classificaH / giornataH) - (classificaA / giornataA)
dove:
- Classifica = punti in classifica della squadra che gioca in casa
- giornata = giornate di campionato giocate
- H e A stanno per Home e Away quindi squadra che gioca in casa e in trasferta.
A seconda dei valori che si ottengono la posizione è data dal seguente codice:
Case 0
posizione = 0
Case 0 To 0.1
posizione = 1
Case 0.1 To 0.2
posizione = 2
Case 0.2 To 0.3
posizione = 3
Case 0.3 To 0.4
posizione = 4
Case 0.4 To 0.5
posizione = 5
Case 0.5 To 0.7
posizione = 6
Case 0.7 To 1
posizione = 7
Case 1 To 1.5
posizione = 8
Case 1.5 To 2
posizione = 9
Case Is > 2
posizione = 10
Penso che, sebbene sia codice nudo e crudo si riesca a capire: in breve se le squadre sono appaiate in classifica (spread = 0) il valore attribuito a posizione sarà 0, se lo spread è compreso tra 0 e 0,1 il valore posizione sarà 1 e così via, man mano che lo spread aumenta il valore posizione può arrivare fino a 10 ed è il caso in cui abbiamo uno scontro tra la prima in classifica e la squadra fanalino di coda e ci sia anche molto divario di punti tra le due.
Affidabilità: Somma dei SO realizzati nelle ultime 5 giornate in casa e in trasferta rispettivamente della squadra che gioca in casa e in trasferta
SG (somma gol): viene analizzata ogni singola partita degli ultimi 5 turni di campionato per la squadra di casa che ha giocato in casa e trasferta che ha giocato in trasferta. Vengono semplicemente sommati i gol realizzati in ogni singolo incontro. Ogni partita ha quindi un punteggio in base ai gol realizzati:
SG = Somma dei Punteggi di tutte le partite / (somma delle partite in SO)
Lo scopo di tale variabile è quello di non dare troppo peso a squadre che realizzano partite da SO ma solo per 2-0 o 1-1 e dare un punteggio più elevato a squadre che disputano incontri dove ci sono tanti gol.
pH e pA: ovvero punteggio squadra Home e punteggio squadra Away.
L’algoritmo conta tutti i gol realizzati in campionato da tutte le squadre e crea 4 scaglioni dove le squadre di campionato vengono messe all’ìinterno.
Esempio se in campionato sono stati realizzati 100 gol il primo scaglione andrà da 0 a 25 gol e in questo scaglione vengono messe le squadre che segnano poco, anzi pochissimo. Il secondo scaglione sarà composto dalle squadre che hanno segnato da 25 a 50 gol e così via… in Realtà l’algoritmo è leggermente più complesso ma non mi dilungo troppo nei dettagli. Ciò che conta è che ad ogni squadra viene attribuito un punteggio a seconda dello scaglione in cui si trova: 0 nel primo scaglione, 3 punti nel secondo scaglione, 7 punti nel terzo scaglione, 10 punti nell’ultimo scaglione.
SOH e SOA: nelle ultime 5 partite di campionato vengono contati i soli gol realizzati dalla squadra di casa e trasferta (non quelli subiti) per capire quanti SO (SuperOver 1,5) le squadre riescono a realizzare con le proprie forze. Anche in questo caso si sommano i SOH e SOA e vengono attribuiti dei punteggi:
Select Case SOH
Case 5
punteggioH = 10
Case 4
punteggioH = 9
Case 3
punteggioH = 8
Case 2
punteggioH = 5
Case 1
punteggioH = 2
End Select
Select Case SOA
Case 5
punteggioA = 10
Case 4
punteggioA = 10
Case 3
punteggioA = 9
Case 2
punteggioA = 6
Case 1
punteggioA = 3
End Select
TgolHt: è l’attitudine di ogni squadra a segnare o subire gol nel primo tempo, l’algoritmo calcola quanti SO vengono realizzati nel solo primo tempo per la squadra che gioca in casa e per quella in trasferta, nell’arco di tutto il campionato.
TgolHt = 10 * (SommaPartite SO half time / partite giocate)
Si ottiene pertanto un punteggio da 1 a 10 in base a quanti SOHT (super over half time) vengono realizzati.
PESI
Ogni parametro ha un peso, questo valore è importante per stabilire l’importanza di un parametro su un altro. L’attuale settaggio prevede:
RISULTATI:
Prendiamo ad esempio l’ultima giornata di campionato serie A.
L’output che restituisce il software è questo (scusate i decimali non troncati):
Brescia: 4/5 - Lecce: 4/5 rating: 55,46875%
Napoli: 4/5 - Parma: 3/5 rating: 50,8928571428571%
Genoa: 3/5 - Sampdoria: 4/5 rating: 37,8571428571429%
Verona: 3/5 - Torino: 3/5 rating: 58,8333333333333%
Bologna: 5/5 - Atalanta: 4/5 rating: 87,2222222222222%
Juventus: 4/5 - Udinese: 4/5 rating: 82,4776785714286%
STRATEGIA RIPUNTA: Juventus vittorie: 4/5 pareggi:0/5 - Udinese: 1/5
(NB:favorita deve avere quota punta prematch tra 1.01 e 1.75)
Milan: 4/5 - Sassuolo: 3/5 rating: 53,1868131868132%
Roma: 5/5 - Spal: 3/5 rating: 82,5223214285714%
Fiorentina: 3/5 - Inter: 5/5 rating: 78,7723214285714%
Cagliari: 5/5 - Lazio: 4/5 rating: 81,25%
Da alcuni test che ho fatto posso considerare attendibile una partita da SO se rispecchia i requisiti descritti da ninjabet (almeno 4/5 SO per ogni squadra) e il rating calcolato da "Bonnie" è almeno il 75%.
Il mio software suggerisce quindi di non giocare Brescia – Lecce sebbene sia da strategia ninjabet. Il rating è basso perché è in pratica uno scontro salvezza tra 2 squadre che non hanno molto divario in classifica e tra 2 squadre che hanno fatto complessivamente pochi gol in campionato, piuttosto hanno una pessima difesa. La partita è finita 3-0 quindi in SO ma dobbiamo considerare che questo algoritmo vuole sconsigliarci questa partita per portarci a giocare altri match più affidabili. Saranno molte le partite che l’algoritmo tenderà a scartare e molte finiranno comunque in SO ma alla lunga tenderà a scartare partite che finiranno in loss! Vi ricordo che nella strategia SO, per come è strutturata da ninjabet, ci basta un solo loss per mangiare il guadagno anche di 5 o 6 partite concluse in Green Up!
Il software mi suggerisce di concentrarmi invece su Bologna – Atalanta, Juventus – Udinese e Cagliari – Lazio. In un post di sabato ( https://ninjaclub.ninjabet.it/topic/21873/ninjabeppe-pal/445 ) ho difatti suggerito di giocare queste partite, assieme a Arsenal - City …. Che mi dava un rating del 92% e Roma-Spal che sono state tutte prese.
Sebbene non sia da strategia ninjabet si potrebbe giocare anche Roma – Spal che presenta un rating del 82%, ma badate bene che nel caso vi vogliate affidare solo al rating senza la coincidenza con le strategie ninjabet, dovete entrare solo dopo una attenta analisi live.
Notare che rating basso c’è su Genoa – Sampdoria, la partita è finita difatti 0-1 con gol al minuto 85. Fate attenzione che rating basso non significa che si possa giocare la partita in SU perché i parametri con cui si calcola il rating sono propri della strategia SO, per la SU bisogna usare altre formule per il rating.
Ovviamente tutti i dati che il software estrapola sono solo dati statistici grezzi, basati su una formula (rating) che è ancora da migliorare perché appena sviluppata con pesi e punteggi impostati “a sentimento” . Ogni partita deve essere confrontata con lo stato di forma delle squadre, notizie di mercato, notizie dallo spogliatoio, notizie dagli scommettitori (asian odds).
TEST APPROFONDITI
Ovviamente ho effettuato dei test più concreti, che sono ancora pochi per dare soluzioni. Purtroppo occupandomi di tutt’altro nella vita, non ho molto tempo da dedicare a questa attività.
Tuttavia i primi risultati sono davvero interessanti:
Ho realizzato alcune simulazioni prendendo di riferimento l’intero campionato Bundesliga 2015/2016, 2016/2017, 2017/2018, dalla giornata 11 alla giornata 34 e ho confrontato tutte le partite che erano da strategia ninjabet e le partite da strategia “Bonnie”.
Ninjabet:
• Bundesliga 2015/16: partite azzeccate: 82/94 --> 87,23% (12 loss)
• Bundesliga 2017: partite azzeccate 91/103 --> 88,34% (12 loss)
• Bundesliga 2018: partite azzeccate 129/143 --> 90,21% (14 loss)
Bonnie, considerando validi solo rating>75%:
• Bundesliga 2015/16: partite azzeccate: 28/30 --> 93,33% (2 loss)
• Bundesliga 2017: partite azzeccate 20/21 --> 95,23% (1 loss)
• Bundesliga 2018: partite azzeccate 48/51 --> 94,12% (3 loss)
EDIT AGGIORNAMETNO DEL 5 gennaio: Ho apportato una modifica al calcolo del rating, ad ora ho studiato solo il campionato bundesliga 2017 per cui i dati sono ancora da prendere con le pinze e con il 75% di rating ho chiuso 18 partite su 18 in SO, quindi 100% di affidabilità, con un rating del 65% 47 partite azzeccate su 48. Direi che come ipotesi conservativa ora possiamo prendere per validi rating del 70% invece che 75%, nell'attesa che faccia analisi più approfondite
Per win si intende fare cash out al primo gol, per loss si intende partita che termina 0-0 o il primo gol è arrivato dopo il ’70 minuto.
edit: Ottenere questi dati è abbastanza semplice, esegue quasi tutto il software, perderò circa 30-40 minuti per analizzare un intero campionato, quindi spero di aggiungere anche i risultati degli altri campionati molto presto.
CONSIDERAZIONI:
I dati sulla Bundesliga sono buoni, ci sono da calcolare anche altri campionati, appena avrò tempo farò.
Analizzando i dati Bundesliga i risultati migliori si ottengono considerando rating > 75% con questa configurazione di parametri e pesi. L’impressione è che ogni campionato abbia un proprio rating pertanto questi dati sono da prendere ancora con le pinze.
I valori dei punteggi attribuiti ai parametri e ai pesi delle variabili con compongo il rating sono stati attribuiti dal sottoscritto “a sentimento” e non è detto che siano i parametri e pesi ottimali.
Fatemi sapere che ne pensate e che cosa cambiereste voi
Domanda e Risposta:
I risultati sono migliorabili?
Si! Sicuramente potremo ottenere risultati migliori in termini di rating e affidabilità alla strategia modificando opportunatamente i parametri da attribuire ai punteggi e ai pesi!
Per le partite suggerite da “bonnie” posso appicare la strategia SO come da guida ninjabet?
Ni. Io userei una delle Strategie di ninjabeppe entrando in partita già prematch (ringrazio ninjabeppe appena posso me le studio moolto bene) in quanto è molto probabile che le partite estrapolate restituiscano un gol nel primo tempo e in quanto vorrei monetizzare tutto o quasi tutto lo stake e non solo una frazione di esso se il gol arriva molto presto.
SVILUPPI FUTURI
E’ già in fase di implementazione la parte relativa alle statistiche LIVE, forse ancor più fondamentali delle statistiche prematch.
Per quel che riguarda le statistiche prematch e il calcolo del rating, sarebbe da analizzare per ogni campionato, prendendo come riferimento almeno le partite degli ultimi 5 anni, tutte le possibili combinazioni di punteggi e pesi delle variabili che costituiscono il rating. Sto già pensando come fare questa cosa in due modi:
- creando un DOE (design of experiments) contenente tutte le possibili combinazioni di variabili e pesi e lanciare una serie di macro per realizzarli tutti (il computer lavorerà qualche ora). In seguito analizzare tutti gli scenari attraverso metodologie MCDM (multi criteria decision making) per stabilire quali configurazioni si trovano sul fronte di Pareto: tradotto in termini umani trovare tra migliaia di combinazioni la configurazione che ottimizza il rating.
- Utilizzare un DOE semplificato (un minor numero di scenari) e creare una superficie di risposta (una funzione matematica) tramite software come modeFrontier che utilizzano algoritmi genetici o altro per trovare la funzione obiettivo di nostro interesse che mi dia ovviamente, anche se in maniera approssimata, i valori da attribuire a punteggi e pesi.
Sapete qual è il mio problema? La mancanza di tempo per fare tutte queste belle cosette da nerd, ma dando tempo al tempo arriverò alla soluzione