About

Conflict trading,
grounded in an ontology.

TrenchSignals doesn't pattern-match on headlines. Every trade is grounded in a persistent graph of named entities — countries, militant groups, leaders, places, financial instruments — with full provenance from source to position. News, financial moves, whale flow, forecaster consensus, scheduled events, and seismic data all link through the same shared semantic layer.

Why ontology

Pattern matching vs.
grounded reasoning.

A generic LLM reading news every cycle is pattern-matching on tokens. The same words mean different things in different contexts, and there's no traceable chain from a headline to a decision. An ontology fixes this.

Without ontology

Token-soup intelligence

  • "Iran" is a token, not a node. Each cycle re-derives state from raw text.
  • Markets evaluated independently — no cross-cluster awareness.
  • Reasoning is a paragraph; provenance dies inside the prompt.
  • Sources weighted equally regardless of bias or track record.
  • No structured way to slice outcomes by entity or signal cluster.
TrenchSignals + ontology

Grounded, traceable reasoning

  • 74+ named entities with stable IDs and 65+ typed relationships.
  • Every news, financial, whale, and seismic event tagged to entities.
  • Per-entity exposure caps prevent silent over-concentration.
  • Source-credibility weighting separates Reuters from a bot account.
  • Calibration by entity cluster + confluence band tells you what predicts outcomes.
Live state

Right now in the graph.

These numbers are pulled live from the API on page load. The bot updates the graph every 10 minutes.

Entities
Relationships
Events tagged
Source types
The intelligence layers

12 source types feeding one graph.

Every layer writes events into the same SQLite-backed graph, tagged with the entities they touch via a deterministic alias resolver covering 200+ proper-noun terms.

01 / News (RSS)

70+ feeds

Reuters, AP, BBC, Al-Monitor, Times of Israel, Iran state media, IDF official, IAEA, Bellingcat, FAS, 38 North, Kyiv Post, Al Jazeera, Bulletin of Atomic Scientists, think-tank wires.

02 / Telegram OSINT

28 channels

Aurora Intel (AIS / NOTAM / satellite), Flash Point ME, Nuclear Iran, Ukraine Weapons Tracker, ME Spectator, Gaza Now, military identification accounts.

03 / Twitter / X

Curated handles + keyword search

~30 conflict-focused accounts plus keyword-driven discovery. Smart-money handles auto-added from the Polymarket leaderboard.

04 / Financial

11 instruments

ILS/USD as Israel war-risk thermometer, Brent + WTI, Gold, VIX, USD Index, Defense ETF (ITA), Tel Aviv 35, Uranium ETF, Nat Gas, Brent–WTI spread.

05 / Polymarket whale flow

Top trader positioning

30 top traders' positions across 12 conflict markets. Per-market divergence + recent large trades. Net cluster bias.

06 / Kalshi order flow

24h taker volume

Per-market YES vs NO flow, momentum (last 1h vs prior 22h), spike detection (≥3× hourly baseline).

07 / Volume spikes

Anomaly events

Markets with current-hour volume ≥3× their hourly baseline are logged as discrete events, tagged to the market's entities.

08 / Forecaster consensus

Manifold + Metaculus

Open prediction-market questions on conflict topics. Each question's median probability becomes a graph event.

09 / USGS seismic

Iran-region earthquakes

Filtered to Iran bounding box. Quakes within proximity of nuclear sites (Natanz, Fordow, Bushehr, Parchin) flagged as suspicious.

10 / Scheduled events

Curated calendar

IAEA Board sessions, UN Security Council votes, Iran-US nuclear talks, DPRK timelines, NATO summits — injected with countdown labels.

11 / Source bias profiles

Editorial credibility

Hand-curated source-type tiers (1.0 for wire/financial, 0.5 for state-aligned). Drives the credibility-weighted confluence score.

12 / Live market prices

Kalshi + Polymarket

Mid prices and open interest on every tracked conflict market. Treated as the prior; we only act when our estimate diverges by ≥0.07.

End-to-end

How a trade actually happens.

The bot loops every 10 minutes (or sooner if a graph surge is detected). Six concrete steps, each with safe-failure semantics — a broken layer can never block a trade.

01
Ingest. RSS feeds, Telegram OSINT, Twitter, financial-market snapshots, whale flow, seismic data, forecaster questions, calendar events. Items deduped and cached.
02
Tag & persist. Each item is run through the alias resolver. Matched entities are linked. The event is written to events; entity links go to event_entities.
03
Build digest. A per-cluster digest aggregates the last 24h of events keyed by entity (Iran, Israel, Russia, Ukraine, China, Taiwan, North Korea, …) with source-type breakdowns, financial moves, whale net, forecaster spreads, upcoming calendar events.
04
Claude analyzes. The digest plus live Kalshi/Polymarket prices go into the model. Claude returns: a global escalation probability, per-theater probabilities, a direction (ESCALATE / DEESCALATE / SKIP), a confidence score, and a probability estimate for every tracked market.
05
Edge + gates. For each candidate market: edge = Claude's estimate − market mid. Then the gates — minimum confidence, minimum entry price, per-entity exposure cap, family-direction penalty, vol-regime adjusted edge floor, credibility-weighted confluence multiplier.
06
Execute & monitor. The single highest-edge candidate that clears all gates is sent as a limit order. The position is checked every 30 seconds against TP / SL. Claude reviews every exit trigger and can hold, exit, or adjust thresholds.
Risk discipline

What it takes for a trade to fire.

A signal has to clear every one of these gates. Most signals don't. That's the point.

Minimum confidence
0.72 baseline. Tier rises to 0.75 past half-cap, 0.80 past 80%-cap. Confluence-weighted multiplier can adjust ±0.04.
Minimum edge
≥0.05 versus market mid, scaled up in high-volatility regimes.
Minimum entry price
Skip anything under 5¢ — thin liquidity makes reliable fills impossible.
Single-market cap
No more than 25% of balance in any one ticker.
Per-entity exposure cap
Walks the graph: total $ across all positions touching any single entity. Auto-tunable from PnL history.
Direction-skew penalty
−35% size when ≥75% of open positions face the same direction.
Family-hedge edge multiplier
Trades opposing an existing family's net direction need 1.5× edge.
Theater direction continuity
Single-cycle theater flips are rejected until the next signal confirms.
Display layer

Five-layer escalation probability.

The escalation number on the dashboard is not Claude's raw self-report — it's a five-layer stack designed to address specific weaknesses in the underlying signal. Trading decisions use the raw probabilities; the five-layer view is presentational.

LayerNameWhat it solves
0RawClaude's direct 0–1 estimate.
1EWMA SmoothSingle-cycle noise. α=0.25, ~30 min half-life.
2CompositeSelf-referencing risk. Deterministic weighted formula across all four theaters with a multi-theater bonus up to 1.25×.
3Market-ImpliedMissing external anchor. Mean Kalshi mid price per theater, globally weighted.
4Persistent DecayGaps between cycles. Probability decays toward neutral between polls; persists across restarts.
Not financial advice. TrenchSignals is an autonomous trading system in active development. Prediction-market trading involves significant risk of loss. Past performance does not guarantee future results. Live trading data is paper unless explicitly labeled. This site is for informational and research purposes only.