diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000..5566461 Binary files /dev/null and b/.DS_Store differ diff --git a/bot_v3.py b/bot_v3.py new file mode 100644 index 0000000..98140f1 --- /dev/null +++ b/bot_v3.py @@ -0,0 +1,912 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +""" +Weather Trading Bot v3 — Polymarket CLOB Real Trading +====================================================== +bot_v2 strategy logic + py_clob_client on-chain order execution. +Only trades US cities (F) for now — EU/Asia cities need CLOB market support. + +Usage: + python bot_v3.py run # Full trading loop (scan + monitor) + python bot_v3.py scan # One-shot scan + trade signals + python bot_v3.py status # Show open positions + balance + python bot_v3.py cancel # Cancel all open orders + python bot_v3.py cancel --market # Cancel orders for a market +""" + +import re +import sys +import json +import math +import time +import os +import dotenv +from datetime import datetime, timezone, timedelta +from pathlib import Path + +# ============================================================================= +# CONFIG +# ============================================================================= + +BOT_DIR = Path(__file__).parent +dotenv.load_dotenv(BOT_DIR / ".env") + +with open(BOT_DIR / "config.json", encoding="utf-8") as f: + _cfg = json.load(f) + +# --- Wallet --- +PK = os.getenv("PK", "") +WALLET = os.getenv("WALLET", "") +SIG_TYPE = int(os.getenv("SIG_TYPE", "0")) + +# --- Trading --- +MAX_BET = _cfg.get("max_bet", 2.0) +MIN_EV = _cfg.get("min_ev", 0.10) +MAX_PRICE = _cfg.get("max_price", 0.45) +MIN_VOLUME = _cfg.get("min_volume", 500) +MIN_HOURS = _cfg.get("min_hours", 2.0) +MAX_HOURS = _cfg.get("max_hours", 72.0) +KELLY_FRAC = _cfg.get("kelly_fraction", 0.25) +MAX_SLIPPAGE = _cfg.get("max_slippage", 0.03) +SCAN_INTERVAL = _cfg.get("scan_interval", 3600) +VC_KEY = _cfg.get("vc_key", "") + +# --- CLOB --- +CLOB_HOST = "https://clob.polymarket.com" +CHAIN_ID = 137 # Polygon + +# --- Contract addresses (Polygon) --- +USDC_ADDRESS = "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174" +CTF_EXCHANGE = "0x4bFb41d5B3570DeFd03C39a9A4D8dE6Bd8B8982E" +NEG_RISK_EXCHANGE = "0xC5d563A36AE78145C45a50134d48A1215220f80a" +ROUTER = "0xd91E80cF2E7be2e162c6513ceD06f1dD0dA35296" +CONDITIONAL_TOKENS = "0x4D97DCd97eC945f40cF65F87097ACe5EA0476045" + +# --- Gas --- +MAX_FEE_PER_GAS = 200e9 # 200 gwei + +# ============================================================================= +# MATH +# ============================================================================= + +def norm_cdf(x): + return 0.5 * (1.0 + math.erf(x / math.sqrt(2.0))) + +def bucket_prob(forecast, t_low, t_high, sigma=2.0): + if t_low == -999: + return norm_cdf((t_high - float(forecast)) / sigma) + if t_high == 999: + return 1.0 - norm_cdf((t_low - float(forecast)) / sigma) + return 1.0 if in_bucket(forecast, t_low, t_high) else 0.0 + +def calc_ev(p, price): + if price <= 0 or price >= 1: return 0.0 + return round(p * (1.0 / price - 1.0) - (1.0 - p), 4) + +def calc_kelly(p, price): + if price <= 0 or price >= 1: return 0.0 + b = 1.0 / price - 1.0 + f = (p * b - (1.0 - p)) / b + return round(min(max(0.0, f) * KELLY_FRAC, 1.0), 4) + +def bet_size(kelly, balance): + raw = kelly * balance + return round(min(raw, MAX_BET), 2) + +# ============================================================================= +# COLORS +# ============================================================================= + +class C: + GREEN = "\033[92m" + YELLOW = "\033[93m" + RED = "\033[91m" + CYAN = "\033[96m" + GRAY = "\033[90m" + RESET = "\033[0m" + BOLD = "\033[1m" + +def ok(msg): print(f"{C.GREEN} ✅ {msg}{C.RESET}") +def warn(msg): print(f"{C.YELLOW} ⚠️ {msg}{C.RESET}") +def info(msg): print(f"{C.CYAN} {msg}{C.RESET}") +def skip(msg): print(f"{C.GRAY} ⏸️ {msg}{C.RESET}") +def live(msg): print(f"{C.GREEN} {msg}{C.RESET}") + +# ============================================================================= +# CLOB CLIENT +# ============================================================================= + +from py_clob_client.client import ClobClient +from py_clob_client.clob_types import OrderArgs, MarketOrderArgs, OrderType + +_clob: ClobClient = None + +def get_clob() -> ClobClient: + global _clob + if _clob is None: + _clob = ClobClient( + host=CLOB_HOST, + chain_id=CHAIN_ID, + key=PK, + ) + return _clob + +# ============================================================================= +# ON-CHAIN HELPERS +# ============================================================================= + +from web3 import Web3 +from eth_account import Account + +_w3: Web3 = None + +def get_w3() -> Web3: + global _w3 + if _w3 is None: + _w3 = Web3(Web3.HTTPProvider("https://1rpc.io/matic")) + return _w3 + +def get_nonce(wallet: str) -> int: + return get_w3().eth.get_transaction_count(wallet) + +def send_tx(w3, signed_txn): + return w3.eth.send_raw_transaction(signed_txn).hex() + +def wait_for_receipt(w3, tx_hash: str, timeout=120): + start = time.time() + while time.time() - start < timeout: + try: + receipt = w3.eth.get_transaction_receipt(tx_hash) + if receipt and receipt["status"] == 1: + return receipt + except Exception: + pass + time.sleep(2) + return None + +# ============================================================================= +# BALANCE CHECK +# ============================================================================= + +def get_usdc_balance(wallet: str) -> float: + """Get USDC.e balance on Polygon.""" + w3 = get_w3() + usdc_abi = [ + { + "name": "balanceOf", + "inputs": [{"name": "account", "type": "address"}], + "outputs": [{"name": "", "type": "uint256"}], + "stateMutability": "view", + "type": "function" + }, + { + "name": "decimals", + "inputs": [], + "outputs": [{"name": "", "type": "uint8"}], + "stateMutability": "view", + "type": "function" + } + ] + usdc = w3.eth.contract( + address=Web3.to_checksum_address(USDC_ADDRESS), + abi=usdc_abi + ) + try: + decimals = usdc.functions.decimals().call() + bal = usdc.functions.balanceOf(Web3.to_checksum_address(wallet)).call() + return bal / (10 ** decimals) + except Exception as e: + warn(f"Balance check failed: {e}") + return 0.0 + +def get_pol_balance(wallet: str) -> float: + w3 = get_w3() + bal = w3.eth.get_balance(Web3.to_checksum_address(wallet)) + return int(bal) / 1e18 + +# ============================================================================= +# APPROVAL CHECK +# ============================================================================= + +def is_approved(token: str, spender: str, wallet: str) -> bool: + """Check if spender is approved for token (USDC.e).""" + w3 = get_w3() + usdc_abi = [ + { + "name": "allowance", + "inputs": [ + {"name": "owner", "type": "address"}, + {"name": "spender", "type": "address"} + ], + "outputs": [{"name": "", "type": "uint256"}], + "stateMutability": "view", + "type": "function" + } + ] + usdc = w3.eth.contract( + address=Web3.to_checksum_address(token), + abi=usdc_abi + ) + try: + allowance = usdc.functions.allowance( + Web3.to_checksum_address(wallet), + Web3.to_checksum_address(spender) + ).call() + return allowance > 0 + except Exception: + return False + +def approve_token(token: str, spender: str, wallet: str, private_key: str, + amount_wei: int = 2**256 - 1, max_fee: int = MAX_FEE_PER_GAS): + """Approve spender to spend token on behalf of wallet.""" + w3 = get_w3() + usdc_abi = [ + { + "name": "approve", + "inputs": [ + {"name": "spender", "type": "address"}, + {"name": "amount", "type": "uint256"} + ], + "outputs": [{"name": "", "type": "bool"}], + "stateMutability": "nonpayable", + "type": "function" + } + ] + usdc = w3.eth.contract( + address=Web3.to_checksum_address(token), + abi=usdc_abi + ) + nonce = get_nonce(wallet) + build = usdc.functions.approve( + Web3.to_checksum_address(spender), + amount_wei + ).build_transaction({ + "from": wallet, + "nonce": nonce, + "maxFeePerGas": max_fee, + "maxPriorityFeePerGas": 25e9, + "chainId": CHAIN_ID, + }) + signed = w3.eth.account.sign_transaction(build, private_key) + tx_hash = send_tx(w3, signed.raw_transaction) + live(f"Approve tx: {tx_hash}") + receipt = wait_for_receipt(w3, tx_hash) + if receipt: + ok(f"Approved {spender} for {token[:10]}...") + return True + warn(f"Approval tx failed: {tx_hash}") + return False + +def ensure_approvals(): + """Ensure all required approvals are set before trading.""" + wallet = WALLET + required = [ + (USDC_ADDRESS, CTF_EXCHANGE), + (USDC_ADDRESS, NEG_RISK_EXCHANGE), + (USDC_ADDRESS, ROUTER), + ] + for token, spender in required: + if not is_approved(token, spender, wallet): + warn(f"Missing approval: {spender[:10]} for {token[:10]}") + ok(f"Approving {spender[:10]}...") + approve_token(token, spender, wallet, PK) + time.sleep(5) # Wait for confirmation + else: + ok(f"Already approved: {spender[:10]}") + +# ============================================================================= +# ORDER EXECUTION +# ============================================================================= + +def place_buy_order(market_id: str, token_id: str, price: float, shares: float, + balance: float, private_key: str, wallet: str) -> dict: + """ + Place a BUY order on Polymarket CLOB. + Uses FOK (Fill-Or-Kill) market order to guarantee execution. + Returns dict with success status and details. + """ + w3 = get_w3() + clob = get_clob() + + cost = round(shares * price, 4) + if cost > balance: + return {"success": False, "reason": f"Insufficient balance (${balance:.2f} < ${cost:.2f})"} + + if not is_approved(USDC_ADDRESS, ROUTER, wallet): + return {"success": False, "reason": "Router approval missing"} + + # --- Market order via CLOB --- + order_args = MarketOrderArgs( + token_id=token_id, + amount=cost, # For BUY: amount is in dollars (USDC) + side="BUY", + price=price, + ) + + try: + # First check allowance + clob.assert_level_1_auth() + order_result = clob.create_market_order(order_args) + live(f"Market order placed: {order_result}") + except Exception as e: + return {"success": False, "reason": f"Order failed: {e}"} + + return { + "success": True, + "market_id": market_id, + "token_id": token_id, + "price": price, + "shares": shares, + "cost": cost, + "order_id": order_result.get("orderID") if isinstance(order_result, dict) else str(order_result), + } + +def cancel_order(order_id: str) -> bool: + """Cancel a specific order by ID.""" + clob = get_clob() + try: + clob.cancel(order_id) + ok(f"Cancelled order: {order_id[:20]}...") + return True + except Exception as e: + warn(f"Cancel failed: {e}") + return False + +def cancel_all_orders() -> int: + """Cancel all open orders. Returns count of cancelled orders.""" + clob = get_clob() + try: + result = clob.cancel_all() + count = result.get("count", 0) if isinstance(result, dict) else 0 + ok(f"Cancelled {count} orders") + return count + except Exception as e: + warn(f"Cancel all failed: {e}") + return 0 + +# ============================================================================= +# LOCATIONS & WEATHER DATA +# ============================================================================= + +LOCATIONS = { + "nyc": {"lat": 40.7772, "lon": -73.8726, "name": "New York City", "station": "KLGA", "unit": "F", "region": "us"}, + "chicago": {"lat": 41.9742, "lon": -87.9073, "name": "Chicago", "station": "KORD", "unit": "F", "region": "us"}, + "miami": {"lat": 25.7959, "lon": -80.2870, "name": "Miami", "station": "KMIA", "unit": "F", "region": "us"}, + "dallas": {"lat": 32.8471, "lon": -96.8518, "name": "Dallas", "station": "KDAL", "unit": "F", "region": "us"}, + "seattle": {"lat": 47.4502, "lon":-122.3088, "name": "Seattle", "station": "KSEA", "unit": "F", "region": "us"}, + "atlanta": {"lat": 33.6407, "lon": -84.4277, "name": "Atlanta", "station": "KATL", "unit": "F", "region": "us"}, +} + +TIMEZONES = { + "nyc": "America/New_York", "chicago": "America/Chicago", + "miami": "America/New_York", "dallas": "America/Chicago", + "seattle": "America/Los_Angeles", "atlanta": "America/New_York", +} + +MONTHS = ["january","february","march","april","may","june", + "july","august","september","october","november","december"] + +import requests + +def get_ecmwf(city_slug, dates): + """ECMWF via Open-Meteo. Returns dict {date: temp_f}.""" + loc = LOCATIONS[city_slug] + url = ( + f"https://api.open-meteo.com/v1/forecast" + f"?latitude={loc['lat']}&longitude={loc['lon']}" + f"&daily=temperature_2m_max&temperature_unit=fahrenheit" + f"&forecast_days=7&timezone={TIMEZONES.get(city_slug, 'UTC')}" + f"&models=ecmwf_ifs025&bias_correction=true" + ) + result = {} + for attempt in range(3): + try: + data = requests.get(url, timeout=(5, 10)).json() + if "error" not in data: + for date, temp in zip(data["daily"]["time"], data["daily"]["temperature_2m_max"]): + if date in dates and temp is not None: + result[date] = round(temp) + break + except Exception as e: + if attempt < 2: + time.sleep(2) + else: + warn(f"ECMWF error for {city_slug}: {e}") + return result + +def get_metar(city_slug): + """Current observed temperature from METAR station. D+0 only.""" + loc = LOCATIONS[city_slug] + try: + url = f"https://aviationweather.gov/api/data/metar?ids={loc['station']}&format=json" + data = requests.get(url, timeout=(5, 8)).json() + if data and isinstance(data, list): + temp_c = data[0].get("temp") + if temp_c is not None: + return round(float(temp_c) * 9/5 + 32) + except Exception as e: + warn(f"METAR error for {city_slug}: {e}") + return None + +def get_forecast_snapshot(city_slug, dates): + """Get best temperature forecast for each date. Returns {date: temp_f}.""" + ecmwf = get_ecmwf(city_slug, dates) + today = datetime.now(timezone.utc).strftime("%Y-%m-%d") + result = {} + for date in dates: + best = ecmwf.get(date) + best_source = "ecmwf" + # METAR for today if available + if date == today: + metar = get_metar(city_slug) + if metar is not None: + best = metar + best_source = "metar" + if best is not None: + result[date] = {"temp": best, "source": best_source} + return result + +# ============================================================================= +# POLYMARKET +# ============================================================================= + +def get_polymarket_event(city_slug, month, day, year): + slug = f"highest-temperature-in-{city_slug}-on-{month}-{day}-{year}" + try: + r = requests.get(f"https://gamma-api.polymarket.com/events?slug={slug}", timeout=(5, 8)) + data = r.json() + if data and isinstance(data, list) and len(data) > 0: + return data[0] + except Exception as e: + warn(f"Polymarket API error: {e}") + return None + +def get_market_price(market_id): + try: + r = requests.get(f"https://gamma-api.polymarket.com/markets/{market_id}", timeout=(3, 5)) + data = r.json() + prices = json.loads(data.get("outcomePrices", "[0.5,0.5]")) + return float(prices[0]), float(prices[1]) if len(prices) > 1 else float(prices[0]) + except Exception: + return None, None + +def parse_temp_range(question): + if not question: return None + num = r'(-?\d+(?:\.\d+)?)' + if re.search(r'or below', question, re.IGNORECASE): + m = re.search(num + r'[°]?[FC] or below', question, re.IGNORECASE) + if m: return (-999.0, float(m.group(1))) + if re.search(r'or higher', question, re.IGNORECASE): + m = re.search(num + r'[°]?[FC] or higher', question, re.IGNORECASE) + if m: return (float(m.group(1)), 999.0) + m = re.search(r'between ' + num + r'-' + num + r'[°]?[FC]', question, re.IGNORECASE) + if m: return (float(m.group(1)), float(m.group(2))) + m = re.search(r'be ' + num + r'[°]?[FC] on', question, re.IGNORECASE) + if m: + v = float(m.group(1)) + return (v, v) + return None + +def hours_to_resolution(end_date_str): + try: + end = datetime.fromisoformat(end_date_str.replace("Z", "+00:00")) + return max(0.0, (end - datetime.now(timezone.utc)).total_seconds() / 3600) + except Exception: + return 999.0 + +def in_bucket(forecast, t_low, t_high): + if t_low == t_high: + return round(float(forecast)) == round(t_low) + return t_low <= float(forecast) <= t_high + +def get_condition_id(market_id: str) -> str: + """Get condition ID for a market from Polymarket.""" + try: + r = requests.get(f"https://gamma-api.polymarket.com/markets/{market_id}", timeout=(5, 8)) + data = r.json() + return data.get("conditionId", "") + except Exception: + return "" + +# ============================================================================= +# STATE (local JSON) +# ============================================================================= + +DATA_DIR = BOT_DIR / "data" +DATA_DIR.mkdir(exist_ok=True) +MARKETS_DIR = DATA_DIR / "markets" +MARKETS_DIR.mkdir(exist_ok=True) +STATE_FILE = DATA_DIR / "state_v3.json" + +def load_state(): + if STATE_FILE.exists(): + return json.loads(STATE_FILE.read_text(encoding="utf-8")) + return { + "balance": 0.0, + "starting_balance": 0.0, + "total_trades": 0, + "wins": 0, + "losses": 0, + "open_orders": {}, + } + +def save_state(state): + STATE_FILE.write_text(json.dumps(state, indent=2, ensure_ascii=False), encoding="utf-8") + +def market_path(city_slug, date_str): + return MARKETS_DIR / f"{city_slug}_{date_str}.json" + +def load_market(city_slug, date_str): + p = market_path(city_slug, date_str) + if p.exists(): + return json.loads(p.read_text(encoding="utf-8")) + return None + +def save_market(market): + p = market_path(market["city"], market["date"]) + p.write_text(json.dumps(market, indent=2, ensure_ascii=False), encoding="utf-8") + +def load_all_markets(): + markets = [] + for f in MARKETS_DIR.glob("*.json"): + try: + markets.append(json.loads(f.read_text(encoding="utf-8"))) + except Exception: + pass + return markets + +# ============================================================================= +# SIGMA (weather forecast uncertainty) +# ============================================================================= + +SIGMA_F = 2.0 + +def get_sigma(city_slug): + return SIGMA_F # Flat sigma for now; calibration can be added later + +# ============================================================================= +# OPEN POSITIONS from CLOB +# ============================================================================= + +def get_clob_positions(): + """Get all open orders/positions from CLOB.""" + clob = get_clob() + try: + orders = clob.get_orders() + return orders if orders else [] + except Exception as e: + warn(f"Failed to fetch CLOB orders: {e}") + return [] + +# ============================================================================= +# SCAN & TRADE (one shot) +# ============================================================================= + +def scan_and_trade(): + """ + One-shot scan: check all cities for trade signals and execute real orders. + Returns (new_trades, errors). + """ + now = datetime.now(timezone.utc) + state = load_state() + balance = get_usdc_balance(WALLET) + if balance != state.get("balance"): + state["balance"] = balance + save_state(state) + + print(f"\n{C.BOLD}{C.CYAN}🌤 Weather Trading Bot v3 — Live Mode{C.RESET}") + print("=" * 60) + print(f" Wallet: {WALLET[:8]}...{WALLET[-4:]}") + print(f" USDC.e: ${balance:.4f}") + print(f" POL balance: {get_pol_balance(WALLET):.4f} POL") + print(f" Max bet: ${MAX_BET} | Min EV: {MIN_EV*100:.0f}%") + print() + + new_trades = 0 + errors = [] + + for city_slug, loc in LOCATIONS.items(): + print(f" -> {loc['name']}...", end=" ", flush=True) + unit_sym = "F" + + try: + dates = [(now + timedelta(days=i)).strftime("%Y-%m-%d") for i in range(4)] + forecasts = get_forecast_snapshot(city_slug, dates) + time.sleep(0.3) + except Exception as e: + print(f"error ({e})") + continue + + for i, date in enumerate(dates): + dt = datetime.strptime(date, "%Y-%m-%d") + event = get_polymarket_event( + city_slug, + MONTHS[dt.month - 1], + dt.day, + dt.year + ) + if not event: + continue + + end_date = event.get("endDate", "") + hours = hours_to_resolution(end_date) if end_date else 0 + horizon = f"D+{i}" + + if hours < MIN_HOURS or hours > MAX_HOURS: + continue + + # Parse all outcome buckets from Polymarket + outcomes = [] + for market in event.get("markets", []): + question = market.get("question", "") + mid = str(market.get("id", "")) + volume = float(market.get("volume", 0)) + rng = parse_temp_range(question) + if not rng: + continue + try: + prices = json.loads(market.get("outcomePrices", "[0.5,0.5]")) + bid = float(prices[0]) + ask = float(prices[1]) if len(prices) > 1 else bid + except Exception: + continue + outcomes.append({ + "question": question, + "market_id": mid, + "range": rng, + "bid": round(bid, 4), + "ask": round(ask, 4), + "price": round(bid, 4), + "spread": round(ask - bid, 4), + "volume": round(volume, 0), + }) + + if not outcomes: + continue + + forecastsnap = forecasts.get(date, {}) + forecast_temp = forecastsnap.get("temp") + best_source = forecastsnap.get("source", "ecmwf") + + if forecast_temp is None: + continue + + sigma = get_sigma(city_slug) + best_signal = None + + # Find the bucket that matches our forecast + for o in outcomes: + t_low, t_high = o["range"] + if not in_bucket(forecast_temp, t_low, t_high): + continue + + volume = o["volume"] + ask = o["ask"] + spread = o["spread"] + + if volume < MIN_VOLUME: + continue + if ask >= MAX_PRICE: + continue + if spread > MAX_SLIPPAGE: + continue + + p = bucket_prob(forecast_temp, t_low, t_high, sigma) + ev = calc_ev(p, ask) + if ev < MIN_EV: + continue + + kelly = calc_kelly(p, ask) + size = bet_size(kelly, balance) + if size < 0.50: + continue + + shares = round(size / ask, 2) + token_id = get_condition_id(o["market_id"]) + + best_signal = { + "market_id": o["market_id"], + "token_id": token_id, + "question": o["question"], + "bucket_low": t_low, + "bucket_high": t_high, + "entry_price": ask, + "bid": o["bid"], + "spread": spread, + "shares": shares, + "cost": round(shares * ask, 4), + "p": round(p, 4), + "ev": round(ev, 4), + "kelly": round(kelly, 4), + "forecast_temp": forecast_temp, + "forecast_src": best_source, + "sigma": sigma, + "volume": volume, + } + break # Only one bucket per market + + if best_signal: + bucket_label = f"{best_signal['bucket_low']}-{best_signal['bucket_high']}{unit_sym}" + print(f"\n {C.BOLD}📍 {loc['name']} {horizon} — {date}{C.RESET}") + print(f" {C.CYAN} Forecast: {forecast_temp}°F ({best_source}) | {bucket_label}{C.RESET}") + print(f" {C.GREEN} ✅ BUY SIGNAL | ${best_signal['cost']:.2f} @ ${ask:.3f} | " + f"EV {best_signal['ev']:+.2f} | Kel {best_signal['kelly']:.2f}{C.RESET}") + + # --- EXECUTE REAL ORDER --- + result = place_buy_order( + market_id=best_signal["market_id"], + token_id=best_signal["token_id"], + price=best_signal["entry_price"], + shares=best_signal["shares"], + balance=balance, + private_key=PK, + wallet=WALLET, + ) + + if result["success"]: + new_trades += 1 + state["total_trades"] += 1 + balance -= best_signal["cost"] + + live(f" [LIVE] BUY {loc['name']} {horizon} | {bucket_label} @ ${best_signal['entry_price']:.3f} " + f"| EV {best_signal['ev']:+.2f} | ${best_signal['cost']:.2f}") + + # Save to market record + mkt_record = load_market(city_slug, date) or { + "city": city_slug, + "city_name": loc["name"], + "date": date, + "unit": "F", + "event_end_date": end_date, + "status": "open", + "position": None, + } + mkt_record["position"] = { + **best_signal, + "order_id": result.get("order_id"), + "opened_at": datetime.now(timezone.utc).isoformat(), + "status": "open", + "closed_at": None, + "close_reason": None, + "exit_price": None, + "pnl": None, + } + save_market(mkt_record) + else: + errors.append(f"{loc['name']} {horizon}: {result['reason']}") + warn(f" ❌ Order failed: {result['reason']}") + else: + # No signal — show why + for o in outcomes: + t_low, t_high = o["range"] + if not in_bucket(forecast_temp, t_low, t_high): + continue + ask = o["ask"] + p = bucket_prob(forecast_temp, t_low, t_high, sigma) + ev = calc_ev(p, ask) + skip(f" {forecast_temp}°F bucket {t_low}-{t_high}F @ ${ask:.3f} EV={ev:.2f} — skipped") + break + + print("ok") + + # Save updated balance + state["balance"] = round(balance, 4) + save_state(state) + + print(f"\n{'=' * 60}") + print(f" Scanned: {len(LOCATIONS)} cities") + print(f" New trades: {C.GREEN}{new_trades}{C.RESET}") + print(f" Errors: {len(errors)}") + print(f" Balance: ${balance:.4f}") + print(f"{'=' * 60}\n") + + return new_trades, errors + +# ============================================================================= +# STATUS +# ============================================================================= + +def show_status(): + """Show current balance, positions, and open orders.""" + balance = get_usdc_balance(WALLET) + pol_bal = get_pol_balance(WALLET) + + print(f"\n{C.BOLD}{C.CYAN}📊 Bot v3 — Status{C.RESET}") + print("=" * 60) + print(f" Wallet: {WALLET[:8]}...{WALLET[-4:]}") + print(f" USDC.e: ${balance:.4f}") + print(f" POL: {pol_bal:.4f}") + print() + + # Open orders from CLOB + orders = get_clob_positions() + if orders: + print(f" Open orders: {len(orders)}") + for o in orders: + print(f" {o.get('side','?')} {o.get('size','?')} @ ${o.get('price','?')} " + f"[{o.get('marketID','')[:16]}...]") + else: + print(f" Open orders: 0") + + # Local market positions + markets = load_all_markets() + open_pos = [m for m in markets if m.get("position") and m["position"].get("status") == "open"] + if open_pos: + print(f"\n Open positions (local): {len(open_pos)}") + for m in open_pos: + pos = m["position"] + unit_sym = "F" + label = f"{pos['bucket_low']}-{pos['bucket_high']}{unit_sym}" + print(f" {m['city_name']} {m['date']} | {label} | " + f"entry ${pos['entry_price']:.3f} | cost ${pos.get('cost',0):.2f}") + else: + print(f"\n Open positions: 0") + + print(f"{'=' * 60}\n") + +# ============================================================================= +# MAIN LOOP +# ============================================================================= + +MONITOR_INTERVAL = 600 # 10 minutes + +def run_loop(): + print(f"\n{C.BOLD}{C.CYAN}🌤 Weather Trading Bot v3 — LIVE{C.RESET}") + print("=" * 60) + print(f" Wallet: {WALLET[:8]}...{WALLET[-4:]}") + print(f" Cities: {len(LOCATIONS)}") + print(f" Max bet: ${MAX_BET} | Kelly fraction: {KELLY_FRAC}") + print(f" Min EV: {MIN_EV*100:.0f}%") + print(f" Scan: every {SCAN_INTERVAL//60} min") + print(f" Monitor: every {MONITOR_INTERVAL//60} min") + print() + + # Check approvals on startup + ok("Checking approvals...") + ensure_approvals() + + last_full_scan = 0 + + while True: + now_ts = time.time() + now_str = datetime.now().strftime("%Y-%m-%d %H:%M:%S") + + if now_ts - last_full_scan >= SCAN_INTERVAL: + print(f"[{now_str}] Full scan...") + try: + new_trades, errors = scan_and_trade() + last_full_scan = time.time() + except Exception as e: + warn(f"Scan error: {e}") + time.sleep(60) + continue + else: + print(f"[{now_str}] Monitoring...") + time.sleep(MONITOR_INTERVAL) + +# ============================================================================= +# CLI +# ============================================================================= + +if __name__ == "__main__": + if not PK or not WALLET: + print("ERROR: PK and WALLET must be set in weatherbot/.env") + sys.exit(1) + + cmd = sys.argv[1] if len(sys.argv) > 1 else "scan" + + if cmd == "run": + run_loop() + elif cmd == "scan": + scan_and_trade() + elif cmd == "status": + show_status() + elif cmd == "cancel": + market_id = sys.argv[2] if len(sys.argv) > 2 else None + if market_id: + print(f"Cancelling orders for market: {market_id}") + else: + count = cancel_all_orders() + print(f"Cancelled {count} orders") + else: + print(f"Usage: python bot_v3.py [scan|run|status|cancel]") diff --git a/config.json b/config.json index d78a9b2..fcc63f7 100644 --- a/config.json +++ b/config.json @@ -1,14 +1,15 @@ -{ - "balance": 10000.0, - "max_bet": 20.0, - "min_ev": 0.1, - "max_price": 0.45, - "min_volume": 500, - "min_hours": 2.0, - "max_hours": 72.0, - "kelly_fraction": 0.25, - "scan_interval": 3600, - "calibration_min": 30, - "vc_key": "YOUR_KEY_HERE", - "max_slippage": 0.03 -} +{ + "balance": 0.0, + "max_bet": 2.0, + "min_ev": 0.10, + "max_price": 0.45, + "min_volume": 500, + "min_hours": 2.0, + "max_hours": 72.0, + "kelly_fraction": 0.25, + "scan_interval": 3600, + "calibration_min": 30, + "vc_key": "DFPWW2VD4LTZSM32ZS2R6XTSA", + "mode": "live", + "max_slippage": 0.03 +} diff --git a/data/markets/ankara_2026-04-18.json b/data/markets/ankara_2026-04-18.json new file mode 100644 index 0000000..a865e6c --- /dev/null +++ b/data/markets/ankara_2026-04-18.json @@ -0,0 +1,179 @@ +{ + "city": "ankara", + "city_name": "Ankara", + "date": "2026-04-18", + "unit": "C", + "station": "LTAC", + "event_end_date": "2026-04-18T12:00:00Z", + "hours_at_discovery": 5.4, + "status": "open", + "position": null, + "actual_temp": null, + "resolved_outcome": null, + "pnl": null, + "forecast_snapshots": [ + { + "ts": "2026-04-18T06:34:16.199277+00:00", + "horizon": "D+0", + "hours_left": 5.4, + "ecmwf": 13.0, + "hrrr": null, + "metar": 10.0, + "best": 13.0, + "best_source": "ecmwf" + } + ], + "market_snapshots": [ + { + "ts": "2026-04-18T06:34:16.199277+00:00", + "top_bucket": "14.0-14.0C", + "top_price": 0.87 + } + ], + "all_outcomes": [ + { + "question": "Will the highest temperature in Ankara be 12°C or below on April 18?", + "market_id": "1996422", + "range": [ + -999.0, + 12.0 + ], + "bid": 0.0, + "ask": 1.0, + "price": 0.0, + "spread": 1.0, + "volume": 10796.0 + }, + { + "question": "Will the highest temperature in Ankara be 13°C on April 18?", + "market_id": "1996423", + "range": [ + 13.0, + 13.0 + ], + "bid": 0.0005, + "ask": 0.9995, + "price": 0.0005, + "spread": 0.999, + "volume": 30867.0 + }, + { + "question": "Will the highest temperature in Ankara be 14°C on April 18?", + "market_id": "1996424", + "range": [ + 14.0, + 14.0 + ], + "bid": 0.87, + "ask": 0.13, + "price": 0.87, + "spread": -0.74, + "volume": 4788.0 + }, + { + "question": "Will the highest temperature in Ankara be 15°C on April 18?", + "market_id": "1996425", + "range": [ + 15.0, + 15.0 + ], + "bid": 0.055, + "ask": 0.945, + "price": 0.055, + "spread": 0.89, + "volume": 2652.0 + }, + { + "question": "Will the highest temperature in Ankara be 16°C on April 18?", + "market_id": "1996426", + "range": [ + 16.0, + 16.0 + ], + "bid": 0.0245, + "ask": 0.9755, + "price": 0.0245, + "spread": 0.951, + "volume": 4746.0 + }, + { + "question": "Will the highest temperature in Ankara be 17°C on April 18?", + "market_id": "1996427", + "range": [ + 17.0, + 17.0 + ], + "bid": 0.0065, + "ask": 0.9935, + "price": 0.0065, + "spread": 0.987, + "volume": 4873.0 + }, + { + "question": "Will the highest temperature in Ankara be 18°C on April 18?", + "market_id": "1996428", + "range": [ + 18.0, + 18.0 + ], + "bid": 0.0035, + "ask": 0.9965, + "price": 0.0035, + "spread": 0.993, + "volume": 3138.0 + }, + { + "question": "Will the highest temperature in Ankara be 19°C on April 18?", + "market_id": "1996429", + "range": [ + 19.0, + 19.0 + ], + "bid": 0.003, + "ask": 0.997, + "price": 0.003, + "spread": 0.994, + "volume": 1542.0 + }, + { + "question": "Will the highest temperature in Ankara be 20°C on April 18?", + "market_id": "1996430", + "range": [ + 20.0, + 20.0 + ], + "bid": 0.002, + "ask": 0.998, + "price": 0.002, + "spread": 0.996, + "volume": 4286.0 + }, + { + "question": "Will the highest temperature in Ankara be 21°C on April 18?", + "market_id": "1996431", + "range": [ + 21.0, + 21.0 + ], + "bid": 0.0005, + "ask": 0.9995, + "price": 0.0005, + "spread": 0.999, + "volume": 992.0 + }, + { + "question": "Will the highest temperature in Ankara be 22°C or higher on April 18?", + "market_id": "1996432", + "range": [ + 22.0, + 999.0 + ], + "bid": 0.0015, + "ask": 0.9985, + "price": 0.0015, + "spread": 0.997, + "volume": 2129.0 + } + ], + "created_at": "2026-04-18T06:34:18.089657+00:00" +} \ No newline at end of file diff --git a/data/markets/ankara_2026-04-19.json b/data/markets/ankara_2026-04-19.json new file mode 100644 index 0000000..11b80e9 --- /dev/null +++ b/data/markets/ankara_2026-04-19.json @@ -0,0 +1,179 @@ +{ + "city": "ankara", + "city_name": "Ankara", + "date": "2026-04-19", + "unit": "C", + "station": "LTAC", + "event_end_date": "2026-04-19T12:00:00Z", + "hours_at_discovery": 29.4, + "status": "open", + "position": null, + "actual_temp": null, + "resolved_outcome": null, + "pnl": null, + "forecast_snapshots": [ + { + "ts": "2026-04-18T06:34:16.199277+00:00", + "horizon": "D+1", + "hours_left": 29.4, + "ecmwf": 12.2, + "hrrr": null, + "metar": null, + "best": 12.2, + "best_source": "ecmwf" + } + ], + "market_snapshots": [ + { + "ts": "2026-04-18T06:34:16.199277+00:00", + "top_bucket": "12.0-12.0C", + "top_price": 0.34 + } + ], + "all_outcomes": [ + { + "question": "Will the highest temperature in Ankara be 4°C or below on April 19?", + "market_id": "2003766", + "range": [ + -999.0, + 4.0 + ], + "bid": 0.003, + "ask": 0.997, + "price": 0.003, + "spread": 0.994, + "volume": 1579.0 + }, + { + "question": "Will the highest temperature in Ankara be 5°C on April 19?", + "market_id": "2003767", + "range": [ + 5.0, + 5.0 + ], + "bid": 0.004, + "ask": 0.996, + "price": 0.004, + "spread": 0.992, + "volume": 648.0 + }, + { + "question": "Will the highest temperature in Ankara be 6°C on April 19?", + "market_id": "2003768", + "range": [ + 6.0, + 6.0 + ], + "bid": 0.0035, + "ask": 0.9965, + "price": 0.0035, + "spread": 0.993, + "volume": 696.0 + }, + { + "question": "Will the highest temperature in Ankara be 7°C on April 19?", + "market_id": "2003769", + "range": [ + 7.0, + 7.0 + ], + "bid": 0.004, + "ask": 0.996, + "price": 0.004, + "spread": 0.992, + "volume": 498.0 + }, + { + "question": "Will the highest temperature in Ankara be 8°C on April 19?", + "market_id": "2003770", + "range": [ + 8.0, + 8.0 + ], + "bid": 0.006, + "ask": 0.994, + "price": 0.006, + "spread": 0.988, + "volume": 819.0 + }, + { + "question": "Will the highest temperature in Ankara be 9°C on April 19?", + "market_id": "2003771", + "range": [ + 9.0, + 9.0 + ], + "bid": 0.0135, + "ask": 0.9865, + "price": 0.0135, + "spread": 0.973, + "volume": 646.0 + }, + { + "question": "Will the highest temperature in Ankara be 10°C on April 19?", + "market_id": "2003772", + "range": [ + 10.0, + 10.0 + ], + "bid": 0.0475, + "ask": 0.9525, + "price": 0.0475, + "spread": 0.905, + "volume": 525.0 + }, + { + "question": "Will the highest temperature in Ankara be 11°C on April 19?", + "market_id": "2003773", + "range": [ + 11.0, + 11.0 + ], + "bid": 0.255, + "ask": 0.745, + "price": 0.255, + "spread": 0.49, + "volume": 682.0 + }, + { + "question": "Will the highest temperature in Ankara be 12°C on April 19?", + "market_id": "2003774", + "range": [ + 12.0, + 12.0 + ], + "bid": 0.34, + "ask": 0.66, + "price": 0.34, + "spread": 0.32, + "volume": 897.0 + }, + { + "question": "Will the highest temperature in Ankara be 13°C on April 19?", + "market_id": "2003775", + "range": [ + 13.0, + 13.0 + ], + "bid": 0.23, + "ask": 0.77, + "price": 0.23, + "spread": 0.54, + "volume": 1028.0 + }, + { + "question": "Will the highest temperature in Ankara be 14°C or higher on April 19?", + "market_id": "2003776", + "range": [ + 14.0, + 999.0 + ], + "bid": 0.135, + "ask": 0.865, + "price": 0.135, + "spread": 0.73, + "volume": 1369.0 + } + ], + "created_at": "2026-04-18T06:34:18.487049+00:00" +} \ No newline at end of file diff --git a/data/markets/ankara_2026-04-20.json b/data/markets/ankara_2026-04-20.json new file mode 100644 index 0000000..4382186 --- /dev/null +++ b/data/markets/ankara_2026-04-20.json @@ -0,0 +1,179 @@ +{ + "city": "ankara", + "city_name": "Ankara", + "date": "2026-04-20", + "unit": "C", + "station": "LTAC", + "event_end_date": "2026-04-20T12:00:00Z", + "hours_at_discovery": 53.4, + "status": "open", + "position": null, + "actual_temp": null, + "resolved_outcome": null, + "pnl": null, + "forecast_snapshots": [ + { + "ts": "2026-04-18T06:34:16.199277+00:00", + "horizon": "D+2", + "hours_left": 53.4, + "ecmwf": 12.8, + "hrrr": null, + "metar": null, + "best": 12.8, + "best_source": "ecmwf" + } + ], + "market_snapshots": [ + { + "ts": "2026-04-18T06:34:16.199277+00:00", + "top_bucket": "13.0-13.0C", + "top_price": 0.29 + } + ], + "all_outcomes": [ + { + "question": "Will the highest temperature in Ankara be 8°C or below on April 20?", + "market_id": "2011178", + "range": [ + -999.0, + 8.0 + ], + "bid": 0.0065, + "ask": 0.9935, + "price": 0.0065, + "spread": 0.987, + "volume": 190.0 + }, + { + "question": "Will the highest temperature in Ankara be 9°C on April 20?", + "market_id": "2011179", + "range": [ + 9.0, + 9.0 + ], + "bid": 0.012, + "ask": 0.988, + "price": 0.012, + "spread": 0.976, + "volume": 91.0 + }, + { + "question": "Will the highest temperature in Ankara be 10°C on April 20?", + "market_id": "2011180", + "range": [ + 10.0, + 10.0 + ], + "bid": 0.042, + "ask": 0.958, + "price": 0.042, + "spread": 0.916, + "volume": 94.0 + }, + { + "question": "Will the highest temperature in Ankara be 11°C on April 20?", + "market_id": "2011181", + "range": [ + 11.0, + 11.0 + ], + "bid": 0.07, + "ask": 0.93, + "price": 0.07, + "spread": 0.86, + "volume": 70.0 + }, + { + "question": "Will the highest temperature in Ankara be 12°C on April 20?", + "market_id": "2011182", + "range": [ + 12.0, + 12.0 + ], + "bid": 0.125, + "ask": 0.875, + "price": 0.125, + "spread": 0.75, + "volume": 82.0 + }, + { + "question": "Will the highest temperature in Ankara be 13°C on April 20?", + "market_id": "2011183", + "range": [ + 13.0, + 13.0 + ], + "bid": 0.29, + "ask": 0.71, + "price": 0.29, + "spread": 0.42, + "volume": 66.0 + }, + { + "question": "Will the highest temperature in Ankara be 14°C on April 20?", + "market_id": "2011184", + "range": [ + 14.0, + 14.0 + ], + "bid": 0.29, + "ask": 0.71, + "price": 0.29, + "spread": 0.42, + "volume": 5.0 + }, + { + "question": "Will the highest temperature in Ankara be 15°C on April 20?", + "market_id": "2011185", + "range": [ + 15.0, + 15.0 + ], + "bid": 0.225, + "ask": 0.775, + "price": 0.225, + "spread": 0.55, + "volume": 59.0 + }, + { + "question": "Will the highest temperature in Ankara be 16°C on April 20?", + "market_id": "2011186", + "range": [ + 16.0, + 16.0 + ], + "bid": 0.08, + "ask": 0.92, + "price": 0.08, + "spread": 0.84, + "volume": 15.0 + }, + { + "question": "Will the highest temperature in Ankara be 17°C on April 20?", + "market_id": "2011187", + "range": [ + 17.0, + 17.0 + ], + "bid": 0.04, + "ask": 0.96, + "price": 0.04, + "spread": 0.92, + "volume": 30.0 + }, + { + "question": "Will the highest temperature in Ankara be 18°C or higher on April 20?", + "market_id": "2011188", + "range": [ + 18.0, + 999.0 + ], + "bid": 0.037, + "ask": 0.963, + "price": 0.037, + "spread": 0.926, + "volume": 57.0 + } + ], + "created_at": "2026-04-18T06:34:18.902681+00:00" +} \ No newline at end of file diff --git a/data/markets/atlanta_2026-04-18.json b/data/markets/atlanta_2026-04-18.json new file mode 100644 index 0000000..dbe4bf5 --- /dev/null +++ b/data/markets/atlanta_2026-04-18.json @@ -0,0 +1,179 @@ +{ + "city": "atlanta", + "city_name": "Atlanta", + "date": "2026-04-18", + "unit": "F", + "station": "KATL", + "event_end_date": "2026-04-18T12:00:00Z", + "hours_at_discovery": 5.4, + "status": "open", + "position": null, + "actual_temp": null, + "resolved_outcome": null, + "pnl": null, + "forecast_snapshots": [ + { + "ts": "2026-04-18T06:33:52.905589+00:00", + "horizon": "D+0", + "hours_left": 5.4, + "ecmwf": 86, + "hrrr": 86, + "metar": 71, + "best": 86, + "best_source": "hrrr" + } + ], + "market_snapshots": [ + { + "ts": "2026-04-18T06:33:52.905589+00:00", + "top_bucket": "86.0-87.0F", + "top_price": 0.465 + } + ], + "all_outcomes": [ + { + "question": "Will the highest temperature in Atlanta be 75°F or below on April 18?", + "market_id": "1996388", + "range": [ + -999.0, + 75.0 + ], + "bid": 0.0015, + "ask": 0.9985, + "price": 0.0015, + "spread": 0.997, + "volume": 9595.0 + }, + { + "question": "Will the highest temperature in Atlanta be between 76-77°F on April 18?", + "market_id": "1996389", + "range": [ + 76.0, + 77.0 + ], + "bid": 0.003, + "ask": 0.997, + "price": 0.003, + "spread": 0.994, + "volume": 5397.0 + }, + { + "question": "Will the highest temperature in Atlanta be between 78-79°F on April 18?", + "market_id": "1996390", + "range": [ + 78.0, + 79.0 + ], + "bid": 0.0005, + "ask": 0.9995, + "price": 0.0005, + "spread": 0.999, + "volume": 3671.0 + }, + { + "question": "Will the highest temperature in Atlanta be between 80-81°F on April 18?", + "market_id": "1996391", + "range": [ + 80.0, + 81.0 + ], + "bid": 0.0005, + "ask": 0.9995, + "price": 0.0005, + "spread": 0.999, + "volume": 6139.0 + }, + { + "question": "Will the highest temperature in Atlanta be between 82-83°F on April 18?", + "market_id": "1996392", + "range": [ + 82.0, + 83.0 + ], + "bid": 0.0065, + "ask": 0.9935, + "price": 0.0065, + "spread": 0.987, + "volume": 4193.0 + }, + { + "question": "Will the highest temperature in Atlanta be between 84-85°F on April 18?", + "market_id": "1996393", + "range": [ + 84.0, + 85.0 + ], + "bid": 0.155, + "ask": 0.845, + "price": 0.155, + "spread": 0.69, + "volume": 1922.0 + }, + { + "question": "Will the highest temperature in Atlanta be between 86-87°F on April 18?", + "market_id": "1996394", + "range": [ + 86.0, + 87.0 + ], + "bid": 0.465, + "ask": 0.535, + "price": 0.465, + "spread": 0.07, + "volume": 2533.0 + }, + { + "question": "Will the highest temperature in Atlanta be between 88-89°F on April 18?", + "market_id": "1996395", + "range": [ + 88.0, + 89.0 + ], + "bid": 0.3, + "ask": 0.7, + "price": 0.3, + "spread": 0.4, + "volume": 3258.0 + }, + { + "question": "Will the highest temperature in Atlanta be between 90-91°F on April 18?", + "market_id": "1996396", + "range": [ + 90.0, + 91.0 + ], + "bid": 0.025, + "ask": 0.975, + "price": 0.025, + "spread": 0.95, + "volume": 2976.0 + }, + { + "question": "Will the highest temperature in Atlanta be between 92-93°F on April 18?", + "market_id": "1996397", + "range": [ + 92.0, + 93.0 + ], + "bid": 0.0065, + "ask": 0.9935, + "price": 0.0065, + "spread": 0.987, + "volume": 2349.0 + }, + { + "question": "Will the highest temperature in Atlanta be 94°F or higher on April 18?", + "market_id": "1996398", + "range": [ + 94.0, + 999.0 + ], + "bid": 0.0055, + "ask": 0.9945, + "price": 0.0055, + "spread": 0.989, + "volume": 1310.0 + } + ], + "created_at": "2026-04-18T06:33:56.159071+00:00" +} \ No newline at end of file diff --git a/data/markets/atlanta_2026-04-19.json b/data/markets/atlanta_2026-04-19.json new file mode 100644 index 0000000..05a7fff --- /dev/null +++ b/data/markets/atlanta_2026-04-19.json @@ -0,0 +1,179 @@ +{ + "city": "atlanta", + "city_name": "Atlanta", + "date": "2026-04-19", + "unit": "F", + "station": "KATL", + "event_end_date": "2026-04-19T12:00:00Z", + "hours_at_discovery": 29.4, + "status": "open", + "position": null, + "actual_temp": null, + "resolved_outcome": null, + "pnl": null, + "forecast_snapshots": [ + { + "ts": "2026-04-18T06:33:52.905589+00:00", + "horizon": "D+1", + "hours_left": 29.4, + "ecmwf": 71, + "hrrr": 70, + "metar": null, + "best": 70, + "best_source": "hrrr" + } + ], + "market_snapshots": [ + { + "ts": "2026-04-18T06:33:52.905589+00:00", + "top_bucket": "70.0-71.0F", + "top_price": 0.325 + } + ], + "all_outcomes": [ + { + "question": "Will the highest temperature in Atlanta be 55°F or below on April 19?", + "market_id": "2003733", + "range": [ + -999.0, + 55.0 + ], + "bid": 0.003, + "ask": 0.997, + "price": 0.003, + "spread": 0.994, + "volume": 1324.0 + }, + { + "question": "Will the highest temperature in Atlanta be between 56-57°F on April 19?", + "market_id": "2003734", + "range": [ + 56.0, + 57.0 + ], + "bid": 0.003, + "ask": 0.997, + "price": 0.003, + "spread": 0.994, + "volume": 982.0 + }, + { + "question": "Will the highest temperature in Atlanta be between 58-59°F on April 19?", + "market_id": "2003735", + "range": [ + 58.0, + 59.0 + ], + "bid": 0.0025, + "ask": 0.9975, + "price": 0.0025, + "spread": 0.995, + "volume": 833.0 + }, + { + "question": "Will the highest temperature in Atlanta be between 60-61°F on April 19?", + "market_id": "2003736", + "range": [ + 60.0, + 61.0 + ], + "bid": 0.0035, + "ask": 0.9965, + "price": 0.0035, + "spread": 0.993, + "volume": 720.0 + }, + { + "question": "Will the highest temperature in Atlanta be between 62-63°F on April 19?", + "market_id": "2003737", + "range": [ + 62.0, + 63.0 + ], + "bid": 0.0025, + "ask": 0.9975, + "price": 0.0025, + "spread": 0.995, + "volume": 1775.0 + }, + { + "question": "Will the highest temperature in Atlanta be between 64-65°F on April 19?", + "market_id": "2003738", + "range": [ + 64.0, + 65.0 + ], + "bid": 0.007, + "ask": 0.993, + "price": 0.007, + "spread": 0.986, + "volume": 1062.0 + }, + { + "question": "Will the highest temperature in Atlanta be between 66-67°F on April 19?", + "market_id": "2003739", + "range": [ + 66.0, + 67.0 + ], + "bid": 0.0345, + "ask": 0.9655, + "price": 0.0345, + "spread": 0.931, + "volume": 1515.0 + }, + { + "question": "Will the highest temperature in Atlanta be between 68-69°F on April 19?", + "market_id": "2003740", + "range": [ + 68.0, + 69.0 + ], + "bid": 0.095, + "ask": 0.905, + "price": 0.095, + "spread": 0.81, + "volume": 2506.0 + }, + { + "question": "Will the highest temperature in Atlanta be between 70-71°F on April 19?", + "market_id": "2003741", + "range": [ + 70.0, + 71.0 + ], + "bid": 0.325, + "ask": 0.675, + "price": 0.325, + "spread": 0.35, + "volume": 1373.0 + }, + { + "question": "Will the highest temperature in Atlanta be between 72-73°F on April 19?", + "market_id": "2003742", + "range": [ + 72.0, + 73.0 + ], + "bid": 0.28, + "ask": 0.72, + "price": 0.28, + "spread": 0.44, + "volume": 1056.0 + }, + { + "question": "Will the highest temperature in Atlanta be 74°F or higher on April 19?", + "market_id": "2003743", + "range": [ + 74.0, + 999.0 + ], + "bid": 0.285, + "ask": 0.715, + "price": 0.285, + "spread": 0.43, + "volume": 3440.0 + } + ], + "created_at": "2026-04-18T06:33:56.622167+00:00" +} \ No newline at end of file diff --git a/data/markets/atlanta_2026-04-20.json b/data/markets/atlanta_2026-04-20.json new file mode 100644 index 0000000..c4f6b65 --- /dev/null +++ b/data/markets/atlanta_2026-04-20.json @@ -0,0 +1,179 @@ +{ + "city": "atlanta", + "city_name": "Atlanta", + "date": "2026-04-20", + "unit": "F", + "station": "KATL", + "event_end_date": "2026-04-20T12:00:00Z", + "hours_at_discovery": 53.4, + "status": "open", + "position": null, + "actual_temp": null, + "resolved_outcome": null, + "pnl": null, + "forecast_snapshots": [ + { + "ts": "2026-04-18T06:33:52.905589+00:00", + "horizon": "D+2", + "hours_left": 53.4, + "ecmwf": 74, + "hrrr": 77, + "metar": null, + "best": 77, + "best_source": "hrrr" + } + ], + "market_snapshots": [ + { + "ts": "2026-04-18T06:33:52.905589+00:00", + "top_bucket": "76.0-77.0F", + "top_price": 0.325 + } + ], + "all_outcomes": [ + { + "question": "Will the highest temperature in Atlanta be 69°F or below on April 20?", + "market_id": "2011145", + "range": [ + -999.0, + 69.0 + ], + "bid": 0.0075, + "ask": 0.9925, + "price": 0.0075, + "spread": 0.985, + "volume": 1877.0 + }, + { + "question": "Will the highest temperature in Atlanta be between 70-71°F on April 20?", + "market_id": "2011146", + "range": [ + 70.0, + 71.0 + ], + "bid": 0.075, + "ask": 0.925, + "price": 0.075, + "spread": 0.85, + "volume": 0.0 + }, + { + "question": "Will the highest temperature in Atlanta be between 72-73°F on April 20?", + "market_id": "2011147", + "range": [ + 72.0, + 73.0 + ], + "bid": 0.12, + "ask": 0.88, + "price": 0.12, + "spread": 0.76, + "volume": 17.0 + }, + { + "question": "Will the highest temperature in Atlanta be between 74-75°F on April 20?", + "market_id": "2011148", + "range": [ + 74.0, + 75.0 + ], + "bid": 0.13, + "ask": 0.87, + "price": 0.13, + "spread": 0.74, + "volume": 15.0 + }, + { + "question": "Will the highest temperature in Atlanta be between 76-77°F on April 20?", + "market_id": "2011149", + "range": [ + 76.0, + 77.0 + ], + "bid": 0.325, + "ask": 0.675, + "price": 0.325, + "spread": 0.35, + "volume": 171.0 + }, + { + "question": "Will the highest temperature in Atlanta be between 78-79°F on April 20?", + "market_id": "2011150", + "range": [ + 78.0, + 79.0 + ], + "bid": 0.165, + "ask": 0.835, + "price": 0.165, + "spread": 0.67, + "volume": 13.0 + }, + { + "question": "Will the highest temperature in Atlanta be between 80-81°F on April 20?", + "market_id": "2011151", + "range": [ + 80.0, + 81.0 + ], + "bid": 0.095, + "ask": 0.905, + "price": 0.095, + "spread": 0.81, + "volume": 24.0 + }, + { + "question": "Will the highest temperature in Atlanta be between 82-83°F on April 20?", + "market_id": "2011152", + "range": [ + 82.0, + 83.0 + ], + "bid": 0.07, + "ask": 0.93, + "price": 0.07, + "spread": 0.86, + "volume": 0.0 + }, + { + "question": "Will the highest temperature in Atlanta be between 84-85°F on April 20?", + "market_id": "2011153", + "range": [ + 84.0, + 85.0 + ], + "bid": 0.035, + "ask": 0.965, + "price": 0.035, + "spread": 0.93, + "volume": 14.0 + }, + { + "question": "Will the highest temperature in Atlanta be between 86-87°F on April 20?", + "market_id": "2011154", + "range": [ + 86.0, + 87.0 + ], + "bid": 0.0345, + "ask": 0.9655, + "price": 0.0345, + "spread": 0.931, + "volume": 72.0 + }, + { + "question": "Will the highest temperature in Atlanta be 88°F or higher on April 20?", + "market_id": "2011155", + "range": [ + 88.0, + 999.0 + ], + "bid": 0.0095, + "ask": 0.9905, + "price": 0.0095, + "spread": 0.981, + "volume": 203.0 + } + ], + "created_at": "2026-04-18T06:33:57.075280+00:00" +} \ No newline at end of file diff --git a/data/markets/buenos-aires_2026-04-18.json b/data/markets/buenos-aires_2026-04-18.json new file mode 100644 index 0000000..a60e687 --- /dev/null +++ b/data/markets/buenos-aires_2026-04-18.json @@ -0,0 +1,179 @@ +{ + "city": "buenos-aires", + "city_name": "Buenos Aires", + "date": "2026-04-18", + "unit": "C", + "station": "SAEZ", + "event_end_date": "2026-04-18T12:00:00Z", + "hours_at_discovery": 5.4, + "status": "open", + "position": null, + "actual_temp": null, + "resolved_outcome": null, + "pnl": null, + "forecast_snapshots": [ + { + "ts": "2026-04-18T06:34:45.652558+00:00", + "horizon": "D+0", + "hours_left": 5.4, + "ecmwf": 26.2, + "hrrr": null, + "metar": 15.0, + "best": 26.2, + "best_source": "ecmwf" + } + ], + "market_snapshots": [ + { + "ts": "2026-04-18T06:34:45.652558+00:00", + "top_bucket": "27.0-27.0C", + "top_price": 0.36 + } + ], + "all_outcomes": [ + { + "question": "Will the highest temperature in Buenos Aires be 20°C or below on April 18?", + "market_id": "1996322", + "range": [ + -999.0, + 20.0 + ], + "bid": 0.0005, + "ask": 0.9995, + "price": 0.0005, + "spread": 0.999, + "volume": 3663.0 + }, + { + "question": "Will the highest temperature in Buenos Aires be 21°C on April 18?", + "market_id": "1996323", + "range": [ + 21.0, + 21.0 + ], + "bid": 0.0015, + "ask": 0.9985, + "price": 0.0015, + "spread": 0.997, + "volume": 5174.0 + }, + { + "question": "Will the highest temperature in Buenos Aires be 22°C on April 18?", + "market_id": "1996324", + "range": [ + 22.0, + 22.0 + ], + "bid": 0.003, + "ask": 0.997, + "price": 0.003, + "spread": 0.994, + "volume": 5139.0 + }, + { + "question": "Will the highest temperature in Buenos Aires be 23°C on April 18?", + "market_id": "1996325", + "range": [ + 23.0, + 23.0 + ], + "bid": 0.0015, + "ask": 0.9985, + "price": 0.0015, + "spread": 0.997, + "volume": 5815.0 + }, + { + "question": "Will the highest temperature in Buenos Aires be 24°C on April 18?", + "market_id": "1996326", + "range": [ + 24.0, + 24.0 + ], + "bid": 0.005, + "ask": 0.995, + "price": 0.005, + "spread": 0.99, + "volume": 5152.0 + }, + { + "question": "Will the highest temperature in Buenos Aires be 25°C on April 18?", + "market_id": "1996327", + "range": [ + 25.0, + 25.0 + ], + "bid": 0.095, + "ask": 0.905, + "price": 0.095, + "spread": 0.81, + "volume": 3754.0 + }, + { + "question": "Will the highest temperature in Buenos Aires be 26°C on April 18?", + "market_id": "1996328", + "range": [ + 26.0, + 26.0 + ], + "bid": 0.335, + "ask": 0.665, + "price": 0.335, + "spread": 0.33, + "volume": 1369.0 + }, + { + "question": "Will the highest temperature in Buenos Aires be 27°C on April 18?", + "market_id": "1996329", + "range": [ + 27.0, + 27.0 + ], + "bid": 0.36, + "ask": 0.64, + "price": 0.36, + "spread": 0.28, + "volume": 1548.0 + }, + { + "question": "Will the highest temperature in Buenos Aires be 28°C on April 18?", + "market_id": "1996330", + "range": [ + 28.0, + 28.0 + ], + "bid": 0.185, + "ask": 0.815, + "price": 0.185, + "spread": 0.63, + "volume": 2543.0 + }, + { + "question": "Will the highest temperature in Buenos Aires be 29°C on April 18?", + "market_id": "1996331", + "range": [ + 29.0, + 29.0 + ], + "bid": 0.0155, + "ask": 0.9845, + "price": 0.0155, + "spread": 0.969, + "volume": 3325.0 + }, + { + "question": "Will the highest temperature in Buenos Aires be 30°C or higher on April 18?", + "market_id": "1996332", + "range": [ + 30.0, + 999.0 + ], + "bid": 0.005, + "ask": 0.995, + "price": 0.005, + "spread": 0.99, + "volume": 1860.0 + } + ], + "created_at": "2026-04-18T06:34:47.738646+00:00" +} \ No newline at end of file diff --git a/data/markets/buenos-aires_2026-04-19.json b/data/markets/buenos-aires_2026-04-19.json new file mode 100644 index 0000000..19bddfa --- /dev/null +++ b/data/markets/buenos-aires_2026-04-19.json @@ -0,0 +1,179 @@ +{ + "city": "buenos-aires", + "city_name": "Buenos Aires", + "date": "2026-04-19", + "unit": "C", + "station": "SAEZ", + "event_end_date": "2026-04-19T12:00:00Z", + "hours_at_discovery": 29.4, + "status": "open", + "position": null, + "actual_temp": null, + "resolved_outcome": null, + "pnl": null, + "forecast_snapshots": [ + { + "ts": "2026-04-18T06:34:45.652558+00:00", + "horizon": "D+1", + "hours_left": 29.4, + "ecmwf": 25.0, + "hrrr": null, + "metar": null, + "best": 25.0, + "best_source": "ecmwf" + } + ], + "market_snapshots": [ + { + "ts": "2026-04-18T06:34:45.652558+00:00", + "top_bucket": "25.0-25.0C", + "top_price": 0.285 + } + ], + "all_outcomes": [ + { + "question": "Will the highest temperature in Buenos Aires be 18°C or below on April 19?", + "market_id": "2003667", + "range": [ + -999.0, + 18.0 + ], + "bid": 0.004, + "ask": 0.996, + "price": 0.004, + "spread": 0.992, + "volume": 3625.0 + }, + { + "question": "Will the highest temperature in Buenos Aires be 19°C on April 19?", + "market_id": "2003668", + "range": [ + 19.0, + 19.0 + ], + "bid": 0.004, + "ask": 0.996, + "price": 0.004, + "spread": 0.992, + "volume": 2776.0 + }, + { + "question": "Will the highest temperature in Buenos Aires be 20°C on April 19?", + "market_id": "2003669", + "range": [ + 20.0, + 20.0 + ], + "bid": 0.0055, + "ask": 0.9945, + "price": 0.0055, + "spread": 0.989, + "volume": 3122.0 + }, + { + "question": "Will the highest temperature in Buenos Aires be 21°C on April 19?", + "market_id": "2003670", + "range": [ + 21.0, + 21.0 + ], + "bid": 0.007, + "ask": 0.993, + "price": 0.007, + "spread": 0.986, + "volume": 4007.0 + }, + { + "question": "Will the highest temperature in Buenos Aires be 22°C on April 19?", + "market_id": "2003671", + "range": [ + 22.0, + 22.0 + ], + "bid": 0.13, + "ask": 0.87, + "price": 0.13, + "spread": 0.74, + "volume": 1888.0 + }, + { + "question": "Will the highest temperature in Buenos Aires be 23°C on April 19?", + "market_id": "2003672", + "range": [ + 23.0, + 23.0 + ], + "bid": 0.215, + "ask": 0.785, + "price": 0.215, + "spread": 0.57, + "volume": 1047.0 + }, + { + "question": "Will the highest temperature in Buenos Aires be 24°C on April 19?", + "market_id": "2003673", + "range": [ + 24.0, + 24.0 + ], + "bid": 0.185, + "ask": 0.815, + "price": 0.185, + "spread": 0.63, + "volume": 828.0 + }, + { + "question": "Will the highest temperature in Buenos Aires be 25°C on April 19?", + "market_id": "2003674", + "range": [ + 25.0, + 25.0 + ], + "bid": 0.285, + "ask": 0.715, + "price": 0.285, + "spread": 0.43, + "volume": 1075.0 + }, + { + "question": "Will the highest temperature in Buenos Aires be 26°C on April 19?", + "market_id": "2003675", + "range": [ + 26.0, + 26.0 + ], + "bid": 0.17, + "ask": 0.83, + "price": 0.17, + "spread": 0.66, + "volume": 1155.0 + }, + { + "question": "Will the highest temperature in Buenos Aires be 27°C on April 19?", + "market_id": "2003676", + "range": [ + 27.0, + 27.0 + ], + "bid": 0.0595, + "ask": 0.9405, + "price": 0.0595, + "spread": 0.881, + "volume": 1310.0 + }, + { + "question": "Will the highest temperature in Buenos Aires be 28°C or higher on April 19?", + "market_id": "2003677", + "range": [ + 28.0, + 999.0 + ], + "bid": 0.0155, + "ask": 0.9845, + "price": 0.0155, + "spread": 0.969, + "volume": 638.0 + } + ], + "created_at": "2026-04-18T06:34:48.157921+00:00" +} \ No newline at end of file diff --git a/data/markets/buenos-aires_2026-04-20.json b/data/markets/buenos-aires_2026-04-20.json new file mode 100644 index 0000000..8fd2a60 --- /dev/null +++ b/data/markets/buenos-aires_2026-04-20.json @@ -0,0 +1,179 @@ +{ + "city": "buenos-aires", + "city_name": "Buenos Aires", + "date": "2026-04-20", + "unit": "C", + "station": "SAEZ", + "event_end_date": "2026-04-20T12:00:00Z", + "hours_at_discovery": 53.4, + "status": "open", + "position": null, + "actual_temp": null, + "resolved_outcome": null, + "pnl": null, + "forecast_snapshots": [ + { + "ts": "2026-04-18T06:34:45.652558+00:00", + "horizon": "D+2", + "hours_left": 53.4, + "ecmwf": 24.1, + "hrrr": null, + "metar": null, + "best": 24.1, + "best_source": "ecmwf" + } + ], + "market_snapshots": [ + { + "ts": "2026-04-18T06:34:45.652558+00:00", + "top_bucket": "22.0-22.0C", + "top_price": 0.28 + } + ], + "all_outcomes": [ + { + "question": "Will the highest temperature in Buenos Aires be 15°C or below on April 20?", + "market_id": "2011079", + "range": [ + -999.0, + 15.0 + ], + "bid": 0.0075, + "ask": 0.9925, + "price": 0.0075, + "spread": 0.985, + "volume": 187.0 + }, + { + "question": "Will the highest temperature in Buenos Aires be 16°C on April 20?", + "market_id": "2011080", + "range": [ + 16.0, + 16.0 + ], + "bid": 0.0235, + "ask": 0.9765, + "price": 0.0235, + "spread": 0.953, + "volume": 190.0 + }, + { + "question": "Will the highest temperature in Buenos Aires be 17°C on April 20?", + "market_id": "2011081", + "range": [ + 17.0, + 17.0 + ], + "bid": 0.0245, + "ask": 0.9755, + "price": 0.0245, + "spread": 0.951, + "volume": 69.0 + }, + { + "question": "Will the highest temperature in Buenos Aires be 18°C on April 20?", + "market_id": "2011082", + "range": [ + 18.0, + 18.0 + ], + "bid": 0.0395, + "ask": 0.9605, + "price": 0.0395, + "spread": 0.921, + "volume": 29.0 + }, + { + "question": "Will the highest temperature in Buenos Aires be 19°C on April 20?", + "market_id": "2011083", + "range": [ + 19.0, + 19.0 + ], + "bid": 0.045, + "ask": 0.955, + "price": 0.045, + "spread": 0.91, + "volume": 0.0 + }, + { + "question": "Will the highest temperature in Buenos Aires be 20°C on April 20?", + "market_id": "2011084", + "range": [ + 20.0, + 20.0 + ], + "bid": 0.1, + "ask": 0.9, + "price": 0.1, + "spread": 0.8, + "volume": 11.0 + }, + { + "question": "Will the highest temperature in Buenos Aires be 21°C on April 20?", + "market_id": "2011085", + "range": [ + 21.0, + 21.0 + ], + "bid": 0.245, + "ask": 0.755, + "price": 0.245, + "spread": 0.51, + "volume": 17.0 + }, + { + "question": "Will the highest temperature in Buenos Aires be 22°C on April 20?", + "market_id": "2011086", + "range": [ + 22.0, + 22.0 + ], + "bid": 0.28, + "ask": 0.72, + "price": 0.28, + "spread": 0.44, + "volume": 13.0 + }, + { + "question": "Will the highest temperature in Buenos Aires be 23°C on April 20?", + "market_id": "2011087", + "range": [ + 23.0, + 23.0 + ], + "bid": 0.265, + "ask": 0.735, + "price": 0.265, + "spread": 0.47, + "volume": 0.0 + }, + { + "question": "Will the highest temperature in Buenos Aires be 24°C on April 20?", + "market_id": "2011088", + "range": [ + 24.0, + 24.0 + ], + "bid": 0.14, + "ask": 0.86, + "price": 0.14, + "spread": 0.72, + "volume": 0.0 + }, + { + "question": "Will the highest temperature in Buenos Aires be 25°C or higher on April 20?", + "market_id": "2011089", + "range": [ + 25.0, + 999.0 + ], + "bid": 0.0955, + "ask": 0.9045, + "price": 0.0955, + "spread": 0.809, + "volume": 20.0 + } + ], + "created_at": "2026-04-18T06:34:48.498830+00:00" +} \ No newline at end of file diff --git a/data/markets/chicago_2026-04-18.json b/data/markets/chicago_2026-04-18.json new file mode 100644 index 0000000..1ee0061 --- /dev/null +++ b/data/markets/chicago_2026-04-18.json @@ -0,0 +1,179 @@ +{ + "city": "chicago", + "city_name": "Chicago", + "date": "2026-04-18", + "unit": "F", + "station": "KORD", + "event_end_date": "2026-04-18T12:00:00Z", + "hours_at_discovery": 5.4, + "status": "open", + "position": null, + "actual_temp": null, + "resolved_outcome": null, + "pnl": null, + "forecast_snapshots": [ + { + "ts": "2026-04-18T06:33:33.876961+00:00", + "horizon": "D+0", + "hours_left": 5.4, + "ecmwf": 66, + "hrrr": 63, + "metar": 63, + "best": 63, + "best_source": "hrrr" + } + ], + "market_snapshots": [ + { + "ts": "2026-04-18T06:33:33.876961+00:00", + "top_bucket": "62.0-63.0F", + "top_price": 0.9185 + } + ], + "all_outcomes": [ + { + "question": "Will the highest temperature in Chicago be 53°F or below on April 18?", + "market_id": "1996411", + "range": [ + -999.0, + 53.0 + ], + "bid": 0.0005, + "ask": 0.9995, + "price": 0.0005, + "spread": 0.999, + "volume": 55796.0 + }, + { + "question": "Will the highest temperature in Chicago be between 54-55°F on April 18?", + "market_id": "1996412", + "range": [ + 54.0, + 55.0 + ], + "bid": 0.0005, + "ask": 0.9995, + "price": 0.0005, + "spread": 0.999, + "volume": 11575.0 + }, + { + "question": "Will the highest temperature in Chicago be between 56-57°F on April 18?", + "market_id": "1996413", + "range": [ + 56.0, + 57.0 + ], + "bid": 0.0005, + "ask": 0.9995, + "price": 0.0005, + "spread": 0.999, + "volume": 10782.0 + }, + { + "question": "Will the highest temperature in Chicago be between 58-59°F on April 18?", + "market_id": "1996414", + "range": [ + 58.0, + 59.0 + ], + "bid": 0.0005, + "ask": 0.9995, + "price": 0.0005, + "spread": 0.999, + "volume": 13442.0 + }, + { + "question": "Will the highest temperature in Chicago be between 60-61°F on April 18?", + "market_id": "1996415", + "range": [ + 60.0, + 61.0 + ], + "bid": 0.0005, + "ask": 0.9995, + "price": 0.0005, + "spread": 0.999, + "volume": 13791.0 + }, + { + "question": "Will the highest temperature in Chicago be between 62-63°F on April 18?", + "market_id": "1996416", + "range": [ + 62.0, + 63.0 + ], + "bid": 0.9185, + "ask": 0.0815, + "price": 0.9185, + "spread": -0.837, + "volume": 10274.0 + }, + { + "question": "Will the highest temperature in Chicago be between 64-65°F on April 18?", + "market_id": "1996417", + "range": [ + 64.0, + 65.0 + ], + "bid": 0.0615, + "ask": 0.9385, + "price": 0.0615, + "spread": 0.877, + "volume": 5738.0 + }, + { + "question": "Will the highest temperature in Chicago be between 66-67°F on April 18?", + "market_id": "1996418", + "range": [ + 66.0, + 67.0 + ], + "bid": 0.0345, + "ask": 0.9655, + "price": 0.0345, + "spread": 0.931, + "volume": 9171.0 + }, + { + "question": "Will the highest temperature in Chicago be between 68-69°F on April 18?", + "market_id": "1996419", + "range": [ + 68.0, + 69.0 + ], + "bid": 0.0025, + "ask": 0.9975, + "price": 0.0025, + "spread": 0.995, + "volume": 8138.0 + }, + { + "question": "Will the highest temperature in Chicago be between 70-71°F on April 18?", + "market_id": "1996420", + "range": [ + 70.0, + 71.0 + ], + "bid": 0.0045, + "ask": 0.9955, + "price": 0.0045, + "spread": 0.991, + "volume": 7215.0 + }, + { + "question": "Will the highest temperature in Chicago be 72°F or higher on April 18?", + "market_id": "1996421", + "range": [ + 72.0, + 999.0 + ], + "bid": 0.0015, + "ask": 0.9985, + "price": 0.0015, + "spread": 0.997, + "volume": 13447.0 + } + ], + "created_at": "2026-04-18T06:33:36.997932+00:00" +} \ No newline at end of file diff --git a/data/markets/chicago_2026-04-19.json b/data/markets/chicago_2026-04-19.json new file mode 100644 index 0000000..1c814f4 --- /dev/null +++ b/data/markets/chicago_2026-04-19.json @@ -0,0 +1,179 @@ +{ + "city": "chicago", + "city_name": "Chicago", + "date": "2026-04-19", + "unit": "F", + "station": "KORD", + "event_end_date": "2026-04-19T12:00:00Z", + "hours_at_discovery": 29.4, + "status": "open", + "position": null, + "actual_temp": null, + "resolved_outcome": null, + "pnl": null, + "forecast_snapshots": [ + { + "ts": "2026-04-18T06:33:33.876961+00:00", + "horizon": "D+1", + "hours_left": 29.4, + "ecmwf": 45, + "hrrr": 47, + "metar": null, + "best": 47, + "best_source": "hrrr" + } + ], + "market_snapshots": [ + { + "ts": "2026-04-18T06:33:33.876961+00:00", + "top_bucket": "48.0-49.0F", + "top_price": 0.33 + } + ], + "all_outcomes": [ + { + "question": "Will the highest temperature in Chicago be 43°F or below on April 19?", + "market_id": "2003755", + "range": [ + -999.0, + 43.0 + ], + "bid": 0.014, + "ask": 0.986, + "price": 0.014, + "spread": 0.972, + "volume": 2881.0 + }, + { + "question": "Will the highest temperature in Chicago be between 44-45°F on April 19?", + "market_id": "2003756", + "range": [ + 44.0, + 45.0 + ], + "bid": 0.035, + "ask": 0.965, + "price": 0.035, + "spread": 0.93, + "volume": 1492.0 + }, + { + "question": "Will the highest temperature in Chicago be between 46-47°F on April 19?", + "market_id": "2003757", + "range": [ + 46.0, + 47.0 + ], + "bid": 0.0755, + "ask": 0.9245, + "price": 0.0755, + "spread": 0.849, + "volume": 1435.0 + }, + { + "question": "Will the highest temperature in Chicago be between 48-49°F on April 19?", + "market_id": "2003758", + "range": [ + 48.0, + 49.0 + ], + "bid": 0.33, + "ask": 0.67, + "price": 0.33, + "spread": 0.34, + "volume": 704.0 + }, + { + "question": "Will the highest temperature in Chicago be between 50-51°F on April 19?", + "market_id": "2003759", + "range": [ + 50.0, + 51.0 + ], + "bid": 0.32, + "ask": 0.68, + "price": 0.32, + "spread": 0.36, + "volume": 728.0 + }, + { + "question": "Will the highest temperature in Chicago be between 52-53°F on April 19?", + "market_id": "2003760", + "range": [ + 52.0, + 53.0 + ], + "bid": 0.185, + "ask": 0.815, + "price": 0.185, + "spread": 0.63, + "volume": 526.0 + }, + { + "question": "Will the highest temperature in Chicago be between 54-55°F on April 19?", + "market_id": "2003761", + "range": [ + 54.0, + 55.0 + ], + "bid": 0.085, + "ask": 0.915, + "price": 0.085, + "spread": 0.83, + "volume": 421.0 + }, + { + "question": "Will the highest temperature in Chicago be between 56-57°F on April 19?", + "market_id": "2003762", + "range": [ + 56.0, + 57.0 + ], + "bid": 0.017, + "ask": 0.983, + "price": 0.017, + "spread": 0.966, + "volume": 1112.0 + }, + { + "question": "Will the highest temperature in Chicago be between 58-59°F on April 19?", + "market_id": "2003763", + "range": [ + 58.0, + 59.0 + ], + "bid": 0.009, + "ask": 0.991, + "price": 0.009, + "spread": 0.982, + "volume": 1092.0 + }, + { + "question": "Will the highest temperature in Chicago be between 60-61°F on April 19?", + "market_id": "2003764", + "range": [ + 60.0, + 61.0 + ], + "bid": 0.006, + "ask": 0.994, + "price": 0.006, + "spread": 0.988, + "volume": 1543.0 + }, + { + "question": "Will the highest temperature in Chicago be 62°F or higher on April 19?", + "market_id": "2003765", + "range": [ + 62.0, + 999.0 + ], + "bid": 0.0025, + "ask": 0.9975, + "price": 0.0025, + "spread": 0.995, + "volume": 2673.0 + } + ], + "created_at": "2026-04-18T06:33:37.470860+00:00" +} \ No newline at end of file diff --git a/data/markets/chicago_2026-04-20.json b/data/markets/chicago_2026-04-20.json new file mode 100644 index 0000000..3a6a2d0 --- /dev/null +++ b/data/markets/chicago_2026-04-20.json @@ -0,0 +1,179 @@ +{ + "city": "chicago", + "city_name": "Chicago", + "date": "2026-04-20", + "unit": "F", + "station": "KORD", + "event_end_date": "2026-04-20T12:00:00Z", + "hours_at_discovery": 53.4, + "status": "open", + "position": null, + "actual_temp": null, + "resolved_outcome": null, + "pnl": null, + "forecast_snapshots": [ + { + "ts": "2026-04-18T06:33:33.876961+00:00", + "horizon": "D+2", + "hours_left": 53.4, + "ecmwf": 50, + "hrrr": 57, + "metar": null, + "best": 57, + "best_source": "hrrr" + } + ], + "market_snapshots": [ + { + "ts": "2026-04-18T06:33:33.876961+00:00", + "top_bucket": "-999.0-55.0F", + "top_price": 0.745 + } + ], + "all_outcomes": [ + { + "question": "Will the highest temperature in Chicago be 55°F or below on April 20?", + "market_id": "2011167", + "range": [ + -999.0, + 55.0 + ], + "bid": 0.745, + "ask": 0.255, + "price": 0.745, + "spread": -0.49, + "volume": 174.0 + }, + { + "question": "Will the highest temperature in Chicago be between 56-57°F on April 20?", + "market_id": "2011168", + "range": [ + 56.0, + 57.0 + ], + "bid": 0.165, + "ask": 0.835, + "price": 0.165, + "spread": 0.67, + "volume": 78.0 + }, + { + "question": "Will the highest temperature in Chicago be between 58-59°F on April 20?", + "market_id": "2011169", + "range": [ + 58.0, + 59.0 + ], + "bid": 0.085, + "ask": 0.915, + "price": 0.085, + "spread": 0.83, + "volume": 60.0 + }, + { + "question": "Will the highest temperature in Chicago be between 60-61°F on April 20?", + "market_id": "2011170", + "range": [ + 60.0, + 61.0 + ], + "bid": 0.0605, + "ask": 0.9395, + "price": 0.0605, + "spread": 0.879, + "volume": 240.0 + }, + { + "question": "Will the highest temperature in Chicago be between 62-63°F on April 20?", + "market_id": "2011171", + "range": [ + 62.0, + 63.0 + ], + "bid": 0.04, + "ask": 0.96, + "price": 0.04, + "spread": 0.92, + "volume": 258.0 + }, + { + "question": "Will the highest temperature in Chicago be between 64-65°F on April 20?", + "market_id": "2011172", + "range": [ + 64.0, + 65.0 + ], + "bid": 0.025, + "ask": 0.975, + "price": 0.025, + "spread": 0.95, + "volume": 82.0 + }, + { + "question": "Will the highest temperature in Chicago be between 66-67°F on April 20?", + "market_id": "2011173", + "range": [ + 66.0, + 67.0 + ], + "bid": 0.025, + "ask": 0.975, + "price": 0.025, + "spread": 0.95, + "volume": 103.0 + }, + { + "question": "Will the highest temperature in Chicago be between 68-69°F on April 20?", + "market_id": "2011174", + "range": [ + 68.0, + 69.0 + ], + "bid": 0.007, + "ask": 0.993, + "price": 0.007, + "spread": 0.986, + "volume": 424.0 + }, + { + "question": "Will the highest temperature in Chicago be between 70-71°F on April 20?", + "market_id": "2011175", + "range": [ + 70.0, + 71.0 + ], + "bid": 0.007, + "ask": 0.993, + "price": 0.007, + "spread": 0.986, + "volume": 223.0 + }, + { + "question": "Will the highest temperature in Chicago be between 72-73°F on April 20?", + "market_id": "2011176", + "range": [ + 72.0, + 73.0 + ], + "bid": 0.007, + "ask": 0.993, + "price": 0.007, + "spread": 0.986, + "volume": 218.0 + }, + { + "question": "Will the highest temperature in Chicago be 74°F or higher on April 20?", + "market_id": "2011177", + "range": [ + 74.0, + 999.0 + ], + "bid": 0.007, + "ask": 0.993, + "price": 0.007, + "spread": 0.986, + "volume": 222.0 + } + ], + "created_at": "2026-04-18T06:33:38.007412+00:00" +} \ No newline at end of file diff --git a/data/markets/dallas_2026-04-18.json b/data/markets/dallas_2026-04-18.json new file mode 100644 index 0000000..845dae1 --- /dev/null +++ b/data/markets/dallas_2026-04-18.json @@ -0,0 +1,179 @@ +{ + "city": "dallas", + "city_name": "Dallas", + "date": "2026-04-18", + "unit": "F", + "station": "KDAL", + "event_end_date": "2026-04-18T12:00:00Z", + "hours_at_discovery": 5.4, + "status": "open", + "position": null, + "actual_temp": null, + "resolved_outcome": null, + "pnl": null, + "forecast_snapshots": [ + { + "ts": "2026-04-18T06:33:43.603858+00:00", + "horizon": "D+0", + "hours_left": 5.4, + "ecmwf": 76, + "hrrr": 77, + "metar": 75, + "best": 77, + "best_source": "hrrr" + } + ], + "market_snapshots": [ + { + "ts": "2026-04-18T06:33:43.603858+00:00", + "top_bucket": "74.0-75.0F", + "top_price": 0.9665 + } + ], + "all_outcomes": [ + { + "question": "Will the highest temperature in Dallas be 67°F or below on April 18?", + "market_id": "1996377", + "range": [ + -999.0, + 67.0 + ], + "bid": 0.0005, + "ask": 0.9995, + "price": 0.0005, + "spread": 0.999, + "volume": 17470.0 + }, + { + "question": "Will the highest temperature in Dallas be between 68-69°F on April 18?", + "market_id": "1996378", + "range": [ + 68.0, + 69.0 + ], + "bid": 0.0005, + "ask": 0.9995, + "price": 0.0005, + "spread": 0.999, + "volume": 8578.0 + }, + { + "question": "Will the highest temperature in Dallas be between 70-71°F on April 18?", + "market_id": "1996379", + "range": [ + 70.0, + 71.0 + ], + "bid": 0.0005, + "ask": 0.9995, + "price": 0.0005, + "spread": 0.999, + "volume": 4876.0 + }, + { + "question": "Will the highest temperature in Dallas be between 72-73°F on April 18?", + "market_id": "1996380", + "range": [ + 72.0, + 73.0 + ], + "bid": 0.0005, + "ask": 0.9995, + "price": 0.0005, + "spread": 0.999, + "volume": 17389.0 + }, + { + "question": "Will the highest temperature in Dallas be between 74-75°F on April 18?", + "market_id": "1996381", + "range": [ + 74.0, + 75.0 + ], + "bid": 0.9665, + "ask": 0.0335, + "price": 0.9665, + "spread": -0.933, + "volume": 9096.0 + }, + { + "question": "Will the highest temperature in Dallas be between 76-77°F on April 18?", + "market_id": "1996382", + "range": [ + 76.0, + 77.0 + ], + "bid": 0.0155, + "ask": 0.9845, + "price": 0.0155, + "spread": 0.969, + "volume": 6118.0 + }, + { + "question": "Will the highest temperature in Dallas be between 78-79°F on April 18?", + "market_id": "1996383", + "range": [ + 78.0, + 79.0 + ], + "bid": 0.004, + "ask": 0.996, + "price": 0.004, + "spread": 0.992, + "volume": 4528.0 + }, + { + "question": "Will the highest temperature in Dallas be between 80-81°F on April 18?", + "market_id": "1996384", + "range": [ + 80.0, + 81.0 + ], + "bid": 0.0015, + "ask": 0.9985, + "price": 0.0015, + "spread": 0.997, + "volume": 4863.0 + }, + { + "question": "Will the highest temperature in Dallas be between 82-83°F on April 18?", + "market_id": "1996385", + "range": [ + 82.0, + 83.0 + ], + "bid": 0.0025, + "ask": 0.9975, + "price": 0.0025, + "spread": 0.995, + "volume": 4885.0 + }, + { + "question": "Will the highest temperature in Dallas be between 84-85°F on April 18?", + "market_id": "1996386", + "range": [ + 84.0, + 85.0 + ], + "bid": 0.0015, + "ask": 0.9985, + "price": 0.0015, + "spread": 0.997, + "volume": 4908.0 + }, + { + "question": "Will the highest temperature in Dallas be 86°F or higher on April 18?", + "market_id": "1996387", + "range": [ + 86.0, + 999.0 + ], + "bid": 0.0015, + "ask": 0.9985, + "price": 0.0015, + "spread": 0.997, + "volume": 11146.0 + } + ], + "created_at": "2026-04-18T06:33:47.023682+00:00" +} \ No newline at end of file diff --git a/data/markets/dallas_2026-04-19.json b/data/markets/dallas_2026-04-19.json new file mode 100644 index 0000000..25e2644 --- /dev/null +++ b/data/markets/dallas_2026-04-19.json @@ -0,0 +1,179 @@ +{ + "city": "dallas", + "city_name": "Dallas", + "date": "2026-04-19", + "unit": "F", + "station": "KDAL", + "event_end_date": "2026-04-19T12:00:00Z", + "hours_at_discovery": 29.4, + "status": "open", + "position": null, + "actual_temp": null, + "resolved_outcome": null, + "pnl": null, + "forecast_snapshots": [ + { + "ts": "2026-04-18T06:33:43.603858+00:00", + "horizon": "D+1", + "hours_left": 29.4, + "ecmwf": 69, + "hrrr": 70, + "metar": null, + "best": 70, + "best_source": "hrrr" + } + ], + "market_snapshots": [ + { + "ts": "2026-04-18T06:33:43.603858+00:00", + "top_bucket": "-999.0-71.0F", + "top_price": 0.36 + } + ], + "all_outcomes": [ + { + "question": "Will the highest temperature in Dallas be 71°F or below on April 19?", + "market_id": "2003722", + "range": [ + -999.0, + 71.0 + ], + "bid": 0.36, + "ask": 0.64, + "price": 0.36, + "spread": 0.28, + "volume": 1603.0 + }, + { + "question": "Will the highest temperature in Dallas be between 72-73°F on April 19?", + "market_id": "2003723", + "range": [ + 72.0, + 73.0 + ], + "bid": 0.275, + "ask": 0.725, + "price": 0.275, + "spread": 0.45, + "volume": 528.0 + }, + { + "question": "Will the highest temperature in Dallas be between 74-75°F on April 19?", + "market_id": "2003724", + "range": [ + 74.0, + 75.0 + ], + "bid": 0.135, + "ask": 0.865, + "price": 0.135, + "spread": 0.73, + "volume": 847.0 + }, + { + "question": "Will the highest temperature in Dallas be between 76-77°F on April 19?", + "market_id": "2003725", + "range": [ + 76.0, + 77.0 + ], + "bid": 0.055, + "ask": 0.945, + "price": 0.055, + "spread": 0.89, + "volume": 589.0 + }, + { + "question": "Will the highest temperature in Dallas be between 78-79°F on April 19?", + "market_id": "2003726", + "range": [ + 78.0, + 79.0 + ], + "bid": 0.014, + "ask": 0.986, + "price": 0.014, + "spread": 0.972, + "volume": 974.0 + }, + { + "question": "Will the highest temperature in Dallas be between 80-81°F on April 19?", + "market_id": "2003727", + "range": [ + 80.0, + 81.0 + ], + "bid": 0.0075, + "ask": 0.9925, + "price": 0.0075, + "spread": 0.985, + "volume": 757.0 + }, + { + "question": "Will the highest temperature in Dallas be between 82-83°F on April 19?", + "market_id": "2003728", + "range": [ + 82.0, + 83.0 + ], + "bid": 0.005, + "ask": 0.995, + "price": 0.005, + "spread": 0.99, + "volume": 637.0 + }, + { + "question": "Will the highest temperature in Dallas be between 84-85°F on April 19?", + "market_id": "2003729", + "range": [ + 84.0, + 85.0 + ], + "bid": 0.004, + "ask": 0.996, + "price": 0.004, + "spread": 0.992, + "volume": 1094.0 + }, + { + "question": "Will the highest temperature in Dallas be between 86-87°F on April 19?", + "market_id": "2003730", + "range": [ + 86.0, + 87.0 + ], + "bid": 0.0025, + "ask": 0.9975, + "price": 0.0025, + "spread": 0.995, + "volume": 1172.0 + }, + { + "question": "Will the highest temperature in Dallas be between 88-89°F on April 19?", + "market_id": "2003731", + "range": [ + 88.0, + 89.0 + ], + "bid": 0.002, + "ask": 0.998, + "price": 0.002, + "spread": 0.996, + "volume": 1127.0 + }, + { + "question": "Will the highest temperature in Dallas be 90°F or higher on April 19?", + "market_id": "2003732", + "range": [ + 90.0, + 999.0 + ], + "bid": 0.0025, + "ask": 0.9975, + "price": 0.0025, + "spread": 0.995, + "volume": 1538.0 + } + ], + "created_at": "2026-04-18T06:33:47.507208+00:00" +} \ No newline at end of file diff --git a/data/markets/dallas_2026-04-20.json b/data/markets/dallas_2026-04-20.json new file mode 100644 index 0000000..e00b0c6 --- /dev/null +++ b/data/markets/dallas_2026-04-20.json @@ -0,0 +1,179 @@ +{ + "city": "dallas", + "city_name": "Dallas", + "date": "2026-04-20", + "unit": "F", + "station": "KDAL", + "event_end_date": "2026-04-20T12:00:00Z", + "hours_at_discovery": 53.4, + "status": "open", + "position": null, + "actual_temp": null, + "resolved_outcome": null, + "pnl": null, + "forecast_snapshots": [ + { + "ts": "2026-04-18T06:33:43.603858+00:00", + "horizon": "D+2", + "hours_left": 53.4, + "ecmwf": 74, + "hrrr": 70, + "metar": null, + "best": 70, + "best_source": "hrrr" + } + ], + "market_snapshots": [ + { + "ts": "2026-04-18T06:33:43.603858+00:00", + "top_bucket": "-999.0-71.0F", + "top_price": 0.385 + } + ], + "all_outcomes": [ + { + "question": "Will the highest temperature in Dallas be 71°F or below on April 20?", + "market_id": "2011134", + "range": [ + -999.0, + 71.0 + ], + "bid": 0.385, + "ask": 0.615, + "price": 0.385, + "spread": 0.23, + "volume": 86.0 + }, + { + "question": "Will the highest temperature in Dallas be between 72-73°F on April 20?", + "market_id": "2011135", + "range": [ + 72.0, + 73.0 + ], + "bid": 0.345, + "ask": 0.655, + "price": 0.345, + "spread": 0.31, + "volume": 43.0 + }, + { + "question": "Will the highest temperature in Dallas be between 74-75°F on April 20?", + "market_id": "2011136", + "range": [ + 74.0, + 75.0 + ], + "bid": 0.29, + "ask": 0.71, + "price": 0.29, + "spread": 0.42, + "volume": 77.0 + }, + { + "question": "Will the highest temperature in Dallas be between 76-77°F on April 20?", + "market_id": "2011137", + "range": [ + 76.0, + 77.0 + ], + "bid": 0.225, + "ask": 0.775, + "price": 0.225, + "spread": 0.55, + "volume": 37.0 + }, + { + "question": "Will the highest temperature in Dallas be between 78-79°F on April 20?", + "market_id": "2011138", + "range": [ + 78.0, + 79.0 + ], + "bid": 0.09, + "ask": 0.91, + "price": 0.09, + "spread": 0.82, + "volume": 43.0 + }, + { + "question": "Will the highest temperature in Dallas be between 80-81°F on April 20?", + "market_id": "2011139", + "range": [ + 80.0, + 81.0 + ], + "bid": 0.0065, + "ask": 0.9935, + "price": 0.0065, + "spread": 0.987, + "volume": 268.0 + }, + { + "question": "Will the highest temperature in Dallas be between 82-83°F on April 20?", + "market_id": "2011140", + "range": [ + 82.0, + 83.0 + ], + "bid": 0.006, + "ask": 0.994, + "price": 0.006, + "spread": 0.988, + "volume": 280.0 + }, + { + "question": "Will the highest temperature in Dallas be between 84-85°F on April 20?", + "market_id": "2011141", + "range": [ + 84.0, + 85.0 + ], + "bid": 0.0055, + "ask": 0.9945, + "price": 0.0055, + "spread": 0.989, + "volume": 254.0 + }, + { + "question": "Will the highest temperature in Dallas be between 86-87°F on April 20?", + "market_id": "2011142", + "range": [ + 86.0, + 87.0 + ], + "bid": 0.006, + "ask": 0.994, + "price": 0.006, + "spread": 0.988, + "volume": 244.0 + }, + { + "question": "Will the highest temperature in Dallas be between 88-89°F on April 20?", + "market_id": "2011143", + "range": [ + 88.0, + 89.0 + ], + "bid": 0.0095, + "ask": 0.9905, + "price": 0.0095, + "spread": 0.981, + "volume": 200.0 + }, + { + "question": "Will the highest temperature in Dallas be 90°F or higher on April 20?", + "market_id": "2011144", + "range": [ + 90.0, + 999.0 + ], + "bid": 0.0085, + "ask": 0.9915, + "price": 0.0085, + "spread": 0.983, + "volume": 213.0 + } + ], + "created_at": "2026-04-18T06:33:47.902131+00:00" +} \ No newline at end of file diff --git a/data/markets/london_2026-04-18.json b/data/markets/london_2026-04-18.json new file mode 100644 index 0000000..769394c --- /dev/null +++ b/data/markets/london_2026-04-18.json @@ -0,0 +1,179 @@ +{ + "city": "london", + "city_name": "London", + "date": "2026-04-18", + "unit": "C", + "station": "EGLC", + "event_end_date": "2026-04-18T12:00:00Z", + "hours_at_discovery": 5.4, + "status": "open", + "position": null, + "actual_temp": null, + "resolved_outcome": null, + "pnl": null, + "forecast_snapshots": [ + { + "ts": "2026-04-18T06:33:57.508115+00:00", + "horizon": "D+0", + "hours_left": 5.4, + "ecmwf": 17.6, + "hrrr": null, + "metar": 11.0, + "best": 17.6, + "best_source": "ecmwf" + } + ], + "market_snapshots": [ + { + "ts": "2026-04-18T06:33:57.508115+00:00", + "top_bucket": "17.0-17.0C", + "top_price": 0.575 + } + ], + "all_outcomes": [ + { + "question": "Will the highest temperature in London be 11°C or below on April 18?", + "market_id": "1996289", + "range": [ + -999.0, + 11.0 + ], + "bid": 0.0, + "ask": 1.0, + "price": 0.0, + "spread": 1.0, + "volume": 3133.0 + }, + { + "question": "Will the highest temperature in London be 12°C on April 18?", + "market_id": "1996290", + "range": [ + 12.0, + 12.0 + ], + "bid": 0.0, + "ask": 1.0, + "price": 0.0, + "spread": 1.0, + "volume": 8302.0 + }, + { + "question": "Will the highest temperature in London be 13°C on April 18?", + "market_id": "1996291", + "range": [ + 13.0, + 13.0 + ], + "bid": 0.0005, + "ask": 0.9995, + "price": 0.0005, + "spread": 0.999, + "volume": 5348.0 + }, + { + "question": "Will the highest temperature in London be 14°C on April 18?", + "market_id": "1996292", + "range": [ + 14.0, + 14.0 + ], + "bid": 0.001, + "ask": 0.999, + "price": 0.001, + "spread": 0.998, + "volume": 8643.0 + }, + { + "question": "Will the highest temperature in London be 15°C on April 18?", + "market_id": "1996293", + "range": [ + 15.0, + 15.0 + ], + "bid": 0.013, + "ask": 0.987, + "price": 0.013, + "spread": 0.974, + "volume": 11156.0 + }, + { + "question": "Will the highest temperature in London be 16°C on April 18?", + "market_id": "1996294", + "range": [ + 16.0, + 16.0 + ], + "bid": 0.13, + "ask": 0.87, + "price": 0.13, + "spread": 0.74, + "volume": 6828.0 + }, + { + "question": "Will the highest temperature in London be 17°C on April 18?", + "market_id": "1996295", + "range": [ + 17.0, + 17.0 + ], + "bid": 0.575, + "ask": 0.425, + "price": 0.575, + "spread": -0.15, + "volume": 8011.0 + }, + { + "question": "Will the highest temperature in London be 18°C on April 18?", + "market_id": "1996296", + "range": [ + 18.0, + 18.0 + ], + "bid": 0.27, + "ask": 0.73, + "price": 0.27, + "spread": 0.46, + "volume": 8217.0 + }, + { + "question": "Will the highest temperature in London be 19°C on April 18?", + "market_id": "1996297", + "range": [ + 19.0, + 19.0 + ], + "bid": 0.0085, + "ask": 0.9915, + "price": 0.0085, + "spread": 0.983, + "volume": 5674.0 + }, + { + "question": "Will the highest temperature in London be 20°C on April 18?", + "market_id": "1996298", + "range": [ + 20.0, + 20.0 + ], + "bid": 0.0025, + "ask": 0.9975, + "price": 0.0025, + "spread": 0.995, + "volume": 3916.0 + }, + { + "question": "Will the highest temperature in London be 21°C or higher on April 18?", + "market_id": "1996299", + "range": [ + 21.0, + 999.0 + ], + "bid": 0.0015, + "ask": 0.9985, + "price": 0.0015, + "spread": 0.997, + "volume": 7055.0 + } + ], + "created_at": "2026-04-18T06:34:00.197616+00:00" +} \ No newline at end of file diff --git a/data/markets/london_2026-04-19.json b/data/markets/london_2026-04-19.json new file mode 100644 index 0000000..488d467 --- /dev/null +++ b/data/markets/london_2026-04-19.json @@ -0,0 +1,179 @@ +{ + "city": "london", + "city_name": "London", + "date": "2026-04-19", + "unit": "C", + "station": "EGLC", + "event_end_date": "2026-04-19T12:00:00Z", + "hours_at_discovery": 29.4, + "status": "open", + "position": null, + "actual_temp": null, + "resolved_outcome": null, + "pnl": null, + "forecast_snapshots": [ + { + "ts": "2026-04-18T06:33:57.508115+00:00", + "horizon": "D+1", + "hours_left": 29.4, + "ecmwf": 15.9, + "hrrr": null, + "metar": null, + "best": 15.9, + "best_source": "ecmwf" + } + ], + "market_snapshots": [ + { + "ts": "2026-04-18T06:33:57.508115+00:00", + "top_bucket": "15.0-15.0C", + "top_price": 0.41 + } + ], + "all_outcomes": [ + { + "question": "Will the highest temperature in London be 9°C or below on April 19?", + "market_id": "2003634", + "range": [ + -999.0, + 9.0 + ], + "bid": 0.0005, + "ask": 0.9995, + "price": 0.0005, + "spread": 0.999, + "volume": 5791.0 + }, + { + "question": "Will the highest temperature in London be 10°C on April 19?", + "market_id": "2003635", + "range": [ + 10.0, + 10.0 + ], + "bid": 0.0005, + "ask": 0.9995, + "price": 0.0005, + "spread": 0.999, + "volume": 8262.0 + }, + { + "question": "Will the highest temperature in London be 11°C on April 19?", + "market_id": "2003636", + "range": [ + 11.0, + 11.0 + ], + "bid": 0.0025, + "ask": 0.9975, + "price": 0.0025, + "spread": 0.995, + "volume": 1521.0 + }, + { + "question": "Will the highest temperature in London be 12°C on April 19?", + "market_id": "2003637", + "range": [ + 12.0, + 12.0 + ], + "bid": 0.0055, + "ask": 0.9945, + "price": 0.0055, + "spread": 0.989, + "volume": 2288.0 + }, + { + "question": "Will the highest temperature in London be 13°C on April 19?", + "market_id": "2003638", + "range": [ + 13.0, + 13.0 + ], + "bid": 0.0135, + "ask": 0.9865, + "price": 0.0135, + "spread": 0.973, + "volume": 2348.0 + }, + { + "question": "Will the highest temperature in London be 14°C on April 19?", + "market_id": "2003639", + "range": [ + 14.0, + 14.0 + ], + "bid": 0.075, + "ask": 0.925, + "price": 0.075, + "spread": 0.85, + "volume": 2967.0 + }, + { + "question": "Will the highest temperature in London be 15°C on April 19?", + "market_id": "2003640", + "range": [ + 15.0, + 15.0 + ], + "bid": 0.41, + "ask": 0.59, + "price": 0.41, + "spread": 0.18, + "volume": 1771.0 + }, + { + "question": "Will the highest temperature in London be 16°C on April 19?", + "market_id": "2003641", + "range": [ + 16.0, + 16.0 + ], + "bid": 0.37, + "ask": 0.63, + "price": 0.37, + "spread": 0.26, + "volume": 1751.0 + }, + { + "question": "Will the highest temperature in London be 17°C on April 19?", + "market_id": "2003642", + "range": [ + 17.0, + 17.0 + ], + "bid": 0.14, + "ask": 0.86, + "price": 0.14, + "spread": 0.72, + "volume": 1573.0 + }, + { + "question": "Will the highest temperature in London be 18°C on April 19?", + "market_id": "2003643", + "range": [ + 18.0, + 18.0 + ], + "bid": 0.014, + "ask": 0.986, + "price": 0.014, + "spread": 0.972, + "volume": 1439.0 + }, + { + "question": "Will the highest temperature in London be 19°C or higher on April 19?", + "market_id": "2003644", + "range": [ + 19.0, + 999.0 + ], + "bid": 0.006, + "ask": 0.994, + "price": 0.006, + "spread": 0.988, + "volume": 1790.0 + } + ], + "created_at": "2026-04-18T06:34:00.698047+00:00" +} \ No newline at end of file diff --git a/data/markets/london_2026-04-20.json b/data/markets/london_2026-04-20.json new file mode 100644 index 0000000..82556e5 --- /dev/null +++ b/data/markets/london_2026-04-20.json @@ -0,0 +1,179 @@ +{ + "city": "london", + "city_name": "London", + "date": "2026-04-20", + "unit": "C", + "station": "EGLC", + "event_end_date": "2026-04-20T12:00:00Z", + "hours_at_discovery": 53.4, + "status": "open", + "position": null, + "actual_temp": null, + "resolved_outcome": null, + "pnl": null, + "forecast_snapshots": [ + { + "ts": "2026-04-18T06:33:57.508115+00:00", + "horizon": "D+2", + "hours_left": 53.4, + "ecmwf": 13.0, + "hrrr": null, + "metar": null, + "best": 13.0, + "best_source": "ecmwf" + } + ], + "market_snapshots": [ + { + "ts": "2026-04-18T06:33:57.508115+00:00", + "top_bucket": "14.0-14.0C", + "top_price": 0.325 + } + ], + "all_outcomes": [ + { + "question": "Will the highest temperature in London be 8°C or below on April 20?", + "market_id": "2011046", + "range": [ + -999.0, + 8.0 + ], + "bid": 0.0055, + "ask": 0.9945, + "price": 0.0055, + "spread": 0.989, + "volume": 204.0 + }, + { + "question": "Will the highest temperature in London be 9°C on April 20?", + "market_id": "2011047", + "range": [ + 9.0, + 9.0 + ], + "bid": 0.0075, + "ask": 0.9925, + "price": 0.0075, + "spread": 0.985, + "volume": 194.0 + }, + { + "question": "Will the highest temperature in London be 10°C on April 20?", + "market_id": "2011048", + "range": [ + 10.0, + 10.0 + ], + "bid": 0.05, + "ask": 0.95, + "price": 0.05, + "spread": 0.9, + "volume": 150.0 + }, + { + "question": "Will the highest temperature in London be 11°C on April 20?", + "market_id": "2011049", + "range": [ + 11.0, + 11.0 + ], + "bid": 0.035, + "ask": 0.965, + "price": 0.035, + "spread": 0.93, + "volume": 431.0 + }, + { + "question": "Will the highest temperature in London be 12°C on April 20?", + "market_id": "2011050", + "range": [ + 12.0, + 12.0 + ], + "bid": 0.24, + "ask": 0.76, + "price": 0.24, + "spread": 0.52, + "volume": 213.0 + }, + { + "question": "Will the highest temperature in London be 13°C on April 20?", + "market_id": "2011051", + "range": [ + 13.0, + 13.0 + ], + "bid": 0.255, + "ask": 0.745, + "price": 0.255, + "spread": 0.49, + "volume": 52.0 + }, + { + "question": "Will the highest temperature in London be 14°C on April 20?", + "market_id": "2011052", + "range": [ + 14.0, + 14.0 + ], + "bid": 0.325, + "ask": 0.675, + "price": 0.325, + "spread": 0.35, + "volume": 46.0 + }, + { + "question": "Will the highest temperature in London be 15°C on April 20?", + "market_id": "2011053", + "range": [ + 15.0, + 15.0 + ], + "bid": 0.065, + "ask": 0.935, + "price": 0.065, + "spread": 0.87, + "volume": 104.0 + }, + { + "question": "Will the highest temperature in London be 16°C on April 20?", + "market_id": "2011054", + "range": [ + 16.0, + 16.0 + ], + "bid": 0.07, + "ask": 0.93, + "price": 0.07, + "spread": 0.86, + "volume": 141.0 + }, + { + "question": "Will the highest temperature in London be 17°C on April 20?", + "market_id": "2011055", + "range": [ + 17.0, + 17.0 + ], + "bid": 0.0305, + "ask": 0.9695, + "price": 0.0305, + "spread": 0.939, + "volume": 134.0 + }, + { + "question": "Will the highest temperature in London be 18°C or higher on April 20?", + "market_id": "2011056", + "range": [ + 18.0, + 999.0 + ], + "bid": 0.0115, + "ask": 0.9885, + "price": 0.0115, + "spread": 0.977, + "volume": 152.0 + } + ], + "created_at": "2026-04-18T06:34:01.130229+00:00" +} \ No newline at end of file diff --git a/data/markets/lucknow_2026-04-18.json b/data/markets/lucknow_2026-04-18.json new file mode 100644 index 0000000..f1e5efe --- /dev/null +++ b/data/markets/lucknow_2026-04-18.json @@ -0,0 +1,179 @@ +{ + "city": "lucknow", + "city_name": "Lucknow", + "date": "2026-04-18", + "unit": "C", + "station": "VILK", + "event_end_date": "2026-04-18T12:00:00Z", + "hours_at_discovery": 5.4, + "status": "open", + "position": null, + "actual_temp": null, + "resolved_outcome": null, + "pnl": null, + "forecast_snapshots": [ + { + "ts": "2026-04-18T06:34:32.279705+00:00", + "horizon": "D+0", + "hours_left": 5.4, + "ecmwf": 41.2, + "hrrr": null, + "metar": 38.0, + "best": 41.2, + "best_source": "ecmwf" + } + ], + "market_snapshots": [ + { + "ts": "2026-04-18T06:34:32.279705+00:00", + "top_bucket": "41.0-41.0C", + "top_price": 0.68 + } + ], + "all_outcomes": [ + { + "question": "Will the highest temperature in Lucknow be 39°C or below on April 18?", + "market_id": "1996444", + "range": [ + -999.0, + 39.0 + ], + "bid": 0.016, + "ask": 0.984, + "price": 0.016, + "spread": 0.968, + "volume": 5131.0 + }, + { + "question": "Will the highest temperature in Lucknow be 40°C on April 18?", + "market_id": "1996445", + "range": [ + 40.0, + 40.0 + ], + "bid": 0.11, + "ask": 0.89, + "price": 0.11, + "spread": 0.78, + "volume": 3196.0 + }, + { + "question": "Will the highest temperature in Lucknow be 41°C on April 18?", + "market_id": "1996446", + "range": [ + 41.0, + 41.0 + ], + "bid": 0.68, + "ask": 0.32, + "price": 0.68, + "spread": -0.36, + "volume": 2461.0 + }, + { + "question": "Will the highest temperature in Lucknow be 42°C on April 18?", + "market_id": "1996447", + "range": [ + 42.0, + 42.0 + ], + "bid": 0.155, + "ask": 0.845, + "price": 0.155, + "spread": 0.69, + "volume": 2253.0 + }, + { + "question": "Will the highest temperature in Lucknow be 43°C on April 18?", + "market_id": "1996448", + "range": [ + 43.0, + 43.0 + ], + "bid": 0.0105, + "ask": 0.9895, + "price": 0.0105, + "spread": 0.979, + "volume": 2802.0 + }, + { + "question": "Will the highest temperature in Lucknow be 44°C on April 18?", + "market_id": "1996449", + "range": [ + 44.0, + 44.0 + ], + "bid": 0.0015, + "ask": 0.9985, + "price": 0.0015, + "spread": 0.997, + "volume": 2209.0 + }, + { + "question": "Will the highest temperature in Lucknow be 45°C on April 18?", + "market_id": "1996450", + "range": [ + 45.0, + 45.0 + ], + "bid": 0.0015, + "ask": 0.9985, + "price": 0.0015, + "spread": 0.997, + "volume": 1871.0 + }, + { + "question": "Will the highest temperature in Lucknow be 46°C on April 18?", + "market_id": "1996451", + "range": [ + 46.0, + 46.0 + ], + "bid": 0.0005, + "ask": 0.9995, + "price": 0.0005, + "spread": 0.999, + "volume": 1605.0 + }, + { + "question": "Will the highest temperature in Lucknow be 47°C on April 18?", + "market_id": "1996452", + "range": [ + 47.0, + 47.0 + ], + "bid": 0.0005, + "ask": 0.9995, + "price": 0.0005, + "spread": 0.999, + "volume": 2099.0 + }, + { + "question": "Will the highest temperature in Lucknow be 48°C on April 18?", + "market_id": "1996453", + "range": [ + 48.0, + 48.0 + ], + "bid": 0.0005, + "ask": 0.9995, + "price": 0.0005, + "spread": 0.999, + "volume": 1135.0 + }, + { + "question": "Will the highest temperature in Lucknow be 49°C or higher on April 18?", + "market_id": "1996454", + "range": [ + 49.0, + 999.0 + ], + "bid": 0.0005, + "ask": 0.9995, + "price": 0.0005, + "spread": 0.999, + "volume": 1709.0 + } + ], + "created_at": "2026-04-18T06:34:34.211475+00:00" +} \ No newline at end of file diff --git a/data/markets/lucknow_2026-04-19.json b/data/markets/lucknow_2026-04-19.json new file mode 100644 index 0000000..a97dfa8 --- /dev/null +++ b/data/markets/lucknow_2026-04-19.json @@ -0,0 +1,179 @@ +{ + "city": "lucknow", + "city_name": "Lucknow", + "date": "2026-04-19", + "unit": "C", + "station": "VILK", + "event_end_date": "2026-04-19T12:00:00Z", + "hours_at_discovery": 29.4, + "status": "open", + "position": null, + "actual_temp": null, + "resolved_outcome": null, + "pnl": null, + "forecast_snapshots": [ + { + "ts": "2026-04-18T06:34:32.279705+00:00", + "horizon": "D+1", + "hours_left": 29.4, + "ecmwf": 42.0, + "hrrr": null, + "metar": null, + "best": 42.0, + "best_source": "ecmwf" + } + ], + "market_snapshots": [ + { + "ts": "2026-04-18T06:34:32.279705+00:00", + "top_bucket": "42.0-42.0C", + "top_price": 0.455 + } + ], + "all_outcomes": [ + { + "question": "Will the highest temperature in Lucknow be 40°C or below on April 19?", + "market_id": "2003788", + "range": [ + -999.0, + 40.0 + ], + "bid": 0.0425, + "ask": 0.9575, + "price": 0.0425, + "spread": 0.915, + "volume": 776.0 + }, + { + "question": "Will the highest temperature in Lucknow be 41°C on April 19?", + "market_id": "2003789", + "range": [ + 41.0, + 41.0 + ], + "bid": 0.2, + "ask": 0.8, + "price": 0.2, + "spread": 0.6, + "volume": 700.0 + }, + { + "question": "Will the highest temperature in Lucknow be 42°C on April 19?", + "market_id": "2003790", + "range": [ + 42.0, + 42.0 + ], + "bid": 0.455, + "ask": 0.545, + "price": 0.455, + "spread": 0.09, + "volume": 386.0 + }, + { + "question": "Will the highest temperature in Lucknow be 43°C on April 19?", + "market_id": "2003791", + "range": [ + 43.0, + 43.0 + ], + "bid": 0.295, + "ask": 0.705, + "price": 0.295, + "spread": 0.41, + "volume": 347.0 + }, + { + "question": "Will the highest temperature in Lucknow be 44°C on April 19?", + "market_id": "2003792", + "range": [ + 44.0, + 44.0 + ], + "bid": 0.0505, + "ask": 0.9495, + "price": 0.0505, + "spread": 0.899, + "volume": 802.0 + }, + { + "question": "Will the highest temperature in Lucknow be 45°C on April 19?", + "market_id": "2003793", + "range": [ + 45.0, + 45.0 + ], + "bid": 0.0225, + "ask": 0.9775, + "price": 0.0225, + "spread": 0.955, + "volume": 537.0 + }, + { + "question": "Will the highest temperature in Lucknow be 46°C on April 19?", + "market_id": "2003794", + "range": [ + 46.0, + 46.0 + ], + "bid": 0.003, + "ask": 0.997, + "price": 0.003, + "spread": 0.994, + "volume": 1296.0 + }, + { + "question": "Will the highest temperature in Lucknow be 47°C on April 19?", + "market_id": "2003795", + "range": [ + 47.0, + 47.0 + ], + "bid": 0.0035, + "ask": 0.9965, + "price": 0.0035, + "spread": 0.993, + "volume": 595.0 + }, + { + "question": "Will the highest temperature in Lucknow be 48°C on April 19?", + "market_id": "2003796", + "range": [ + 48.0, + 48.0 + ], + "bid": 0.0035, + "ask": 0.9965, + "price": 0.0035, + "spread": 0.993, + "volume": 506.0 + }, + { + "question": "Will the highest temperature in Lucknow be 49°C on April 19?", + "market_id": "2003797", + "range": [ + 49.0, + 49.0 + ], + "bid": 0.007, + "ask": 0.993, + "price": 0.007, + "spread": 0.986, + "volume": 1563.0 + }, + { + "question": "Will the highest temperature in Lucknow be 50°C or higher on April 19?", + "market_id": "2003798", + "range": [ + 50.0, + 999.0 + ], + "bid": 0.002, + "ask": 0.998, + "price": 0.002, + "spread": 0.996, + "volume": 934.0 + } + ], + "created_at": "2026-04-18T06:34:34.657369+00:00" +} \ No newline at end of file diff --git a/data/markets/lucknow_2026-04-20.json b/data/markets/lucknow_2026-04-20.json new file mode 100644 index 0000000..d4aaadb --- /dev/null +++ b/data/markets/lucknow_2026-04-20.json @@ -0,0 +1,179 @@ +{ + "city": "lucknow", + "city_name": "Lucknow", + "date": "2026-04-20", + "unit": "C", + "station": "VILK", + "event_end_date": "2026-04-20T12:00:00Z", + "hours_at_discovery": 53.4, + "status": "open", + "position": null, + "actual_temp": null, + "resolved_outcome": null, + "pnl": null, + "forecast_snapshots": [ + { + "ts": "2026-04-18T06:34:32.279705+00:00", + "horizon": "D+2", + "hours_left": 53.4, + "ecmwf": 41.6, + "hrrr": null, + "metar": null, + "best": 41.6, + "best_source": "ecmwf" + } + ], + "market_snapshots": [ + { + "ts": "2026-04-18T06:34:32.279705+00:00", + "top_bucket": "41.0-41.0C", + "top_price": 0.355 + } + ], + "all_outcomes": [ + { + "question": "Will the highest temperature in Lucknow be 39°C or below on April 20?", + "market_id": "2011200", + "range": [ + -999.0, + 39.0 + ], + "bid": 0.09, + "ask": 0.91, + "price": 0.09, + "spread": 0.82, + "volume": 53.0 + }, + { + "question": "Will the highest temperature in Lucknow be 40°C on April 20?", + "market_id": "2011201", + "range": [ + 40.0, + 40.0 + ], + "bid": 0.165, + "ask": 0.835, + "price": 0.165, + "spread": 0.67, + "volume": 3.0 + }, + { + "question": "Will the highest temperature in Lucknow be 41°C on April 20?", + "market_id": "2011202", + "range": [ + 41.0, + 41.0 + ], + "bid": 0.355, + "ask": 0.645, + "price": 0.355, + "spread": 0.29, + "volume": 71.0 + }, + { + "question": "Will the highest temperature in Lucknow be 42°C on April 20?", + "market_id": "2011203", + "range": [ + 42.0, + 42.0 + ], + "bid": 0.3, + "ask": 0.7, + "price": 0.3, + "spread": 0.4, + "volume": 55.0 + }, + { + "question": "Will the highest temperature in Lucknow be 43°C on April 20?", + "market_id": "2011204", + "range": [ + 43.0, + 43.0 + ], + "bid": 0.145, + "ask": 0.855, + "price": 0.145, + "spread": 0.71, + "volume": 25.0 + }, + { + "question": "Will the highest temperature in Lucknow be 44°C on April 20?", + "market_id": "2011205", + "range": [ + 44.0, + 44.0 + ], + "bid": 0.018, + "ask": 0.982, + "price": 0.018, + "spread": 0.964, + "volume": 3.0 + }, + { + "question": "Will the highest temperature in Lucknow be 45°C on April 20?", + "market_id": "2011206", + "range": [ + 45.0, + 45.0 + ], + "bid": 0.015, + "ask": 0.985, + "price": 0.015, + "spread": 0.97, + "volume": 28.0 + }, + { + "question": "Will the highest temperature in Lucknow be 46°C on April 20?", + "market_id": "2011207", + "range": [ + 46.0, + 46.0 + ], + "bid": 0.03, + "ask": 0.97, + "price": 0.03, + "spread": 0.94, + "volume": 132.0 + }, + { + "question": "Will the highest temperature in Lucknow be 47°C on April 20?", + "market_id": "2011208", + "range": [ + 47.0, + 47.0 + ], + "bid": 0.015, + "ask": 0.985, + "price": 0.015, + "spread": 0.97, + "volume": 166.0 + }, + { + "question": "Will the highest temperature in Lucknow be 48°C on April 20?", + "market_id": "2011209", + "range": [ + 48.0, + 48.0 + ], + "bid": 0.012, + "ask": 0.988, + "price": 0.012, + "spread": 0.976, + "volume": 159.0 + }, + { + "question": "Will the highest temperature in Lucknow be 49°C or higher on April 20?", + "market_id": "2011210", + "range": [ + 49.0, + 999.0 + ], + "bid": 0.0075, + "ask": 0.9925, + "price": 0.0075, + "spread": 0.985, + "volume": 185.0 + } + ], + "created_at": "2026-04-18T06:34:35.074668+00:00" +} \ No newline at end of file diff --git a/data/markets/miami_2026-04-18.json b/data/markets/miami_2026-04-18.json new file mode 100644 index 0000000..12dcea1 --- /dev/null +++ b/data/markets/miami_2026-04-18.json @@ -0,0 +1,179 @@ +{ + "city": "miami", + "city_name": "Miami", + "date": "2026-04-18", + "unit": "F", + "station": "KMIA", + "event_end_date": "2026-04-18T12:00:00Z", + "hours_at_discovery": 5.4, + "status": "open", + "position": null, + "actual_temp": null, + "resolved_outcome": null, + "pnl": null, + "forecast_snapshots": [ + { + "ts": "2026-04-18T06:33:38.465891+00:00", + "horizon": "D+0", + "hours_left": 5.4, + "ecmwf": 82, + "hrrr": 84, + "metar": 75, + "best": 84, + "best_source": "hrrr" + } + ], + "market_snapshots": [ + { + "ts": "2026-04-18T06:33:38.465891+00:00", + "top_bucket": "84.0-85.0F", + "top_price": 0.505 + } + ], + "all_outcomes": [ + { + "question": "Will the highest temperature in Miami be 73°F or below on April 18?", + "market_id": "1996400", + "range": [ + -999.0, + 73.0 + ], + "bid": 0.0005, + "ask": 0.9995, + "price": 0.0005, + "spread": 0.999, + "volume": 3104.0 + }, + { + "question": "Will the highest temperature in Miami be between 74-75°F on April 18?", + "market_id": "1996401", + "range": [ + 74.0, + 75.0 + ], + "bid": 0.0005, + "ask": 0.9995, + "price": 0.0005, + "spread": 0.999, + "volume": 881.0 + }, + { + "question": "Will the highest temperature in Miami be between 76-77°F on April 18?", + "market_id": "1996402", + "range": [ + 76.0, + 77.0 + ], + "bid": 0.0005, + "ask": 0.9995, + "price": 0.0005, + "spread": 0.999, + "volume": 2217.0 + }, + { + "question": "Will the highest temperature in Miami be between 78-79°F on April 18?", + "market_id": "1996403", + "range": [ + 78.0, + 79.0 + ], + "bid": 0.007, + "ask": 0.993, + "price": 0.007, + "spread": 0.986, + "volume": 2372.0 + }, + { + "question": "Will the highest temperature in Miami be between 80-81°F on April 18?", + "market_id": "1996404", + "range": [ + 80.0, + 81.0 + ], + "bid": 0.011, + "ask": 0.989, + "price": 0.011, + "spread": 0.978, + "volume": 5086.0 + }, + { + "question": "Will the highest temperature in Miami be between 82-83°F on April 18?", + "market_id": "1996405", + "range": [ + 82.0, + 83.0 + ], + "bid": 0.08, + "ask": 0.92, + "price": 0.08, + "spread": 0.84, + "volume": 6226.0 + }, + { + "question": "Will the highest temperature in Miami be between 84-85°F on April 18?", + "market_id": "1996406", + "range": [ + 84.0, + 85.0 + ], + "bid": 0.505, + "ask": 0.495, + "price": 0.505, + "spread": -0.01, + "volume": 3431.0 + }, + { + "question": "Will the highest temperature in Miami be between 86-87°F on April 18?", + "market_id": "1996407", + "range": [ + 86.0, + 87.0 + ], + "bid": 0.335, + "ask": 0.665, + "price": 0.335, + "spread": 0.33, + "volume": 3281.0 + }, + { + "question": "Will the highest temperature in Miami be between 88-89°F on April 18?", + "market_id": "1996408", + "range": [ + 88.0, + 89.0 + ], + "bid": 0.0155, + "ask": 0.9845, + "price": 0.0155, + "spread": 0.969, + "volume": 2714.0 + }, + { + "question": "Will the highest temperature in Miami be between 90-91°F on April 18?", + "market_id": "1996409", + "range": [ + 90.0, + 91.0 + ], + "bid": 0.006, + "ask": 0.994, + "price": 0.006, + "spread": 0.988, + "volume": 1401.0 + }, + { + "question": "Will the highest temperature in Miami be 92°F or higher on April 18?", + "market_id": "1996410", + "range": [ + 92.0, + 999.0 + ], + "bid": 0.003, + "ask": 0.997, + "price": 0.003, + "spread": 0.994, + "volume": 1876.0 + } + ], + "created_at": "2026-04-18T06:33:42.207184+00:00" +} \ No newline at end of file diff --git a/data/markets/miami_2026-04-19.json b/data/markets/miami_2026-04-19.json new file mode 100644 index 0000000..5277d76 --- /dev/null +++ b/data/markets/miami_2026-04-19.json @@ -0,0 +1,179 @@ +{ + "city": "miami", + "city_name": "Miami", + "date": "2026-04-19", + "unit": "F", + "station": "KMIA", + "event_end_date": "2026-04-19T12:00:00Z", + "hours_at_discovery": 29.4, + "status": "open", + "position": null, + "actual_temp": null, + "resolved_outcome": null, + "pnl": null, + "forecast_snapshots": [ + { + "ts": "2026-04-18T06:33:38.465891+00:00", + "horizon": "D+1", + "hours_left": 29.4, + "ecmwf": 84, + "hrrr": 86, + "metar": null, + "best": 86, + "best_source": "hrrr" + } + ], + "market_snapshots": [ + { + "ts": "2026-04-18T06:33:38.465891+00:00", + "top_bucket": "84.0-85.0F", + "top_price": 0.405 + } + ], + "all_outcomes": [ + { + "question": "Will the highest temperature in Miami be 75°F or below on April 19?", + "market_id": "2003744", + "range": [ + -999.0, + 75.0 + ], + "bid": 0.003, + "ask": 0.997, + "price": 0.003, + "spread": 0.994, + "volume": 1760.0 + }, + { + "question": "Will the highest temperature in Miami be between 76-77°F on April 19?", + "market_id": "2003745", + "range": [ + 76.0, + 77.0 + ], + "bid": 0.0015, + "ask": 0.9985, + "price": 0.0015, + "spread": 0.997, + "volume": 1219.0 + }, + { + "question": "Will the highest temperature in Miami be between 78-79°F on April 19?", + "market_id": "2003746", + "range": [ + 78.0, + 79.0 + ], + "bid": 0.0025, + "ask": 0.9975, + "price": 0.0025, + "spread": 0.995, + "volume": 1171.0 + }, + { + "question": "Will the highest temperature in Miami be between 80-81°F on April 19?", + "market_id": "2003747", + "range": [ + 80.0, + 81.0 + ], + "bid": 0.02, + "ask": 0.98, + "price": 0.02, + "spread": 0.96, + "volume": 2113.0 + }, + { + "question": "Will the highest temperature in Miami be between 82-83°F on April 19?", + "market_id": "2003748", + "range": [ + 82.0, + 83.0 + ], + "bid": 0.0585, + "ask": 0.9415, + "price": 0.0585, + "spread": 0.883, + "volume": 2195.0 + }, + { + "question": "Will the highest temperature in Miami be between 84-85°F on April 19?", + "market_id": "2003749", + "range": [ + 84.0, + 85.0 + ], + "bid": 0.405, + "ask": 0.595, + "price": 0.405, + "spread": 0.19, + "volume": 1712.0 + }, + { + "question": "Will the highest temperature in Miami be between 86-87°F on April 19?", + "market_id": "2003750", + "range": [ + 86.0, + 87.0 + ], + "bid": 0.365, + "ask": 0.635, + "price": 0.365, + "spread": 0.27, + "volume": 1403.0 + }, + { + "question": "Will the highest temperature in Miami be between 88-89°F on April 19?", + "market_id": "2003751", + "range": [ + 88.0, + 89.0 + ], + "bid": 0.175, + "ask": 0.825, + "price": 0.175, + "spread": 0.65, + "volume": 2064.0 + }, + { + "question": "Will the highest temperature in Miami be between 90-91°F on April 19?", + "market_id": "2003752", + "range": [ + 90.0, + 91.0 + ], + "bid": 0.026, + "ask": 0.974, + "price": 0.026, + "spread": 0.948, + "volume": 1114.0 + }, + { + "question": "Will the highest temperature in Miami be between 92-93°F on April 19?", + "market_id": "2003753", + "range": [ + 92.0, + 93.0 + ], + "bid": 0.0105, + "ask": 0.9895, + "price": 0.0105, + "spread": 0.979, + "volume": 594.0 + }, + { + "question": "Will the highest temperature in Miami be 94°F or higher on April 19?", + "market_id": "2003754", + "range": [ + 94.0, + 999.0 + ], + "bid": 0.0075, + "ask": 0.9925, + "price": 0.0075, + "spread": 0.985, + "volume": 1541.0 + } + ], + "created_at": "2026-04-18T06:33:42.656331+00:00" +} \ No newline at end of file diff --git a/data/markets/miami_2026-04-20.json b/data/markets/miami_2026-04-20.json new file mode 100644 index 0000000..3a9d57c --- /dev/null +++ b/data/markets/miami_2026-04-20.json @@ -0,0 +1,179 @@ +{ + "city": "miami", + "city_name": "Miami", + "date": "2026-04-20", + "unit": "F", + "station": "KMIA", + "event_end_date": "2026-04-20T12:00:00Z", + "hours_at_discovery": 53.4, + "status": "open", + "position": null, + "actual_temp": null, + "resolved_outcome": null, + "pnl": null, + "forecast_snapshots": [ + { + "ts": "2026-04-18T06:33:38.465891+00:00", + "horizon": "D+2", + "hours_left": 53.4, + "ecmwf": 79, + "hrrr": 85, + "metar": null, + "best": 85, + "best_source": "hrrr" + } + ], + "market_snapshots": [ + { + "ts": "2026-04-18T06:33:38.465891+00:00", + "top_bucket": "82.0-83.0F", + "top_price": 0.405 + } + ], + "all_outcomes": [ + { + "question": "Will the highest temperature in Miami be 73°F or below on April 20?", + "market_id": "2011156", + "range": [ + -999.0, + 73.0 + ], + "bid": 0.0075, + "ask": 0.9925, + "price": 0.0075, + "spread": 0.985, + "volume": 211.0 + }, + { + "question": "Will the highest temperature in Miami be between 74-75°F on April 20?", + "market_id": "2011157", + "range": [ + 74.0, + 75.0 + ], + "bid": 0.015, + "ask": 0.985, + "price": 0.015, + "spread": 0.97, + "volume": 34.0 + }, + { + "question": "Will the highest temperature in Miami be between 76-77°F on April 20?", + "market_id": "2011158", + "range": [ + 76.0, + 77.0 + ], + "bid": 0.027, + "ask": 0.973, + "price": 0.027, + "spread": 0.946, + "volume": 41.0 + }, + { + "question": "Will the highest temperature in Miami be between 78-79°F on April 20?", + "market_id": "2011159", + "range": [ + 78.0, + 79.0 + ], + "bid": 0.055, + "ask": 0.945, + "price": 0.055, + "spread": 0.89, + "volume": 108.0 + }, + { + "question": "Will the highest temperature in Miami be between 80-81°F on April 20?", + "market_id": "2011160", + "range": [ + 80.0, + 81.0 + ], + "bid": 0.19, + "ask": 0.81, + "price": 0.19, + "spread": 0.62, + "volume": 44.0 + }, + { + "question": "Will the highest temperature in Miami be between 82-83°F on April 20?", + "market_id": "2011161", + "range": [ + 82.0, + 83.0 + ], + "bid": 0.405, + "ask": 0.595, + "price": 0.405, + "spread": 0.19, + "volume": 58.0 + }, + { + "question": "Will the highest temperature in Miami be between 84-85°F on April 20?", + "market_id": "2011162", + "range": [ + 84.0, + 85.0 + ], + "bid": 0.22, + "ask": 0.78, + "price": 0.22, + "spread": 0.56, + "volume": 39.0 + }, + { + "question": "Will the highest temperature in Miami be between 86-87°F on April 20?", + "market_id": "2011163", + "range": [ + 86.0, + 87.0 + ], + "bid": 0.115, + "ask": 0.885, + "price": 0.115, + "spread": 0.77, + "volume": 131.0 + }, + { + "question": "Will the highest temperature in Miami be between 88-89°F on April 20?", + "market_id": "2011164", + "range": [ + 88.0, + 89.0 + ], + "bid": 0.06, + "ask": 0.94, + "price": 0.06, + "spread": 0.88, + "volume": 271.0 + }, + { + "question": "Will the highest temperature in Miami be between 90-91°F on April 20?", + "market_id": "2011165", + "range": [ + 90.0, + 91.0 + ], + "bid": 0.0065, + "ask": 0.9935, + "price": 0.0065, + "spread": 0.987, + "volume": 371.0 + }, + { + "question": "Will the highest temperature in Miami be 92°F or higher on April 20?", + "market_id": "2011166", + "range": [ + 92.0, + 999.0 + ], + "bid": 0.006, + "ask": 0.994, + "price": 0.006, + "spread": 0.988, + "volume": 284.0 + } + ], + "created_at": "2026-04-18T06:33:43.136335+00:00" +} \ No newline at end of file diff --git a/data/markets/munich_2026-04-18.json b/data/markets/munich_2026-04-18.json new file mode 100644 index 0000000..4ee793d --- /dev/null +++ b/data/markets/munich_2026-04-18.json @@ -0,0 +1,179 @@ +{ + "city": "munich", + "city_name": "Munich", + "date": "2026-04-18", + "unit": "C", + "station": "EDDM", + "event_end_date": "2026-04-18T12:00:00Z", + "hours_at_discovery": 5.4, + "status": "open", + "position": null, + "actual_temp": null, + "resolved_outcome": null, + "pnl": null, + "forecast_snapshots": [ + { + "ts": "2026-04-18T06:34:05.123715+00:00", + "horizon": "D+0", + "hours_left": 5.4, + "ecmwf": 19.7, + "hrrr": null, + "metar": null, + "best": 19.7, + "best_source": "ecmwf" + } + ], + "market_snapshots": [ + { + "ts": "2026-04-18T06:34:05.123715+00:00", + "top_bucket": "21.0-21.0C", + "top_price": 0.49 + } + ], + "all_outcomes": [ + { + "question": "Will the highest temperature in Munich be 14°C or below on April 18?", + "market_id": "1996455", + "range": [ + -999.0, + 14.0 + ], + "bid": 0.001, + "ask": 0.999, + "price": 0.001, + "spread": 0.998, + "volume": 5908.0 + }, + { + "question": "Will the highest temperature in Munich be 15°C on April 18?", + "market_id": "1996456", + "range": [ + 15.0, + 15.0 + ], + "bid": 0.0005, + "ask": 0.9995, + "price": 0.0005, + "spread": 0.999, + "volume": 8923.0 + }, + { + "question": "Will the highest temperature in Munich be 16°C on April 18?", + "market_id": "1996457", + "range": [ + 16.0, + 16.0 + ], + "bid": 0.0005, + "ask": 0.9995, + "price": 0.0005, + "spread": 0.999, + "volume": 2878.0 + }, + { + "question": "Will the highest temperature in Munich be 17°C on April 18?", + "market_id": "1996458", + "range": [ + 17.0, + 17.0 + ], + "bid": 0.0005, + "ask": 0.9995, + "price": 0.0005, + "spread": 0.999, + "volume": 2515.0 + }, + { + "question": "Will the highest temperature in Munich be 18°C on April 18?", + "market_id": "1996459", + "range": [ + 18.0, + 18.0 + ], + "bid": 0.0025, + "ask": 0.9975, + "price": 0.0025, + "spread": 0.995, + "volume": 6535.0 + }, + { + "question": "Will the highest temperature in Munich be 19°C on April 18?", + "market_id": "1996460", + "range": [ + 19.0, + 19.0 + ], + "bid": 0.04, + "ask": 0.96, + "price": 0.04, + "spread": 0.92, + "volume": 6133.0 + }, + { + "question": "Will the highest temperature in Munich be 20°C on April 18?", + "market_id": "1996461", + "range": [ + 20.0, + 20.0 + ], + "bid": 0.195, + "ask": 0.805, + "price": 0.195, + "spread": 0.61, + "volume": 3548.0 + }, + { + "question": "Will the highest temperature in Munich be 21°C on April 18?", + "market_id": "1996462", + "range": [ + 21.0, + 21.0 + ], + "bid": 0.49, + "ask": 0.51, + "price": 0.49, + "spread": 0.02, + "volume": 2682.0 + }, + { + "question": "Will the highest temperature in Munich be 22°C on April 18?", + "market_id": "1996463", + "range": [ + 22.0, + 22.0 + ], + "bid": 0.1855, + "ask": 0.8145, + "price": 0.1855, + "spread": 0.629, + "volume": 4192.0 + }, + { + "question": "Will the highest temperature in Munich be 23°C on April 18?", + "market_id": "1996464", + "range": [ + 23.0, + 23.0 + ], + "bid": 0.0125, + "ask": 0.9875, + "price": 0.0125, + "spread": 0.975, + "volume": 4254.0 + }, + { + "question": "Will the highest temperature in Munich be 24°C or higher on April 18?", + "market_id": "1996465", + "range": [ + 24.0, + 999.0 + ], + "bid": 0.003, + "ask": 0.997, + "price": 0.003, + "spread": 0.994, + "volume": 5018.0 + } + ], + "created_at": "2026-04-18T06:34:14.954102+00:00" +} \ No newline at end of file diff --git a/data/markets/munich_2026-04-19.json b/data/markets/munich_2026-04-19.json new file mode 100644 index 0000000..bc5d120 --- /dev/null +++ b/data/markets/munich_2026-04-19.json @@ -0,0 +1,179 @@ +{ + "city": "munich", + "city_name": "Munich", + "date": "2026-04-19", + "unit": "C", + "station": "EDDM", + "event_end_date": "2026-04-19T12:00:00Z", + "hours_at_discovery": 29.4, + "status": "open", + "position": null, + "actual_temp": null, + "resolved_outcome": null, + "pnl": null, + "forecast_snapshots": [ + { + "ts": "2026-04-18T06:34:05.123715+00:00", + "horizon": "D+1", + "hours_left": 29.4, + "ecmwf": 15.4, + "hrrr": null, + "metar": null, + "best": 15.4, + "best_source": "ecmwf" + } + ], + "market_snapshots": [ + { + "ts": "2026-04-18T06:34:05.123715+00:00", + "top_bucket": "15.0-15.0C", + "top_price": 0.335 + } + ], + "all_outcomes": [ + { + "question": "Will the highest temperature in Munich be 10°C or below on April 19?", + "market_id": "2003799", + "range": [ + -999.0, + 10.0 + ], + "bid": 0.004, + "ask": 0.996, + "price": 0.004, + "spread": 0.992, + "volume": 1254.0 + }, + { + "question": "Will the highest temperature in Munich be 11°C on April 19?", + "market_id": "2003800", + "range": [ + 11.0, + 11.0 + ], + "bid": 0.004, + "ask": 0.996, + "price": 0.004, + "spread": 0.992, + "volume": 562.0 + }, + { + "question": "Will the highest temperature in Munich be 12°C on April 19?", + "market_id": "2003801", + "range": [ + 12.0, + 12.0 + ], + "bid": 0.0115, + "ask": 0.9885, + "price": 0.0115, + "spread": 0.977, + "volume": 1721.0 + }, + { + "question": "Will the highest temperature in Munich be 13°C on April 19?", + "market_id": "2003802", + "range": [ + 13.0, + 13.0 + ], + "bid": 0.025, + "ask": 0.975, + "price": 0.025, + "spread": 0.95, + "volume": 1999.0 + }, + { + "question": "Will the highest temperature in Munich be 14°C on April 19?", + "market_id": "2003803", + "range": [ + 14.0, + 14.0 + ], + "bid": 0.28, + "ask": 0.72, + "price": 0.28, + "spread": 0.44, + "volume": 767.0 + }, + { + "question": "Will the highest temperature in Munich be 15°C on April 19?", + "market_id": "2003804", + "range": [ + 15.0, + 15.0 + ], + "bid": 0.335, + "ask": 0.665, + "price": 0.335, + "spread": 0.33, + "volume": 962.0 + }, + { + "question": "Will the highest temperature in Munich be 16°C on April 19?", + "market_id": "2003805", + "range": [ + 16.0, + 16.0 + ], + "bid": 0.255, + "ask": 0.745, + "price": 0.255, + "spread": 0.49, + "volume": 1096.0 + }, + { + "question": "Will the highest temperature in Munich be 17°C on April 19?", + "market_id": "2003806", + "range": [ + 17.0, + 17.0 + ], + "bid": 0.13, + "ask": 0.87, + "price": 0.13, + "spread": 0.74, + "volume": 1388.0 + }, + { + "question": "Will the highest temperature in Munich be 18°C on April 19?", + "market_id": "2003807", + "range": [ + 18.0, + 18.0 + ], + "bid": 0.0095, + "ask": 0.9905, + "price": 0.0095, + "spread": 0.981, + "volume": 2919.0 + }, + { + "question": "Will the highest temperature in Munich be 19°C on April 19?", + "market_id": "2003808", + "range": [ + 19.0, + 19.0 + ], + "bid": 0.0115, + "ask": 0.9885, + "price": 0.0115, + "spread": 0.977, + "volume": 1701.0 + }, + { + "question": "Will the highest temperature in Munich be 20°C or higher on April 19?", + "market_id": "2003809", + "range": [ + 20.0, + 999.0 + ], + "bid": 0.0055, + "ask": 0.9945, + "price": 0.0055, + "spread": 0.989, + "volume": 1651.0 + } + ], + "created_at": "2026-04-18T06:34:15.359407+00:00" +} \ No newline at end of file diff --git a/data/markets/munich_2026-04-20.json b/data/markets/munich_2026-04-20.json new file mode 100644 index 0000000..51770a5 --- /dev/null +++ b/data/markets/munich_2026-04-20.json @@ -0,0 +1,179 @@ +{ + "city": "munich", + "city_name": "Munich", + "date": "2026-04-20", + "unit": "C", + "station": "EDDM", + "event_end_date": "2026-04-20T12:00:00Z", + "hours_at_discovery": 53.4, + "status": "open", + "position": null, + "actual_temp": null, + "resolved_outcome": null, + "pnl": null, + "forecast_snapshots": [ + { + "ts": "2026-04-18T06:34:05.123715+00:00", + "horizon": "D+2", + "hours_left": 53.4, + "ecmwf": 12.1, + "hrrr": null, + "metar": null, + "best": 12.1, + "best_source": "ecmwf" + } + ], + "market_snapshots": [ + { + "ts": "2026-04-18T06:34:05.123715+00:00", + "top_bucket": "12.0-12.0C", + "top_price": 0.25 + } + ], + "all_outcomes": [ + { + "question": "Will the highest temperature in Munich be 6°C or below on April 20?", + "market_id": "2011211", + "range": [ + -999.0, + 6.0 + ], + "bid": 0.0075, + "ask": 0.9925, + "price": 0.0075, + "spread": 0.985, + "volume": 145.0 + }, + { + "question": "Will the highest temperature in Munich be 7°C on April 20?", + "market_id": "2011212", + "range": [ + 7.0, + 7.0 + ], + "bid": 0.0165, + "ask": 0.9835, + "price": 0.0165, + "spread": 0.967, + "volume": 166.0 + }, + { + "question": "Will the highest temperature in Munich be 8°C on April 20?", + "market_id": "2011213", + "range": [ + 8.0, + 8.0 + ], + "bid": 0.03, + "ask": 0.97, + "price": 0.03, + "spread": 0.94, + "volume": 45.0 + }, + { + "question": "Will the highest temperature in Munich be 9°C on April 20?", + "market_id": "2011214", + "range": [ + 9.0, + 9.0 + ], + "bid": 0.035, + "ask": 0.965, + "price": 0.035, + "spread": 0.93, + "volume": 0.0 + }, + { + "question": "Will the highest temperature in Munich be 10°C on April 20?", + "market_id": "2011215", + "range": [ + 10.0, + 10.0 + ], + "bid": 0.025, + "ask": 0.975, + "price": 0.025, + "spread": 0.95, + "volume": 11.0 + }, + { + "question": "Will the highest temperature in Munich be 11°C on April 20?", + "market_id": "2011216", + "range": [ + 11.0, + 11.0 + ], + "bid": 0.1, + "ask": 0.9, + "price": 0.1, + "spread": 0.8, + "volume": 143.0 + }, + { + "question": "Will the highest temperature in Munich be 12°C on April 20?", + "market_id": "2011217", + "range": [ + 12.0, + 12.0 + ], + "bid": 0.25, + "ask": 0.75, + "price": 0.25, + "spread": 0.5, + "volume": 9.0 + }, + { + "question": "Will the highest temperature in Munich be 13°C on April 20?", + "market_id": "2011218", + "range": [ + 13.0, + 13.0 + ], + "bid": 0.25, + "ask": 0.75, + "price": 0.25, + "spread": 0.5, + "volume": 0.0 + }, + { + "question": "Will the highest temperature in Munich be 14°C on April 20?", + "market_id": "2011219", + "range": [ + 14.0, + 14.0 + ], + "bid": 0.185, + "ask": 0.815, + "price": 0.185, + "spread": 0.63, + "volume": 9.0 + }, + { + "question": "Will the highest temperature in Munich be 15°C on April 20?", + "market_id": "2011220", + "range": [ + 15.0, + 15.0 + ], + "bid": 0.095, + "ask": 0.905, + "price": 0.095, + "spread": 0.81, + "volume": 17.0 + }, + { + "question": "Will the highest temperature in Munich be 16°C or higher on April 20?", + "market_id": "2011221", + "range": [ + 16.0, + 999.0 + ], + "bid": 0.065, + "ask": 0.935, + "price": 0.065, + "spread": 0.87, + "volume": 173.0 + } + ], + "created_at": "2026-04-18T06:34:15.809220+00:00" +} \ No newline at end of file diff --git a/data/markets/nyc_2026-04-18.json b/data/markets/nyc_2026-04-18.json new file mode 100644 index 0000000..801be07 --- /dev/null +++ b/data/markets/nyc_2026-04-18.json @@ -0,0 +1,179 @@ +{ + "city": "nyc", + "city_name": "New York City", + "date": "2026-04-18", + "unit": "F", + "station": "KLGA", + "event_end_date": "2026-04-18T12:00:00Z", + "hours_at_discovery": 5.4, + "status": "open", + "position": null, + "actual_temp": null, + "resolved_outcome": null, + "pnl": null, + "forecast_snapshots": [ + { + "ts": "2026-04-18T06:33:27.912931+00:00", + "horizon": "D+0", + "hours_left": 5.4, + "ecmwf": 66, + "hrrr": 65, + "metar": 55, + "best": 65, + "best_source": "hrrr" + } + ], + "market_snapshots": [ + { + "ts": "2026-04-18T06:33:27.912931+00:00", + "top_bucket": "64.0-65.0F", + "top_price": 0.375 + } + ], + "all_outcomes": [ + { + "question": "Will the highest temperature in New York City be 53°F or below on April 18?", + "market_id": "1996366", + "range": [ + -999.0, + 53.0 + ], + "bid": 0.0005, + "ask": 0.9995, + "price": 0.0005, + "spread": 0.999, + "volume": 12480.0 + }, + { + "question": "Will the highest temperature in New York City be between 54-55°F on April 18?", + "market_id": "1996367", + "range": [ + 54.0, + 55.0 + ], + "bid": 0.004, + "ask": 0.996, + "price": 0.004, + "spread": 0.992, + "volume": 10915.0 + }, + { + "question": "Will the highest temperature in New York City be between 56-57°F on April 18?", + "market_id": "1996368", + "range": [ + 56.0, + 57.0 + ], + "bid": 0.0095, + "ask": 0.9905, + "price": 0.0095, + "spread": 0.981, + "volume": 8844.0 + }, + { + "question": "Will the highest temperature in New York City be between 58-59°F on April 18?", + "market_id": "1996369", + "range": [ + 58.0, + 59.0 + ], + "bid": 0.028, + "ask": 0.972, + "price": 0.028, + "spread": 0.944, + "volume": 6657.0 + }, + { + "question": "Will the highest temperature in New York City be between 60-61°F on April 18?", + "market_id": "1996370", + "range": [ + 60.0, + 61.0 + ], + "bid": 0.084, + "ask": 0.916, + "price": 0.084, + "spread": 0.832, + "volume": 6872.0 + }, + { + "question": "Will the highest temperature in New York City be between 62-63°F on April 18?", + "market_id": "1996371", + "range": [ + 62.0, + 63.0 + ], + "bid": 0.195, + "ask": 0.805, + "price": 0.195, + "spread": 0.61, + "volume": 6007.0 + }, + { + "question": "Will the highest temperature in New York City be between 64-65°F on April 18?", + "market_id": "1996372", + "range": [ + 64.0, + 65.0 + ], + "bid": 0.375, + "ask": 0.625, + "price": 0.375, + "spread": 0.25, + "volume": 4095.0 + }, + { + "question": "Will the highest temperature in New York City be between 66-67°F on April 18?", + "market_id": "1996373", + "range": [ + 66.0, + 67.0 + ], + "bid": 0.255, + "ask": 0.745, + "price": 0.255, + "spread": 0.49, + "volume": 3313.0 + }, + { + "question": "Will the highest temperature in New York City be between 68-69°F on April 18?", + "market_id": "1996374", + "range": [ + 68.0, + 69.0 + ], + "bid": 0.044, + "ask": 0.956, + "price": 0.044, + "spread": 0.912, + "volume": 7316.0 + }, + { + "question": "Will the highest temperature in New York City be between 70-71°F on April 18?", + "market_id": "1996375", + "range": [ + 70.0, + 71.0 + ], + "bid": 0.027, + "ask": 0.973, + "price": 0.027, + "spread": 0.946, + "volume": 8112.0 + }, + { + "question": "Will the highest temperature in New York City be 72°F or higher on April 18?", + "market_id": "1996376", + "range": [ + 72.0, + 999.0 + ], + "bid": 0.009, + "ask": 0.991, + "price": 0.009, + "spread": 0.982, + "volume": 9849.0 + } + ], + "created_at": "2026-04-18T06:33:32.471369+00:00" +} \ No newline at end of file diff --git a/data/markets/nyc_2026-04-19.json b/data/markets/nyc_2026-04-19.json new file mode 100644 index 0000000..d91312f --- /dev/null +++ b/data/markets/nyc_2026-04-19.json @@ -0,0 +1,179 @@ +{ + "city": "nyc", + "city_name": "New York City", + "date": "2026-04-19", + "unit": "F", + "station": "KLGA", + "event_end_date": "2026-04-19T12:00:00Z", + "hours_at_discovery": 29.4, + "status": "open", + "position": null, + "actual_temp": null, + "resolved_outcome": null, + "pnl": null, + "forecast_snapshots": [ + { + "ts": "2026-04-18T06:33:27.912931+00:00", + "horizon": "D+1", + "hours_left": 29.4, + "ecmwf": 55, + "hrrr": 52, + "metar": null, + "best": 52, + "best_source": "hrrr" + } + ], + "market_snapshots": [ + { + "ts": "2026-04-18T06:33:27.912931+00:00", + "top_bucket": "54.0-55.0F", + "top_price": 0.355 + } + ], + "all_outcomes": [ + { + "question": "Will the highest temperature in New York City be 47°F or below on April 19?", + "market_id": "2003711", + "range": [ + -999.0, + 47.0 + ], + "bid": 0.0025, + "ask": 0.9975, + "price": 0.0025, + "spread": 0.995, + "volume": 1488.0 + }, + { + "question": "Will the highest temperature in New York City be between 48-49°F on April 19?", + "market_id": "2003712", + "range": [ + 48.0, + 49.0 + ], + "bid": 0.009, + "ask": 0.991, + "price": 0.009, + "spread": 0.982, + "volume": 2539.0 + }, + { + "question": "Will the highest temperature in New York City be between 50-51°F on April 19?", + "market_id": "2003713", + "range": [ + 50.0, + 51.0 + ], + "bid": 0.0175, + "ask": 0.9825, + "price": 0.0175, + "spread": 0.965, + "volume": 2143.0 + }, + { + "question": "Will the highest temperature in New York City be between 52-53°F on April 19?", + "market_id": "2003714", + "range": [ + 52.0, + 53.0 + ], + "bid": 0.205, + "ask": 0.795, + "price": 0.205, + "spread": 0.59, + "volume": 1156.0 + }, + { + "question": "Will the highest temperature in New York City be between 54-55°F on April 19?", + "market_id": "2003715", + "range": [ + 54.0, + 55.0 + ], + "bid": 0.355, + "ask": 0.645, + "price": 0.355, + "spread": 0.29, + "volume": 1107.0 + }, + { + "question": "Will the highest temperature in New York City be between 56-57°F on April 19?", + "market_id": "2003716", + "range": [ + 56.0, + 57.0 + ], + "bid": 0.305, + "ask": 0.695, + "price": 0.305, + "spread": 0.39, + "volume": 992.0 + }, + { + "question": "Will the highest temperature in New York City be between 58-59°F on April 19?", + "market_id": "2003717", + "range": [ + 58.0, + 59.0 + ], + "bid": 0.115, + "ask": 0.885, + "price": 0.115, + "spread": 0.77, + "volume": 1156.0 + }, + { + "question": "Will the highest temperature in New York City be between 60-61°F on April 19?", + "market_id": "2003718", + "range": [ + 60.0, + 61.0 + ], + "bid": 0.0215, + "ask": 0.9785, + "price": 0.0215, + "spread": 0.957, + "volume": 1572.0 + }, + { + "question": "Will the highest temperature in New York City be between 62-63°F on April 19?", + "market_id": "2003719", + "range": [ + 62.0, + 63.0 + ], + "bid": 0.007, + "ask": 0.993, + "price": 0.007, + "spread": 0.986, + "volume": 1729.0 + }, + { + "question": "Will the highest temperature in New York City be between 64-65°F on April 19?", + "market_id": "2003720", + "range": [ + 64.0, + 65.0 + ], + "bid": 0.0055, + "ask": 0.9945, + "price": 0.0055, + "spread": 0.989, + "volume": 1490.0 + }, + { + "question": "Will the highest temperature in New York City be 66°F or higher on April 19?", + "market_id": "2003721", + "range": [ + 66.0, + 999.0 + ], + "bid": 0.0085, + "ask": 0.9915, + "price": 0.0085, + "spread": 0.983, + "volume": 1458.0 + } + ], + "created_at": "2026-04-18T06:33:32.948007+00:00" +} \ No newline at end of file diff --git a/data/markets/nyc_2026-04-20.json b/data/markets/nyc_2026-04-20.json new file mode 100644 index 0000000..e3e3703 --- /dev/null +++ b/data/markets/nyc_2026-04-20.json @@ -0,0 +1,179 @@ +{ + "city": "nyc", + "city_name": "New York City", + "date": "2026-04-20", + "unit": "F", + "station": "KLGA", + "event_end_date": "2026-04-20T12:00:00Z", + "hours_at_discovery": 53.4, + "status": "open", + "position": null, + "actual_temp": null, + "resolved_outcome": null, + "pnl": null, + "forecast_snapshots": [ + { + "ts": "2026-04-18T06:33:27.912931+00:00", + "horizon": "D+2", + "hours_left": 53.4, + "ecmwf": 51, + "hrrr": 53, + "metar": null, + "best": 53, + "best_source": "hrrr" + } + ], + "market_snapshots": [ + { + "ts": "2026-04-18T06:33:27.912931+00:00", + "top_bucket": "50.0-51.0F", + "top_price": 0.28 + } + ], + "all_outcomes": [ + { + "question": "Will the highest temperature in New York City be 45°F or below on April 20?", + "market_id": "2011123", + "range": [ + -999.0, + 45.0 + ], + "bid": 0.075, + "ask": 0.925, + "price": 0.075, + "spread": 0.85, + "volume": 169.0 + }, + { + "question": "Will the highest temperature in New York City be between 46-47°F on April 20?", + "market_id": "2011124", + "range": [ + 46.0, + 47.0 + ], + "bid": 0.0755, + "ask": 0.9245, + "price": 0.0755, + "spread": 0.849, + "volume": 32.0 + }, + { + "question": "Will the highest temperature in New York City be between 48-49°F on April 20?", + "market_id": "2011125", + "range": [ + 48.0, + 49.0 + ], + "bid": 0.13, + "ask": 0.87, + "price": 0.13, + "spread": 0.74, + "volume": 0.0 + }, + { + "question": "Will the highest temperature in New York City be between 50-51°F on April 20?", + "market_id": "2011126", + "range": [ + 50.0, + 51.0 + ], + "bid": 0.28, + "ask": 0.72, + "price": 0.28, + "spread": 0.44, + "volume": 5.0 + }, + { + "question": "Will the highest temperature in New York City be between 52-53°F on April 20?", + "market_id": "2011127", + "range": [ + 52.0, + 53.0 + ], + "bid": 0.26, + "ask": 0.74, + "price": 0.26, + "spread": 0.48, + "volume": 1.0 + }, + { + "question": "Will the highest temperature in New York City be between 54-55°F on April 20?", + "market_id": "2011128", + "range": [ + 54.0, + 55.0 + ], + "bid": 0.18, + "ask": 0.82, + "price": 0.18, + "spread": 0.64, + "volume": 38.0 + }, + { + "question": "Will the highest temperature in New York City be between 56-57°F on April 20?", + "market_id": "2011129", + "range": [ + 56.0, + 57.0 + ], + "bid": 0.055, + "ask": 0.945, + "price": 0.055, + "spread": 0.89, + "volume": 38.0 + }, + { + "question": "Will the highest temperature in New York City be between 58-59°F on April 20?", + "market_id": "2011130", + "range": [ + 58.0, + 59.0 + ], + "bid": 0.05, + "ask": 0.95, + "price": 0.05, + "spread": 0.9, + "volume": 153.0 + }, + { + "question": "Will the highest temperature in New York City be between 60-61°F on April 20?", + "market_id": "2011131", + "range": [ + 60.0, + 61.0 + ], + "bid": 0.0375, + "ask": 0.9625, + "price": 0.0375, + "spread": 0.925, + "volume": 80.0 + }, + { + "question": "Will the highest temperature in New York City be between 62-63°F on April 20?", + "market_id": "2011132", + "range": [ + 62.0, + 63.0 + ], + "bid": 0.02, + "ask": 0.98, + "price": 0.02, + "spread": 0.96, + "volume": 200.0 + }, + { + "question": "Will the highest temperature in New York City be 64°F or higher on April 20?", + "market_id": "2011133", + "range": [ + 64.0, + 999.0 + ], + "bid": 0.004, + "ask": 0.996, + "price": 0.004, + "spread": 0.992, + "volume": 188.0 + } + ], + "created_at": "2026-04-18T06:33:33.402284+00:00" +} \ No newline at end of file diff --git a/data/markets/paris_2026-04-18.json b/data/markets/paris_2026-04-18.json new file mode 100644 index 0000000..134ed7a --- /dev/null +++ b/data/markets/paris_2026-04-18.json @@ -0,0 +1,179 @@ +{ + "city": "paris", + "city_name": "Paris", + "date": "2026-04-18", + "unit": "C", + "station": "LFPG", + "event_end_date": "2026-04-18T12:00:00Z", + "hours_at_discovery": 5.4, + "status": "open", + "position": null, + "actual_temp": null, + "resolved_outcome": null, + "pnl": null, + "forecast_snapshots": [ + { + "ts": "2026-04-18T06:34:01.592793+00:00", + "horizon": "D+0", + "hours_left": 5.4, + "ecmwf": 19.8, + "hrrr": null, + "metar": 14.0, + "best": 19.8, + "best_source": "ecmwf" + } + ], + "market_snapshots": [ + { + "ts": "2026-04-18T06:34:01.592793+00:00", + "top_bucket": "20.0-20.0C", + "top_price": 0.375 + } + ], + "all_outcomes": [ + { + "question": "Will the highest temperature in Paris be 13°C or below on April 18?", + "market_id": "1996300", + "range": [ + -999.0, + 13.0 + ], + "bid": 0.0, + "ask": 1.0, + "price": 0.0, + "spread": 1.0, + "volume": 9156.0 + }, + { + "question": "Will the highest temperature in Paris be 14°C on April 18?", + "market_id": "1996301", + "range": [ + 14.0, + 14.0 + ], + "bid": 0.0, + "ask": 1.0, + "price": 0.0, + "spread": 1.0, + "volume": 10969.0 + }, + { + "question": "Will the highest temperature in Paris be 15°C on April 18?", + "market_id": "1996302", + "range": [ + 15.0, + 15.0 + ], + "bid": 0.0, + "ask": 1.0, + "price": 0.0, + "spread": 1.0, + "volume": 1769.0 + }, + { + "question": "Will the highest temperature in Paris be 16°C on April 18?", + "market_id": "1996303", + "range": [ + 16.0, + 16.0 + ], + "bid": 0.0065, + "ask": 0.9935, + "price": 0.0065, + "spread": 0.987, + "volume": 4336.0 + }, + { + "question": "Will the highest temperature in Paris be 17°C on April 18?", + "market_id": "1996304", + "range": [ + 17.0, + 17.0 + ], + "bid": 0.0015, + "ask": 0.9985, + "price": 0.0015, + "spread": 0.997, + "volume": 10420.0 + }, + { + "question": "Will the highest temperature in Paris be 18°C on April 18?", + "market_id": "1996305", + "range": [ + 18.0, + 18.0 + ], + "bid": 0.0095, + "ask": 0.9905, + "price": 0.0095, + "spread": 0.981, + "volume": 9557.0 + }, + { + "question": "Will the highest temperature in Paris be 19°C on April 18?", + "market_id": "1996306", + "range": [ + 19.0, + 19.0 + ], + "bid": 0.042, + "ask": 0.958, + "price": 0.042, + "spread": 0.916, + "volume": 6655.0 + }, + { + "question": "Will the highest temperature in Paris be 20°C on April 18?", + "market_id": "1996307", + "range": [ + 20.0, + 20.0 + ], + "bid": 0.375, + "ask": 0.625, + "price": 0.375, + "spread": 0.25, + "volume": 5475.0 + }, + { + "question": "Will the highest temperature in Paris be 21°C on April 18?", + "market_id": "1996308", + "range": [ + 21.0, + 21.0 + ], + "bid": 0.275, + "ask": 0.725, + "price": 0.275, + "spread": 0.45, + "volume": 7595.0 + }, + { + "question": "Will the highest temperature in Paris be 22°C on April 18?", + "market_id": "1996309", + "range": [ + 22.0, + 22.0 + ], + "bid": 0.224, + "ask": 0.776, + "price": 0.224, + "spread": 0.552, + "volume": 12376.0 + }, + { + "question": "Will the highest temperature in Paris be 23°C or higher on April 18?", + "market_id": "1996310", + "range": [ + 23.0, + 999.0 + ], + "bid": 0.017, + "ask": 0.983, + "price": 0.017, + "spread": 0.966, + "volume": 17591.0 + } + ], + "created_at": "2026-04-18T06:34:03.872301+00:00" +} \ No newline at end of file diff --git a/data/markets/paris_2026-04-19.json b/data/markets/paris_2026-04-19.json new file mode 100644 index 0000000..d81301e --- /dev/null +++ b/data/markets/paris_2026-04-19.json @@ -0,0 +1,179 @@ +{ + "city": "paris", + "city_name": "Paris", + "date": "2026-04-19", + "unit": "C", + "station": "LFPG", + "event_end_date": "2026-04-19T12:00:00Z", + "hours_at_discovery": 29.4, + "status": "open", + "position": null, + "actual_temp": null, + "resolved_outcome": null, + "pnl": null, + "forecast_snapshots": [ + { + "ts": "2026-04-18T06:34:01.592793+00:00", + "horizon": "D+1", + "hours_left": 29.4, + "ecmwf": 16.0, + "hrrr": null, + "metar": null, + "best": 16.0, + "best_source": "ecmwf" + } + ], + "market_snapshots": [ + { + "ts": "2026-04-18T06:34:01.592793+00:00", + "top_bucket": "17.0-17.0C", + "top_price": 0.335 + } + ], + "all_outcomes": [ + { + "question": "Will the highest temperature in Paris be 13°C or below on April 19?", + "market_id": "2003645", + "range": [ + -999.0, + 13.0 + ], + "bid": 0.0025, + "ask": 0.9975, + "price": 0.0025, + "spread": 0.995, + "volume": 3186.0 + }, + { + "question": "Will the highest temperature in Paris be 14°C on April 19?", + "market_id": "2003646", + "range": [ + 14.0, + 14.0 + ], + "bid": 0.0035, + "ask": 0.9965, + "price": 0.0035, + "spread": 0.993, + "volume": 3122.0 + }, + { + "question": "Will the highest temperature in Paris be 15°C on April 19?", + "market_id": "2003647", + "range": [ + 15.0, + 15.0 + ], + "bid": 0.0105, + "ask": 0.9895, + "price": 0.0105, + "spread": 0.979, + "volume": 2180.0 + }, + { + "question": "Will the highest temperature in Paris be 16°C on April 19?", + "market_id": "2003648", + "range": [ + 16.0, + 16.0 + ], + "bid": 0.155, + "ask": 0.845, + "price": 0.155, + "spread": 0.69, + "volume": 1330.0 + }, + { + "question": "Will the highest temperature in Paris be 17°C on April 19?", + "market_id": "2003649", + "range": [ + 17.0, + 17.0 + ], + "bid": 0.335, + "ask": 0.665, + "price": 0.335, + "spread": 0.33, + "volume": 871.0 + }, + { + "question": "Will the highest temperature in Paris be 18°C on April 19?", + "market_id": "2003650", + "range": [ + 18.0, + 18.0 + ], + "bid": 0.325, + "ask": 0.675, + "price": 0.325, + "spread": 0.35, + "volume": 1033.0 + }, + { + "question": "Will the highest temperature in Paris be 19°C on April 19?", + "market_id": "2003651", + "range": [ + 19.0, + 19.0 + ], + "bid": 0.15, + "ask": 0.85, + "price": 0.15, + "spread": 0.7, + "volume": 1525.0 + }, + { + "question": "Will the highest temperature in Paris be 20°C on April 19?", + "market_id": "2003652", + "range": [ + 20.0, + 20.0 + ], + "bid": 0.0295, + "ask": 0.9705, + "price": 0.0295, + "spread": 0.941, + "volume": 1430.0 + }, + { + "question": "Will the highest temperature in Paris be 21°C on April 19?", + "market_id": "2003653", + "range": [ + 21.0, + 21.0 + ], + "bid": 0.01, + "ask": 0.99, + "price": 0.01, + "spread": 0.98, + "volume": 2077.0 + }, + { + "question": "Will the highest temperature in Paris be 22°C on April 19?", + "market_id": "2003654", + "range": [ + 22.0, + 22.0 + ], + "bid": 0.007, + "ask": 0.993, + "price": 0.007, + "spread": 0.986, + "volume": 2212.0 + }, + { + "question": "Will the highest temperature in Paris be 23°C or higher on April 19?", + "market_id": "2003655", + "range": [ + 23.0, + 999.0 + ], + "bid": 0.0025, + "ask": 0.9975, + "price": 0.0025, + "spread": 0.995, + "volume": 1824.0 + } + ], + "created_at": "2026-04-18T06:34:04.267164+00:00" +} \ No newline at end of file diff --git a/data/markets/paris_2026-04-20.json b/data/markets/paris_2026-04-20.json new file mode 100644 index 0000000..c138a1e --- /dev/null +++ b/data/markets/paris_2026-04-20.json @@ -0,0 +1,179 @@ +{ + "city": "paris", + "city_name": "Paris", + "date": "2026-04-20", + "unit": "C", + "station": "LFPG", + "event_end_date": "2026-04-20T12:00:00Z", + "hours_at_discovery": 53.4, + "status": "open", + "position": null, + "actual_temp": null, + "resolved_outcome": null, + "pnl": null, + "forecast_snapshots": [ + { + "ts": "2026-04-18T06:34:01.592793+00:00", + "horizon": "D+2", + "hours_left": 53.4, + "ecmwf": 14.0, + "hrrr": null, + "metar": null, + "best": 14.0, + "best_source": "ecmwf" + } + ], + "market_snapshots": [ + { + "ts": "2026-04-18T06:34:01.592793+00:00", + "top_bucket": "16.0-16.0C", + "top_price": 0.305 + } + ], + "all_outcomes": [ + { + "question": "Will the highest temperature in Paris be 10°C or below on April 20?", + "market_id": "2011057", + "range": [ + -999.0, + 10.0 + ], + "bid": 0.011, + "ask": 0.989, + "price": 0.011, + "spread": 0.978, + "volume": 326.0 + }, + { + "question": "Will the highest temperature in Paris be 11°C on April 20?", + "market_id": "2011058", + "range": [ + 11.0, + 11.0 + ], + "bid": 0.034, + "ask": 0.966, + "price": 0.034, + "spread": 0.932, + "volume": 290.0 + }, + { + "question": "Will the highest temperature in Paris be 12°C on April 20?", + "market_id": "2011059", + "range": [ + 12.0, + 12.0 + ], + "bid": 0.085, + "ask": 0.915, + "price": 0.085, + "spread": 0.83, + "volume": 55.0 + }, + { + "question": "Will the highest temperature in Paris be 13°C on April 20?", + "market_id": "2011060", + "range": [ + 13.0, + 13.0 + ], + "bid": 0.1, + "ask": 0.9, + "price": 0.1, + "spread": 0.8, + "volume": 67.0 + }, + { + "question": "Will the highest temperature in Paris be 14°C on April 20?", + "market_id": "2011061", + "range": [ + 14.0, + 14.0 + ], + "bid": 0.225, + "ask": 0.775, + "price": 0.225, + "spread": 0.55, + "volume": 54.0 + }, + { + "question": "Will the highest temperature in Paris be 15°C on April 20?", + "market_id": "2011062", + "range": [ + 15.0, + 15.0 + ], + "bid": 0.215, + "ask": 0.785, + "price": 0.215, + "spread": 0.57, + "volume": 24.0 + }, + { + "question": "Will the highest temperature in Paris be 16°C on April 20?", + "market_id": "2011063", + "range": [ + 16.0, + 16.0 + ], + "bid": 0.305, + "ask": 0.695, + "price": 0.305, + "spread": 0.39, + "volume": 34.0 + }, + { + "question": "Will the highest temperature in Paris be 17°C on April 20?", + "market_id": "2011064", + "range": [ + 17.0, + 17.0 + ], + "bid": 0.095, + "ask": 0.905, + "price": 0.095, + "spread": 0.81, + "volume": 56.0 + }, + { + "question": "Will the highest temperature in Paris be 18°C on April 20?", + "market_id": "2011065", + "range": [ + 18.0, + 18.0 + ], + "bid": 0.075, + "ask": 0.925, + "price": 0.075, + "spread": 0.85, + "volume": 82.0 + }, + { + "question": "Will the highest temperature in Paris be 19°C on April 20?", + "market_id": "2011066", + "range": [ + 19.0, + 19.0 + ], + "bid": 0.0295, + "ask": 0.9705, + "price": 0.0295, + "spread": 0.941, + "volume": 182.0 + }, + { + "question": "Will the highest temperature in Paris be 20°C or higher on April 20?", + "market_id": "2011067", + "range": [ + 20.0, + 999.0 + ], + "bid": 0.0215, + "ask": 0.9785, + "price": 0.0215, + "spread": 0.957, + "volume": 145.0 + } + ], + "created_at": "2026-04-18T06:34:04.689830+00:00" +} \ No newline at end of file diff --git a/data/markets/sao-paulo_2026-04-18.json b/data/markets/sao-paulo_2026-04-18.json new file mode 100644 index 0000000..1346ad9 --- /dev/null +++ b/data/markets/sao-paulo_2026-04-18.json @@ -0,0 +1,179 @@ +{ + "city": "sao-paulo", + "city_name": "Sao Paulo", + "date": "2026-04-18", + "unit": "C", + "station": "SBGR", + "event_end_date": "2026-04-18T12:00:00Z", + "hours_at_discovery": 5.4, + "status": "open", + "position": null, + "actual_temp": null, + "resolved_outcome": null, + "pnl": null, + "forecast_snapshots": [ + { + "ts": "2026-04-18T06:34:42.322054+00:00", + "horizon": "D+0", + "hours_left": 5.4, + "ecmwf": 29.4, + "hrrr": null, + "metar": 21.0, + "best": 29.4, + "best_source": "ecmwf" + } + ], + "market_snapshots": [ + { + "ts": "2026-04-18T06:34:42.322054+00:00", + "top_bucket": "29.0-29.0C", + "top_price": 0.385 + } + ], + "all_outcomes": [ + { + "question": "Will the highest temperature in Sao Paulo be 24°C or below on April 18?", + "market_id": "1996311", + "range": [ + -999.0, + 24.0 + ], + "bid": 0.0005, + "ask": 0.9995, + "price": 0.0005, + "spread": 0.999, + "volume": 2203.0 + }, + { + "question": "Will the highest temperature in Sao Paulo be 25°C on April 18?", + "market_id": "1996312", + "range": [ + 25.0, + 25.0 + ], + "bid": 0.004, + "ask": 0.996, + "price": 0.004, + "spread": 0.992, + "volume": 2005.0 + }, + { + "question": "Will the highest temperature in Sao Paulo be 26°C on April 18?", + "market_id": "1996313", + "range": [ + 26.0, + 26.0 + ], + "bid": 0.014, + "ask": 0.986, + "price": 0.014, + "spread": 0.972, + "volume": 2804.0 + }, + { + "question": "Will the highest temperature in Sao Paulo be 27°C on April 18?", + "market_id": "1996314", + "range": [ + 27.0, + 27.0 + ], + "bid": 0.085, + "ask": 0.915, + "price": 0.085, + "spread": 0.83, + "volume": 2693.0 + }, + { + "question": "Will the highest temperature in Sao Paulo be 28°C on April 18?", + "market_id": "1996315", + "range": [ + 28.0, + 28.0 + ], + "bid": 0.29, + "ask": 0.71, + "price": 0.29, + "spread": 0.42, + "volume": 1843.0 + }, + { + "question": "Will the highest temperature in Sao Paulo be 29°C on April 18?", + "market_id": "1996316", + "range": [ + 29.0, + 29.0 + ], + "bid": 0.385, + "ask": 0.615, + "price": 0.385, + "spread": 0.23, + "volume": 1848.0 + }, + { + "question": "Will the highest temperature in Sao Paulo be 30°C on April 18?", + "market_id": "1996317", + "range": [ + 30.0, + 30.0 + ], + "bid": 0.165, + "ask": 0.835, + "price": 0.165, + "spread": 0.67, + "volume": 2784.0 + }, + { + "question": "Will the highest temperature in Sao Paulo be 31°C on April 18?", + "market_id": "1996318", + "range": [ + 31.0, + 31.0 + ], + "bid": 0.0465, + "ask": 0.9535, + "price": 0.0465, + "spread": 0.907, + "volume": 2968.0 + }, + { + "question": "Will the highest temperature in Sao Paulo be 32°C on April 18?", + "market_id": "1996319", + "range": [ + 32.0, + 32.0 + ], + "bid": 0.007, + "ask": 0.993, + "price": 0.007, + "spread": 0.986, + "volume": 1552.0 + }, + { + "question": "Will the highest temperature in Sao Paulo be 33°C on April 18?", + "market_id": "1996320", + "range": [ + 33.0, + 33.0 + ], + "bid": 0.003, + "ask": 0.997, + "price": 0.003, + "spread": 0.994, + "volume": 1022.0 + }, + { + "question": "Will the highest temperature in Sao Paulo be 34°C or higher on April 18?", + "market_id": "1996321", + "range": [ + 34.0, + 999.0 + ], + "bid": 0.0005, + "ask": 0.9995, + "price": 0.0005, + "spread": 0.999, + "volume": 1100.0 + } + ], + "created_at": "2026-04-18T06:34:44.398380+00:00" +} \ No newline at end of file diff --git a/data/markets/sao-paulo_2026-04-19.json b/data/markets/sao-paulo_2026-04-19.json new file mode 100644 index 0000000..6440dc7 --- /dev/null +++ b/data/markets/sao-paulo_2026-04-19.json @@ -0,0 +1,179 @@ +{ + "city": "sao-paulo", + "city_name": "Sao Paulo", + "date": "2026-04-19", + "unit": "C", + "station": "SBGR", + "event_end_date": "2026-04-19T12:00:00Z", + "hours_at_discovery": 29.4, + "status": "open", + "position": null, + "actual_temp": null, + "resolved_outcome": null, + "pnl": null, + "forecast_snapshots": [ + { + "ts": "2026-04-18T06:34:42.322054+00:00", + "horizon": "D+1", + "hours_left": 29.4, + "ecmwf": 26.7, + "hrrr": null, + "metar": null, + "best": 26.7, + "best_source": "ecmwf" + } + ], + "market_snapshots": [ + { + "ts": "2026-04-18T06:34:42.322054+00:00", + "top_bucket": "27.0-27.0C", + "top_price": 0.38 + } + ], + "all_outcomes": [ + { + "question": "Will the highest temperature in Sao Paulo be 23°C or below on April 19?", + "market_id": "2003656", + "range": [ + -999.0, + 23.0 + ], + "bid": 0.004, + "ask": 0.996, + "price": 0.004, + "spread": 0.992, + "volume": 1642.0 + }, + { + "question": "Will the highest temperature in Sao Paulo be 24°C on April 19?", + "market_id": "2003657", + "range": [ + 24.0, + 24.0 + ], + "bid": 0.004, + "ask": 0.996, + "price": 0.004, + "spread": 0.992, + "volume": 2181.0 + }, + { + "question": "Will the highest temperature in Sao Paulo be 25°C on April 19?", + "market_id": "2003658", + "range": [ + 25.0, + 25.0 + ], + "bid": 0.0095, + "ask": 0.9905, + "price": 0.0095, + "spread": 0.981, + "volume": 940.0 + }, + { + "question": "Will the highest temperature in Sao Paulo be 26°C on April 19?", + "market_id": "2003659", + "range": [ + 26.0, + 26.0 + ], + "bid": 0.115, + "ask": 0.885, + "price": 0.115, + "spread": 0.77, + "volume": 375.0 + }, + { + "question": "Will the highest temperature in Sao Paulo be 27°C on April 19?", + "market_id": "2003660", + "range": [ + 27.0, + 27.0 + ], + "bid": 0.38, + "ask": 0.62, + "price": 0.38, + "spread": 0.24, + "volume": 736.0 + }, + { + "question": "Will the highest temperature in Sao Paulo be 28°C on April 19?", + "market_id": "2003661", + "range": [ + 28.0, + 28.0 + ], + "bid": 0.33, + "ask": 0.67, + "price": 0.33, + "spread": 0.34, + "volume": 939.0 + }, + { + "question": "Will the highest temperature in Sao Paulo be 29°C on April 19?", + "market_id": "2003662", + "range": [ + 29.0, + 29.0 + ], + "bid": 0.19, + "ask": 0.81, + "price": 0.19, + "spread": 0.62, + "volume": 1040.0 + }, + { + "question": "Will the highest temperature in Sao Paulo be 30°C on April 19?", + "market_id": "2003663", + "range": [ + 30.0, + 30.0 + ], + "bid": 0.0255, + "ask": 0.9745, + "price": 0.0255, + "spread": 0.949, + "volume": 485.0 + }, + { + "question": "Will the highest temperature in Sao Paulo be 31°C on April 19?", + "market_id": "2003664", + "range": [ + 31.0, + 31.0 + ], + "bid": 0.016, + "ask": 0.984, + "price": 0.016, + "spread": 0.968, + "volume": 499.0 + }, + { + "question": "Will the highest temperature in Sao Paulo be 32°C on April 19?", + "market_id": "2003665", + "range": [ + 32.0, + 32.0 + ], + "bid": 0.0055, + "ask": 0.9945, + "price": 0.0055, + "spread": 0.989, + "volume": 510.0 + }, + { + "question": "Will the highest temperature in Sao Paulo be 33°C or higher on April 19?", + "market_id": "2003666", + "range": [ + 33.0, + 999.0 + ], + "bid": 0.006, + "ask": 0.994, + "price": 0.006, + "spread": 0.988, + "volume": 546.0 + } + ], + "created_at": "2026-04-18T06:34:44.840611+00:00" +} \ No newline at end of file diff --git a/data/markets/sao-paulo_2026-04-20.json b/data/markets/sao-paulo_2026-04-20.json new file mode 100644 index 0000000..4213107 --- /dev/null +++ b/data/markets/sao-paulo_2026-04-20.json @@ -0,0 +1,179 @@ +{ + "city": "sao-paulo", + "city_name": "Sao Paulo", + "date": "2026-04-20", + "unit": "C", + "station": "SBGR", + "event_end_date": "2026-04-20T12:00:00Z", + "hours_at_discovery": 53.4, + "status": "open", + "position": null, + "actual_temp": null, + "resolved_outcome": null, + "pnl": null, + "forecast_snapshots": [ + { + "ts": "2026-04-18T06:34:42.322054+00:00", + "horizon": "D+2", + "hours_left": 53.4, + "ecmwf": 26.0, + "hrrr": null, + "metar": null, + "best": 26.0, + "best_source": "ecmwf" + } + ], + "market_snapshots": [ + { + "ts": "2026-04-18T06:34:42.322054+00:00", + "top_bucket": "27.0-27.0C", + "top_price": 0.35 + } + ], + "all_outcomes": [ + { + "question": "Will the highest temperature in Sao Paulo be 22°C or below on April 20?", + "market_id": "2011068", + "range": [ + -999.0, + 22.0 + ], + "bid": 0.0075, + "ask": 0.9925, + "price": 0.0075, + "spread": 0.985, + "volume": 148.0 + }, + { + "question": "Will the highest temperature in Sao Paulo be 23°C on April 20?", + "market_id": "2011069", + "range": [ + 23.0, + 23.0 + ], + "bid": 0.03, + "ask": 0.97, + "price": 0.03, + "spread": 0.94, + "volume": 134.0 + }, + { + "question": "Will the highest temperature in Sao Paulo be 24°C on April 20?", + "market_id": "2011070", + "range": [ + 24.0, + 24.0 + ], + "bid": 0.055, + "ask": 0.945, + "price": 0.055, + "spread": 0.89, + "volume": 45.0 + }, + { + "question": "Will the highest temperature in Sao Paulo be 25°C on April 20?", + "market_id": "2011071", + "range": [ + 25.0, + 25.0 + ], + "bid": 0.08, + "ask": 0.92, + "price": 0.08, + "spread": 0.84, + "volume": 13.0 + }, + { + "question": "Will the highest temperature in Sao Paulo be 26°C on April 20?", + "market_id": "2011072", + "range": [ + 26.0, + 26.0 + ], + "bid": 0.21, + "ask": 0.79, + "price": 0.21, + "spread": 0.58, + "volume": 50.0 + }, + { + "question": "Will the highest temperature in Sao Paulo be 27°C on April 20?", + "market_id": "2011073", + "range": [ + 27.0, + 27.0 + ], + "bid": 0.35, + "ask": 0.65, + "price": 0.35, + "spread": 0.3, + "volume": 58.0 + }, + { + "question": "Will the highest temperature in Sao Paulo be 28°C on April 20?", + "market_id": "2011074", + "range": [ + 28.0, + 28.0 + ], + "bid": 0.345, + "ask": 0.655, + "price": 0.345, + "spread": 0.31, + "volume": 34.0 + }, + { + "question": "Will the highest temperature in Sao Paulo be 29°C on April 20?", + "market_id": "2011075", + "range": [ + 29.0, + 29.0 + ], + "bid": 0.265, + "ask": 0.735, + "price": 0.265, + "spread": 0.47, + "volume": 62.0 + }, + { + "question": "Will the highest temperature in Sao Paulo be 30°C on April 20?", + "market_id": "2011076", + "range": [ + 30.0, + 30.0 + ], + "bid": 0.0805, + "ask": 0.9195, + "price": 0.0805, + "spread": 0.839, + "volume": 9.0 + }, + { + "question": "Will the highest temperature in Sao Paulo be 31°C on April 20?", + "market_id": "2011077", + "range": [ + 31.0, + 31.0 + ], + "bid": 0.035, + "ask": 0.965, + "price": 0.035, + "spread": 0.93, + "volume": 18.0 + }, + { + "question": "Will the highest temperature in Sao Paulo be 32°C or higher on April 20?", + "market_id": "2011078", + "range": [ + 32.0, + 999.0 + ], + "bid": 0.012, + "ask": 0.988, + "price": 0.012, + "spread": 0.976, + "volume": 34.0 + } + ], + "created_at": "2026-04-18T06:34:45.281476+00:00" +} \ No newline at end of file diff --git a/data/markets/seattle_2026-04-18.json b/data/markets/seattle_2026-04-18.json new file mode 100644 index 0000000..4f42fb6 --- /dev/null +++ b/data/markets/seattle_2026-04-18.json @@ -0,0 +1,179 @@ +{ + "city": "seattle", + "city_name": "Seattle", + "date": "2026-04-18", + "unit": "F", + "station": "KSEA", + "event_end_date": "2026-04-18T12:00:00Z", + "hours_at_discovery": 5.4, + "status": "open", + "position": null, + "actual_temp": null, + "resolved_outcome": null, + "pnl": null, + "forecast_snapshots": [ + { + "ts": "2026-04-18T06:33:48.396807+00:00", + "horizon": "D+0", + "hours_left": 5.4, + "ecmwf": 66, + "hrrr": 63, + "metar": 49, + "best": 63, + "best_source": "hrrr" + } + ], + "market_snapshots": [ + { + "ts": "2026-04-18T06:33:48.396807+00:00", + "top_bucket": "50.0-999.0F", + "top_price": 0.9965 + } + ], + "all_outcomes": [ + { + "question": "Will the highest temperature in Seattle be 31°F or below on April 18?", + "market_id": "1996355", + "range": [ + -999.0, + 31.0 + ], + "bid": 0.0005, + "ask": 0.9995, + "price": 0.0005, + "spread": 0.999, + "volume": 5250.0 + }, + { + "question": "Will the highest temperature in Seattle be between 32-33°F on April 18?", + "market_id": "1996356", + "range": [ + 32.0, + 33.0 + ], + "bid": 0.0005, + "ask": 0.9995, + "price": 0.0005, + "spread": 0.999, + "volume": 4723.0 + }, + { + "question": "Will the highest temperature in Seattle be between 34-35°F on April 18?", + "market_id": "1996357", + "range": [ + 34.0, + 35.0 + ], + "bid": 0.0005, + "ask": 0.9995, + "price": 0.0005, + "spread": 0.999, + "volume": 4290.0 + }, + { + "question": "Will the highest temperature in Seattle be between 36-37°F on April 18?", + "market_id": "1996358", + "range": [ + 36.0, + 37.0 + ], + "bid": 0.0005, + "ask": 0.9995, + "price": 0.0005, + "spread": 0.999, + "volume": 4782.0 + }, + { + "question": "Will the highest temperature in Seattle be between 38-39°F on April 18?", + "market_id": "1996359", + "range": [ + 38.0, + 39.0 + ], + "bid": 0.0005, + "ask": 0.9995, + "price": 0.0005, + "spread": 0.999, + "volume": 3682.0 + }, + { + "question": "Will the highest temperature in Seattle be between 40-41°F on April 18?", + "market_id": "1996360", + "range": [ + 40.0, + 41.0 + ], + "bid": 0.0005, + "ask": 0.9995, + "price": 0.0005, + "spread": 0.999, + "volume": 4903.0 + }, + { + "question": "Will the highest temperature in Seattle be between 42-43°F on April 18?", + "market_id": "1996361", + "range": [ + 42.0, + 43.0 + ], + "bid": 0.0005, + "ask": 0.9995, + "price": 0.0005, + "spread": 0.999, + "volume": 5321.0 + }, + { + "question": "Will the highest temperature in Seattle be between 44-45°F on April 18?", + "market_id": "1996362", + "range": [ + 44.0, + 45.0 + ], + "bid": 0.0005, + "ask": 0.9995, + "price": 0.0005, + "spread": 0.999, + "volume": 7783.0 + }, + { + "question": "Will the highest temperature in Seattle be between 46-47°F on April 18?", + "market_id": "1996363", + "range": [ + 46.0, + 47.0 + ], + "bid": 0.0005, + "ask": 0.9995, + "price": 0.0005, + "spread": 0.999, + "volume": 4328.0 + }, + { + "question": "Will the highest temperature in Seattle be between 48-49°F on April 18?", + "market_id": "1996364", + "range": [ + 48.0, + 49.0 + ], + "bid": 0.003, + "ask": 0.997, + "price": 0.003, + "spread": 0.994, + "volume": 7681.0 + }, + { + "question": "Will the highest temperature in Seattle be 50°F or higher on April 18?", + "market_id": "1996365", + "range": [ + 50.0, + 999.0 + ], + "bid": 0.9965, + "ask": 0.0035, + "price": 0.9965, + "spread": -0.993, + "volume": 18761.0 + } + ], + "created_at": "2026-04-18T06:33:51.505398+00:00" +} \ No newline at end of file diff --git a/data/markets/seattle_2026-04-19.json b/data/markets/seattle_2026-04-19.json new file mode 100644 index 0000000..94a038c --- /dev/null +++ b/data/markets/seattle_2026-04-19.json @@ -0,0 +1,179 @@ +{ + "city": "seattle", + "city_name": "Seattle", + "date": "2026-04-19", + "unit": "F", + "station": "KSEA", + "event_end_date": "2026-04-19T12:00:00Z", + "hours_at_discovery": 29.4, + "status": "open", + "position": null, + "actual_temp": null, + "resolved_outcome": null, + "pnl": null, + "forecast_snapshots": [ + { + "ts": "2026-04-18T06:33:48.396807+00:00", + "horizon": "D+1", + "hours_left": 29.4, + "ecmwf": 67, + "hrrr": 68, + "metar": null, + "best": 68, + "best_source": "hrrr" + } + ], + "market_snapshots": [ + { + "ts": "2026-04-18T06:33:48.396807+00:00", + "top_bucket": "62.0-999.0F", + "top_price": 0.983 + } + ], + "all_outcomes": [ + { + "question": "Will the highest temperature in Seattle be 43°F or below on April 19?", + "market_id": "2003700", + "range": [ + -999.0, + 43.0 + ], + "bid": 0.0005, + "ask": 0.9995, + "price": 0.0005, + "spread": 0.999, + "volume": 1637.0 + }, + { + "question": "Will the highest temperature in Seattle be between 44-45°F on April 19?", + "market_id": "2003701", + "range": [ + 44.0, + 45.0 + ], + "bid": 0.0005, + "ask": 0.9995, + "price": 0.0005, + "spread": 0.999, + "volume": 1274.0 + }, + { + "question": "Will the highest temperature in Seattle be between 46-47°F on April 19?", + "market_id": "2003702", + "range": [ + 46.0, + 47.0 + ], + "bid": 0.0015, + "ask": 0.9985, + "price": 0.0015, + "spread": 0.997, + "volume": 1743.0 + }, + { + "question": "Will the highest temperature in Seattle be between 48-49°F on April 19?", + "market_id": "2003703", + "range": [ + 48.0, + 49.0 + ], + "bid": 0.001, + "ask": 0.999, + "price": 0.001, + "spread": 0.998, + "volume": 1194.0 + }, + { + "question": "Will the highest temperature in Seattle be between 50-51°F on April 19?", + "market_id": "2003704", + "range": [ + 50.0, + 51.0 + ], + "bid": 0.0005, + "ask": 0.9995, + "price": 0.0005, + "spread": 0.999, + "volume": 1855.0 + }, + { + "question": "Will the highest temperature in Seattle be between 52-53°F on April 19?", + "market_id": "2003705", + "range": [ + 52.0, + 53.0 + ], + "bid": 0.0015, + "ask": 0.9985, + "price": 0.0015, + "spread": 0.997, + "volume": 1141.0 + }, + { + "question": "Will the highest temperature in Seattle be between 54-55°F on April 19?", + "market_id": "2003706", + "range": [ + 54.0, + 55.0 + ], + "bid": 0.004, + "ask": 0.996, + "price": 0.004, + "spread": 0.992, + "volume": 2970.0 + }, + { + "question": "Will the highest temperature in Seattle be between 56-57°F on April 19?", + "market_id": "2003707", + "range": [ + 56.0, + 57.0 + ], + "bid": 0.0035, + "ask": 0.9965, + "price": 0.0035, + "spread": 0.993, + "volume": 936.0 + }, + { + "question": "Will the highest temperature in Seattle be between 58-59°F on April 19?", + "market_id": "2003708", + "range": [ + 58.0, + 59.0 + ], + "bid": 0.006, + "ask": 0.994, + "price": 0.006, + "spread": 0.988, + "volume": 977.0 + }, + { + "question": "Will the highest temperature in Seattle be between 60-61°F on April 19?", + "market_id": "2003709", + "range": [ + 60.0, + 61.0 + ], + "bid": 0.0045, + "ask": 0.9955, + "price": 0.0045, + "spread": 0.991, + "volume": 1066.0 + }, + { + "question": "Will the highest temperature in Seattle be 62°F or higher on April 19?", + "market_id": "2003710", + "range": [ + 62.0, + 999.0 + ], + "bid": 0.983, + "ask": 0.017, + "price": 0.983, + "spread": -0.966, + "volume": 2219.0 + } + ], + "created_at": "2026-04-18T06:33:51.958281+00:00" +} \ No newline at end of file diff --git a/data/markets/seattle_2026-04-20.json b/data/markets/seattle_2026-04-20.json new file mode 100644 index 0000000..0087523 --- /dev/null +++ b/data/markets/seattle_2026-04-20.json @@ -0,0 +1,179 @@ +{ + "city": "seattle", + "city_name": "Seattle", + "date": "2026-04-20", + "unit": "F", + "station": "KSEA", + "event_end_date": "2026-04-20T12:00:00Z", + "hours_at_discovery": 53.4, + "status": "open", + "position": null, + "actual_temp": null, + "resolved_outcome": null, + "pnl": null, + "forecast_snapshots": [ + { + "ts": "2026-04-18T06:33:48.396807+00:00", + "horizon": "D+2", + "hours_left": 53.4, + "ecmwf": 67, + "hrrr": null, + "metar": null, + "best": 67, + "best_source": "ecmwf" + } + ], + "market_snapshots": [ + { + "ts": "2026-04-18T06:33:48.396807+00:00", + "top_bucket": "62.0-999.0F", + "top_price": 0.955 + } + ], + "all_outcomes": [ + { + "question": "Will the highest temperature in Seattle be 43°F or below on April 20?", + "market_id": "2011112", + "range": [ + -999.0, + 43.0 + ], + "bid": 0.003, + "ask": 0.997, + "price": 0.003, + "spread": 0.994, + "volume": 273.0 + }, + { + "question": "Will the highest temperature in Seattle be between 44-45°F on April 20?", + "market_id": "2011113", + "range": [ + 44.0, + 45.0 + ], + "bid": 0.0085, + "ask": 0.9915, + "price": 0.0085, + "spread": 0.983, + "volume": 323.0 + }, + { + "question": "Will the highest temperature in Seattle be between 46-47°F on April 20?", + "market_id": "2011114", + "range": [ + 46.0, + 47.0 + ], + "bid": 0.009, + "ask": 0.991, + "price": 0.009, + "spread": 0.982, + "volume": 323.0 + }, + { + "question": "Will the highest temperature in Seattle be between 48-49°F on April 20?", + "market_id": "2011115", + "range": [ + 48.0, + 49.0 + ], + "bid": 0.009, + "ask": 0.991, + "price": 0.009, + "spread": 0.982, + "volume": 323.0 + }, + { + "question": "Will the highest temperature in Seattle be between 50-51°F on April 20?", + "market_id": "2011116", + "range": [ + 50.0, + 51.0 + ], + "bid": 0.0105, + "ask": 0.9895, + "price": 0.0105, + "spread": 0.979, + "volume": 294.0 + }, + { + "question": "Will the highest temperature in Seattle be between 52-53°F on April 20?", + "market_id": "2011117", + "range": [ + 52.0, + 53.0 + ], + "bid": 0.015, + "ask": 0.985, + "price": 0.015, + "spread": 0.97, + "volume": 158.0 + }, + { + "question": "Will the highest temperature in Seattle be between 54-55°F on April 20?", + "market_id": "2011118", + "range": [ + 54.0, + 55.0 + ], + "bid": 0.025, + "ask": 0.975, + "price": 0.025, + "spread": 0.95, + "volume": 145.0 + }, + { + "question": "Will the highest temperature in Seattle be between 56-57°F on April 20?", + "market_id": "2011119", + "range": [ + 56.0, + 57.0 + ], + "bid": 0.025, + "ask": 0.975, + "price": 0.025, + "spread": 0.95, + "volume": 170.0 + }, + { + "question": "Will the highest temperature in Seattle be between 58-59°F on April 20?", + "market_id": "2011120", + "range": [ + 58.0, + 59.0 + ], + "bid": 0.06, + "ask": 0.94, + "price": 0.06, + "spread": 0.88, + "volume": 151.0 + }, + { + "question": "Will the highest temperature in Seattle be between 60-61°F on April 20?", + "market_id": "2011121", + "range": [ + 60.0, + 61.0 + ], + "bid": 0.06, + "ask": 0.94, + "price": 0.06, + "spread": 0.88, + "volume": 164.0 + }, + { + "question": "Will the highest temperature in Seattle be 62°F or higher on April 20?", + "market_id": "2011122", + "range": [ + 62.0, + 999.0 + ], + "bid": 0.955, + "ask": 0.045, + "price": 0.955, + "spread": -0.91, + "volume": 319.0 + } + ], + "created_at": "2026-04-18T06:33:52.418626+00:00" +} \ No newline at end of file diff --git a/data/markets/seoul_2026-04-18.json b/data/markets/seoul_2026-04-18.json new file mode 100644 index 0000000..e5b1052 --- /dev/null +++ b/data/markets/seoul_2026-04-18.json @@ -0,0 +1,179 @@ +{ + "city": "seoul", + "city_name": "Seoul", + "date": "2026-04-18", + "unit": "C", + "station": "RKSI", + "event_end_date": "2026-04-18T12:00:00Z", + "hours_at_discovery": 5.4, + "status": "open", + "position": null, + "actual_temp": null, + "resolved_outcome": null, + "pnl": null, + "forecast_snapshots": [ + { + "ts": "2026-04-18T06:34:19.250565+00:00", + "horizon": "D+0", + "hours_left": 5.4, + "ecmwf": 21.0, + "hrrr": null, + "metar": 20.0, + "best": 21.0, + "best_source": "ecmwf" + } + ], + "market_snapshots": [ + { + "ts": "2026-04-18T06:34:19.250565+00:00", + "top_bucket": "21.0-999.0C", + "top_price": 0.9995 + } + ], + "all_outcomes": [ + { + "question": "Will the highest temperature in Seoul be 11°C or below on April 18?", + "market_id": "1996333", + "range": [ + -999.0, + 11.0 + ], + "bid": 0.0, + "ask": 1.0, + "price": 0.0, + "spread": 1.0, + "volume": 16832.0 + }, + { + "question": "Will the highest temperature in Seoul be 12°C on April 18?", + "market_id": "1996334", + "range": [ + 12.0, + 12.0 + ], + "bid": 0.0, + "ask": 1.0, + "price": 0.0, + "spread": 1.0, + "volume": 14872.0 + }, + { + "question": "Will the highest temperature in Seoul be 13°C on April 18?", + "market_id": "1996335", + "range": [ + 13.0, + 13.0 + ], + "bid": 0.0, + "ask": 1.0, + "price": 0.0, + "spread": 1.0, + "volume": 10566.0 + }, + { + "question": "Will the highest temperature in Seoul be 14°C on April 18?", + "market_id": "1996336", + "range": [ + 14.0, + 14.0 + ], + "bid": 0.0, + "ask": 1.0, + "price": 0.0, + "spread": 1.0, + "volume": 13680.0 + }, + { + "question": "Will the highest temperature in Seoul be 15°C on April 18?", + "market_id": "1996337", + "range": [ + 15.0, + 15.0 + ], + "bid": 0.0, + "ask": 1.0, + "price": 0.0, + "spread": 1.0, + "volume": 12482.0 + }, + { + "question": "Will the highest temperature in Seoul be 16°C on April 18?", + "market_id": "1996338", + "range": [ + 16.0, + 16.0 + ], + "bid": 0.0, + "ask": 1.0, + "price": 0.0, + "spread": 1.0, + "volume": 42725.0 + }, + { + "question": "Will the highest temperature in Seoul be 17°C on April 18?", + "market_id": "1996339", + "range": [ + 17.0, + 17.0 + ], + "bid": 0.0, + "ask": 1.0, + "price": 0.0, + "spread": 1.0, + "volume": 34710.0 + }, + { + "question": "Will the highest temperature in Seoul be 18°C on April 18?", + "market_id": "1996340", + "range": [ + 18.0, + 18.0 + ], + "bid": 0.0, + "ask": 1.0, + "price": 0.0, + "spread": 1.0, + "volume": 51547.0 + }, + { + "question": "Will the highest temperature in Seoul be 19°C on April 18?", + "market_id": "1996341", + "range": [ + 19.0, + 19.0 + ], + "bid": 0.0, + "ask": 1.0, + "price": 0.0, + "spread": 1.0, + "volume": 46607.0 + }, + { + "question": "Will the highest temperature in Seoul be 20°C on April 18?", + "market_id": "1996342", + "range": [ + 20.0, + 20.0 + ], + "bid": 0.0005, + "ask": 0.9995, + "price": 0.0005, + "spread": 0.999, + "volume": 79529.0 + }, + { + "question": "Will the highest temperature in Seoul be 21°C or higher on April 18?", + "market_id": "1996343", + "range": [ + 21.0, + 999.0 + ], + "bid": 0.9995, + "ask": 0.0005, + "price": 0.9995, + "spread": -0.999, + "volume": 69931.0 + } + ], + "created_at": "2026-04-18T06:34:21.090038+00:00" +} \ No newline at end of file diff --git a/data/markets/seoul_2026-04-19.json b/data/markets/seoul_2026-04-19.json new file mode 100644 index 0000000..b307af8 --- /dev/null +++ b/data/markets/seoul_2026-04-19.json @@ -0,0 +1,179 @@ +{ + "city": "seoul", + "city_name": "Seoul", + "date": "2026-04-19", + "unit": "C", + "station": "RKSI", + "event_end_date": "2026-04-19T12:00:00Z", + "hours_at_discovery": 29.4, + "status": "open", + "position": null, + "actual_temp": null, + "resolved_outcome": null, + "pnl": null, + "forecast_snapshots": [ + { + "ts": "2026-04-18T06:34:19.250565+00:00", + "horizon": "D+1", + "hours_left": 29.4, + "ecmwf": 22.7, + "hrrr": null, + "metar": null, + "best": 22.7, + "best_source": "ecmwf" + } + ], + "market_snapshots": [ + { + "ts": "2026-04-18T06:34:19.250565+00:00", + "top_bucket": "24.0-999.0C", + "top_price": 0.53 + } + ], + "all_outcomes": [ + { + "question": "Will the highest temperature in Seoul be 14°C or below on April 19?", + "market_id": "2003678", + "range": [ + -999.0, + 14.0 + ], + "bid": 0.0015, + "ask": 0.9985, + "price": 0.0015, + "spread": 0.997, + "volume": 11372.0 + }, + { + "question": "Will the highest temperature in Seoul be 15°C on April 19?", + "market_id": "2003679", + "range": [ + 15.0, + 15.0 + ], + "bid": 0.0015, + "ask": 0.9985, + "price": 0.0015, + "spread": 0.997, + "volume": 7306.0 + }, + { + "question": "Will the highest temperature in Seoul be 16°C on April 19?", + "market_id": "2003680", + "range": [ + 16.0, + 16.0 + ], + "bid": 0.0015, + "ask": 0.9985, + "price": 0.0015, + "spread": 0.997, + "volume": 7514.0 + }, + { + "question": "Will the highest temperature in Seoul be 17°C on April 19?", + "market_id": "2003681", + "range": [ + 17.0, + 17.0 + ], + "bid": 0.0055, + "ask": 0.9945, + "price": 0.0055, + "spread": 0.989, + "volume": 5657.0 + }, + { + "question": "Will the highest temperature in Seoul be 18°C on April 19?", + "market_id": "2003682", + "range": [ + 18.0, + 18.0 + ], + "bid": 0.0045, + "ask": 0.9955, + "price": 0.0045, + "spread": 0.991, + "volume": 7145.0 + }, + { + "question": "Will the highest temperature in Seoul be 19°C on April 19?", + "market_id": "2003683", + "range": [ + 19.0, + 19.0 + ], + "bid": 0.0185, + "ask": 0.9815, + "price": 0.0185, + "spread": 0.963, + "volume": 4440.0 + }, + { + "question": "Will the highest temperature in Seoul be 20°C on April 19?", + "market_id": "2003684", + "range": [ + 20.0, + 20.0 + ], + "bid": 0.0435, + "ask": 0.9565, + "price": 0.0435, + "spread": 0.913, + "volume": 3948.0 + }, + { + "question": "Will the highest temperature in Seoul be 21°C on April 19?", + "market_id": "2003685", + "range": [ + 21.0, + 21.0 + ], + "bid": 0.09, + "ask": 0.91, + "price": 0.09, + "spread": 0.82, + "volume": 4304.0 + }, + { + "question": "Will the highest temperature in Seoul be 22°C on April 19?", + "market_id": "2003686", + "range": [ + 22.0, + 22.0 + ], + "bid": 0.19, + "ask": 0.81, + "price": 0.19, + "spread": 0.62, + "volume": 2731.0 + }, + { + "question": "Will the highest temperature in Seoul be 23°C on April 19?", + "market_id": "2003687", + "range": [ + 23.0, + 23.0 + ], + "bid": 0.17, + "ask": 0.83, + "price": 0.17, + "spread": 0.66, + "volume": 3762.0 + }, + { + "question": "Will the highest temperature in Seoul be 24°C or higher on April 19?", + "market_id": "2003688", + "range": [ + 24.0, + 999.0 + ], + "bid": 0.53, + "ask": 0.47, + "price": 0.53, + "spread": -0.06, + "volume": 5450.0 + } + ], + "created_at": "2026-04-18T06:34:21.584046+00:00" +} \ No newline at end of file diff --git a/data/markets/seoul_2026-04-20.json b/data/markets/seoul_2026-04-20.json new file mode 100644 index 0000000..a697840 --- /dev/null +++ b/data/markets/seoul_2026-04-20.json @@ -0,0 +1,179 @@ +{ + "city": "seoul", + "city_name": "Seoul", + "date": "2026-04-20", + "unit": "C", + "station": "RKSI", + "event_end_date": "2026-04-20T12:00:00Z", + "hours_at_discovery": 53.4, + "status": "open", + "position": null, + "actual_temp": null, + "resolved_outcome": null, + "pnl": null, + "forecast_snapshots": [ + { + "ts": "2026-04-18T06:34:19.250565+00:00", + "horizon": "D+2", + "hours_left": 53.4, + "ecmwf": 16.6, + "hrrr": null, + "metar": null, + "best": 16.6, + "best_source": "ecmwf" + } + ], + "market_snapshots": [ + { + "ts": "2026-04-18T06:34:19.250565+00:00", + "top_bucket": "17.0-999.0C", + "top_price": 0.455 + } + ], + "all_outcomes": [ + { + "question": "Will the highest temperature in Seoul be 7°C or below on April 20?", + "market_id": "2011090", + "range": [ + -999.0, + 7.0 + ], + "bid": 0.0045, + "ask": 0.9955, + "price": 0.0045, + "spread": 0.991, + "volume": 190.0 + }, + { + "question": "Will the highest temperature in Seoul be 8°C on April 20?", + "market_id": "2011091", + "range": [ + 8.0, + 8.0 + ], + "bid": 0.008, + "ask": 0.992, + "price": 0.008, + "spread": 0.984, + "volume": 190.0 + }, + { + "question": "Will the highest temperature in Seoul be 9°C on April 20?", + "market_id": "2011092", + "range": [ + 9.0, + 9.0 + ], + "bid": 0.027, + "ask": 0.973, + "price": 0.027, + "spread": 0.946, + "volume": 280.0 + }, + { + "question": "Will the highest temperature in Seoul be 10°C on April 20?", + "market_id": "2011093", + "range": [ + 10.0, + 10.0 + ], + "bid": 0.035, + "ask": 0.965, + "price": 0.035, + "spread": 0.93, + "volume": 100.0 + }, + { + "question": "Will the highest temperature in Seoul be 11°C on April 20?", + "market_id": "2011094", + "range": [ + 11.0, + 11.0 + ], + "bid": 0.035, + "ask": 0.965, + "price": 0.035, + "spread": 0.93, + "volume": 0.0 + }, + { + "question": "Will the highest temperature in Seoul be 12°C on April 20?", + "market_id": "2011095", + "range": [ + 12.0, + 12.0 + ], + "bid": 0.04, + "ask": 0.96, + "price": 0.04, + "spread": 0.92, + "volume": 227.0 + }, + { + "question": "Will the highest temperature in Seoul be 13°C on April 20?", + "market_id": "2011096", + "range": [ + 13.0, + 13.0 + ], + "bid": 0.06, + "ask": 0.94, + "price": 0.06, + "spread": 0.88, + "volume": 0.0 + }, + { + "question": "Will the highest temperature in Seoul be 14°C on April 20?", + "market_id": "2011097", + "range": [ + 14.0, + 14.0 + ], + "bid": 0.18, + "ask": 0.82, + "price": 0.18, + "spread": 0.64, + "volume": 9.0 + }, + { + "question": "Will the highest temperature in Seoul be 15°C on April 20?", + "market_id": "2011098", + "range": [ + 15.0, + 15.0 + ], + "bid": 0.16, + "ask": 0.84, + "price": 0.16, + "spread": 0.68, + "volume": 105.0 + }, + { + "question": "Will the highest temperature in Seoul be 16°C on April 20?", + "market_id": "2011099", + "range": [ + 16.0, + 16.0 + ], + "bid": 0.31, + "ask": 0.69, + "price": 0.31, + "spread": 0.38, + "volume": 24.0 + }, + { + "question": "Will the highest temperature in Seoul be 17°C or higher on April 20?", + "market_id": "2011100", + "range": [ + 17.0, + 999.0 + ], + "bid": 0.455, + "ask": 0.545, + "price": 0.455, + "spread": 0.09, + "volume": 163.0 + } + ], + "created_at": "2026-04-18T06:34:22.019418+00:00" +} \ No newline at end of file diff --git a/data/markets/shanghai_2026-04-18.json b/data/markets/shanghai_2026-04-18.json new file mode 100644 index 0000000..78daa18 --- /dev/null +++ b/data/markets/shanghai_2026-04-18.json @@ -0,0 +1,179 @@ +{ + "city": "shanghai", + "city_name": "Shanghai", + "date": "2026-04-18", + "unit": "C", + "station": "ZSPD", + "event_end_date": "2026-04-18T12:00:00Z", + "hours_at_discovery": 5.4, + "status": "open", + "position": null, + "actual_temp": null, + "resolved_outcome": null, + "pnl": null, + "forecast_snapshots": [ + { + "ts": "2026-04-18T06:34:25.740032+00:00", + "horizon": "D+0", + "hours_left": 5.4, + "ecmwf": 19.3, + "hrrr": null, + "metar": 21.0, + "best": 19.3, + "best_source": "ecmwf" + } + ], + "market_snapshots": [ + { + "ts": "2026-04-18T06:34:25.740032+00:00", + "top_bucket": "21.0-21.0C", + "top_price": 0.962 + } + ], + "all_outcomes": [ + { + "question": "Will the highest temperature in Shanghai be 15°C or below on April 18?", + "market_id": "1996499", + "range": [ + -999.0, + 15.0 + ], + "bid": 0.0, + "ask": 1.0, + "price": 0.0, + "spread": 1.0, + "volume": 3641.0 + }, + { + "question": "Will the highest temperature in Shanghai be 16°C on April 18?", + "market_id": "1996500", + "range": [ + 16.0, + 16.0 + ], + "bid": 0.0, + "ask": 1.0, + "price": 0.0, + "spread": 1.0, + "volume": 7946.0 + }, + { + "question": "Will the highest temperature in Shanghai be 17°C on April 18?", + "market_id": "1996501", + "range": [ + 17.0, + 17.0 + ], + "bid": 0.0, + "ask": 1.0, + "price": 0.0, + "spread": 1.0, + "volume": 15455.0 + }, + { + "question": "Will the highest temperature in Shanghai be 18°C on April 18?", + "market_id": "1996502", + "range": [ + 18.0, + 18.0 + ], + "bid": 0.0005, + "ask": 0.9995, + "price": 0.0005, + "spread": 0.999, + "volume": 41638.0 + }, + { + "question": "Will the highest temperature in Shanghai be 19°C on April 18?", + "market_id": "1996503", + "range": [ + 19.0, + 19.0 + ], + "bid": 0.0005, + "ask": 0.9995, + "price": 0.0005, + "spread": 0.999, + "volume": 40107.0 + }, + { + "question": "Will the highest temperature in Shanghai be 20°C on April 18?", + "market_id": "1996504", + "range": [ + 20.0, + 20.0 + ], + "bid": 0.0005, + "ask": 0.9995, + "price": 0.0005, + "spread": 0.999, + "volume": 43862.0 + }, + { + "question": "Will the highest temperature in Shanghai be 21°C on April 18?", + "market_id": "1996505", + "range": [ + 21.0, + 21.0 + ], + "bid": 0.962, + "ask": 0.038, + "price": 0.962, + "spread": -0.924, + "volume": 37647.0 + }, + { + "question": "Will the highest temperature in Shanghai be 22°C on April 18?", + "market_id": "1996506", + "range": [ + 22.0, + 22.0 + ], + "bid": 0.029, + "ask": 0.971, + "price": 0.029, + "spread": 0.942, + "volume": 19985.0 + }, + { + "question": "Will the highest temperature in Shanghai be 23°C on April 18?", + "market_id": "1996507", + "range": [ + 23.0, + 23.0 + ], + "bid": 0.004, + "ask": 0.996, + "price": 0.004, + "spread": 0.992, + "volume": 11870.0 + }, + { + "question": "Will the highest temperature in Shanghai be 24°C on April 18?", + "market_id": "1996508", + "range": [ + 24.0, + 24.0 + ], + "bid": 0.004, + "ask": 0.996, + "price": 0.004, + "spread": 0.992, + "volume": 8022.0 + }, + { + "question": "Will the highest temperature in Shanghai be 25°C or higher on April 18?", + "market_id": "1996509", + "range": [ + 25.0, + 999.0 + ], + "bid": 0.0005, + "ask": 0.9995, + "price": 0.0005, + "spread": 0.999, + "volume": 10760.0 + } + ], + "created_at": "2026-04-18T06:34:27.575987+00:00" +} \ No newline at end of file diff --git a/data/markets/shanghai_2026-04-19.json b/data/markets/shanghai_2026-04-19.json new file mode 100644 index 0000000..50eb3ec --- /dev/null +++ b/data/markets/shanghai_2026-04-19.json @@ -0,0 +1,179 @@ +{ + "city": "shanghai", + "city_name": "Shanghai", + "date": "2026-04-19", + "unit": "C", + "station": "ZSPD", + "event_end_date": "2026-04-19T12:00:00Z", + "hours_at_discovery": 29.4, + "status": "open", + "position": null, + "actual_temp": null, + "resolved_outcome": null, + "pnl": null, + "forecast_snapshots": [ + { + "ts": "2026-04-18T06:34:25.740032+00:00", + "horizon": "D+1", + "hours_left": 29.4, + "ecmwf": 20.4, + "hrrr": null, + "metar": null, + "best": 20.4, + "best_source": "ecmwf" + } + ], + "market_snapshots": [ + { + "ts": "2026-04-18T06:34:25.740032+00:00", + "top_bucket": "21.0-21.0C", + "top_price": 0.335 + } + ], + "all_outcomes": [ + { + "question": "Will the highest temperature in Shanghai be 17°C or below on April 19?", + "market_id": "2003843", + "range": [ + -999.0, + 17.0 + ], + "bid": 0.0045, + "ask": 0.9955, + "price": 0.0045, + "spread": 0.991, + "volume": 2404.0 + }, + { + "question": "Will the highest temperature in Shanghai be 18°C on April 19?", + "market_id": "2003844", + "range": [ + 18.0, + 18.0 + ], + "bid": 0.0075, + "ask": 0.9925, + "price": 0.0075, + "spread": 0.985, + "volume": 2698.0 + }, + { + "question": "Will the highest temperature in Shanghai be 19°C on April 19?", + "market_id": "2003845", + "range": [ + 19.0, + 19.0 + ], + "bid": 0.026, + "ask": 0.974, + "price": 0.026, + "spread": 0.948, + "volume": 4925.0 + }, + { + "question": "Will the highest temperature in Shanghai be 20°C on April 19?", + "market_id": "2003846", + "range": [ + 20.0, + 20.0 + ], + "bid": 0.155, + "ask": 0.845, + "price": 0.155, + "spread": 0.69, + "volume": 1264.0 + }, + { + "question": "Will the highest temperature in Shanghai be 21°C on April 19?", + "market_id": "2003847", + "range": [ + 21.0, + 21.0 + ], + "bid": 0.335, + "ask": 0.665, + "price": 0.335, + "spread": 0.33, + "volume": 781.0 + }, + { + "question": "Will the highest temperature in Shanghai be 22°C on April 19?", + "market_id": "2003848", + "range": [ + 22.0, + 22.0 + ], + "bid": 0.295, + "ask": 0.705, + "price": 0.295, + "spread": 0.41, + "volume": 1555.0 + }, + { + "question": "Will the highest temperature in Shanghai be 23°C on April 19?", + "market_id": "2003849", + "range": [ + 23.0, + 23.0 + ], + "bid": 0.16, + "ask": 0.84, + "price": 0.16, + "spread": 0.68, + "volume": 1133.0 + }, + { + "question": "Will the highest temperature in Shanghai be 24°C on April 19?", + "market_id": "2003850", + "range": [ + 24.0, + 24.0 + ], + "bid": 0.0455, + "ask": 0.9545, + "price": 0.0455, + "spread": 0.909, + "volume": 1817.0 + }, + { + "question": "Will the highest temperature in Shanghai be 25°C on April 19?", + "market_id": "2003851", + "range": [ + 25.0, + 25.0 + ], + "bid": 0.0075, + "ask": 0.9925, + "price": 0.0075, + "spread": 0.985, + "volume": 1860.0 + }, + { + "question": "Will the highest temperature in Shanghai be 26°C on April 19?", + "market_id": "2003852", + "range": [ + 26.0, + 26.0 + ], + "bid": 0.0055, + "ask": 0.9945, + "price": 0.0055, + "spread": 0.989, + "volume": 783.0 + }, + { + "question": "Will the highest temperature in Shanghai be 27°C or higher on April 19?", + "market_id": "2003853", + "range": [ + 27.0, + 999.0 + ], + "bid": 0.0055, + "ask": 0.9945, + "price": 0.0055, + "spread": 0.989, + "volume": 1561.0 + } + ], + "created_at": "2026-04-18T06:34:27.991288+00:00" +} \ No newline at end of file diff --git a/data/markets/shanghai_2026-04-20.json b/data/markets/shanghai_2026-04-20.json new file mode 100644 index 0000000..8dc061a --- /dev/null +++ b/data/markets/shanghai_2026-04-20.json @@ -0,0 +1,179 @@ +{ + "city": "shanghai", + "city_name": "Shanghai", + "date": "2026-04-20", + "unit": "C", + "station": "ZSPD", + "event_end_date": "2026-04-20T12:00:00Z", + "hours_at_discovery": 53.4, + "status": "open", + "position": null, + "actual_temp": null, + "resolved_outcome": null, + "pnl": null, + "forecast_snapshots": [ + { + "ts": "2026-04-18T06:34:25.740032+00:00", + "horizon": "D+2", + "hours_left": 53.4, + "ecmwf": 20.6, + "hrrr": null, + "metar": null, + "best": 20.6, + "best_source": "ecmwf" + } + ], + "market_snapshots": [ + { + "ts": "2026-04-18T06:34:25.740032+00:00", + "top_bucket": "20.0-20.0C", + "top_price": 0.32 + } + ], + "all_outcomes": [ + { + "question": "Will the highest temperature in Shanghai be 12°C or below on April 20?", + "market_id": "2011255", + "range": [ + -999.0, + 12.0 + ], + "bid": 0.0065, + "ask": 0.9935, + "price": 0.0065, + "spread": 0.987, + "volume": 197.0 + }, + { + "question": "Will the highest temperature in Shanghai be 13°C on April 20?", + "market_id": "2011256", + "range": [ + 13.0, + 13.0 + ], + "bid": 0.007, + "ask": 0.993, + "price": 0.007, + "spread": 0.986, + "volume": 175.0 + }, + { + "question": "Will the highest temperature in Shanghai be 14°C on April 20?", + "market_id": "2011257", + "range": [ + 14.0, + 14.0 + ], + "bid": 0.0175, + "ask": 0.9825, + "price": 0.0175, + "spread": 0.965, + "volume": 131.0 + }, + { + "question": "Will the highest temperature in Shanghai be 15°C on April 20?", + "market_id": "2011258", + "range": [ + 15.0, + 15.0 + ], + "bid": 0.0325, + "ask": 0.9675, + "price": 0.0325, + "spread": 0.935, + "volume": 20.0 + }, + { + "question": "Will the highest temperature in Shanghai be 16°C on April 20?", + "market_id": "2011259", + "range": [ + 16.0, + 16.0 + ], + "bid": 0.075, + "ask": 0.925, + "price": 0.075, + "spread": 0.85, + "volume": 28.0 + }, + { + "question": "Will the highest temperature in Shanghai be 17°C on April 20?", + "market_id": "2011260", + "range": [ + 17.0, + 17.0 + ], + "bid": 0.07, + "ask": 0.93, + "price": 0.07, + "spread": 0.86, + "volume": 216.0 + }, + { + "question": "Will the highest temperature in Shanghai be 18°C on April 20?", + "market_id": "2011261", + "range": [ + 18.0, + 18.0 + ], + "bid": 0.165, + "ask": 0.835, + "price": 0.165, + "spread": 0.67, + "volume": 21.0 + }, + { + "question": "Will the highest temperature in Shanghai be 19°C on April 20?", + "market_id": "2011262", + "range": [ + 19.0, + 19.0 + ], + "bid": 0.23, + "ask": 0.77, + "price": 0.23, + "spread": 0.54, + "volume": 5.0 + }, + { + "question": "Will the highest temperature in Shanghai be 20°C on April 20?", + "market_id": "2011263", + "range": [ + 20.0, + 20.0 + ], + "bid": 0.32, + "ask": 0.68, + "price": 0.32, + "spread": 0.36, + "volume": 8.0 + }, + { + "question": "Will the highest temperature in Shanghai be 21°C on April 20?", + "market_id": "2011264", + "range": [ + 21.0, + 21.0 + ], + "bid": 0.15, + "ask": 0.85, + "price": 0.15, + "spread": 0.7, + "volume": 31.0 + }, + { + "question": "Will the highest temperature in Shanghai be 22°C or higher on April 20?", + "market_id": "2011265", + "range": [ + 22.0, + 999.0 + ], + "bid": 0.135, + "ask": 0.865, + "price": 0.135, + "spread": 0.73, + "volume": 20.0 + } + ], + "created_at": "2026-04-18T06:34:28.411810+00:00" +} \ No newline at end of file diff --git a/data/markets/singapore_2026-04-18.json b/data/markets/singapore_2026-04-18.json new file mode 100644 index 0000000..783dddc --- /dev/null +++ b/data/markets/singapore_2026-04-18.json @@ -0,0 +1,179 @@ +{ + "city": "singapore", + "city_name": "Singapore", + "date": "2026-04-18", + "unit": "C", + "station": "WSSS", + "event_end_date": "2026-04-18T12:00:00Z", + "hours_at_discovery": 5.4, + "status": "open", + "position": null, + "actual_temp": null, + "resolved_outcome": null, + "pnl": null, + "forecast_snapshots": [ + { + "ts": "2026-04-18T06:34:28.838426+00:00", + "horizon": "D+0", + "hours_left": 5.4, + "ecmwf": 31.0, + "hrrr": null, + "metar": 33.0, + "best": 31.0, + "best_source": "ecmwf" + } + ], + "market_snapshots": [ + { + "ts": "2026-04-18T06:34:28.838426+00:00", + "top_bucket": "34.0-34.0C", + "top_price": 0.984 + } + ], + "all_outcomes": [ + { + "question": "Will the highest temperature in Singapore be 25°C or below on April 18?", + "market_id": "1996510", + "range": [ + -999.0, + 25.0 + ], + "bid": 0.0, + "ask": 1.0, + "price": 0.0, + "spread": 1.0, + "volume": 1964.0 + }, + { + "question": "Will the highest temperature in Singapore be 26°C on April 18?", + "market_id": "1996511", + "range": [ + 26.0, + 26.0 + ], + "bid": 0.0, + "ask": 1.0, + "price": 0.0, + "spread": 1.0, + "volume": 4591.0 + }, + { + "question": "Will the highest temperature in Singapore be 27°C on April 18?", + "market_id": "1996512", + "range": [ + 27.0, + 27.0 + ], + "bid": 0.0, + "ask": 1.0, + "price": 0.0, + "spread": 1.0, + "volume": 2656.0 + }, + { + "question": "Will the highest temperature in Singapore be 28°C on April 18?", + "market_id": "1996513", + "range": [ + 28.0, + 28.0 + ], + "bid": 0.0, + "ask": 1.0, + "price": 0.0, + "spread": 1.0, + "volume": 1851.0 + }, + { + "question": "Will the highest temperature in Singapore be 29°C on April 18?", + "market_id": "1996514", + "range": [ + 29.0, + 29.0 + ], + "bid": 0.0, + "ask": 1.0, + "price": 0.0, + "spread": 1.0, + "volume": 6429.0 + }, + { + "question": "Will the highest temperature in Singapore be 30°C on April 18?", + "market_id": "1996515", + "range": [ + 30.0, + 30.0 + ], + "bid": 0.0, + "ask": 1.0, + "price": 0.0, + "spread": 1.0, + "volume": 5431.0 + }, + { + "question": "Will the highest temperature in Singapore be 31°C on April 18?", + "market_id": "1996516", + "range": [ + 31.0, + 31.0 + ], + "bid": 0.0, + "ask": 1.0, + "price": 0.0, + "spread": 1.0, + "volume": 8368.0 + }, + { + "question": "Will the highest temperature in Singapore be 32°C on April 18?", + "market_id": "1996517", + "range": [ + 32.0, + 32.0 + ], + "bid": 0.0, + "ask": 1.0, + "price": 0.0, + "spread": 1.0, + "volume": 6974.0 + }, + { + "question": "Will the highest temperature in Singapore be 33°C on April 18?", + "market_id": "1996518", + "range": [ + 33.0, + 33.0 + ], + "bid": 0.0005, + "ask": 0.9995, + "price": 0.0005, + "spread": 0.999, + "volume": 15077.0 + }, + { + "question": "Will the highest temperature in Singapore be 34°C on April 18?", + "market_id": "1996519", + "range": [ + 34.0, + 34.0 + ], + "bid": 0.984, + "ask": 0.016, + "price": 0.984, + "spread": -0.968, + "volume": 9529.0 + }, + { + "question": "Will the highest temperature in Singapore be 35°C or higher on April 18?", + "market_id": "1996520", + "range": [ + 35.0, + 999.0 + ], + "bid": 0.023, + "ask": 0.977, + "price": 0.023, + "spread": 0.954, + "volume": 9913.0 + } + ], + "created_at": "2026-04-18T06:34:31.000900+00:00" +} \ No newline at end of file diff --git a/data/markets/singapore_2026-04-19.json b/data/markets/singapore_2026-04-19.json new file mode 100644 index 0000000..c117264 --- /dev/null +++ b/data/markets/singapore_2026-04-19.json @@ -0,0 +1,179 @@ +{ + "city": "singapore", + "city_name": "Singapore", + "date": "2026-04-19", + "unit": "C", + "station": "WSSS", + "event_end_date": "2026-04-19T12:00:00Z", + "hours_at_discovery": 29.4, + "status": "open", + "position": null, + "actual_temp": null, + "resolved_outcome": null, + "pnl": null, + "forecast_snapshots": [ + { + "ts": "2026-04-18T06:34:28.838426+00:00", + "horizon": "D+1", + "hours_left": 29.4, + "ecmwf": 28.5, + "hrrr": null, + "metar": null, + "best": 28.5, + "best_source": "ecmwf" + } + ], + "market_snapshots": [ + { + "ts": "2026-04-18T06:34:28.838426+00:00", + "top_bucket": "32.0-32.0C", + "top_price": 0.405 + } + ], + "all_outcomes": [ + { + "question": "Will the highest temperature in Singapore be 25°C or below on April 19?", + "market_id": "2003854", + "range": [ + -999.0, + 25.0 + ], + "bid": 0.001, + "ask": 0.999, + "price": 0.001, + "spread": 0.998, + "volume": 1734.0 + }, + { + "question": "Will the highest temperature in Singapore be 26°C on April 19?", + "market_id": "2003855", + "range": [ + 26.0, + 26.0 + ], + "bid": 0.0015, + "ask": 0.9985, + "price": 0.0015, + "spread": 0.997, + "volume": 1475.0 + }, + { + "question": "Will the highest temperature in Singapore be 27°C on April 19?", + "market_id": "2003856", + "range": [ + 27.0, + 27.0 + ], + "bid": 0.0015, + "ask": 0.9985, + "price": 0.0015, + "spread": 0.997, + "volume": 1509.0 + }, + { + "question": "Will the highest temperature in Singapore be 28°C on April 19?", + "market_id": "2003857", + "range": [ + 28.0, + 28.0 + ], + "bid": 0.0085, + "ask": 0.9915, + "price": 0.0085, + "spread": 0.983, + "volume": 3608.0 + }, + { + "question": "Will the highest temperature in Singapore be 29°C on April 19?", + "market_id": "2003858", + "range": [ + 29.0, + 29.0 + ], + "bid": 0.0125, + "ask": 0.9875, + "price": 0.0125, + "spread": 0.975, + "volume": 3433.0 + }, + { + "question": "Will the highest temperature in Singapore be 30°C on April 19?", + "market_id": "2003859", + "range": [ + 30.0, + 30.0 + ], + "bid": 0.075, + "ask": 0.925, + "price": 0.075, + "spread": 0.85, + "volume": 1891.0 + }, + { + "question": "Will the highest temperature in Singapore be 31°C on April 19?", + "market_id": "2003860", + "range": [ + 31.0, + 31.0 + ], + "bid": 0.205, + "ask": 0.795, + "price": 0.205, + "spread": 0.59, + "volume": 1092.0 + }, + { + "question": "Will the highest temperature in Singapore be 32°C on April 19?", + "market_id": "2003861", + "range": [ + 32.0, + 32.0 + ], + "bid": 0.405, + "ask": 0.595, + "price": 0.405, + "spread": 0.19, + "volume": 976.0 + }, + { + "question": "Will the highest temperature in Singapore be 33°C on April 19?", + "market_id": "2003862", + "range": [ + 33.0, + 33.0 + ], + "bid": 0.23, + "ask": 0.77, + "price": 0.23, + "spread": 0.54, + "volume": 1428.0 + }, + { + "question": "Will the highest temperature in Singapore be 34°C on April 19?", + "market_id": "2003863", + "range": [ + 34.0, + 34.0 + ], + "bid": 0.0435, + "ask": 0.9565, + "price": 0.0435, + "spread": 0.913, + "volume": 2474.0 + }, + { + "question": "Will the highest temperature in Singapore be 35°C or higher on April 19?", + "market_id": "2003864", + "range": [ + 35.0, + 999.0 + ], + "bid": 0.011, + "ask": 0.989, + "price": 0.011, + "spread": 0.978, + "volume": 2518.0 + } + ], + "created_at": "2026-04-18T06:34:31.397951+00:00" +} \ No newline at end of file diff --git a/data/markets/singapore_2026-04-20.json b/data/markets/singapore_2026-04-20.json new file mode 100644 index 0000000..688c779 --- /dev/null +++ b/data/markets/singapore_2026-04-20.json @@ -0,0 +1,179 @@ +{ + "city": "singapore", + "city_name": "Singapore", + "date": "2026-04-20", + "unit": "C", + "station": "WSSS", + "event_end_date": "2026-04-20T12:00:00Z", + "hours_at_discovery": 53.4, + "status": "open", + "position": null, + "actual_temp": null, + "resolved_outcome": null, + "pnl": null, + "forecast_snapshots": [ + { + "ts": "2026-04-18T06:34:28.838426+00:00", + "horizon": "D+2", + "hours_left": 53.4, + "ecmwf": 28.4, + "hrrr": null, + "metar": null, + "best": 28.4, + "best_source": "ecmwf" + } + ], + "market_snapshots": [ + { + "ts": "2026-04-18T06:34:28.838426+00:00", + "top_bucket": "32.0-999.0C", + "top_price": 0.605 + } + ], + "all_outcomes": [ + { + "question": "Will the highest temperature in Singapore be 22°C or below on April 20?", + "market_id": "2011266", + "range": [ + -999.0, + 22.0 + ], + "bid": 0.0035, + "ask": 0.9965, + "price": 0.0035, + "spread": 0.993, + "volume": 300.0 + }, + { + "question": "Will the highest temperature in Singapore be 23°C on April 20?", + "market_id": "2011267", + "range": [ + 23.0, + 23.0 + ], + "bid": 0.0055, + "ask": 0.9945, + "price": 0.0055, + "spread": 0.989, + "volume": 220.0 + }, + { + "question": "Will the highest temperature in Singapore be 24°C on April 20?", + "market_id": "2011268", + "range": [ + 24.0, + 24.0 + ], + "bid": 0.0075, + "ask": 0.9925, + "price": 0.0075, + "spread": 0.985, + "volume": 150.0 + }, + { + "question": "Will the highest temperature in Singapore be 25°C on April 20?", + "market_id": "2011269", + "range": [ + 25.0, + 25.0 + ], + "bid": 0.012, + "ask": 0.988, + "price": 0.012, + "spread": 0.976, + "volume": 170.0 + }, + { + "question": "Will the highest temperature in Singapore be 26°C on April 20?", + "market_id": "2011270", + "range": [ + 26.0, + 26.0 + ], + "bid": 0.0095, + "ask": 0.9905, + "price": 0.0095, + "spread": 0.981, + "volume": 170.0 + }, + { + "question": "Will the highest temperature in Singapore be 27°C on April 20?", + "market_id": "2011271", + "range": [ + 27.0, + 27.0 + ], + "bid": 0.017, + "ask": 0.983, + "price": 0.017, + "spread": 0.966, + "volume": 165.0 + }, + { + "question": "Will the highest temperature in Singapore be 28°C on April 20?", + "market_id": "2011272", + "range": [ + 28.0, + 28.0 + ], + "bid": 0.02, + "ask": 0.98, + "price": 0.02, + "spread": 0.96, + "volume": 162.0 + }, + { + "question": "Will the highest temperature in Singapore be 29°C on April 20?", + "market_id": "2011273", + "range": [ + 29.0, + 29.0 + ], + "bid": 0.0235, + "ask": 0.9765, + "price": 0.0235, + "spread": 0.953, + "volume": 332.0 + }, + { + "question": "Will the highest temperature in Singapore be 30°C on April 20?", + "market_id": "2011274", + "range": [ + 30.0, + 30.0 + ], + "bid": 0.15, + "ask": 0.85, + "price": 0.15, + "spread": 0.7, + "volume": 39.0 + }, + { + "question": "Will the highest temperature in Singapore be 31°C on April 20?", + "market_id": "2011275", + "range": [ + 31.0, + 31.0 + ], + "bid": 0.24, + "ask": 0.76, + "price": 0.24, + "spread": 0.52, + "volume": 1.0 + }, + { + "question": "Will the highest temperature in Singapore be 32°C or higher on April 20?", + "market_id": "2011276", + "range": [ + 32.0, + 999.0 + ], + "bid": 0.605, + "ask": 0.395, + "price": 0.605, + "spread": -0.21, + "volume": 78.0 + } + ], + "created_at": "2026-04-18T06:34:31.831362+00:00" +} \ No newline at end of file diff --git a/data/markets/tel-aviv_2026-04-18.json b/data/markets/tel-aviv_2026-04-18.json new file mode 100644 index 0000000..f1a3809 --- /dev/null +++ b/data/markets/tel-aviv_2026-04-18.json @@ -0,0 +1,179 @@ +{ + "city": "tel-aviv", + "city_name": "Tel Aviv", + "date": "2026-04-18", + "unit": "C", + "station": "LLBG", + "event_end_date": "2026-04-18T12:00:00Z", + "hours_at_discovery": 5.4, + "status": "open", + "position": null, + "actual_temp": null, + "resolved_outcome": null, + "pnl": null, + "forecast_snapshots": [ + { + "ts": "2026-04-18T06:34:35.480269+00:00", + "horizon": "D+0", + "hours_left": 5.4, + "ecmwf": 26.3, + "hrrr": null, + "metar": 25.0, + "best": 26.3, + "best_source": "ecmwf" + } + ], + "market_snapshots": [ + { + "ts": "2026-04-18T06:34:35.480269+00:00", + "top_bucket": "26.0-26.0C", + "top_price": 0.475 + } + ], + "all_outcomes": [ + { + "question": "Will the highest temperature in Tel Aviv be 18°C or below on April 18?", + "market_id": "1996466", + "range": [ + -999.0, + 18.0 + ], + "bid": 0.0, + "ask": 1.0, + "price": 0.0, + "spread": 1.0, + "volume": 1544.0 + }, + { + "question": "Will the highest temperature in Tel Aviv be 19°C on April 18?", + "market_id": "1996467", + "range": [ + 19.0, + 19.0 + ], + "bid": 0.0, + "ask": 1.0, + "price": 0.0, + "spread": 1.0, + "volume": 1620.0 + }, + { + "question": "Will the highest temperature in Tel Aviv be 20°C on April 18?", + "market_id": "1996468", + "range": [ + 20.0, + 20.0 + ], + "bid": 0.0, + "ask": 1.0, + "price": 0.0, + "spread": 1.0, + "volume": 2776.0 + }, + { + "question": "Will the highest temperature in Tel Aviv be 21°C on April 18?", + "market_id": "1996469", + "range": [ + 21.0, + 21.0 + ], + "bid": 0.0005, + "ask": 0.9995, + "price": 0.0005, + "spread": 0.999, + "volume": 2585.0 + }, + { + "question": "Will the highest temperature in Tel Aviv be 22°C on April 18?", + "market_id": "1996470", + "range": [ + 22.0, + 22.0 + ], + "bid": 0.0005, + "ask": 0.9995, + "price": 0.0005, + "spread": 0.999, + "volume": 2710.0 + }, + { + "question": "Will the highest temperature in Tel Aviv be 23°C on April 18?", + "market_id": "1996471", + "range": [ + 23.0, + 23.0 + ], + "bid": 0.0005, + "ask": 0.9995, + "price": 0.0005, + "spread": 0.999, + "volume": 3363.0 + }, + { + "question": "Will the highest temperature in Tel Aviv be 24°C on April 18?", + "market_id": "1996472", + "range": [ + 24.0, + 24.0 + ], + "bid": 0.0005, + "ask": 0.9995, + "price": 0.0005, + "spread": 0.999, + "volume": 5587.0 + }, + { + "question": "Will the highest temperature in Tel Aviv be 25°C on April 18?", + "market_id": "1996473", + "range": [ + 25.0, + 25.0 + ], + "bid": 0.305, + "ask": 0.695, + "price": 0.305, + "spread": 0.39, + "volume": 1573.0 + }, + { + "question": "Will the highest temperature in Tel Aviv be 26°C on April 18?", + "market_id": "1996474", + "range": [ + 26.0, + 26.0 + ], + "bid": 0.475, + "ask": 0.525, + "price": 0.475, + "spread": 0.05, + "volume": 2442.0 + }, + { + "question": "Will the highest temperature in Tel Aviv be 27°C on April 18?", + "market_id": "1996475", + "range": [ + 27.0, + 27.0 + ], + "bid": 0.155, + "ask": 0.845, + "price": 0.155, + "spread": 0.69, + "volume": 2939.0 + }, + { + "question": "Will the highest temperature in Tel Aviv be 28°C or higher on April 18?", + "market_id": "1996476", + "range": [ + 28.0, + 999.0 + ], + "bid": 0.0495, + "ask": 0.9505, + "price": 0.0495, + "spread": 0.901, + "volume": 4244.0 + } + ], + "created_at": "2026-04-18T06:34:37.691727+00:00" +} \ No newline at end of file diff --git a/data/markets/tel-aviv_2026-04-19.json b/data/markets/tel-aviv_2026-04-19.json new file mode 100644 index 0000000..553f871 --- /dev/null +++ b/data/markets/tel-aviv_2026-04-19.json @@ -0,0 +1,179 @@ +{ + "city": "tel-aviv", + "city_name": "Tel Aviv", + "date": "2026-04-19", + "unit": "C", + "station": "LLBG", + "event_end_date": "2026-04-19T12:00:00Z", + "hours_at_discovery": 29.4, + "status": "open", + "position": null, + "actual_temp": null, + "resolved_outcome": null, + "pnl": null, + "forecast_snapshots": [ + { + "ts": "2026-04-18T06:34:35.480269+00:00", + "horizon": "D+1", + "hours_left": 29.4, + "ecmwf": 23.6, + "hrrr": null, + "metar": null, + "best": 23.6, + "best_source": "ecmwf" + } + ], + "market_snapshots": [ + { + "ts": "2026-04-18T06:34:35.480269+00:00", + "top_bucket": "23.0-23.0C", + "top_price": 0.365 + } + ], + "all_outcomes": [ + { + "question": "Will the highest temperature in Tel Aviv be 16°C or below on April 19?", + "market_id": "2003810", + "range": [ + -999.0, + 16.0 + ], + "bid": 0.003, + "ask": 0.997, + "price": 0.003, + "spread": 0.994, + "volume": 1300.0 + }, + { + "question": "Will the highest temperature in Tel Aviv be 17°C on April 19?", + "market_id": "2003811", + "range": [ + 17.0, + 17.0 + ], + "bid": 0.0035, + "ask": 0.9965, + "price": 0.0035, + "spread": 0.993, + "volume": 851.0 + }, + { + "question": "Will the highest temperature in Tel Aviv be 18°C on April 19?", + "market_id": "2003812", + "range": [ + 18.0, + 18.0 + ], + "bid": 0.0055, + "ask": 0.9945, + "price": 0.0055, + "spread": 0.989, + "volume": 615.0 + }, + { + "question": "Will the highest temperature in Tel Aviv be 19°C on April 19?", + "market_id": "2003813", + "range": [ + 19.0, + 19.0 + ], + "bid": 0.012, + "ask": 0.988, + "price": 0.012, + "spread": 0.976, + "volume": 509.0 + }, + { + "question": "Will the highest temperature in Tel Aviv be 20°C on April 19?", + "market_id": "2003814", + "range": [ + 20.0, + 20.0 + ], + "bid": 0.0145, + "ask": 0.9855, + "price": 0.0145, + "spread": 0.971, + "volume": 988.0 + }, + { + "question": "Will the highest temperature in Tel Aviv be 21°C on April 19?", + "market_id": "2003815", + "range": [ + 21.0, + 21.0 + ], + "bid": 0.056, + "ask": 0.944, + "price": 0.056, + "spread": 0.888, + "volume": 966.0 + }, + { + "question": "Will the highest temperature in Tel Aviv be 22°C on April 19?", + "market_id": "2003816", + "range": [ + 22.0, + 22.0 + ], + "bid": 0.19, + "ask": 0.81, + "price": 0.19, + "spread": 0.62, + "volume": 477.0 + }, + { + "question": "Will the highest temperature in Tel Aviv be 23°C on April 19?", + "market_id": "2003817", + "range": [ + 23.0, + 23.0 + ], + "bid": 0.365, + "ask": 0.635, + "price": 0.365, + "spread": 0.27, + "volume": 337.0 + }, + { + "question": "Will the highest temperature in Tel Aviv be 24°C on April 19?", + "market_id": "2003818", + "range": [ + 24.0, + 24.0 + ], + "bid": 0.255, + "ask": 0.745, + "price": 0.255, + "spread": 0.49, + "volume": 556.0 + }, + { + "question": "Will the highest temperature in Tel Aviv be 25°C on April 19?", + "market_id": "2003819", + "range": [ + 25.0, + 25.0 + ], + "bid": 0.135, + "ask": 0.865, + "price": 0.135, + "spread": 0.73, + "volume": 435.0 + }, + { + "question": "Will the highest temperature in Tel Aviv be 26°C or higher on April 19?", + "market_id": "2003820", + "range": [ + 26.0, + 999.0 + ], + "bid": 0.03, + "ask": 0.97, + "price": 0.03, + "spread": 0.94, + "volume": 828.0 + } + ], + "created_at": "2026-04-18T06:34:38.147706+00:00" +} \ No newline at end of file diff --git a/data/markets/tel-aviv_2026-04-20.json b/data/markets/tel-aviv_2026-04-20.json new file mode 100644 index 0000000..a4b6f53 --- /dev/null +++ b/data/markets/tel-aviv_2026-04-20.json @@ -0,0 +1,179 @@ +{ + "city": "tel-aviv", + "city_name": "Tel Aviv", + "date": "2026-04-20", + "unit": "C", + "station": "LLBG", + "event_end_date": "2026-04-20T12:00:00Z", + "hours_at_discovery": 53.4, + "status": "open", + "position": null, + "actual_temp": null, + "resolved_outcome": null, + "pnl": null, + "forecast_snapshots": [ + { + "ts": "2026-04-18T06:34:35.480269+00:00", + "horizon": "D+2", + "hours_left": 53.4, + "ecmwf": 21.5, + "hrrr": null, + "metar": null, + "best": 21.5, + "best_source": "ecmwf" + } + ], + "market_snapshots": [ + { + "ts": "2026-04-18T06:34:35.480269+00:00", + "top_bucket": "22.0-22.0C", + "top_price": 0.34 + } + ], + "all_outcomes": [ + { + "question": "Will the highest temperature in Tel Aviv be 15°C or below on April 20?", + "market_id": "2011222", + "range": [ + -999.0, + 15.0 + ], + "bid": 0.0065, + "ask": 0.9935, + "price": 0.0065, + "spread": 0.987, + "volume": 215.0 + }, + { + "question": "Will the highest temperature in Tel Aviv be 16°C on April 20?", + "market_id": "2011223", + "range": [ + 16.0, + 16.0 + ], + "bid": 0.0075, + "ask": 0.9925, + "price": 0.0075, + "spread": 0.985, + "volume": 150.0 + }, + { + "question": "Will the highest temperature in Tel Aviv be 17°C on April 20?", + "market_id": "2011224", + "range": [ + 17.0, + 17.0 + ], + "bid": 0.0235, + "ask": 0.9765, + "price": 0.0235, + "spread": 0.953, + "volume": 13.0 + }, + { + "question": "Will the highest temperature in Tel Aviv be 18°C on April 20?", + "market_id": "2011225", + "range": [ + 18.0, + 18.0 + ], + "bid": 0.065, + "ask": 0.935, + "price": 0.065, + "spread": 0.87, + "volume": 6.0 + }, + { + "question": "Will the highest temperature in Tel Aviv be 19°C on April 20?", + "market_id": "2011226", + "range": [ + 19.0, + 19.0 + ], + "bid": 0.065, + "ask": 0.935, + "price": 0.065, + "spread": 0.87, + "volume": 20.0 + }, + { + "question": "Will the highest temperature in Tel Aviv be 20°C on April 20?", + "market_id": "2011227", + "range": [ + 20.0, + 20.0 + ], + "bid": 0.09, + "ask": 0.91, + "price": 0.09, + "spread": 0.82, + "volume": 5.0 + }, + { + "question": "Will the highest temperature in Tel Aviv be 21°C on April 20?", + "market_id": "2011228", + "range": [ + 21.0, + 21.0 + ], + "bid": 0.295, + "ask": 0.705, + "price": 0.295, + "spread": 0.41, + "volume": 0.0 + }, + { + "question": "Will the highest temperature in Tel Aviv be 22°C on April 20?", + "market_id": "2011229", + "range": [ + 22.0, + 22.0 + ], + "bid": 0.34, + "ask": 0.66, + "price": 0.34, + "spread": 0.32, + "volume": 0.0 + }, + { + "question": "Will the highest temperature in Tel Aviv be 23°C on April 20?", + "market_id": "2011230", + "range": [ + 23.0, + 23.0 + ], + "bid": 0.12, + "ask": 0.88, + "price": 0.12, + "spread": 0.76, + "volume": 0.0 + }, + { + "question": "Will the highest temperature in Tel Aviv be 24°C on April 20?", + "market_id": "2011231", + "range": [ + 24.0, + 24.0 + ], + "bid": 0.085, + "ask": 0.915, + "price": 0.085, + "spread": 0.83, + "volume": 5.0 + }, + { + "question": "Will the highest temperature in Tel Aviv be 25°C or higher on April 20?", + "market_id": "2011232", + "range": [ + 25.0, + 999.0 + ], + "bid": 0.09, + "ask": 0.91, + "price": 0.09, + "spread": 0.82, + "volume": 0.0 + } + ], + "created_at": "2026-04-18T06:34:38.593413+00:00" +} \ No newline at end of file diff --git a/data/markets/tokyo_2026-04-18.json b/data/markets/tokyo_2026-04-18.json new file mode 100644 index 0000000..73b6522 --- /dev/null +++ b/data/markets/tokyo_2026-04-18.json @@ -0,0 +1,179 @@ +{ + "city": "tokyo", + "city_name": "Tokyo", + "date": "2026-04-18", + "unit": "C", + "station": "RJTT", + "event_end_date": "2026-04-18T12:00:00Z", + "hours_at_discovery": 5.4, + "status": "open", + "position": null, + "actual_temp": null, + "resolved_outcome": null, + "pnl": null, + "forecast_snapshots": [ + { + "ts": "2026-04-18T06:34:22.441395+00:00", + "horizon": "D+0", + "hours_left": 5.4, + "ecmwf": 19.7, + "hrrr": null, + "metar": 21.0, + "best": 19.7, + "best_source": "ecmwf" + } + ], + "market_snapshots": [ + { + "ts": "2026-04-18T06:34:22.441395+00:00", + "top_bucket": "22.0-22.0C", + "top_price": 0.585 + } + ], + "all_outcomes": [ + { + "question": "Will the highest temperature in Tokyo be 13°C or below on April 18?", + "market_id": "1996477", + "range": [ + -999.0, + 13.0 + ], + "bid": 0.0, + "ask": 1.0, + "price": 0.0, + "spread": 1.0, + "volume": 2664.0 + }, + { + "question": "Will the highest temperature in Tokyo be 14°C on April 18?", + "market_id": "1996478", + "range": [ + 14.0, + 14.0 + ], + "bid": 0.0, + "ask": 1.0, + "price": 0.0, + "spread": 1.0, + "volume": 2437.0 + }, + { + "question": "Will the highest temperature in Tokyo be 15°C on April 18?", + "market_id": "1996479", + "range": [ + 15.0, + 15.0 + ], + "bid": 0.0, + "ask": 1.0, + "price": 0.0, + "spread": 1.0, + "volume": 1580.0 + }, + { + "question": "Will the highest temperature in Tokyo be 16°C on April 18?", + "market_id": "1996480", + "range": [ + 16.0, + 16.0 + ], + "bid": 0.0, + "ask": 1.0, + "price": 0.0, + "spread": 1.0, + "volume": 1779.0 + }, + { + "question": "Will the highest temperature in Tokyo be 17°C on April 18?", + "market_id": "1996481", + "range": [ + 17.0, + 17.0 + ], + "bid": 0.0, + "ask": 1.0, + "price": 0.0, + "spread": 1.0, + "volume": 2640.0 + }, + { + "question": "Will the highest temperature in Tokyo be 18°C on April 18?", + "market_id": "1996482", + "range": [ + 18.0, + 18.0 + ], + "bid": 0.0, + "ask": 1.0, + "price": 0.0, + "spread": 1.0, + "volume": 5039.0 + }, + { + "question": "Will the highest temperature in Tokyo be 19°C on April 18?", + "market_id": "1996483", + "range": [ + 19.0, + 19.0 + ], + "bid": 0.0, + "ask": 1.0, + "price": 0.0, + "spread": 1.0, + "volume": 8464.0 + }, + { + "question": "Will the highest temperature in Tokyo be 20°C on April 18?", + "market_id": "1996484", + "range": [ + 20.0, + 20.0 + ], + "bid": 0.0, + "ask": 1.0, + "price": 0.0, + "spread": 1.0, + "volume": 14266.0 + }, + { + "question": "Will the highest temperature in Tokyo be 21°C on April 18?", + "market_id": "1996485", + "range": [ + 21.0, + 21.0 + ], + "bid": 0.55, + "ask": 0.45, + "price": 0.55, + "spread": -0.1, + "volume": 13535.0 + }, + { + "question": "Will the highest temperature in Tokyo be 22°C on April 18?", + "market_id": "1996486", + "range": [ + 22.0, + 22.0 + ], + "bid": 0.585, + "ask": 0.415, + "price": 0.585, + "spread": -0.17, + "volume": 9294.0 + }, + { + "question": "Will the highest temperature in Tokyo be 23°C or higher on April 18?", + "market_id": "1996487", + "range": [ + 23.0, + 999.0 + ], + "bid": 0.021, + "ask": 0.979, + "price": 0.021, + "spread": 0.958, + "volume": 12144.0 + } + ], + "created_at": "2026-04-18T06:34:24.356828+00:00" +} \ No newline at end of file diff --git a/data/markets/tokyo_2026-04-19.json b/data/markets/tokyo_2026-04-19.json new file mode 100644 index 0000000..3a84073 --- /dev/null +++ b/data/markets/tokyo_2026-04-19.json @@ -0,0 +1,179 @@ +{ + "city": "tokyo", + "city_name": "Tokyo", + "date": "2026-04-19", + "unit": "C", + "station": "RJTT", + "event_end_date": "2026-04-19T12:00:00Z", + "hours_at_discovery": 29.4, + "status": "open", + "position": null, + "actual_temp": null, + "resolved_outcome": null, + "pnl": null, + "forecast_snapshots": [ + { + "ts": "2026-04-18T06:34:22.441395+00:00", + "horizon": "D+1", + "hours_left": 29.4, + "ecmwf": 21.7, + "hrrr": null, + "metar": null, + "best": 21.7, + "best_source": "ecmwf" + } + ], + "market_snapshots": [ + { + "ts": "2026-04-18T06:34:22.441395+00:00", + "top_bucket": "24.0-24.0C", + "top_price": 0.395 + } + ], + "all_outcomes": [ + { + "question": "Will the highest temperature in Tokyo be 16°C or below on April 19?", + "market_id": "2003821", + "range": [ + -999.0, + 16.0 + ], + "bid": 0.0025, + "ask": 0.9975, + "price": 0.0025, + "spread": 0.995, + "volume": 1657.0 + }, + { + "question": "Will the highest temperature in Tokyo be 17°C on April 19?", + "market_id": "2003822", + "range": [ + 17.0, + 17.0 + ], + "bid": 0.0025, + "ask": 0.9975, + "price": 0.0025, + "spread": 0.995, + "volume": 1290.0 + }, + { + "question": "Will the highest temperature in Tokyo be 18°C on April 19?", + "market_id": "2003823", + "range": [ + 18.0, + 18.0 + ], + "bid": 0.0035, + "ask": 0.9965, + "price": 0.0035, + "spread": 0.993, + "volume": 1593.0 + }, + { + "question": "Will the highest temperature in Tokyo be 19°C on April 19?", + "market_id": "2003824", + "range": [ + 19.0, + 19.0 + ], + "bid": 0.005, + "ask": 0.995, + "price": 0.005, + "spread": 0.99, + "volume": 543.0 + }, + { + "question": "Will the highest temperature in Tokyo be 20°C on April 19?", + "market_id": "2003825", + "range": [ + 20.0, + 20.0 + ], + "bid": 0.008, + "ask": 0.992, + "price": 0.008, + "spread": 0.984, + "volume": 751.0 + }, + { + "question": "Will the highest temperature in Tokyo be 21°C on April 19?", + "market_id": "2003826", + "range": [ + 21.0, + 21.0 + ], + "bid": 0.008, + "ask": 0.992, + "price": 0.008, + "spread": 0.984, + "volume": 1577.0 + }, + { + "question": "Will the highest temperature in Tokyo be 22°C on April 19?", + "market_id": "2003827", + "range": [ + 22.0, + 22.0 + ], + "bid": 0.075, + "ask": 0.925, + "price": 0.075, + "spread": 0.85, + "volume": 1949.0 + }, + { + "question": "Will the highest temperature in Tokyo be 23°C on April 19?", + "market_id": "2003828", + "range": [ + 23.0, + 23.0 + ], + "bid": 0.295, + "ask": 0.705, + "price": 0.295, + "spread": 0.41, + "volume": 651.0 + }, + { + "question": "Will the highest temperature in Tokyo be 24°C on April 19?", + "market_id": "2003829", + "range": [ + 24.0, + 24.0 + ], + "bid": 0.395, + "ask": 0.605, + "price": 0.395, + "spread": 0.21, + "volume": 1270.0 + }, + { + "question": "Will the highest temperature in Tokyo be 25°C on April 19?", + "market_id": "2003830", + "range": [ + 25.0, + 25.0 + ], + "bid": 0.185, + "ask": 0.815, + "price": 0.185, + "spread": 0.63, + "volume": 705.0 + }, + { + "question": "Will the highest temperature in Tokyo be 26°C or higher on April 19?", + "market_id": "2003831", + "range": [ + 26.0, + 999.0 + ], + "bid": 0.055, + "ask": 0.945, + "price": 0.055, + "spread": 0.89, + "volume": 1553.0 + } + ], + "created_at": "2026-04-18T06:34:24.836914+00:00" +} \ No newline at end of file diff --git a/data/markets/tokyo_2026-04-20.json b/data/markets/tokyo_2026-04-20.json new file mode 100644 index 0000000..1b0872a --- /dev/null +++ b/data/markets/tokyo_2026-04-20.json @@ -0,0 +1,179 @@ +{ + "city": "tokyo", + "city_name": "Tokyo", + "date": "2026-04-20", + "unit": "C", + "station": "RJTT", + "event_end_date": "2026-04-20T12:00:00Z", + "hours_at_discovery": 53.4, + "status": "open", + "position": null, + "actual_temp": null, + "resolved_outcome": null, + "pnl": null, + "forecast_snapshots": [ + { + "ts": "2026-04-18T06:34:22.441395+00:00", + "horizon": "D+2", + "hours_left": 53.4, + "ecmwf": 20.4, + "hrrr": null, + "metar": null, + "best": 20.4, + "best_source": "ecmwf" + } + ], + "market_snapshots": [ + { + "ts": "2026-04-18T06:34:22.441395+00:00", + "top_bucket": "22.0-22.0C", + "top_price": 0.345 + } + ], + "all_outcomes": [ + { + "question": "Will the highest temperature in Tokyo be 14°C or below on April 20?", + "market_id": "2011233", + "range": [ + -999.0, + 14.0 + ], + "bid": 0.0075, + "ask": 0.9925, + "price": 0.0075, + "spread": 0.985, + "volume": 228.0 + }, + { + "question": "Will the highest temperature in Tokyo be 15°C on April 20?", + "market_id": "2011234", + "range": [ + 15.0, + 15.0 + ], + "bid": 0.007, + "ask": 0.993, + "price": 0.007, + "spread": 0.986, + "volume": 228.0 + }, + { + "question": "Will the highest temperature in Tokyo be 16°C on April 20?", + "market_id": "2011235", + "range": [ + 16.0, + 16.0 + ], + "bid": 0.024, + "ask": 0.976, + "price": 0.024, + "spread": 0.952, + "volume": 205.0 + }, + { + "question": "Will the highest temperature in Tokyo be 17°C on April 20?", + "market_id": "2011236", + "range": [ + 17.0, + 17.0 + ], + "bid": 0.014, + "ask": 0.986, + "price": 0.014, + "spread": 0.972, + "volume": 129.0 + }, + { + "question": "Will the highest temperature in Tokyo be 18°C on April 20?", + "market_id": "2011237", + "range": [ + 18.0, + 18.0 + ], + "bid": 0.075, + "ask": 0.925, + "price": 0.075, + "spread": 0.85, + "volume": 99.0 + }, + { + "question": "Will the highest temperature in Tokyo be 19°C on April 20?", + "market_id": "2011238", + "range": [ + 19.0, + 19.0 + ], + "bid": 0.045, + "ask": 0.955, + "price": 0.045, + "spread": 0.91, + "volume": 217.0 + }, + { + "question": "Will the highest temperature in Tokyo be 20°C on April 20?", + "market_id": "2011239", + "range": [ + 20.0, + 20.0 + ], + "bid": 0.17, + "ask": 0.83, + "price": 0.17, + "spread": 0.66, + "volume": 77.0 + }, + { + "question": "Will the highest temperature in Tokyo be 21°C on April 20?", + "market_id": "2011240", + "range": [ + 21.0, + 21.0 + ], + "bid": 0.235, + "ask": 0.765, + "price": 0.235, + "spread": 0.53, + "volume": 59.0 + }, + { + "question": "Will the highest temperature in Tokyo be 22°C on April 20?", + "market_id": "2011241", + "range": [ + 22.0, + 22.0 + ], + "bid": 0.345, + "ask": 0.655, + "price": 0.345, + "spread": 0.31, + "volume": 109.0 + }, + { + "question": "Will the highest temperature in Tokyo be 23°C on April 20?", + "market_id": "2011242", + "range": [ + 23.0, + 23.0 + ], + "bid": 0.215, + "ask": 0.785, + "price": 0.215, + "spread": 0.57, + "volume": 111.0 + }, + { + "question": "Will the highest temperature in Tokyo be 24°C or higher on April 20?", + "market_id": "2011243", + "range": [ + 24.0, + 999.0 + ], + "bid": 0.13, + "ask": 0.87, + "price": 0.13, + "spread": 0.74, + "volume": 352.0 + } + ], + "created_at": "2026-04-18T06:34:25.258606+00:00" +} \ No newline at end of file diff --git a/data/markets/toronto_2026-04-18.json b/data/markets/toronto_2026-04-18.json new file mode 100644 index 0000000..92cd118 --- /dev/null +++ b/data/markets/toronto_2026-04-18.json @@ -0,0 +1,179 @@ +{ + "city": "toronto", + "city_name": "Toronto", + "date": "2026-04-18", + "unit": "C", + "station": "CYYZ", + "event_end_date": "2026-04-18T12:00:00Z", + "hours_at_discovery": 5.4, + "status": "open", + "position": null, + "actual_temp": null, + "resolved_outcome": null, + "pnl": null, + "forecast_snapshots": [ + { + "ts": "2026-04-18T06:34:39.006007+00:00", + "horizon": "D+0", + "hours_left": 5.4, + "ecmwf": 17.8, + "hrrr": null, + "metar": 9.0, + "best": 17.8, + "best_source": "ecmwf" + } + ], + "market_snapshots": [ + { + "ts": "2026-04-18T06:34:39.006007+00:00", + "top_bucket": "18.0-18.0C", + "top_price": 0.265 + } + ], + "all_outcomes": [ + { + "question": "Will the highest temperature in Toronto be 11°C or below on April 18?", + "market_id": "1996344", + "range": [ + -999.0, + 11.0 + ], + "bid": 0.002, + "ask": 0.998, + "price": 0.002, + "spread": 0.996, + "volume": 8807.0 + }, + { + "question": "Will the highest temperature in Toronto be 12°C on April 18?", + "market_id": "1996345", + "range": [ + 12.0, + 12.0 + ], + "bid": 0.0015, + "ask": 0.9985, + "price": 0.0015, + "spread": 0.997, + "volume": 3129.0 + }, + { + "question": "Will the highest temperature in Toronto be 13°C on April 18?", + "market_id": "1996346", + "range": [ + 13.0, + 13.0 + ], + "bid": 0.0015, + "ask": 0.9985, + "price": 0.0015, + "spread": 0.997, + "volume": 2080.0 + }, + { + "question": "Will the highest temperature in Toronto be 14°C on April 18?", + "market_id": "1996347", + "range": [ + 14.0, + 14.0 + ], + "bid": 0.0055, + "ask": 0.9945, + "price": 0.0055, + "spread": 0.989, + "volume": 3974.0 + }, + { + "question": "Will the highest temperature in Toronto be 15°C on April 18?", + "market_id": "1996348", + "range": [ + 15.0, + 15.0 + ], + "bid": 0.0105, + "ask": 0.9895, + "price": 0.0105, + "spread": 0.979, + "volume": 3547.0 + }, + { + "question": "Will the highest temperature in Toronto be 16°C on April 18?", + "market_id": "1996349", + "range": [ + 16.0, + 16.0 + ], + "bid": 0.0935, + "ask": 0.9065, + "price": 0.0935, + "spread": 0.813, + "volume": 4480.0 + }, + { + "question": "Will the highest temperature in Toronto be 17°C on April 18?", + "market_id": "1996350", + "range": [ + 17.0, + 17.0 + ], + "bid": 0.215, + "ask": 0.785, + "price": 0.215, + "spread": 0.57, + "volume": 3899.0 + }, + { + "question": "Will the highest temperature in Toronto be 18°C on April 18?", + "market_id": "1996351", + "range": [ + 18.0, + 18.0 + ], + "bid": 0.265, + "ask": 0.735, + "price": 0.265, + "spread": 0.47, + "volume": 3999.0 + }, + { + "question": "Will the highest temperature in Toronto be 19°C on April 18?", + "market_id": "1996352", + "range": [ + 19.0, + 19.0 + ], + "bid": 0.245, + "ask": 0.755, + "price": 0.245, + "spread": 0.51, + "volume": 2029.0 + }, + { + "question": "Will the highest temperature in Toronto be 20°C on April 18?", + "market_id": "1996353", + "range": [ + 20.0, + 20.0 + ], + "bid": 0.051, + "ask": 0.949, + "price": 0.051, + "spread": 0.898, + "volume": 3971.0 + }, + { + "question": "Will the highest temperature in Toronto be 21°C or higher on April 18?", + "market_id": "1996354", + "range": [ + 21.0, + 999.0 + ], + "bid": 0.0235, + "ask": 0.9765, + "price": 0.0235, + "spread": 0.953, + "volume": 5106.0 + } + ], + "created_at": "2026-04-18T06:34:41.044833+00:00" +} \ No newline at end of file diff --git a/data/markets/toronto_2026-04-19.json b/data/markets/toronto_2026-04-19.json new file mode 100644 index 0000000..3cf1735 --- /dev/null +++ b/data/markets/toronto_2026-04-19.json @@ -0,0 +1,179 @@ +{ + "city": "toronto", + "city_name": "Toronto", + "date": "2026-04-19", + "unit": "C", + "station": "CYYZ", + "event_end_date": "2026-04-19T12:00:00Z", + "hours_at_discovery": 29.4, + "status": "open", + "position": null, + "actual_temp": null, + "resolved_outcome": null, + "pnl": null, + "forecast_snapshots": [ + { + "ts": "2026-04-18T06:34:39.006007+00:00", + "horizon": "D+1", + "hours_left": 29.4, + "ecmwf": 7.6, + "hrrr": null, + "metar": null, + "best": 7.6, + "best_source": "ecmwf" + } + ], + "market_snapshots": [ + { + "ts": "2026-04-18T06:34:39.006007+00:00", + "top_bucket": "8.0-8.0C", + "top_price": 0.325 + } + ], + "all_outcomes": [ + { + "question": "Will the highest temperature in Toronto be 0°C or below on April 19?", + "market_id": "2003689", + "range": [ + -999.0, + 0.0 + ], + "bid": 0.0035, + "ask": 0.9965, + "price": 0.0035, + "spread": 0.993, + "volume": 1569.0 + }, + { + "question": "Will the highest temperature in Toronto be 1°C on April 19?", + "market_id": "2003690", + "range": [ + 1.0, + 1.0 + ], + "bid": 0.0025, + "ask": 0.9975, + "price": 0.0025, + "spread": 0.995, + "volume": 1094.0 + }, + { + "question": "Will the highest temperature in Toronto be 2°C on April 19?", + "market_id": "2003691", + "range": [ + 2.0, + 2.0 + ], + "bid": 0.004, + "ask": 0.996, + "price": 0.004, + "spread": 0.992, + "volume": 1114.0 + }, + { + "question": "Will the highest temperature in Toronto be 3°C on April 19?", + "market_id": "2003692", + "range": [ + 3.0, + 3.0 + ], + "bid": 0.0025, + "ask": 0.9975, + "price": 0.0025, + "spread": 0.995, + "volume": 1174.0 + }, + { + "question": "Will the highest temperature in Toronto be 4°C on April 19?", + "market_id": "2003693", + "range": [ + 4.0, + 4.0 + ], + "bid": 0.0135, + "ask": 0.9865, + "price": 0.0135, + "spread": 0.973, + "volume": 738.0 + }, + { + "question": "Will the highest temperature in Toronto be 5°C on April 19?", + "market_id": "2003694", + "range": [ + 5.0, + 5.0 + ], + "bid": 0.029, + "ask": 0.971, + "price": 0.029, + "spread": 0.942, + "volume": 876.0 + }, + { + "question": "Will the highest temperature in Toronto be 6°C on April 19?", + "market_id": "2003695", + "range": [ + 6.0, + 6.0 + ], + "bid": 0.155, + "ask": 0.845, + "price": 0.155, + "spread": 0.69, + "volume": 1043.0 + }, + { + "question": "Will the highest temperature in Toronto be 7°C on April 19?", + "market_id": "2003696", + "range": [ + 7.0, + 7.0 + ], + "bid": 0.265, + "ask": 0.735, + "price": 0.265, + "spread": 0.47, + "volume": 611.0 + }, + { + "question": "Will the highest temperature in Toronto be 8°C on April 19?", + "market_id": "2003697", + "range": [ + 8.0, + 8.0 + ], + "bid": 0.325, + "ask": 0.675, + "price": 0.325, + "spread": 0.35, + "volume": 913.0 + }, + { + "question": "Will the highest temperature in Toronto be 9°C on April 19?", + "market_id": "2003698", + "range": [ + 9.0, + 9.0 + ], + "bid": 0.125, + "ask": 0.875, + "price": 0.125, + "spread": 0.75, + "volume": 638.0 + }, + { + "question": "Will the highest temperature in Toronto be 10°C or higher on April 19?", + "market_id": "2003699", + "range": [ + 10.0, + 999.0 + ], + "bid": 0.125, + "ask": 0.875, + "price": 0.125, + "spread": 0.75, + "volume": 1485.0 + } + ], + "created_at": "2026-04-18T06:34:41.520483+00:00" +} \ No newline at end of file diff --git a/data/markets/toronto_2026-04-20.json b/data/markets/toronto_2026-04-20.json new file mode 100644 index 0000000..183d544 --- /dev/null +++ b/data/markets/toronto_2026-04-20.json @@ -0,0 +1,179 @@ +{ + "city": "toronto", + "city_name": "Toronto", + "date": "2026-04-20", + "unit": "C", + "station": "CYYZ", + "event_end_date": "2026-04-20T12:00:00Z", + "hours_at_discovery": 53.4, + "status": "open", + "position": null, + "actual_temp": null, + "resolved_outcome": null, + "pnl": null, + "forecast_snapshots": [ + { + "ts": "2026-04-18T06:34:39.006007+00:00", + "horizon": "D+2", + "hours_left": 53.4, + "ecmwf": 3.0, + "hrrr": null, + "metar": null, + "best": 3.0, + "best_source": "ecmwf" + } + ], + "market_snapshots": [ + { + "ts": "2026-04-18T06:34:39.006007+00:00", + "top_bucket": "4.0-4.0C", + "top_price": 0.205 + } + ], + "all_outcomes": [ + { + "question": "Will the highest temperature in Toronto be 1°C or below on April 20?", + "market_id": "2011101", + "range": [ + -999.0, + 1.0 + ], + "bid": 0.07, + "ask": 0.93, + "price": 0.07, + "spread": 0.86, + "volume": 5.0 + }, + { + "question": "Will the highest temperature in Toronto be 2°C on April 20?", + "market_id": "2011102", + "range": [ + 2.0, + 2.0 + ], + "bid": 0.12, + "ask": 0.88, + "price": 0.12, + "spread": 0.76, + "volume": 0.0 + }, + { + "question": "Will the highest temperature in Toronto be 3°C on April 20?", + "market_id": "2011103", + "range": [ + 3.0, + 3.0 + ], + "bid": 0.165, + "ask": 0.835, + "price": 0.165, + "spread": 0.67, + "volume": 20.0 + }, + { + "question": "Will the highest temperature in Toronto be 4°C on April 20?", + "market_id": "2011104", + "range": [ + 4.0, + 4.0 + ], + "bid": 0.205, + "ask": 0.795, + "price": 0.205, + "spread": 0.59, + "volume": 0.0 + }, + { + "question": "Will the highest temperature in Toronto be 5°C on April 20?", + "market_id": "2011105", + "range": [ + 5.0, + 5.0 + ], + "bid": 0.15, + "ask": 0.85, + "price": 0.15, + "spread": 0.7, + "volume": 0.0 + }, + { + "question": "Will the highest temperature in Toronto be 6°C on April 20?", + "market_id": "2011106", + "range": [ + 6.0, + 6.0 + ], + "bid": 0.095, + "ask": 0.905, + "price": 0.095, + "spread": 0.81, + "volume": 90.0 + }, + { + "question": "Will the highest temperature in Toronto be 7°C on April 20?", + "market_id": "2011107", + "range": [ + 7.0, + 7.0 + ], + "bid": 0.13, + "ask": 0.87, + "price": 0.13, + "spread": 0.74, + "volume": 123.0 + }, + { + "question": "Will the highest temperature in Toronto be 8°C on April 20?", + "market_id": "2011108", + "range": [ + 8.0, + 8.0 + ], + "bid": 0.1, + "ask": 0.9, + "price": 0.1, + "spread": 0.8, + "volume": 63.0 + }, + { + "question": "Will the highest temperature in Toronto be 9°C on April 20?", + "market_id": "2011109", + "range": [ + 9.0, + 9.0 + ], + "bid": 0.095, + "ask": 0.905, + "price": 0.095, + "spread": 0.81, + "volume": 30.0 + }, + { + "question": "Will the highest temperature in Toronto be 10°C on April 20?", + "market_id": "2011110", + "range": [ + 10.0, + 10.0 + ], + "bid": 0.0205, + "ask": 0.9795, + "price": 0.0205, + "spread": 0.959, + "volume": 209.0 + }, + { + "question": "Will the highest temperature in Toronto be 11°C or higher on April 20?", + "market_id": "2011111", + "range": [ + 11.0, + 999.0 + ], + "bid": 0.008, + "ask": 0.992, + "price": 0.008, + "spread": 0.984, + "volume": 600.0 + } + ], + "created_at": "2026-04-18T06:34:41.919838+00:00" +} \ No newline at end of file diff --git a/data/markets/wellington_2026-04-18.json b/data/markets/wellington_2026-04-18.json new file mode 100644 index 0000000..65e021a --- /dev/null +++ b/data/markets/wellington_2026-04-18.json @@ -0,0 +1,179 @@ +{ + "city": "wellington", + "city_name": "Wellington", + "date": "2026-04-18", + "unit": "C", + "station": "NZWN", + "event_end_date": "2026-04-18T12:00:00Z", + "hours_at_discovery": 5.4, + "status": "open", + "position": null, + "actual_temp": null, + "resolved_outcome": null, + "pnl": null, + "forecast_snapshots": [ + { + "ts": "2026-04-18T06:34:48.896577+00:00", + "horizon": "D+0", + "hours_left": 5.4, + "ecmwf": 16.1, + "hrrr": null, + "metar": 15.0, + "best": 16.1, + "best_source": "ecmwf" + } + ], + "market_snapshots": [ + { + "ts": "2026-04-18T06:34:48.896577+00:00", + "top_bucket": "18.0-18.0C", + "top_price": 0.9975 + } + ], + "all_outcomes": [ + { + "question": "Will the highest temperature in Wellington be 11°C or below on April 18?", + "market_id": "1996433", + "range": [ + -999.0, + 11.0 + ], + "bid": 0.0, + "ask": 1.0, + "price": 0.0, + "spread": 1.0, + "volume": 8770.0 + }, + { + "question": "Will the highest temperature in Wellington be 12°C on April 18?", + "market_id": "1996434", + "range": [ + 12.0, + 12.0 + ], + "bid": 0.0, + "ask": 1.0, + "price": 0.0, + "spread": 1.0, + "volume": 5930.0 + }, + { + "question": "Will the highest temperature in Wellington be 13°C on April 18?", + "market_id": "1996435", + "range": [ + 13.0, + 13.0 + ], + "bid": 0.0, + "ask": 1.0, + "price": 0.0, + "spread": 1.0, + "volume": 22294.0 + }, + { + "question": "Will the highest temperature in Wellington be 14°C on April 18?", + "market_id": "1996436", + "range": [ + 14.0, + 14.0 + ], + "bid": 0.0, + "ask": 1.0, + "price": 0.0, + "spread": 1.0, + "volume": 7013.0 + }, + { + "question": "Will the highest temperature in Wellington be 15°C on April 18?", + "market_id": "1996437", + "range": [ + 15.0, + 15.0 + ], + "bid": 0.0, + "ask": 1.0, + "price": 0.0, + "spread": 1.0, + "volume": 9707.0 + }, + { + "question": "Will the highest temperature in Wellington be 16°C on April 18?", + "market_id": "1996438", + "range": [ + 16.0, + 16.0 + ], + "bid": 0.0, + "ask": 1.0, + "price": 0.0, + "spread": 1.0, + "volume": 22976.0 + }, + { + "question": "Will the highest temperature in Wellington be 17°C on April 18?", + "market_id": "1996439", + "range": [ + 17.0, + 17.0 + ], + "bid": 0.0, + "ask": 1.0, + "price": 0.0, + "spread": 1.0, + "volume": 18034.0 + }, + { + "question": "Will the highest temperature in Wellington be 18°C on April 18?", + "market_id": "1996440", + "range": [ + 18.0, + 18.0 + ], + "bid": 0.9975, + "ask": 0.0025, + "price": 0.9975, + "spread": -0.995, + "volume": 15309.0 + }, + { + "question": "Will the highest temperature in Wellington be 19°C on April 18?", + "market_id": "1996441", + "range": [ + 19.0, + 19.0 + ], + "bid": 0.0015, + "ask": 0.9985, + "price": 0.0015, + "spread": 0.997, + "volume": 11653.0 + }, + { + "question": "Will the highest temperature in Wellington be 20°C on April 18?", + "market_id": "1996442", + "range": [ + 20.0, + 20.0 + ], + "bid": 0.0015, + "ask": 0.9985, + "price": 0.0015, + "spread": 0.997, + "volume": 7086.0 + }, + { + "question": "Will the highest temperature in Wellington be 21°C or higher on April 18?", + "market_id": "1996443", + "range": [ + 21.0, + 999.0 + ], + "bid": 0.0005, + "ask": 0.9995, + "price": 0.0005, + "spread": 0.999, + "volume": 5960.0 + } + ], + "created_at": "2026-04-18T06:34:51.093871+00:00" +} \ No newline at end of file diff --git a/data/markets/wellington_2026-04-19.json b/data/markets/wellington_2026-04-19.json new file mode 100644 index 0000000..9606af9 --- /dev/null +++ b/data/markets/wellington_2026-04-19.json @@ -0,0 +1,179 @@ +{ + "city": "wellington", + "city_name": "Wellington", + "date": "2026-04-19", + "unit": "C", + "station": "NZWN", + "event_end_date": "2026-04-19T12:00:00Z", + "hours_at_discovery": 29.4, + "status": "open", + "position": null, + "actual_temp": null, + "resolved_outcome": null, + "pnl": null, + "forecast_snapshots": [ + { + "ts": "2026-04-18T06:34:48.896577+00:00", + "horizon": "D+1", + "hours_left": 29.4, + "ecmwf": 16.5, + "hrrr": null, + "metar": null, + "best": 16.5, + "best_source": "ecmwf" + } + ], + "market_snapshots": [ + { + "ts": "2026-04-18T06:34:48.896577+00:00", + "top_bucket": "18.0-18.0C", + "top_price": 0.455 + } + ], + "all_outcomes": [ + { + "question": "Will the highest temperature in Wellington be 11°C or below on April 19?", + "market_id": "2003777", + "range": [ + -999.0, + 11.0 + ], + "bid": 0.0005, + "ask": 0.9995, + "price": 0.0005, + "spread": 0.999, + "volume": 3310.0 + }, + { + "question": "Will the highest temperature in Wellington be 12°C on April 19?", + "market_id": "2003778", + "range": [ + 12.0, + 12.0 + ], + "bid": 0.001, + "ask": 0.999, + "price": 0.001, + "spread": 0.998, + "volume": 3379.0 + }, + { + "question": "Will the highest temperature in Wellington be 13°C on April 19?", + "market_id": "2003779", + "range": [ + 13.0, + 13.0 + ], + "bid": 0.0025, + "ask": 0.9975, + "price": 0.0025, + "spread": 0.995, + "volume": 1378.0 + }, + { + "question": "Will the highest temperature in Wellington be 14°C on April 19?", + "market_id": "2003780", + "range": [ + 14.0, + 14.0 + ], + "bid": 0.0055, + "ask": 0.9945, + "price": 0.0055, + "spread": 0.989, + "volume": 886.0 + }, + { + "question": "Will the highest temperature in Wellington be 15°C on April 19?", + "market_id": "2003781", + "range": [ + 15.0, + 15.0 + ], + "bid": 0.015, + "ask": 0.985, + "price": 0.015, + "spread": 0.97, + "volume": 1971.0 + }, + { + "question": "Will the highest temperature in Wellington be 16°C on April 19?", + "market_id": "2003782", + "range": [ + 16.0, + 16.0 + ], + "bid": 0.095, + "ask": 0.905, + "price": 0.095, + "spread": 0.81, + "volume": 4786.0 + }, + { + "question": "Will the highest temperature in Wellington be 17°C on April 19?", + "market_id": "2003783", + "range": [ + 17.0, + 17.0 + ], + "bid": 0.22, + "ask": 0.78, + "price": 0.22, + "spread": 0.56, + "volume": 3839.0 + }, + { + "question": "Will the highest temperature in Wellington be 18°C on April 19?", + "market_id": "2003784", + "range": [ + 18.0, + 18.0 + ], + "bid": 0.455, + "ask": 0.545, + "price": 0.455, + "spread": 0.09, + "volume": 1109.0 + }, + { + "question": "Will the highest temperature in Wellington be 19°C on April 19?", + "market_id": "2003785", + "range": [ + 19.0, + 19.0 + ], + "bid": 0.125, + "ask": 0.875, + "price": 0.125, + "spread": 0.75, + "volume": 2433.0 + }, + { + "question": "Will the highest temperature in Wellington be 20°C on April 19?", + "market_id": "2003786", + "range": [ + 20.0, + 20.0 + ], + "bid": 0.0145, + "ask": 0.9855, + "price": 0.0145, + "spread": 0.971, + "volume": 891.0 + }, + { + "question": "Will the highest temperature in Wellington be 21°C or higher on April 19?", + "market_id": "2003787", + "range": [ + 21.0, + 999.0 + ], + "bid": 0.009, + "ask": 0.991, + "price": 0.009, + "spread": 0.982, + "volume": 994.0 + } + ], + "created_at": "2026-04-18T06:34:51.516723+00:00" +} \ No newline at end of file diff --git a/data/markets/wellington_2026-04-20.json b/data/markets/wellington_2026-04-20.json new file mode 100644 index 0000000..d1d01a4 --- /dev/null +++ b/data/markets/wellington_2026-04-20.json @@ -0,0 +1,179 @@ +{ + "city": "wellington", + "city_name": "Wellington", + "date": "2026-04-20", + "unit": "C", + "station": "NZWN", + "event_end_date": "2026-04-20T12:00:00Z", + "hours_at_discovery": 53.4, + "status": "open", + "position": null, + "actual_temp": null, + "resolved_outcome": null, + "pnl": null, + "forecast_snapshots": [ + { + "ts": "2026-04-18T06:34:48.896577+00:00", + "horizon": "D+2", + "hours_left": 53.4, + "ecmwf": 14.5, + "hrrr": null, + "metar": null, + "best": 14.5, + "best_source": "ecmwf" + } + ], + "market_snapshots": [ + { + "ts": "2026-04-18T06:34:48.896577+00:00", + "top_bucket": "16.0-16.0C", + "top_price": 0.31 + } + ], + "all_outcomes": [ + { + "question": "Will the highest temperature in Wellington be 9°C or below on April 20?", + "market_id": "2011189", + "range": [ + -999.0, + 9.0 + ], + "bid": 0.0055, + "ask": 0.9945, + "price": 0.0055, + "spread": 0.989, + "volume": 199.0 + }, + { + "question": "Will the highest temperature in Wellington be 10°C on April 20?", + "market_id": "2011190", + "range": [ + 10.0, + 10.0 + ], + "bid": 0.0115, + "ask": 0.9885, + "price": 0.0115, + "spread": 0.977, + "volume": 65.0 + }, + { + "question": "Will the highest temperature in Wellington be 11°C on April 20?", + "market_id": "2011191", + "range": [ + 11.0, + 11.0 + ], + "bid": 0.0195, + "ask": 0.9805, + "price": 0.0195, + "spread": 0.961, + "volume": 46.0 + }, + { + "question": "Will the highest temperature in Wellington be 12°C on April 20?", + "market_id": "2011192", + "range": [ + 12.0, + 12.0 + ], + "bid": 0.055, + "ask": 0.945, + "price": 0.055, + "spread": 0.89, + "volume": 108.0 + }, + { + "question": "Will the highest temperature in Wellington be 13°C on April 20?", + "market_id": "2011193", + "range": [ + 13.0, + 13.0 + ], + "bid": 0.07, + "ask": 0.93, + "price": 0.07, + "spread": 0.86, + "volume": 218.0 + }, + { + "question": "Will the highest temperature in Wellington be 14°C on April 20?", + "market_id": "2011194", + "range": [ + 14.0, + 14.0 + ], + "bid": 0.19, + "ask": 0.81, + "price": 0.19, + "spread": 0.62, + "volume": 115.0 + }, + { + "question": "Will the highest temperature in Wellington be 15°C on April 20?", + "market_id": "2011195", + "range": [ + 15.0, + 15.0 + ], + "bid": 0.3, + "ask": 0.7, + "price": 0.3, + "spread": 0.4, + "volume": 0.0 + }, + { + "question": "Will the highest temperature in Wellington be 16°C on April 20?", + "market_id": "2011196", + "range": [ + 16.0, + 16.0 + ], + "bid": 0.31, + "ask": 0.69, + "price": 0.31, + "spread": 0.38, + "volume": 0.0 + }, + { + "question": "Will the highest temperature in Wellington be 17°C on April 20?", + "market_id": "2011197", + "range": [ + 17.0, + 17.0 + ], + "bid": 0.16, + "ask": 0.84, + "price": 0.16, + "spread": 0.68, + "volume": 220.0 + }, + { + "question": "Will the highest temperature in Wellington be 18°C on April 20?", + "market_id": "2011198", + "range": [ + 18.0, + 18.0 + ], + "bid": 0.1, + "ask": 0.9, + "price": 0.1, + "spread": 0.8, + "volume": 594.0 + }, + { + "question": "Will the highest temperature in Wellington be 19°C or higher on April 20?", + "market_id": "2011199", + "range": [ + 19.0, + 999.0 + ], + "bid": 0.065, + "ask": 0.935, + "price": 0.065, + "spread": 0.87, + "volume": 319.0 + } + ], + "created_at": "2026-04-18T06:34:51.934237+00:00" +} \ No newline at end of file diff --git a/data/state.json b/data/state.json new file mode 100644 index 0000000..a13907a --- /dev/null +++ b/data/state.json @@ -0,0 +1,8 @@ +{ + "balance": 0.0, + "starting_balance": 0.0, + "total_trades": 0, + "wins": 0, + "losses": 0, + "peak_balance": 0.0 +} \ No newline at end of file diff --git a/data/state_v3.json b/data/state_v3.json new file mode 100644 index 0000000..e3e584c --- /dev/null +++ b/data/state_v3.json @@ -0,0 +1,8 @@ +{ + "balance": 0.0, + "starting_balance": 0.0, + "total_trades": 0, + "wins": 0, + "losses": 0, + "open_orders": {} +} \ No newline at end of file diff --git a/pip_tmp/pip.whl b/pip_tmp/pip.whl new file mode 100644 index 0000000..2a8ea7c --- /dev/null +++ b/pip_tmp/pip.whl @@ -0,0 +1,2 @@ + +NoSuchKeyThe specified key does not exist.packages/ef/73/5787c3a315a098dbe7c3ee47b46ff19e7e0a3ae3bdf972e2a8774e25cfdb/pip-25.3-py3-none-any.whl3MXPPFH42HJHB3H97mQItP4XE8m4ykd5xXTs3fi4hYVjnAY7z17oG7HhzC0vnEmc3eDmDYbQGRqc2xdNIup+QYpx35I8Cq2Tr90Y/yZA6da67Iv4 \ No newline at end of file diff --git a/simulation.json b/simulation.json new file mode 100644 index 0000000..cf6a0c4 --- /dev/null +++ b/simulation.json @@ -0,0 +1,102 @@ +{ + "balance": 773.78, + "starting_balance": 1000.0, + "positions": { + "1996421": { + "question": "Will the highest temperature in Chicago be 72\u00b0F or higher on April 18?", + "entry_price": 0.0015, + "shares": 33333.333333333336, + "cost": 50.0, + "date": "2026-04-18", + "location": "chicago", + "forecast_temp": 72, + "opened_at": "2026-04-18T14:23:29.466959" + }, + "1996383": { + "question": "Will the highest temperature in Dallas be between 78-79\u00b0F on April 18?", + "entry_price": 0.004, + "shares": 11875.0, + "cost": 47.5, + "date": "2026-04-18", + "location": "dallas", + "forecast_temp": 79, + "opened_at": "2026-04-18T14:23:33.764294" + }, + "2003724": { + "question": "Will the highest temperature in Dallas be between 74-75\u00b0F on April 19?", + "entry_price": 0.135, + "shares": 334.2222222222222, + "cost": 45.12, + "date": "2026-04-19", + "location": "dallas", + "forecast_temp": 74, + "opened_at": "2026-04-18T14:23:34.044806" + }, + "1996370": { + "question": "Will the highest temperature in New York City be between 60-61\u00b0F on April 18?", + "entry_price": 0.0665, + "shares": 644.6616541353383, + "cost": 42.87, + "date": "2026-04-18", + "location": "nyc", + "forecast_temp": 61, + "opened_at": "2026-04-18T15:24:30.052281" + }, + "2011148": { + "question": "Will the highest temperature in Atlanta be between 74-75\u00b0F on April 20?", + "entry_price": 0.13, + "shares": 313.30769230769226, + "cost": 40.73, + "date": "2026-04-20", + "location": "atlanta", + "forecast_temp": 75, + "opened_at": "2026-04-18T15:24:39.504776" + } + }, + "trades": [ + { + "type": "entry", + "question": "Will the highest temperature in Chicago be 72\u00b0F or higher on April 18?", + "entry_price": 0.0015, + "shares": 33333.333333333336, + "cost": 50.0, + "opened_at": "2026-04-18T14:23:29.466992" + }, + { + "type": "entry", + "question": "Will the highest temperature in Dallas be between 78-79\u00b0F on April 18?", + "entry_price": 0.004, + "shares": 11875.0, + "cost": 47.5, + "opened_at": "2026-04-18T14:23:33.764318" + }, + { + "type": "entry", + "question": "Will the highest temperature in Dallas be between 74-75\u00b0F on April 19?", + "entry_price": 0.135, + "shares": 334.2222222222222, + "cost": 45.12, + "opened_at": "2026-04-18T14:23:34.044860" + }, + { + "type": "entry", + "question": "Will the highest temperature in New York City be between 60-61\u00b0F on April 18?", + "entry_price": 0.0665, + "shares": 644.6616541353383, + "cost": 42.87, + "opened_at": "2026-04-18T15:24:30.052404" + }, + { + "type": "entry", + "question": "Will the highest temperature in Atlanta be between 74-75\u00b0F on April 20?", + "entry_price": 0.13, + "shares": 313.30769230769226, + "cost": 40.73, + "opened_at": "2026-04-18T15:24:39.504798" + } + ], + "total_trades": 5, + "wins": 0, + "losses": 0, + "peak_balance": 1000.0 +} \ No newline at end of file