# Eurojackpot Analyse & Generator Automatisiertes System zur Analyse von Eurojackpot-Daten und Generierung von KI-gestützten Tipps mit Telegram-Benachrichtigungen. Schwesterprojekt von [Lotto 6aus49](../Lotto) — gleiche Architektur, angepasst an das Eurojackpot-Format (5 Hauptzahlen aus 50 + 2 Eurozahlen aus 12). Eine detaillierte Architektur- und Datenfluss-Beschreibung steht in [documentation/ARCHITECTURE.md](documentation/ARCHITECTURE.md). ## 🎲 Features - **🧠 AI/ML-basierte Tipp-Generierung**: Random Forest + LSTM (PyTorch) Hybrid-Predictor - **🎨 Pattern-Analyse**: Historische Verteilungsmuster - **⚡ 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 - **📲 Telegram-Benachrichtigungen**: Automatische Tipps direkt aufs Smartphone - **🔄 Data-Updates**: API-Kette (lottoAPI → Lottoland → Sazka.cz) mit Web-Scraper-Fallback ## 📁 Verzeichnisstruktur ```text Eurojackpot/ ├── README.md ├── config/ │ └── notifications.json # Telegram/Email Config ├── data/ │ ├── AlleEurojackpotzahlen.csv # Ziehungshistorie │ ├── eurojackpot_ml_models/ # Trainierte Modelle (RF + LSTM) │ └── generated_tips/ # Generierte Tipps ├── scripts/ │ ├── generators/ │ │ └── ultimate_ai_ml_eurojackpot_generator.py # aktiver Generator │ ├── automation/ │ │ ├── auto_update_and_learn.py # Update + Retraining │ │ ├── weekly_tip_generator.py # Tipp-Generierung │ │ ├── com.eurojackpot.update.plist │ │ └── com.eurojackpot.weekly.plist │ └── utils/ │ ├── notifier.py # Telegram/Email │ ├── update_from_api.py # API-Updater (aktiv) │ ├── update_from_eurojackpot_zahlen_eu.py # Web-Scraper-Fallback │ ├── deep_learning_engine_pytorch.py # LSTM Engine │ ├── simple_update.py # Manuelle Eingabe │ ├── validate_csv.py # manuelles Utility │ ├── verify_draws.py # manuelles Utility │ └── health_check.py # manuelles Utility ├── documentation/ │ └── ARCHITECTURE.md ├── run_tip_generator.sh ├── run_update_and_learn.sh └── logs/ ``` ## 🚀 Quick Start ### 1. Installation ```bash python3 -m venv venv source venv/bin/activate pip install pandas numpy scikit-learn requests torch ``` ### 2. Telegram-Bot einrichten 1. Erstelle einen Bot mit [@BotFather](https://t.me/botfather) 2. Kopiere den Bot-Token, hole deine Chat-ID (z.B. mit [@userinfobot](https://t.me/userinfobot)) 3. Konfiguriere `config/notifications.json`: ```json { "telegram": { "enabled": true, "bot_token": "YOUR_BOT_TOKEN", "chat_id": "YOUR_CHAT_ID" } } ``` Test-Benachrichtigung senden: ```bash python scripts/utils/notifier.py --test ``` ### 3. Tipps manuell generieren ```bash 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 ```bash ./run_update_and_learn.sh ``` ## 🧠 Generator-Strategien Der Ultimate AI/ML Hybrid Generator (`scripts/generators/ultimate_ai_ml_eurojackpot_generator.py`) verteilt pro Lauf 10 Tipps über 4 Strategien, deren Gewichtung sich anhand der bisherigen Trefferleistung selbst anpasst (Startwerte in Klammern): 1. **HYBRID-OPT** (40%): AI-Score + historisches Pattern-Gewicht kombiniert 2. **BALANCED-SPREAD** (30%): erzwingt Verteilung über Zonen, kontrollierter Summenbereich 3. **HIGH-EV** (20%): 2 Hauptzahlen >31, meidet empirisch belegte populäre Einzelzahlen — auf EV statt Trefferwahrscheinlichkeit optimiert 4. **SOFT-CONTRARIAN** (10%): bevorzugt in den letzten 30 Ziehungen unterrepräsentierte Zahlen ### Warum EV statt Trefferwahrscheinlichkeit? Eurojackpot-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](documentation/ARCHITECTURE.md#3-design-entscheidung-quality-score--ev-optimierung). ## 🤖 Automatisierung Läuft über **launchd** (`~/Library/LaunchAgents/`), nicht crontab: | Job | Plist | Zeitplan | | --- | --- | --- | | Tipp-Generierung | `com.eurojackpot.weekly.plist` | Mo + Do, 21:00 Uhr (Abend vor Di/Fr-Ziehung) | | Update & Learning | `com.eurojackpot.update.plist` | Mi + Sa, 08:00 Uhr (Morgen nach Di/Fr-Ziehung) | Beide Plists liegen unter `scripts/automation/` und müssen für die Aktivierung nach `~/Library/LaunchAgents/` verlinkt/kopiert und mit `launchctl load` geladen werden. ## 📲 Telegram-Benachrichtigungen Bei erfolgreicher Tipp-Generierung bzw. nach jeder ausgewerteten Ziehung verschickt `EurojackpotNotifier` automatisch eine Zusammenfassung (bester Tipp, Ø Confidence/Quality, Trefferauswertung). ## 📈 Performance Tracking Alle Generierungen werden in `data/generated_tips/generation_history.json` protokolliert, alle Ziehungsauswertungen in `data/learning_log.json`. ## 🗂️ Datenformat `data/AlleEurojackpotzahlen.csv` (Semikolon-getrennt): ```csv datum;Z1;Z2;Z3;Z4;Z5;SZ1;SZ2 2012-03-23;5;8;21;37;46;6;8 ``` ## Hinweise - Eurojackpot: 5 aus 50 Hauptzahlen + 2 aus 12 Eurozahlen - `setup_cron.sh` beschreibt einen älteren, crontab-basierten Zeitplan, der nicht mehr dem tatsächlich aktiven launchd-Setup entspricht — nicht als aktuelle Referenz verwenden.