Files
cbazzaandClaude Sonnet 5 ab42a13048 Rewrite README to match the actual active system
The old README documented almost exclusively the legacy scripts
removed in the previous commit and never mentioned the real
automation (auto_update_and_learn.py, weekly_tip_generator.py,
launchd) at all. Rewritten to describe what's actually running: the
4-strategy generator, the EV-optimized quality score, the launchd
schedule (not crontab - setup_cron.sh is stale), and the real data
update chain. Links to the new ARCHITECTURE.md for details.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-10 18:59:38 +02:00

6.1 KiB

Eurojackpot Analyse & Generator

Automatisiertes System zur Analyse von Eurojackpot-Daten und Generierung von KI-gestützten Tipps mit Telegram-Benachrichtigungen. Schwesterprojekt von Lotto 6aus49 — 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.

🎲 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

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

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
  2. Kopiere den Bot-Token, hole deine Chat-ID (z.B. mit @userinfobot)
  3. Konfiguriere config/notifications.json:
{
    "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_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.

🤖 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):

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.