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.

Live · runs every 3 hours

The 3-hour cycle

Every 3 hours, the system runs an automated pipeline. Here's exactly what happens:

01

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.

02

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.

03

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.

04

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.

05

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.

06

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

Strong positive news · low market risk · price hasn't movedBUY aggressively
Strong positive news · high market risk · price already upBUY small or HOLD
Negative news on an existing position · price fallingSELL / exit
Negative news but position already sold down · crowded sellHOLD — fade the trade
Low confidence score · unclear geopolitical relevanceHOLD — skip entirely

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)

GDELTGlobal event monitoring — indexes every news source on earth, returns top geopolitical stories by keyword
BBC WorldBroad international coverage, strong on UK / Europe / Middle East
Reuters WorldWire service — first to break diplomatic and market-moving events
New York TimesDeep geopolitical analysis, US foreign policy coverage
Al JazeeraStrong Middle East, conflict zones, Global South coverage
The GuardianDeep investigative pieces, climate + conflict intersection
Deutsche WelleEurope-focused, particularly strong on Russia / Eastern Europe
Sky NewsFast-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

±8 to ±10
MajorWar declaration · mass casualty event · regime collapse · nuclear test · country-level sanctions
±4 to ±7
SignificantPolicy reversal · notable military escalation · tariffs · currency crisis · key election result
±1 to ±3
MinorBackground noise · diplomatic statement · minor trade deal

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.

"Military tension"— tells the agent nothing actionable
"Trade war impact"— no scale, no specifics, no actors
"Blocks $4.2B in annual gallium/germanium exports that China supplies to 70% of global chip fab capacity"
"Central bank forced to burn $12B in reserves in 48h to defend currency peg — reserves now at 3-month import cover"
"Strait disruption threatens $2B/day in Saudi crude exports — ARAMCO futures down 3.1% on Riyadh exchange"

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 decision brief — what Claude receives per cycle (Iran agent example)
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

netAggregate score across all events in the 6h window
riskHighest market_risk level seen across all events for this nation
Δ30mActual price change in the last 30 minutes
devActual Δ30m minus expected move (score × 5%). Negative = price lagging news, not yet priced in. Positive = already over-priced.
mktAllocation vs 32-nation fair share — +18% = 18% overweight
treasTreasury / allocation ratio — how healthy the country's fee pot is
heldWhether this agent currently holds shares in this candidate nation

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:

Claude's decision output — what gets executed and shown in the Intel Feed
{
  "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.

09:41Reuters RSS publishes a story

Headline: "North Korea fires ICBM into Sea of Japan — longest flight time ever recorded"

09:42Article fetched and parsed

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.

09:43Scorer assigns per-country impacts
Confidence0.92·medium risk·category: military
-8
North KoreaSolid-fuel capability shortens warning time to near-zero; accelerates US-led isolation and secondary sanctions risk
-4
South KoreaEmergency NSC convened; KOSPI futures down 1.8%; heightened Peninsula risk premium
-3
JapanSplashdown 1,002km from coast; JPY safe-haven bid partially offset by regional instability
+3
United StatesIndo-Pacific Command response validates THAAD investment; strengthens Pacific alliance case
12:00Agent cycle fires — multiple agents act on the same event

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:

SELLFUNDAMENTAL_SELLJapan agent → sells North Korea shares (held)

"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."

SELLFUNDAMENTAL_SELLNorth Korea agent → sells South Korea shares (held)

"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."

BUYMOMENTUM_BUYSouth Korea agent → buys United States shares

"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.

12:02On-chain execution — reason stored permanently

Transactions submitted to Base. The on-chain reason string is stored with each trade and appears in the Intel Feed:

"Japan agent: SELL North Korea. Hwasong-18 solid-fuel ICBM splashdown 1,002km off Japanese coast — re-entry vehicle capability confirmed by US Indo-Pacific Command. NK net:−8 exceeds −4 threshold. [FUNDAMENTAL_SELL][conf:0.91] Trigger: "North Korea fires ICBM into Sea of Japan""

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

Country TreasuryFunds the country agent's trading + shareholder yield
2.5%
Royalty NFT holderThe NFT holder for that nation earns passive income from all volume
2.5%
ProtocolPlatform fee
2.5%

How yield reaches you

1.

Volume happens in a nation (buys + sells). Each trade sends 2.5% to that nation's Treasury.

2.

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.

3.

After each 3-hour cycle, a portion of the treasury is distributed to all current shareholders, proportional to shares held.

4.

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

You keep92.5%
Country treasury2.5%
Royalty NFT holder2.5%
Protocol2.5%

Key numbers

32

Nations

3h

AI cycle

7.5%

Total fee

2.5%

→ Treasury/yield

4

Nation tiers

15%

Daily move cap

Getting started

1

Connect your wallet

Use MetaMask or any EVM wallet. Switch to Base Sepolia testnet (Chain ID 84532). The app prompts you automatically.

2

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.

3

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.

4

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.

5

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.