Also refreshes the Superzahl frequency analysis with the latest draws. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Lotto 6aus49 Analyse & Generator
Automatisiertes System zur Analyse von Lotto 6aus49-Daten und Generierung von KI-gestützten Tipps mit Telegram-Benachrichtigungen. Schwesterprojekt von Eurojackpot — gleiche Architektur, angepasst an das Lotto-Format (6 Zahlen aus 49 + 1 Superzahl).
Eine detaillierte Architektur- und Datenfluss-Beschreibung steht in documentation/ARCHITECTURE.md.
🎲 Features
- 🧠 AI/ML-basierte Tipp-Generierung: Random Forest + LSTM (PyTorch) Hybrid-Predictor
- 🎨 Pattern-Analyse: Historische Verteilungsmuster (N/M/H-Zonen)
- ⚡ 4-Strategien-System: HYBRID-OPT, BALANCED-SPREAD, HIGH-EV, SOFT-CONTRARIAN mit adaptiver Gewichtung
- 💰 EV-Optimierung: Quality-Score gewichtet gezielt auf unpopuläre (aber gleich wahrscheinliche) Zahlenkombinationen, um den Gewinnanteil im Trefferfall zu erhöhen
- 📚 Real-Time Learning: Kontinuierliches Retraining bei neuen Ziehungen
- 🤖 Automatisierung: Tipp-Generierung & Datenupdate via launchd, mit täglichem Watchdog gegen verpasste Läufe
- 📲 Telegram-Benachrichtigungen: Automatische Tipps direkt aufs Smartphone, plus Watchdog-Alarm bei Problemen
- 🔄 Data-Updates: API-Kette (Lottoland → GitHub-Archiv → lottoAPI) mit Web-Scraping- und manuellem Fallback
📁 Verzeichnisstruktur
Lotto/
├── README.md
├── config/
│ └── notifications.json # Telegram/Email Config
├── data/
│ ├── AlleLottozahlen.csv # Ziehungshistorie
│ ├── backups/ # CSV-Backups (automatisch rotiert, letzte 30)
│ ├── ultimate_ml_models/ # Trainierte Modelle (RF + LSTM)
│ └── generated_tips/ # Generierte Tipps
├── scripts/
│ ├── generators/
│ │ └── ultimate_ai_ml_hybrid_generator.py # aktiver Generator
│ ├── automation/
│ │ ├── auto_update_and_learn.py # Update + Retraining
│ │ ├── weekly_tip_generator.py # Tipp-Generierung
│ │ ├── com.lotto.update.plist
│ │ ├── com.lotto.weekly.plist
│ │ └── com.lotto.watchdog.plist
│ └── utils/
│ ├── notifier.py # Telegram/Email
│ ├── update_from_api.py # API-Updater (aktiv)
│ ├── update_from_web.py # Web-Scraping-Fallback (nicht automatisiert)
│ ├── simple_update.py # Manuelle Eingabe
│ ├── watchdog.py # Prüft Daten-/Modell-Aktualität, alarmiert per Telegram
│ ├── validate_csv.py # manuelles Utility
│ ├── verify_draws.py # manuelles Utility
│ └── health_check.py # manuelles Utility
├── documentation/
│ └── ARCHITECTURE.md
├── results/ # Auswertungen (z.B. Superzahl-Statistik)
├── run_tip_generator.sh
├── run_update_and_learn.sh
├── run_watchdog.sh
└── logs/
🚀 Quick Start
1. Installation
python3 -m venv venv
source venv/bin/activate
pip install pandas numpy scikit-learn requests torch
2. Telegram-Bot einrichten
- Erstelle einen Bot mit @BotFather
- Kopiere den Bot-Token, hole deine Chat-ID (z.B. mit @userinfobot)
- Konfiguriere
config/notifications.json(siehe TELEGRAM_BOT_SETUP.md):
{
"telegram": {
"enabled": true,
"bot_token": "YOUR_BOT_TOKEN",
"chat_id": "YOUR_CHAT_ID"
}
}
Test-Benachrichtigung senden:
python scripts/utils/notifier.py --test
3. Tipps manuell generieren
python scripts/automation/weekly_tip_generator.py --force --num-tips 10
# Nur Historie anzeigen
python scripts/automation/weekly_tip_generator.py --history
4. Daten manuell aktualisieren + Modelle neu trainieren
./run_update_and_learn.sh
🧠 Generator-Strategien
Der Ultimate AI/ML Hybrid Generator (scripts/generators/ultimate_ai_ml_hybrid_generator.py) verteilt pro Lauf 10 Tipps über 4 Strategien, deren Gewichtung sich anhand der bisherigen Trefferleistung selbst anpasst (Startwerte in Klammern):
- HYBRID-OPT (40%): AI-Score + historisches Pattern-Gewicht kombiniert
- BALANCED-SPREAD (30%): erzwingt Verteilung über N/M/H-Zonen, kontrollierter Summenbereich
- HIGH-EV (20%): 2–3 Zahlen >31, meidet empirisch belegte populäre Einzelzahlen — auf EV statt Trefferwahrscheinlichkeit optimiert
- SOFT-CONTRARIAN (10%): bevorzugt in den letzten 30 Ziehungen unterrepräsentierte Zahlen
Warum EV statt Trefferwahrscheinlichkeit?
Lotto-Ziehungen sind unabhängige Zufallsereignisse — kein Modell kann die Trefferwahrscheinlichkeit über den statistischen Erwartungswert heben. Der Quality-Score optimiert deshalb bewusst auf Expected Value: unpopuläre Zahlenkombinationen haben bei einem Treffer weniger Mitgewinner und damit eine höhere Auszahlung. Details und Quellen dazu in documentation/ARCHITECTURE.md.
🔄 Daten aktualisieren
Der automatisierte Workflow (auto_update_and_learn.py) nutzt
LottoAPIUpdater.fetch_from_all_apis(): Lottoland zuerst (liefert die
neueste Ziehung meist noch am Ziehungstag), GitHub-Archiv für die Historie.
Für manuelle Läufe stehen zusätzlich bereit:
# Web-Scraping-Fallback (lotto.de) - nicht in der Automatisierung verdrahtet
python scripts/utils/update_from_web.py
# Letzter Fallback: manuelle Eingabe / CSV-Import
python scripts/utils/simple_update.py
Jedes Update erstellt automatisch ein Backup unter data/backups/ und
rotiert alte Backups (behält die letzten 30).
🐶 Watchdog
scripts/utils/watchdog.py läuft täglich (com.lotto.watchdog.plist) und
prüft, ob die letzte Ziehung in den Daten älter als 5 Tage ist bzw. ob die
Modelle noch auf einem älteren Stand trainiert sind als die neueste Ziehung.
Das fängt genau den Fall ab, dass ein StartCalendarInterval-Job verpasst
wurde (z.B. weil der Rechner im Schlaf war) — launchd holt das selbst nicht
nach. Bei einem Problem kommt ein Telegram-Alarm, sonst bleibt es still.
🤖 Automatisierung
Läuft über launchd (~/Library/LaunchAgents/), nicht crontab:
| Job | Plist | Zeitplan |
|---|---|---|
| Update & Learning | com.lotto.update.plist |
Mi + Sa, 20:00 Uhr |
| Tipp-Generierung | com.lotto.weekly.plist |
Di + Fr, 21:00 Uhr |
| Watchdog | com.lotto.watchdog.plist |
täglich, 21:30 Uhr |
📲 Telegram-Benachrichtigungen
Bei erfolgreicher Tipp-Generierung bzw. nach jeder ausgewerteten Ziehung
verschickt LottoNotifier automatisch eine Zusammenfassung (bester Tipp, Ø
Confidence/Quality, Trefferauswertung). Der Watchdog nutzt denselben Kanal
für Alarme.
📈 Performance Tracking
Alle Generierungen werden in data/generated_tips/generation_history.json
protokolliert, alle Ziehungsauswertungen in data/learning_log.json.
🗂️ Datenformat
data/AlleLottozahlen.csv (Semikolon-getrennt):
datum;Z1;Z2;Z3;Z4;Z5;Z6;SZ
2026-08-08;2;8;22;30;38;43;4
Hinweise
- Lotto 6aus49: 6 Zahlen aus 49 + 1 Superzahl (0–9), Ziehungen Mi + Sa
- Keine Gewinngarantie — statistisches Analyse-Tool, keine Vorhersagekraft über den Zufalls-Erwartungswert hinaus (siehe Abschnitt "Warum EV statt Trefferwahrscheinlichkeit?")
- Bot-Token niemals öffentlich teilen
🙋 Support
- Logs prüfen:
logs/update_stdout.log,logs/stdout.log,logs/watchdog_stdout.log - Test-Benachrichtigung:
python scripts/utils/notifier.py --test - Historie prüfen:
python scripts/automation/weekly_tip_generator.py --history
🍀 Viel Glück bei der nächsten Ziehung! 🍀