# Dataset didattico GSO Radar: dati interamente sintetici

**Nessun evento, quota, statistica, stagione o timestamp di questo pacchetto rappresenta dati reali. Non contiene risultati di scommesse né dimostra accuratezza, rendimento o un vantaggio statistico.**

Il pacchetto rende riproducibili i conteggi dell'esempio della guida «Statistiche calcio per il betting: dati utili, qualità e bias». Esegue un controllo di completezza e coerenza temporale su un archivio appositamente costruito.

## Riproduzione

Occorre soltanto Python 3. Nessuna dipendenza esterna, connessione o chiave di accesso.

```bash
python3 riproduci-audit-qualita-dati.py --generate
```

Rigenera il CSV in modo deterministico e scrive il rapporto JSON e il CSV con i motivi di esclusione. Per controllare il CSV già distribuito senza rigenerarlo:

```bash
python3 riproduci-audit-qualita-dati.py --csv gso-qualita-dati-SINTETICO-v1.csv
```

Il generatore non usa numeri casuali. L'audit rilegge il file CSV effettivo e ricalcola i conteggi; termina con errore se i risultati non corrispondono a quelli dichiarati.

## File

- `gso-qualita-dati-SINTETICO-v1.csv`: 1.012 righe dati, oltre all'intestazione.
- `riproduci-audit-qualita-dati.py`: generatore e audit eseguibili.
- `audit-qualita-dati-SINTETICO.csv`: 1.000 eventi distinti con indicatori separati per dato mancante, quota tardiva e utilizzabilità.
- `audit-qualita-dati-SINTETICO.json`: conteggi, elenchi degli esclusi, tassi per stagione e SHA-256 del CSV di ingresso.

## Che cosa rappresenta una riga

Una riga identifica un evento fittizio, il mercato 1X2 e l'esito X. Questo esempio richiede una sola quota selezionata per evento. Si eliminano soltanto le copie identiche in **tutte** le colonne. In un archivio reale di molte rilevazioni temporali, righe diverse dello stesso evento possono essere legittime: questa regola non autorizza a eliminarle per il solo identificativo.

I codici evento `M0001`–`M1000` sono identificativi stabili, **non un ordine cronologico**. Per rendere insieme verificabili l'elenco dei dati mancanti e i tassi stagionali descritti nella guida:

- stagione A: `M0001`–`M0028` e `M0031`–`M0502`, 500 eventi;
- stagione B: `M0029`–`M0030` e `M0503`–`M1000`, 500 eventi.

Le date fittizie della stagione A sono comprese tra il 1º agosto e il 19 settembre 2024; quelle della B tra il 1º agosto e il 19 settembre 2025. Tutti gli eventi di A precedono B. Non si tratta di stagioni calcistiche reali: dieci eventi possono condividere lo stesso istante.

## Dizionario e regole temporali

| Colonna | Significato |
|---|---|
| `dataset_kind` | Sempre `SYNTHETIC_EDUCATIONAL_ONLY`; segnala la natura inventata anche nel CSV |
| `event_id`, `season`, `competition` | Identificativi e gruppi interamente fittizi |
| `market`, `selection` | Mercato didattico 1X2, esito X |
| `kickoff_utc` | Ora fittizia di inizio evento |
| `decision_utc` | Momento della decisione simulata, un'ora prima dell'evento |
| `quote_published_utc` | Momento fittizio di pubblicazione della quota |
| `quote_acquired_utc` | Momento fittizio di acquisizione della quota |
| `odds_decimal` | Quota decimale inventata; non viene usata per calcolare profitti |
| `stat_source_last_event_utc` | Timestamp dichiarato dell'ultimo evento precedente usato nella statistica fittizia |
| `stat_published_utc` | Momento fittizio di pubblicazione della statistica |
| `stat_acquired_utc` | Momento fittizio di acquisizione della statistica |
| `mean_goals_previous_5` | Media inventata, etichettata come riferita a cinque eventi precedenti; non esiste un archivio reale sottostante |

Tutti i timestamp usano UTC esplicito (`Z`). La quota supera il controllo temporale solo se pubblicazione e acquisizione non sono successive alla decisione. Negli eventi `M0026`–`M0035` la sola quota conservata è acquisita due minuti dopo la decisione; negli altri due minuti prima. La pubblicazione precede l'acquisizione di 30 secondi.

La statistica è obbligatoria. Il campo vuoto è un dato mancante; `0` è un valore valido e non viene escluso. Nei trenta eventi con statistica mancante sono vuoti anche i suoi timestamp; non si inventa una provenienza temporale per un dato assente. Negli altri eventi il generatore conserva questa sequenza: ultimo evento precedente → pubblicazione → acquisizione → decisione → inizio della partita.

I timestamp sintetici consentono di esercitare il controllo della sequenza, **non provano l'esistenza storica né l'eseguibilità di una quota reale**. Liquidità, limiti, costi e revisioni della fonte richiederebbero verifiche distinte.

## Risultati attesi

| Controllo | Conteggio |
|---|---:|
| Eventi attesi | 1.000 |
| Righe importate | 1.012 |
| Copie identiche aggiuntive di `M0001`–`M0012` | 12 |
| Eventi distinti dopo deduplicazione | 1.000 |
| Statistica mancante: `M0001`–`M0030` | 30 |
| Quota tardiva: `M0026`–`M0035` | 10 |
| Entrambi i problemi: `M0026`–`M0030` | 5 |
| Esclusi distinti: 30 + 10 − 5 | 35 |
| Utilizzabili: 1.000 − 35 | 965 |
| Copertura iniziale degli eventi | 100% |
| Utilizzabili sull'universo atteso | 96,5% |

Il CSV di audit conserva ogni evento una sola volta e tre indicatori: `missing_required_stat`, `quote_after_decision` e `usable`, tutti pari a 0 o 1. Le due cause possono sovrapporsi: un evento escluso viene contato una sola volta nel totale.

| Stagione fittizia | Eventi | Statistica mancante | Percentuale |
|---|---:|---:|---:|
| A | 500 | 28 | 5,6% |
| B | 500 | 2 | 0,4% |
| Totale | 1.000 | 30 | 3,0% |

Questi tassi riguardano **solo la statistica mancante**, non la somma di tutti i problemi. Il 96,5% riguarda invece gli eventi utilizzabili secondo entrambe le regole. Nessuna delle due misure equivale ad affidabilità predittiva o redditività.

## Limiti

L'esempio è costruito per insegnare deduplicazione, cause sovrapposte, dati mancanti e controlli temporali. Non esegue un backtest, non modella una probabilità di vittoria, non calcola un rendimento e non valida dati reali. La media dei cinque eventi precedenti è un valore inventato con provenienza temporale dichiarata: mancano appositamente risultati di partite reali e un archivio sorgente reale. Il pacchetto è quindi riutilizzabile come esercizio, non come evidenza di prestazioni di GSO Radar.
