π¨π Global One SI - Prompt
NASA FIRMS needs one key. you register at firms.modaps.eosdis.nasa.gov , sign in with NASA Earthdata (yes, NASA gives you a free login β feel like an astronaut for 30 seconds), and grab your MAP_KEY. https://firms.modaps.eosdis.nasa.gov/api/map_key/
url = f"https://firms.modaps.eosdis.nasa.gov/api/area/csv/{API_KEY}/VIIRS_SNPP_NRT/{lon1},{lat1},{lon2},{lat2}/1" fires = len(r.text.strip().split('\n')) - 1
π¨π Global One SI - Prompt
NASA FIRMS needs one key. you register at firms.modaps.eosdis.nasa.gov , sign in with NASA Earthdata (yes, NASA gives you a free login β feel like an astronaut for 30 seconds), and grab your MAP_KEY. https://firms.modaps.eosdis.nasa.gov/api/map_key/
baseline = sum(last_14_days) / len(last_14_days) ratio = today_fires / max(baseline, 1) if ratio >= 3.0 and today_fires >= 5: signal = "ANOMALY"
π¨π Global One SI - Prompt
baseline = sum(last_14_days) / len(last_14_days) ratio = today_fires / max(baseline, 1) if ratio >= 3.0 and today_fires >= 5: signal = "ANOMALY"
the part where it gets interesting: anomaly detection
knowing what's happening NOW is useful but not tradeable. the edge comes from catching what's ABNORMAL.
the logic is embarrassingly simple. 14-day rolling average for each region. if today's fire count exceeds 3x the baseline β that's an anomaly.
knowing what's happening NOW is useful but not tradeable. the edge comes from catching what's ABNORMAL.
the logic is embarrassingly simple. 14-day rolling average for each region. if today's fire count exceeds 3x the baseline β that's an anomaly.
π¨π Global One SI - Prompt
Photo
def dynamic_kelly(ratio, max_frp, confirming_sources): if ratio >= 10: base = 0.20 elif ratio >= 5: base = 0.15 elif ratio >= 3: base = 0.10 else: base = 0.02 if max_frp >= 50: base *= 1.5 # high fire power = military if confirming_sources >= 6: base *= 2.5 # everything is screaming elif confirming_sources <= 1: base *= 0.3 # just one source? tiny bet return min(base, 0.40)
π¨π Global One SI - Prompt
Photo
PROMPT = """ you receive real-time data from NASA satellites, aircraft trackers, and sentiment indicators. for each active Polymarket contract, estimate the TRUE probability based on ALL data signals. compare to market price. identify edges > 8%. respond with: contract, market price, your estimate, edge, signal (BUY_YES / BUY_NO / SKIP), confidence, kelly fraction, reasoning. """
π¨π Global One SI - Prompt
PROMPT = """ you receive real-time data from NASA satellites, aircraft trackers, and sentiment indicators. for each active Polymarket contract, estimate the TRUE probability based on ALL data signals. compare to market price. identify edges > 8%. respond with:β¦
the Claude prompt that ties it all together
the bot detects an anomaly. fires are spiking. VIX is up. gold is moving.
now what? which Polymarket contract do you buy?
this is where Claude comes in. it gets the entire data feed β all 10 sources β and makes the call:
the bot detects an anomaly. fires are spiking. VIX is up. gold is moving.
now what? which Polymarket contract do you buy?
this is where Claude comes in. it gets the entire data feed β all 10 sources β and makes the call:
π¨π Global One SI - Prompt
the Claude prompt that ties it all together the bot detects an anomaly. fires are spiking. VIX is up. gold is moving. now what? which Polymarket contract do you buy? this is where Claude comes in. it gets the entire data feed β all 10 sources β and makes theβ¦
Claude cross-references everything. FIRMS anomaly in the Persian Gulf + gold spiking + VIX above 30 + Polymarket "Iran strike" contract at $0.22? Claude estimates $0.35. edge: +13 cents. signal: BUY_YES.
it outputs one clean JSON. no ambiguity. the bot either trades or skips.
is Claude perfect? no. it's an LLM, not an intelligence analyst with classified satellite imagery. but it gets the direction right about 70% of the time. and with Kelly sizing, 70% directional accuracy is more than enough for positive EV.
it outputs one clean JSON. no ambiguity. the bot either trades or skips.
is Claude perfect? no. it's an LLM, not an intelligence analyst with classified satellite imagery. but it gets the direction right about 70% of the time. and with Kelly sizing, 70% directional accuracy is more than enough for positive EV.
π¨π Global One SI - Prompt
Photo
from py_clob_client.client import ClobClient from py_clob_client.clob_types import OrderArgs client = ClobClient( "https://clob.polymarket.com", key=private_key, chain_id=137, ) order = OrderArgs( price=signal['market_price'], size=shares, side="BUY", token_id=token_id, ) client.post_order(client.create_order(order))
π¨π Global One SI - Prompt
from py_clob_client.client import ClobClient from py_clob_client.clob_types import OrderArgs client = ClobClient( "https://clob.polymarket.com", key=private_key, chain_id=137, ) order = OrderArgs( price=signal['market_price'], size=shares, side="BUY", token_id=token_idβ¦
auto-execution: from signal to Polymarket in 3 seconds
once Claude says "BUY" β the bot doesn't wait for me.
py-clob-client (Polymarket's official Python library) handles the execution:
once Claude says "BUY" β the bot doesn't wait for me.
py-clob-client (Polymarket's official Python library) handles the execution:
π¨π Global One SI - Prompt
Photo
π’ GEOPOLITICAL SIGNAL Signal: BUY_YES Contract: Military action against Iran Market: $0.22 Estimate: $0.35 Edge: +0.13 Confidence: MEDIUM Kelly: 15% Reasoning: FIRMS shows 10x fire anomaly in Persian Gulf. VIX confirms at 31.
π¨π Global One SI - Prompt
Photo
NASA FIRMS β fires detected OpenSky β aircraft counted USGS β earthquakes logged VIX + Gold + Crypto β sentiment measured β Claude analyzes all data β "BUY YES on Iran contract, Kelly 15%" β py-clob-client places order β Telegram: "π’ SIGNAL: BUY_YES"
π¨π Global One SI - Prompt
NASA FIRMS β fires detected OpenSky β aircraft counted USGS β earthquakes logged VIX + Gold + Crypto β sentiment measured β Claude analyzes all data β "BUY YES on Iran contract, Kelly 15%" β py-clob-client places order β Telegram: "π’ SIGNAL: BUY_YES"
the full pipeline in one picture
one command:
i run it every 15 minutes via Task Scheduler. you could use cron on Mac/Linux. the entire cycle takes about 40 seconds.
one command:
python geo_run.pyi run it every 15 minutes via Task Scheduler. you could use cron on Mac/Linux. the entire cycle takes about 40 seconds.
π¨π Global One SI - Prompt
Photo
from dry-run to real trading
by default the bot runs in dry-run mode. it shows you what it WOULD trade β the contract, the price, the position size β without touching your wallet. when you're ready to go live, you need 3 things: 1. a Polygon wallet with USDC (this is what Polymarket uses for settlement) 2. Polymarket API keys (Settings > API Keys on
polymarket.com
) 3. your wallet's private key (export from MetaMask or whatever you use) put them in your .env file:
by default the bot runs in dry-run mode. it shows you what it WOULD trade β the contract, the price, the position size β without touching your wallet. when you're ready to go live, you need 3 things: 1. a Polygon wallet with USDC (this is what Polymarket uses for settlement) 2. Polymarket API keys (Settings > API Keys on
polymarket.com
) 3. your wallet's private key (export from MetaMask or whatever you use) put them in your .env file:
π¨π Global One SI - Prompt
from dry-run to real trading by default the bot runs in dry-run mode. it shows you what it WOULD trade β the contract, the price, the position size β without touching your wallet. when you're ready to go live, you need 3 things: 1. a Polygon wallet with USDCβ¦
POLYMARKET_API_KEY=your_key POLYMARKET_SECRET=your_secret POLYMARKET_PASSPHRASE=your_passphrase POLYGON_PRIVATE_KEY=your_wallet_private_key
π¨π Global One SI - Prompt
python geo_run.py --live
then run with --live:
π¨π Global One SI - Prompt
Photo
git clone https://github.com/helicerat/geo-satellite-trader cp .env.example .env # add your NASA FIRMS key + Anthropic key pip install -r requirements.txt python geo_terminal.py # dashboard only python geo_backtest_v3.py # see the 22 historical signals python geo_run.py # full pipeline
π¨π Global One SI - Prompt
git clone https://github.com/helicerat/geo-satellite-trader cp .env.example .env # add your NASA FIRMS key + Anthropic key pip install -r requirements.txt python geo_terminal.py # dashboard only python geo_backtest_v3.py # see the 22 historical signals pythonβ¦
build it yourself
you need: Python, a NASA FIRMS key (free, 2 minutes), and an Anthropic API key for Claude.
total setup time if you're not brain-dead: 15 minutes.
you need: Python, a NASA FIRMS key (free, 2 minutes), and an Anthropic API key for Claude.
total setup time if you're not brain-dead: 15 minutes.
β1