Repository navigation
Releases: MarcoLombardoDev/Tyche
Release list
Tyche v1.3.1
Tyche — analisi e previsione SuperEnalotto.
Un'applicazione desktop che scarica lo storico completo delle estrazioni del
SuperEnalotto dal dicembre 1997, lo esamina in cerca di struttura sfruttabile,
mette alla prova ogni metodo di previsione sulle estrazioni già avvenute e poi
genera delle combinazioni, dicendo quanto valgono e quanto costano.
La versione breve di quella misura: niente. Le estrazioni sono
indipendenti, i test lo dicono, e ogni metodo del programma segna 0,4 numeri
indovinati su sei, che è esattamente il caso. Tyche è costruito per dimostrarlo
con cura anziché per affermarlo, ed è per questo che la linea di base casuale
sta nello stesso menu del modello da 330 milioni di parametri, alla stessa
dimensione.
predittivo e non pretende di averne. Le probabilità che stampa sono esatte e
immutabili: 1 su 622.614.630 per sei numeri, 1 su 327 per tre. I premi sono a
totalizzatore, quindi il concessionario trattiene una quota fissa di ogni euro
giocato e il rendimento atteso di una schedina è inferiore al suo prezzo
qualunque cosa si giochi.
Un percorso in quattro passi
Il programma si apre su una mappa, non su un pannello. Ogni passo porta la
domanda a cui risponde e quello che ha prodotto finora, e apre la scheda che
fa il lavoro.
| Passo | La domanda | |
|---|---|---|
| 1 | Archivio | Ci sono i dati? Scarica, importa e ispeziona lo storico, e dice che cosa non va. |
| 2 | Prova del nove | C'è qualcosa da prevedere? Cinque test dell'ipotesi che le estrazioni siano indipendenti e uniformi. |
| 3 | Validazione | I metodi battono il caso? Backtest walk-forward, senza che nessuno possa sbirciare il futuro. |
| 4 | Previsione | Il punto di arrivo: i numeri, con accanto quello che i passi precedenti hanno stabilito che valgono. |
L'ordine è l'argomento del programma: si arriva alle combinazioni attraverso
le prove, non saltandole.
Quanto vale la prova, e quanto costa la giocata
La validazione dichiara la propria sensibilità. «Non abbiamo trovato
niente» e «non avremmo potuto trovarlo» producono lo stesso tabellone, quindi
il pulsante Calibra rifà la stessa prova contro previsori il cui vantaggio è
noto, e riporta quale vantaggio si sarebbe accorta di vedere.
L'ensemble non ha pesi scritti nel codice. La prima proposta della scheda
Previsione è la media pesata degli altri tre metodi, e i tre pesi li decide un
backtest walk-forward: ogni combinazione viene provata su estrazioni che non
ha mai visto mentre veniva scelta. Nessun componente ha un minimo garantito —
sull'archivio vero TimesFM finisce a zero, perché la sua previsione sui novanta
numeri è piatta e un peso che non cambia la graduatoria non è una misura. Il
rapporto stampa i pesi, l'intervallo di pesi che il backtest non ha saputo
distinguere, che cosa ha segnato ogni componente da solo e che cosa ha segnato
il controllo casuale sulle stesse estrazioni.
Sistemi e SuperStar. Si sceglie quanti numeri per combinazione, da sei a
dodici, e se giocare anche il SuperStar. La Validazione segue la dimensione
scelta. Un sistema accorcia le probabilità del 6 e moltiplica il costo dello
stesso identico fattore — la probabilità per euro non si muove — e il
programma lo dice invece di lasciarlo intendere.
Il costo è calcolato, ai prezzi che si impostano, e mostra dove finiscono
i soldi: le combinazioni proposte si sovrappongono, quindi giocandone cinque
da dodici numeri il 40% della spesa compra colonne già comprate. Il valore
predefinito è una combinazione sola, perché la seconda è la settima scelta del
metodo al posto della sesta.
Eseguirlo dai sorgenti
Sotto sono allegati i pacchetti per Windows, macOS e Linux, ognuno compilato
sul proprio sistema. Da qui si esegue dai sorgenti, che su qualunque
piattaforma resta il modo più leggero.
git clone https://github.com/MarcoLombardoDev/Tyche.git
cd Tyche
pip install torch --index-url https://download.pytorch.org/whl/cpu
pip install -r requirements.txt
python main.py
Su Debian o Ubuntu tkinter è un pacchetto di sistema a parte e deve
corrispondere all'interprete con cui si esegue Tyche: sudo apt install python3-tk.
La prima previsione con TimesFM scarica circa 1,3 GB di pesi da Hugging Face.
Tutto il resto — l'archivio, i test di indipendenza, le statistiche, le linee di
base e l'intera validazione — funziona senza.
C'è una riga di comando per le parti che vale la pena automatizzare:
python main.py --update --yes # aggiorna l'archivio
python main.py --import FILE --yes # importa un file scaricato a mano
python main.py --check # i cinque test di indipendenza
python main.py --validate 500 # backtest walk-forward
python main.py --power # sensibilita' della validazione
python main.py --forecast ritardo # una giocata, senza scaricare il modello
python main.py --export-sqlite data/tyche.db
--update e --import mostrano che cosa cambierebbero e non scrivono nulla
senza --yes.
Che cosa è stato verificato prima di pubblicare
Sul commit taggato, prima che la release fosse creata:
ruff check .su tutto il repository;- l'intera suite di test con
TYCHE_REQUIRE_GUI=1sotto Xvfb, così
l'interfaccia viene davvero esercitata invece di essere saltata; - un controllo che la versione dichiarata dal programma coincida con il tag di
questa pagina.
E su ognuno dei tre pacchetti, prima che venisse allegato:
- avvia Tk per davvero e si presenta sul backend giusto per il suo sistema
(win32,aqua,x11), costruisce le matrici
delle caratteristiche, esegue i cinque test di indipendenza e fa un giro
completo di scrittura e rilettura di un archivio con il proprio codice di
persistenza — questo è--self-check, e--versionda solo non dimostrerebbe
niente di tutto ciò; - TimesFM è davvero dentro il pacchetto, non silenziosamente perduto;
- l'avviatore fa partire il programma, e si rifiuta di farlo quando l'impronta
registrata non corrisponde; - i testi di licenza di tutto ciò che il pacchetto contiene sono dentro
l'archivio, inlicenses/, insieme all'inventario di quale binario
appartiene a quale progetto, generato dalla macchina che lo ha costruito.
Questa pagina è l'unica release pubblicata: finita la build, il workflow
cancella la precedente e il suo tag. CHANGELOG.md nel repository conserva la
storia di ogni versione.
Licenza
AGPL-3.0-or-later. Puoi usarlo, studiarlo, modificarlo e ridistribuirlo;
se lo distribuisci o lo esponi come servizio devi consegnare il sorgente alle
stesse condizioni. Nessuna licenza commerciale, nessun CLA.
I pesi del modello sono un'altra cosa dal codice. Il pacchetto timesfm è
Apache-2.0; i pesi google/timesfm-3.0-pytorch che il programma scarica al
primo uso dichiarano timesfm-non-commercial-license-v1.0 — uso non
commerciale e non di produzione. Quel permesso non è di Tyche da concedere, e
THIRD-PARTY-LICENSES.md lo spiega per esteso. Tutto il resto del programma
funziona senza scaricare alcun peso.
Cosa c'è in v1.3.1
Corretto
-
Un test asseriva una cosa sullo schermo del runner, non sul programma.
test_the_seventh_number_stays_on_the_line_with_the_other_sixdiceva «sette
su una riga» in assoluto, che è vero solo su una finestra abbastanza larga:
un runnerwindows-latestne ha concessa una più stretta, il widget è
andato a capo — cioè ha fatto esattamente quello che la regola della 1.1.3
gli chiede — e il test ha chiamato fallimento l'obbedienza. Ora misura lo
spazio fino alla SuperStar con lo stesso metro di_room_for_badges, che
restituisce lo stesso identico valore che usa il widget, e verifica che la
prima riga contenga quel numero di palline: la regola, non il suo esito su
un monitor particolare. Dove lo spazio per sette c'è, la pretesa «una riga
sola» resta e viene verificata; dove non c'è, il test salta dicendo quanti
pixel ha trovato. -
La console dice quanto dura davvero l'attesa. Diceva che il primo avvio
è il lento perché Windows controlla ogni file della cartella prima di
poterne eseguire uno: vero per una build a cartella. Questo è un file solo
che si scompatta prima di partire, e contiene PyTorch — centinaia di
megabyte, a ogni avvio, non solo al primo. Una console che promette due
volte che il ritardo è una tantum sta dicendo una cosa falsa sul computer di
chi la sta guardando.
Download
| Piattaforma | File |
|---|---|
| Windows (x64) | Tyche-1.3.1-windows-x64.zip |
| macOS (arm64) | Tyche-1.3.1-macos-arm64.zip |
| Linux (x64) | Tyche-1.3.1-linux-x64.tar.gz |
Ogni archivio è compilato sul suo sistema — niente cross-compilazione.
Si scompatta e si esegue: nessuna installazione e nessun Python
necessario. Si estrae in un'unica cartella Tyche/; si avvia con
start.cmd su Windows, start.command su macOS e start.sh su
Linux, accanto al programma, che confronta l'eseguibile con
l'impronta registrata quando l'archivio è stato costruito e si ferma
invece di avviarlo se le due non coincidono. Il programma parte anche
da solo.
Dentro ogni archivio, in licenses/, ci sono i testi di licenza di
tutto ciò che il pacchetto contiene, più l'inventario di quale
binario appartiene a quale progetto, generato dalla macchina che lo
ha costruito.
Il sistema dirà che l'editore è sconosciuto
Ed è giusto così. Questi pacchetti non hanno alcun certificato di
firma del codice, quindi Windows mostra "Windows ha protetto il
PC" (Ulteriori informazioni → Esegui comunque) e macOS
rifiuta il primo avvio (Ctrl-clic sull'eseguibile → Apri). Non
c'è niente che non va nel download: il sistema sta segnalando di non
aver mai visto questo editore, il che è vero.
Siccome quell'avviso chiede di fidarsi di un file che non si può
controllare guardandolo, ecco lo SHA-256 di ogni archivio così come
lo ha prodotto la macchi...