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.
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.
These numbers are pulled live from the API on page load. The bot updates the graph every 10 minutes.
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.
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.
Aurora Intel (AIS / NOTAM / satellite), Flash Point ME, Nuclear Iran, Ukraine Weapons Tracker, ME Spectator, Gaza Now, military identification accounts.
~30 conflict-focused accounts plus keyword-driven discovery. Smart-money handles auto-added from the Polymarket leaderboard.
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.
30 top traders' positions across 12 conflict markets. Per-market divergence + recent large trades. Net cluster bias.
Per-market YES vs NO flow, momentum (last 1h vs prior 22h), spike detection (≥3× hourly baseline).
Markets with current-hour volume ≥3× their hourly baseline are logged as discrete events, tagged to the market's entities.
Open prediction-market questions on conflict topics. Each question's median probability becomes a graph event.
Filtered to Iran bounding box. Quakes within proximity of nuclear sites (Natanz, Fordow, Bushehr, Parchin) flagged as suspicious.
IAEA Board sessions, UN Security Council votes, Iran-US nuclear talks, DPRK timelines, NATO summits — injected with countdown labels.
Hand-curated source-type tiers (1.0 for wire/financial, 0.5 for state-aligned). Drives the credibility-weighted confluence score.
Mid prices and open interest on every tracked conflict market. Treated as the prior; we only act when our estimate diverges by ≥0.07.
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.
events; entity links go to event_entities.A signal has to clear every one of these gates. Most signals don't. That's the point.
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.
| Layer | Name | What it solves |
|---|---|---|
| 0 | Raw | Claude's direct 0–1 estimate. |
| 1 | EWMA Smooth | Single-cycle noise. α=0.25, ~30 min half-life. |
| 2 | Composite | Self-referencing risk. Deterministic weighted formula across all four theaters with a multi-theater bonus up to 1.25×. |
| 3 | Market-Implied | Missing external anchor. Mean Kalshi mid price per theater, globally weighted. |
| 4 | Persistent Decay | Gaps between cycles. Probability decays toward neutral between polls; persists across restarts. |
REST endpoints over the live graph. Anonymous tier is open; keys for higher rate limits.
Read the docs →Interactive force-directed visualization of the full ontology. No code required.
Open the graph →Watch the bot consult the graph and trade. Every position carries provenance.
Watch live →