Weather signal intelligence for prediction markets — GFS ensemble forecasts vs market prices
Project description
Nephyr Weather
Weather signal intelligence for prediction markets.
Fetches 31-member GFS ensemble forecasts from Open-Meteo and compares model probabilities against live market prices on Polymarket and Kalshi to detect tradeable edges.
Install
pip install nephyr-weather # core + httpx
pip install "nephyr-weather[mcp]" # + MCP server
pip install "nephyr-weather[api]" # + FastAPI REST server
pip install "nephyr-weather[all]" # everything
Quick start
import asyncio
from nephyr_weather import OpenMeteoClient, signal_from_forecast, MarketInfo, detect_edge
async def main():
# 1. Fetch GFS ensemble forecast
async with OpenMeteoClient() as client:
forecast = await client.fetch_ensemble("NYC", "2026-03-29")
# 2. Generate probability signal
signal = signal_from_forecast(forecast, threshold_f=75.0, direction="above")
print(f"Model P(NYC high > 75°F): {signal.model_probability:.1%}")
# 3. Compare to market price
market = MarketInfo(
platform="kalshi",
ticker="KXHIGHNY-26MAR29-T75",
city="NYC",
threshold_f=75.0,
direction="above",
market_price=0.55,
)
result = detect_edge(signal, market)
print(f"Edge: {result.edge:+.1%}, EV: {result.ev:.4f}, Tradeable: {result.is_tradeable}")
asyncio.run(main())
Supported cities
NYC, Chicago, Miami, Austin, LA, Denver, Boston, London, Seoul, Shanghai, Hong Kong, Atlanta
Modules
| Module | Purpose |
|---|---|
cities |
City coordinates + name normalisation |
ensemble |
Open-Meteo GFS client, temperature utils |
signals |
Probability calculations from ensemble arrays |
markets |
Polymarket + Kalshi weather market discovery |
edge |
Edge detection, EV calculation |
types |
Public dataclasses |
MCP server
nephyr-weather-mcp
Tools: get_weather_signals, get_ensemble_forecast, detect_edges, list_active_markets, get_city_info
REST API
uvicorn api.app:app --reload
Endpoints: POST /v1/signals, POST /v1/forecast, POST /v1/edges, GET /v1/markets, GET /v1/cities, GET /v1/health
Pricing
| Tier | Details |
|---|---|
| Free | 10 signals/day (one city) |
| Paid | $49/month — all 12 cities, unlimited calls |
| Enterprise | $499/month — custom cities, SLA, dedicated support |
| Agent-to-agent | $0.01/signal |
License
MIT — CLM Studios
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file nephyr_weather-0.1.0.tar.gz.
File metadata
- Download URL: nephyr_weather-0.1.0.tar.gz
- Upload date:
- Size: 36.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0804115b5c4440f29d946345f344ae62078fab626278ac63857ed9d13f0aa4f9
|
|
| MD5 |
0bbc9e79f5cbf22c740e081e6ae672c6
|
|
| BLAKE2b-256 |
89a6f0e9a773d66d08c62a5b3c9c2d5419b9fe9c3a7e24112be278203eedbe4e
|
File details
Details for the file nephyr_weather-0.1.0-py3-none-any.whl.
File metadata
- Download URL: nephyr_weather-0.1.0-py3-none-any.whl
- Upload date:
- Size: 23.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1e6f7a149496fa051bdebb83b4b89c1b1032abf62b758dd42d3fd82ba7d63c33
|
|
| MD5 |
d9547711c09290dc3b76792038548c90
|
|
| BLAKE2b-256 |
b1d2b74fe337f6872c066d94e7baba22e9cfb3a40255301e348ac481dcedc46e
|