Skip to main content

Python SDK for Therminal — Kalshi temperature prediction markets + NWS weather data

Project description

therminal-py

Python SDK for Therminal — Kalshi temperature prediction markets + NWS weather data + real-time METAR signaling.

Install

pip install therminal-py            # core
pip install therminal-py[pandas]    # + DataFrame + Parquet support
pip install therminal-py[ml]        # + scikit-learn ML features
pip install therminal-py[torch]     # + PyTorch Dataset
pip install therminal-py[cli]       # + CLI tool
pip install therminal-py[all]       # pandas + ml + cli

Requires Python 3.11+.

Quick Start

from therminal.weather import WeatherHistory, WeatherLive
from therminal.markets import MarketsClient

# Historical observations (via therminal-api)
weather = WeatherHistory()
obs = weather.observations(station="NYC", units="metric", as_dataframe=True)

# Live METAR (direct from AWC — same Observation schema as historical)
live = WeatherLive()
current = live.current("NYC")
print(current[0].temp_f)

# Batch: one AWC request for multiple stations
batch = live.current(["NYC", "ATL", "MDW", "LAX"])

# Market candles
markets = MarketsClient()
df = markets.candles(market="KXHIGHNY-26MAR20-T50", from_date="2026-03-01", as_dataframe=True)

Backward compatible: from therminal import TherminalClient still works. WeatherClient and LiveClient are aliases for WeatherHistory and WeatherLive.

Configuration

Create ~/.therminal.toml for sensible defaults:

[defaults]
units = "metric"
station = "NYC"

[api]
base_url = "https://api.mostlyright.xyz"

Resolution order: file < env vars (THERMINAL_UNITS, THERMINAL_TZ, THERMINAL_STATION) < per-call kwargs.

Live METAR (AWC Direct)

WeatherLive fetches real-time METAR from the Aviation Weather Center. Returns Observation objects identical in schema to WeatherHistory.observations(), eliminating train/serve skew for trading signals.

from therminal.weather import WeatherLive

live = WeatherLive()
obs = live.current(["NYC", "ATL"])         # batch: one request
history = live.latest("NYC", hours=3)      # last 3 hours
metric = live.current("NYC", units="metric")  # with conversion

ML Features (scikit-learn)

pip install therminal-py[ml]
from therminal.ml import WeatherFeatures, LOBFeatures
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.ensemble import GradientBoostingRegressor

pipe = make_pipeline(
    WeatherFeatures(station="ATL", sources=["omo", "metar"], lookback_hours=24),
    StandardScaler(),
    GradientBoostingRegressor(),
)
pipe.fit(dates_train, y_train)
pipe.predict(dates_test)

Typed Models

All responses return frozen dataclasses with both attribute and dict-style access:

obs = weather.observations(station="NYC")[0]
obs.temp_f          # attribute access
obs["temp_f"]       # dict access (backward compat)
obs.get("temp_f")   # .get() with default
obs.to_dict()       # full dict with all 29 fields

Documentation

Full API reference with interactive playground: docs.mostlyright.xyz

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

therminal_py-1.0.7.tar.gz (57.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

therminal_py-1.0.7-py3-none-any.whl (40.2 kB view details)

Uploaded Python 3

File details

Details for the file therminal_py-1.0.7.tar.gz.

File metadata

  • Download URL: therminal_py-1.0.7.tar.gz
  • Upload date:
  • Size: 57.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for therminal_py-1.0.7.tar.gz
Algorithm Hash digest
SHA256 5e4eebd5d3debc600476b6b005afbd0e02c4d25b3aba1b59f696e526a209ab25
MD5 a10995d92c5e94f3013c79aa03d4f8f6
BLAKE2b-256 ffd10709123906136fdebb7fa6d945e428b3107dc5436b6dff5e7d637f357587

See more details on using hashes here.

Provenance

The following attestation bundles were made for therminal_py-1.0.7.tar.gz:

Publisher: publish.yml on Tarabcak/therminal-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file therminal_py-1.0.7-py3-none-any.whl.

File metadata

  • Download URL: therminal_py-1.0.7-py3-none-any.whl
  • Upload date:
  • Size: 40.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for therminal_py-1.0.7-py3-none-any.whl
Algorithm Hash digest
SHA256 d3106de96e710ffe354e4df08f04300d7082d3612343bf64c1bc72bd9bcf3c8f
MD5 f232543ae42526fbc232061f90e89b1a
BLAKE2b-256 641df7ae21181e50b60151e72186d587fea44d1ba9b8b8e17dc4d78aeb297da3

See more details on using hashes here.

Provenance

The following attestation bundles were made for therminal_py-1.0.7-py3-none-any.whl:

Publisher: publish.yml on Tarabcak/therminal-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page