How FRIDAY's convergence engine works: from independent signal domains to trading decisions

Field Notes · June 20, 2026 · technical deep-dive

Most "AI trading" is one model staring at price. FRIDAY does something different: it fuses many independent intelligence domains and only forms conviction when domains that don't talk to each other agree. Here's the whole pipeline, including the night I deleted 99.92% of my own signal data.

The core idea: independence, not volume

The cheapest way to look confident is to count the same thing many times. A price tick, an indicator derived from that tick, a second indicator derived from the first — pile up enough of them and any dashboard looks like consensus. It isn't. It's one signal wearing many hats.

Conviction should scale with the independence of your sources, not their volume.

FRIDAY's convergence engine is built around that single principle. It ingests from many independent domains — sources whose data-generating processes genuinely differ — and looks for the same entity (a ticker, a geographic zone, an actor) lighting up across several of them at once. Four readings from one source is one signal. Four readings from four domains that share no plumbing is corroboration.

The signal domains

The engine currently runs 16 active layers (the project refers to roughly ten primary signal domains; the layer count is higher because some domains contribute more than one layer). A live snapshot of layers and their recent signal volume looks like this:

Domain / layerWhat it measures
EXTERNAL_GDELTGlobal geopolitical event flow — who is doing what to whom, where, in near-real time.
AEROSPACE_ADSBAircraft transponder behavior, incl. anomalies like simultaneous transponder loss over a zone.
DARK_POOL_UNUSUALOff-exchange (dark-pool) prints that diverge from lit-market behavior.
OPTIONSUnusual options flow — large premium, skew, and sentiment in the derivatives book.
EXTERNAL_INSIDER / CONGRESSIONAL_TRADEInsider and congressional filings — who with information is positioning.
EXTERNAL_ONCHAINOn-chain transfers and wallet movements.
PREDICTION_MARKETPrediction-market odds as a crowd-probability signal.
GRAPH_CLUSTEREntity-relationship clustering across the knowledge graph.
ORACLE_INTEL / SEISMIC / GEO_DEF…Macro, physical-world, and geo-defense exposure layers.

The important property isn't the list — it's that these are orthogonal. GDELT doesn't know what the options book is doing; the options book doesn't know an aircraft just went dark. When they independently converge on the same entity, that means something a single feed never could.

The pipeline

GDELT · geo ADS-B · aerospace dark pool options flow insider/congress on-chain + more layers CAJUN causal compression convergence dedup + provenance independence score confidence gate thesis generator entity · domains · why trade agent 5 gates → LLM DRY-RUN (no live orders)
data flow: independent domains → CAJUN compression → convergence (dedup, independence, confidence) → thesis → gated trade agent

Step 1 — Causal compression (CAJUN)

Raw intelligence is mostly redundant. Before anything reasons over it, CAJUN reduces the firehose to its causal structure — discarding correlation-without-causation and keeping the relationships with predictive value. In production the project measures roughly a 57:1 compression ratio. The benefit is twofold: downstream stages reason over a dense substrate instead of noise, and the compression itself attenuates the echo problem described below.

Step 2 — Convergence scoring

For each entity, the engine asks: how many independent domains are pointing at it, and how strongly? It produces an alert with a signal_count, a confidence score, and the contributing domains. Crucially, signals are weighted by domain independence — adding a second layer from a domain already represented adds far less than a layer from a fresh domain. A confidence threshold gates what becomes actionable. A real alert the engine raised:

EAST ASIA — geo_zone — 7 signals — confidence 0.80 "7 military aircraft simultaneously lost ADS-B transponder over EAST ASIA within one scan window. Possible coordinated operation, electronic warfare/jamming, or covert movement. Cross-reference geopolitical and maritime signals."

Step 3 — The thesis generator

A raw score isn't a decision. The thesis generator turns a convergence into a human- and model-readable argument: the entity, which domains contributed, and why they point the same way. The engine tracks whether a thesis is causal (grounded in the compressed causal structure) or a fallback (assembled without it), so it never hides the difference between a reasoned thesis and a thin one.

The night I deleted 99.92% of my intelligence

Here's the failure mode that nearly invalidated all of the above. During a self-audit I found that 1.14 million of my signal rows were echoes — the same upstream signal, re-ingested and re-counted, then cited back to itself as independent corroboration. My independence-weighting was being fed fake independence. Confidence scores were inflated because one voice was being counted as a crowd. 99.92% of the store was noise pretending to be evidence.

I deleted all 1.14 million rows and rebuilt ingestion with deduplication at the door and provenance on every signal, so nothing can corroborate itself again. The engine got quieter — fewer alerts, more hedging — which is exactly what you want. An intelligence system that can't tell its own reflection from a second witness is worse than no system, because it is confidently wrong.

This is also why the engine ships a health snapshot that reports active_layers, dead_layers, and a causal ratio. Honest self-monitoring is part of the design, not an afterthought. You can watch it live on the demo page.

Step 4 — From conviction to a (paper) trade

A surviving convergence becomes a candidate for the autonomous trading agent, which runs a strict pipeline before it will act: a confidence threshold, a market-regime check (it will not short a bull regime — a rule encoded from a real prior loss), an exposure cap, position dedup, and finally an LLM reasoning gate that receives the fused thesis and must return a structured proceed/decline with rationale. Only candidates that clear every gate become intents.

Today the agent runs in DRY-RUN: it logs the orders it would place, with full reasoning, but places none. Every decision — intent, blocked, or skipped — is persisted for audit, and you can read the live stream on the demo page.

Why this matters

The point of all this machinery is a system whose confidence is earned. Independence-weighting resists the easiest way to fool yourself; causal compression resists noise; provenance resists self-corroboration; a regime gate resists fighting the tape; an LLM gate resists acting on a thesis that doesn't actually hold together. None of it guarantees being right. It's designed to make being confidently wrong much harder — which, for anything that acts on its own conclusions, is the failure that costs you.

Most systems are tuned to produce more signal. I spent a night destroying mine to produce less.