इस प्रोजेक्ट के बारे में
यह प्रोजेक्ट Eurojackpot के लिए एकल Selenium स्क्रैपर के रूप में शुरू हुआ और एक छोटी डेटा पाइपलाइन में विकसित हुआ। यह निर्धारित समय पर लॉटरी ड्रॉ डेटा एकत्र करता है, उसे SQLite में संग्रहीत करता है, और उसका उपयोग OPAP SA के तिमाही ग्रॉस गेमिंग रेवेन्यू (GGR) का पूर्वानुमान लगाने के लिए करता है; फिर प्रत्येक पूर्वानुमान का बैकटेस्ट OPAP द्वारा वास्तव में रिपोर्ट किए गए आंकड़ों के विरुद्ध करता है। लेखक इसे एक शैक्षिक/शौकिया प्रोजेक्ट के रूप में वर्णित करता है: मॉडल बहुत कम डेटा बिंदुओं पर प्रशिक्षित एक सरल रिग्रेशन है, और यह निवेश सलाह नहीं है।
आर्किटेक्चर और घटक:
- स्क्रैपर: eurojackpot_api.py eurojackpot.com के Angular फ्रंटएंड के पीछे रिवर्स-इंजीनियर किए गए JSON API (wlinfo/WL_InfoService) का उपयोग करता है, जो किसी भी तारीख के लिए स्टेक्स, संपूर्ण पुरस्कार-स्तर विवरण, विजयी नंबर और 2012 से ड्रॉ तारीखें लौटाता है। यदि वह एंडपॉइंट बदल जाए तो eurojackpot_playwright.py फ़ॉलबैक है। joker_scraper.py और lotto_scraper.py allwyn.gr के विरुद्ध Playwright का उपयोग करते हैं, जो साधारण HTTP क्लाइंट को 403 लौटाता है और कोई उपयोगी API प्रदान नहीं करता; _allwyn_common.py साझा पेज-पार्सिंग लॉजिक रखता है। opap_ir_scraper.py OPAP इन्वेस्टर-रिलेशंस प्रेस विज्ञप्तियों की यथासंभव स्क्रैपिंग है।
- डेटाबेस: db/schema.sql SQLite स्कीमा परिभाषित करता है; db/repository.py sqlite3 डेटा-एक्सेस परत है।
- पाइपलाइन: scrape_latest.py GitHub Actions के माध्यम से निर्धारित समय पर चलता है; backfill_history.py 2012 तक के Eurojackpot ड्रॉ का बैकफ़िल करता है; build_quarterly_features.py ड्रॉ को प्रति-रिपोर्टिंग-अवधि फ़ीचर में एकत्र करता है; load_manual_ggr.py data/manual/opap_quarterly_ggr.csv लोड करता है।
- पूर्वानुमान: dataset.py फ़ीचर को वास्तविक GGR से जोड़ता है; train_model.py क्रॉस-वैलिडेशन के साथ Ridge/GradientBoosting रिग्रेशन प्रशिक्षित करता है; predict.py अभी तक रिपोर्ट नहीं हुई अगली अवधि का पूर्वानुमान लगाता है; backtest.py वॉक-फ़ॉरवर्ड बैकटेस्ट करता है।
डेटा स्रोत और सीमाएँ: Eurojackpot के पास वास्तविक JSON API है और यह प्राथमिक स्रोत है। Joker/Lotto परिणाम पृष्ठ खेले गए कुल कॉलम (€1/कॉलम पर एक वास्तविक स्टेक्स आंकड़ा) और पुरस्कार-स्तर तालिकाएँ प्रकाशित करते हैं, लेकिन केवल वर्तमान ड्रॉ स्क्रैप किया जाता है; ऐतिहासिक बैकफ़िल के लिए साइट के खोज फ़ॉर्म को संचालित करना आवश्यक होगा, जो लागू नहीं किया गया है। OPAP का रिपोर्ट किया गया GGR investors.opap.gr से आता है, लेकिन वित्तीय PDF लेआउट अलग-अलग होते हैं, इसलिए opap_ir_scraper.py यथासंभव है और सत्य का स्रोत नहीं है। इसके बजाय, data/manual/opap_quarterly_ggr.csv वास्तविक OPAP प्रेस विज्ञप्तियों से हाथ से भरा जाता है, जिसमें प्रत्येक पंक्ति अपने स्रोत URL का हवाला देती है, और बैकटेस्ट इसी के विरुद्ध मूल्यांकन करता है।
पूर्वानुमान और बैकटेस्टिंग: मॉडल एकत्रित Eurojackpot/Joker/Lotto स्टेक्स और पेआउट से OPAP के numerical_lotteries खंड GGR की भविष्यवाणी करता है। backtest.py इतिहास में आगे बढ़ता है, केवल सख्ती से पूर्ववर्ती अवधियों पर प्रशिक्षण करता है, भविष्यवाणी करता है और तुलना करता है, तथा प्रति-अवधि MAPE और वृद्धि बनाम गिरावट की सही पहचान के साथ data/backtest_report.csv लिखता है। इसे मैन्युअल CSV में कम से कम दो भरी हुई अवधियों की आवश्यकता होती है और अधिक रिपोर्ट जोड़े जाने पर यह अधिक सार्थक हो जाता है।
स्थानीय रूप से चलाना: requirements और Playwright का Chromium इंस्टॉल करें, फिर पाइपलाइन मॉड्यूल क्रम से चलाएँ (scrape_latest, backfill_history, load_manual_ggr, build_quarterly_features, train_model, backtest, predict)।
CI/CD: scrape.yml प्रतिदिन scrape_latest चलाता है और अद्यतन DB कमिट करता है; backtest.yml लगभग तिमाही और workflow_dispatch के माध्यम से मांग पर चलता है, जो मैन्युअल CSV लोड करता है, फ़ीचर बनाता है, पुनः प्रशिक्षण करता है, बैकटेस्ट करता है, अगली अवधि का पूर्वानुमान लगाता है और परिणाम कमिट करता है।
README खंड के अनुसार GGR संरचना (लॉटरी, स्पोर्ट्स बेटिंग, VLTs, ऑनलाइन कैसीनो, इंस्टेंट/पैसिव) को नोट करता है और एक मूल अस्वीकरण शामिल करता है कि यह प्रोजेक्ट वास्तविक दुनिया के सटीक लाभ की गणना नहीं करता है, क्योंकि कर, विपणन और परिचालन लागत दायरे से बाहर हैं।
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.