🌡️ PolyWeather: Intelligent Weather Quant Analysis Bot

PolyWeather is a weather analysis tool built for prediction markets like Polymarket. It aggregates multi-source forecasts, real-time airport METAR observations, a math-based probability engine, and AI-driven decision support to help users evaluate weather trading risks more scientifically.


Core Features

1. 🧬 Dynamic Ensemble Blending (DEB Algorithm)

The system automatically tracks the historical performance of weather models (ECMWF, GFS, ICON, GEM, JMA) per city:

  • Error-Based Weighting: Dynamically adjusts model weights based on their Mean Absolute Error (MAE) over the past 7 days. Lower error = higher weight.
  • Blended Forecast: Provides a bias-corrected "DEB Blended High Temperature" recommendation.
  • Self-Learning: Requires at least 2 days of observations before activating weight differentiation. Uses equal-weight averaging during cold start.
  • Concurrency Safe: Built-in memory cache and file locking (fcntl) for high-concurrency group chat queries.

2. 🎲 Math Probability Engine (Settlement Probability)

Automatically computes the probability for each possible WU settlement integer using a Gaussian distribution fitted to the ensemble forecast:

  • Method: Derives standard deviation (σ) from the 51-member ensemble P10/P90, centers the distribution (μ) on a weighted average of DEB/multi-model median (70%) and ensemble median (30%).
  • Interval Integration: Integrates over each WU rounding interval [N-0.5, N+0.5) to compute the probability of settling at integer N.
  • Display: 🎲 Settlement Probability (μ=3.7): 4°C [3.5~4.5) 68% | 3°C [2.5~3.5) 32%

3. 🤖 AI Deep Analysis (Groq LLaMA 3.3 70B)

Feeds wind speed, wind direction, cloud cover, solar radiation, and METAR trend data into LLaMA 70B:

  • Logical Reasoning: Uses 2-3 sentences to deeply analyze airport dynamics—whether conditions promote or inhibit warming, and whether the forecast can be reached.
  • Market Call: Explicitly states the expected peak time window and the specific temperature betting range. Calls "dead market" when cooling is confirmed.
  • Confidence Score: Quantitative 1-10 confidence rating.
  • High Availability: Built-in auto-retry + fallback model degradation (70B → 8B) to withstand Groq API 500/503 outages.

4. ⏱️ Real-time Airport Observations (Zero-Cache METAR)

  • Live Passthrough: Bypasses CDN caching via dynamic headers to obtain first-hand METAR reports.
  • Settlement Warning: Automatically calculates the Wunderground settlement boundary (X.5 rounding line).

5. 📈 Historical Data Collection

  • Includes fetch_history.py to retrieve up to 3 years of hourly historical weather data (temperature, humidity, radiation, pressure, 10+ dimensions), providing data foundation for future ML models (XGBoost/MOS).

Deployment

Requirements

  • Python 3.11+
  • Install dependencies: pip install -r requirements.txt
  • Environment Variables: Set TELEGRAM_BOT_TOKEN and GROQ_API_KEY in your .env file.

VPS Quick Deployment

  1. Clone the repository and install dependencies.
  2. Configure your .env file.
  3. Use the following script for one-click updates and restarts:
cat > ~/update.sh << 'EOF'
#!/bin/bash
cd ~/PolyWeather
git fetch origin
git reset --hard origin/main
pkill -f bot_listener.py
sleep 1
nohup python3 bot_listener.py > bot.log 2>&1 &
echo "✅ PolyWeather Restarted!"
EOF
chmod +x ~/update.sh

🕹️ Bot Commands

Command Description
/city [city_name] Get weather analysis, settlement probabilities, METAR tracking, and AI insights.
/id View the Chat ID of the current conversation.
/help Display help information.

Supported Cities

lon (London), par (Paris), ank (Ankara), nyc (New York), chi (Chicago), dal (Dallas), mia (Miami), atl (Atlanta), sea (Seattle), tor (Toronto), sel (Seoul), ba (Buenos Aires), wel (Wellington), etc.


🏗️ Architecture

graph TD
    User[User] -->|Query Command| Bot[bot_listener.py Core Scheduler]

    subgraph Data Acquisition
        Bot --> Collector[WeatherDataCollector]
        Collector --> OM[Open-Meteo Forecast/Ensemble]
        Collector --> MM[Multi-Model ECMWF/GFS/ICON/GEM/JMA]
        Collector --> METAR[Live Airport METAR]
    end

    subgraph Algorithm Layer
        Collector --> DEB[DEB Dynamic Weighting]
        DEB --> DB[(daily_records Database)]
        Collector --> Prob[Gaussian Probability Engine]
        Collector --> Logic[Settlement Boundary / Trend Analysis]
    end

    subgraph AI Decision Layer
        DEB --> AI[Groq LLaMA 70B]
        Prob --> AI
        Logic --> AI
        METAR --> AI
    end

    AI -->|Market Call + Logic + Confidence| Bot
    Bot -->|DEB Blend + Probability + AI Analysis| User

💡 Trading Tips

  1. Watch Settlement Probability: The probability engine is math-based and more objective than AI subjective judgment. When one temperature has > 65% probability, the direction is relatively clear.
  2. Reference DEB Blended Value: When models diverge, the DEB corrected value is usually more reliable than any single forecast.
  3. Observe AI Confidence: A score below 5 indicates high uncertainty—consider staying on the sidelines.
  4. Watch Settlement Boundaries: When the observed high is near X.5, be wary of rounding jumps during WU settlements.
  5. Distribution Center μ: The μ value shown in the probability display represents the algorithm's expected most likely actual high temperature—compare it directly with the Polymarket odds.

Updated 2026-02-27

S
Description
polymarket Intelligent Weather Quant Analysis Bot
Readme AGPL-3.0 143 MiB
Languages
Python 56.8%
TypeScript 37%
CSS 4.1%
JavaScript 1%
PLpgSQL 0.4%
Other 0.6%