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
Metadata
Release files for nephyr-weather 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| nephyr_weather-0.1.1.tar.gz | 37.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| nephyr_weather-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 60.4 kB
Release files / nephyr_weather-0.1.1.tar.gz
| Download URL | nephyr_weather-0.1.1.tar.gz |
|---|---|
| Size | 37.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
74b8f20a4057eef310b89cfb7e1ee9bffd542a1b179f0d8b77f713869c6fb882
|
|
BLAKE2b-256 checksum How to use checksums |
3cd4b79a2690a61b0dca6947dc710d9c9d79bc60a1ac81e40126e7a65962af56
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.3
|
Release files / nephyr_weather-0.1.1-py3-none-any.whl
| Download URL | nephyr_weather-0.1.1-py3-none-any.whl |
|---|---|
| Size | 23.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
57c69bd406646aa4763f109519fb42b6b59430a06a25b5cff330015905113fb2
|
|
BLAKE2b-256 checksum How to use checksums |
f685370a7eef7088566e28e2ab055620bba94332f9fc59f92143af80cf824562
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.3
|