Base Sepolia testnet · on-chain geopolitical trading
How NationStock works
NationStock is a trading game where the 32 most geopolitically significant nations in the world compete for a shared pool of WAR tokens. Real news drives AI agents that shift prices every 3 hours. You buy shares in nations gaining momentum — and sell before they lose it.
Think of it like this
Imagine a stock market where the only thing that moves prices is geopolitical news — wars, sanctions, elections, diplomatic crises. Every 3 hours, an AI reads the latest headlines and redistributes a shared pool of capital from countries with bad news to countries with good news.
You bet on which country will gain capital next. Buy early, profit from the AI-driven price move, and exit before sentiment turns. That's the whole game.
The 3-hour cycle
Every 3 hours, the system runs an automated pipeline. Here's exactly what happens:
News is collected
The system fetches the latest headlines from GDELT (a global event database) and 7 major RSS feeds — BBC, NYT, Al Jazeera, Reuters, The Guardian, DW, Sky News. It filters for geopolitically relevant events: military actions, sanctions, elections, diplomatic crises, economic shocks.
Claude scores each headline
Each headline is sent to Claude (Haiku model) which scores the impact on all 32 nations: −10 (devastating) to +10 (very positive). It also assigns a confidence score (0–1) and a market_risk rating. Only headlines with confidence ≥ 0.65 and a score impact ≥ 5 trigger any action.
Master agent forces the market to reflect reality
Without this step, a thin player base means prices don't move enough — correct bets go unrewarded. The master agent fixes this: it reads how much the market has already moved, then shifts WAR from losing nations to winning nations to cover any remaining gap. If prices already moved (humans did the work), it stays quiet. It never acts against the news direction — it only amplifies correct moves or holds.
WAR is reallocated — many-to-many
The master agent can drain multiple losing nations and distribute to multiple winning nations in a single cycle. Move size scales with the remaining gap between where the price is and where the news says it should be. Guardrails: 12% max per move, 15% daily cap per nation, 3 moves max per cycle. Every move is published on-chain with full reasoning.
32 country agents act as synthetic market participants
Each nation has its own AI agent funded by its treasury. These 32 agents are permanent synthetic players — they ensure the game has active participants even when human count is low. Each agent trades other nations to grow its treasury (profits get distributed as yield to shareholders). They amplify momentum where price lags, and hold when the market has already moved.
Prices shift — you profit or exit
Nations that received WAR see their bonding curve price rise. Nations that lost WAR see price fall. If you bought before the cycle, you can now sell into a higher price. If sentiment turned negative on a nation you hold, exit before the next cycle makes it worse.
How the AI actually decides
The agents don't mechanically buy on good news and sell on bad news. They reason about whether acting on the news is actually the smart trade — the same way a rational trader would. Crucially, they also act as market amplifiers: when price hasn't moved to match a real event, they push it there. The sections below show the full technical pipeline.
Before any trade, the agent asks four questions:
1. Is this news genuinely significant?
Claude scores confidence 0–1. Score below 0.65 or impact below ±5? No action. The system ignores noise — only high-confidence, high-impact events trigger moves.
2. Has the price already moved?
Each agent checks the 30-minute price delta vs what the news score implies it should be. If price is already where it should be, the agent holds — the market (human traders or earlier cycles) already did the work. If price is lagging, the agent amplifies.
3. Is this a crowded obvious trade?
Market risk rating: "high" means this is the obvious, widely-known trade — everyone is likely already positioned. Agents are less aggressive on high-risk events. "Low" risk means a surprising or niche signal — the stronger the amplification.
4. Would this trade go against the news direction?
Agents never trade against the signal. If positive news drove users to buy USA heavily and the agent thinks USA is overbought — it holds. It does not sell USA or punish correct human bets. The only choices are: amplify in the news direction, or stay quiet. Never reverse.
Decision matrix — what leads to each outcome
News fetching & scoring — how it really works
The AI doesn't just read headlines. Every story goes through article enrichment before scoring — because headlines are often vague or misleading. The article is where the actual substance lives.
News sources (fetched every 3 hours)
| GDELT | Global event monitoring — indexes every news source on earth, returns top geopolitical stories by keyword |
| BBC World | Broad international coverage, strong on UK / Europe / Middle East |
| Reuters World | Wire service — first to break diplomatic and market-moving events |
| New York Times | Deep geopolitical analysis, US foreign policy coverage |
| Al Jazeera | Strong Middle East, conflict zones, Global South coverage |
| The Guardian | Deep investigative pieces, climate + conflict intersection |
| Deutsche Welle | Europe-focused, particularly strong on Russia / Eastern Europe |
| Sky News | Fast-moving breaking news |
Why articles matter — not just headlines
Headline only: "Tensions rise in the Middle East"
→ Could mean anything. Score: maybe ±1–2. Low confidence. No meaningful action.
With article: "Iran's Revolutionary Guard seized a Panamanian-flagged oil tanker in the Strait of Hormuz — the third such seizure in 60 days. The US 5th Fleet is repositioning two destroyers. Crude prices jumped 4.2%..."
→ Now the scorer can assign: Iran −6 (isolation risk), US +3 (military posture), Israel −3 (regional escalation risk), Saudi Arabia −2 (shipping disruption). High confidence. Actionable.
Impact score scale — per country, per event
Confidence (0.0 – 1.0)
- ≥ 0.80 — Clear, verified, sourced with concrete detail
- 0.65 – 0.79 — Credible but incomplete; some uncertainty
- < 0.65 — Filtered out — no agent will act on this
Market risk — the contrarian signal
- low risk — Niche, surprising, under-reported. Agents act most aggressively.
- medium risk — Significant but not saturating coverage.
- high risk — Obvious, crowded trade. Agents are cautious.
The per-country impact reason — not just a number
For every affected nation the scorer writes a specific sentence explaining how this event impacts that particular country — using concrete details from the article. This reason flows all the way through to the agent decision and appears in the Intel Feed.
What the AI actually sees before deciding
Before the decision agent runs, the system builds a full context block for each of the 32 country agents. Each agent sees its treasury, current holdings, and up to 5 candidate nations — each with the complete scored news context, market positioning, and price data. This is the actual prompt structure:
AGENT 19 (Iran) treasury=842.50WAR holds=[United States(120WAR), Germany(88WAR)]
United States(1) [superpower]
net:+9 risk:low Δ30m:+1.2% dev:-43.8% mkt:+18.3% pool:142381WAR treas:45% held:YES
Event 1: [score:+5 | military | risk:low | conf:0.87]
Headline: "Iran's Revolutionary Guard seizes tanker in Strait of Hormuz"
Impact on United States: 5th Fleet repositioning demonstrates deterrence capacity;
strengthens US leverage in ongoing nuclear talks
Article: "Iran's Revolutionary Guard seized a Panamanian-flagged oil tanker in the
Strait of Hormuz on Wednesday, the third such seizure in 60 days. The US
5th Fleet is repositioning two destroyers in response..."
Event 2: [score:+4 | economic | risk:medium | conf:0.82]
Headline: "US Treasury announces new round of Iran oil sanctions"
Impact on United States: Demonstrates enforcement capacity; reinforces USD as
primary sanctions instrument globally
Article: "Treasury's OFAC division designated 14 entities and 9 vessels in the
latest tranche, targeting shadow fleet operators..."
Saudi Arabia(18) [major]
net:-4 risk:medium Δ30m:-1.8% dev:+18.2% mkt:+5.6% pool:72100WAR treas:52% held:NO
Event 1: [score:-4 | military | risk:medium | conf:0.87]
Headline: "Iran's Revolutionary Guard seizes tanker in Strait of Hormuz"
Impact on Saudi Arabia: Strait disruption threatens $2B/day in crude exports;
ARAMCO futures down 3.1% on Riyadh exchange
Article: "Iran's Revolutionary Guard seized a Panamanian-flagged oil tanker..."What each field means
Claude then returns a structured decision for each candidate — including 2–3 sentences of reasoning that must reference specific details from the article and market context, not just the score:
{
"countryId": 1,
"decision": "BUY",
"mode": "MOMENTUM_BUY",
"confidence": 0.88,
"reasoning": "Two compounding events both score strongly for the US. The tanker seizure
repositions 5th Fleet assets — a concrete diplomatic gain backed by article
detail. The new OFAC sanctions reinforce USD as the primary sanctions tool.
Price moved only +1.2% against an expected +45% from net:+9 — severely
unpriced. Market risk is low, meaning the market hasn't caught on yet.",
"keySignal": "Δ30m only +1.2% vs expected +45% on net:+9 — not priced in"
}This reasoning string is stored on-chain with every trade and shown in full in the Intel Feed — you can always see exactly what the AI was thinking and why.
Worked example — from news to on-chain trade
Let's trace one real event through the entire pipeline. Every step here corresponds to actual system behaviour.
Headline: "North Korea fires ICBM into Sea of Japan — longest flight time ever recorded"
Key facts extracted from the article body: "The Hwasong-18 solid-fuel ICBM flew for 74 minutes on a lofted trajectory before splashing down 1,002km off the Japanese coast. The US Indo-Pacific Command confirmed re-entry vehicle capability. Japan scrambled F-35s. South Korea convened an emergency NSC meeting."
Without this article text, the scorer would have very little to work with beyond the vague headline.
All 32 country agents receive the scored event. Each independently decides what to do with the context they see. Three examples from the same cycle:
"Hwasong-18 solid-fuel ICBM splashdown 1,002km off Japanese coast. Emergency NSC confirms worst-case trajectory. NK net:−8 exceeds −4 threshold; article confirms re-entry vehicle capability — not a drill. Exiting held position."
"South Korea net:−4. Emergency NSC session and KOSPI futures down 1.8% confirm regional contagion. Sell before the Peninsula risk premium fully prices in."
"US net:+3, dev:−43.8% (price barely moved despite strong score). Indo-Pacific Command response validates THAAD investment; article confirms 5th Fleet repositioning. Risk:low — market hasn't caught on yet."
All 32 agents run in parallel from the same scored data — each making independent calls based on what they hold and what the market hasn't priced in yet.
Transactions submitted to Base. The on-chain reason string is stored with each trade and appears in the Intel Feed:
Every trade in the Intel Feed has this full reasoning. You can always trace any price move back to the exact news event and the AI's logic.
Treasury & shareholder yield
Every nation has two separate WAR balances: Allocation (backs the bonding curve, sets price) and Treasury (funded by trade fees, used for yield and agent trading). Understanding this distinction is key.
Allocation — the price setter
The WAR pool that determines a nation's bonding curve position. More allocation = higher share price. This is what the master agent moves between nations each cycle.
Not directly available to spend — it lives inside the bonding curve contract.
Treasury — the fund
2.5% of every buy and sell on that nation flows here. This is the country agent's trading capital. A portion is also distributed to shareholders as yield each cycle.
Higher trading volume = larger treasury = more yield paid out.
Where your 7.5% fee goes
How yield reaches you
Volume happens in a nation (buys + sells). Each trade sends 2.5% to that nation's Treasury.
The country agent uses some treasury WAR to trade other nations — buying shares in nations with positive news signals, selling positions when signals turn negative.
After each 3-hour cycle, a portion of the treasury is distributed to all current shareholders, proportional to shares held.
You claim your yield — WAR in your wallet, without selling any shares.
Yield example — Germany
Setup: Germany has 200 WAR in its treasury from accumulated trade fees. The cycle runs, and 10% (20 WAR) is distributed as yield.
You hold: 500 of Germany's 2,000 total shares outstanding = 25% of supply.
You receive: 25% × 20 WAR = 5 WAR, claimable directly to your wallet.
Nations with heavy trading volume build larger treasuries faster — making them better yield payers. This creates an incentive to hold popular nations even when price isn't moving dramatically.
Fees & key numbers
Fee split on every trade
Key numbers
32
Nations
3h
AI cycle
7.5%
Total fee
2.5%
→ Treasury/yield
4
Nation tiers
15%
Daily move cap
Getting started
Connect your wallet
Use MetaMask or any EVM wallet. Switch to Base Sepolia testnet (Chain ID 84532). The app prompts you automatically.
Claim test WAR
WAR is the only currency. On testnet it's freely mintable from the faucet on the Markets page. Claim some — you'll need it to buy shares.
Find a signal on the Feed
Go to the Ops page. Look for nations receiving multiple agent BUYs, or a master reallocation recently fired in their favour. These nations have positive momentum heading into the next cycle.
Buy shares
Go to the nation's page. Buy shares using WAR. The bonding curve gives you an instant fill — no waiting for a counterparty. Early buyers get lower entry prices.
Watch the cycle and exit
The next 3-hour cycle fires, the AI redistributes WAR, and if your nation gains — price rises. Sell into the move. If sentiment is turning negative on your nation, exit before the next cycle drains it. Or hold for yield if the treasury is healthy.
Getting an edge
Buy before the cycle — not after
The bonding curve rewards early buyers. Once the master agent fires and price pops, buying in is chasing. Watch the Feed for nations building positive signals 30–60 minutes before the cycle. That's your entry window.
Look for low market-risk events
High-risk events (obvious, widely anticipated) are already priced in — the agents won't act hard on them. Surprising, niche events with low market risk are where agents act most aggressively. Watch for "market_risk: low" signals in the Feed reasoning.
Watch for agent consensus
The 32 country agents are independent — each makes its own call. When 5+ agents independently buy the same nation, that's a strong amplification signal: multiple synthetic participants have all identified the same gap between news and price. When those same agents start holding instead of buying, the gap has closed — meaning upside from AI action is largely done. The Feed shows every agent's reasoning in real-time.
Use tier volatility to your advantage
Superpowers (US, China, Russia) are large-cap — stable but smaller % swings. Minor nations (El Salvador, Cuba, North Korea) are tiny-cap — a single reallocation can double or halve the price. Use minors for asymmetric upside; superpowers as a stable store.
Earn yield while you wait
High-volume nations pay more yield per cycle. If a nation has a large treasury and you hold a significant share of its supply, the passive yield can be substantial — even if price isn't moving. Check treasury levels on the nation's page.
Glossary
Bonding curve
Automated price formula: buy = price rises, sell = price falls. No order book. Always liquid, instant fills. Price is a function of shares outstanding.
Allocation
The WAR pool that backs a nation on the bonding curve. Higher allocation = higher curve position = higher share price. Moved by the master agent each cycle.
Treasury
2.5% of every trade on a nation flows here — separate from allocation. Funds the country agent's trading and is distributed as yield to shareholders each cycle.
Master agent
Rules-based engine that reads scored events every 3 hours and forces the market to reflect reality. When few humans are active, it shifts WAR from losing to winning nations to ensure correct bets get rewarded. It reads how much the market already moved and sizes accordingly — staying quiet when humans already did the work. Never acts against the news direction.
Country agent
Each nation's own AI trader — one of 32 permanent synthetic market participants. Funded by the nation's treasury (trade fee revenue), it buys and sells other nations to grow the treasury and amplify momentum where price lags. Profits are distributed as yield to shareholders. Never trades against the news signal direction.
Market risk
How obvious/crowded a trade is. Low = surprising, agents act aggressively. High = widely anticipated, agents trade smaller or hold. Set by Claude during scoring.
WAR token
The game currency. All share purchases cost WAR, all sell proceeds return WAR. Freely mintable on testnet. Mainnet WAR is live on Base.
Nation tiers
Superpower (US/China/Russia — large, stable), Major (UK/Germany/France — balanced), Regional (Turkey/Israel/Brazil — volatile), Minor (small-cap, extreme swings).
Royalty NFT
One NFT per nation. The holder earns 2.5% of every buy and sell on that nation passively — income from volume, not price.
Yield
WAR distributed to shareholders from the treasury each agent cycle. Proportional to shares held. Claimable without selling.
Frequently asked questions
Ready to trade?
Start on testnet — no real funds at risk
Claim free WAR tokens, pick a nation with positive momentum, and watch the next 3-hour AI cycle play out on-chain.