Skip to main content
EUR/USD1.0842 0.32%
XAU/USD2,418.50 1.18%
BTC/USD94,210 0.92%
USD/JPY156.74 0.18%
S&P 5005,842.11 0.41%
NASDAQ 10020,914 0.65%
GBP/USD1.2710 0.21%
WTI Oil68.32 1.42%
DXY104.18 0.11%
EUR/USD1.0842 0.32%
XAU/USD2,418.50 1.18%
BTC/USD94,210 0.92%
USD/JPY156.74 0.18%
S&P 5005,842.11 0.41%
NASDAQ 10020,914 0.65%
GBP/USD1.2710 0.21%
WTI Oil68.32 1.42%
DXY104.18 0.11%
architecture

Multi-agent AI trading, engineered for survival.

Single-model bots have nothing to veto them. iQntX has 31 other agents — and a watchdog that overrides them all. Here is the engineering story behind the 32-agent architecture, in operator-level detail.

Message-bus coordinationThree independent gatesFail-closed watchdogMarkdown audit trail
+ Add details (helps us prioritize your cohort)
Agents
32
Departments
5
Decision gates
3
Routes (LLM)
4
CLI-first, API fallback
Illustrative backtest curve
Synthetic data — not a track record. Used here to show what 'shape' we engineer for.
illustrative
iQntX 32-agent baseline (illustrative)
Total return
+51.40%
Sharpe ratio
6.14
Win rate
63.1%
Max drawdown
-2.08%

The problem with single-model trading bots

A single-model trading bot is one model wrapped in a UI. When it is right, it makes money. When it is wrong, it makes the wrong trade. There is no second opinion. There is no veto layer. There is no agent that can refuse the order.

That works for a while. It does not work for thirty years.

Real hedge funds solve this with separation of concerns. iQntX inherits the same discipline.

The 32-agent architecture, top to bottom

                           CEO Agent
                              │
         ┌────────────────────┼────────────────────┐
         │                    │                    │
   MacroOfficer           Strategy            Risk Dept
   (research desk)        Dept                (veto layer)
                              │
                              ▼
                       Execution Dept
                       (orders + signatures)
                              │
                              ▼
                       Intelligence Dept
                    (journal + self-optimize)

                       ┌──────────────┐
                       │   Watchdog   │  ← independent process
                       │ (L4 override)│     can halt CEO
                       └──────────────┘

The crucial design choice: the watchdog is not in the org chart. It runs as its own process, with its own permissions, watching the same metrics from outside. The CEO cannot demote it. The Risk Department cannot collude with it. Its job is to fail-close everything when invariants break — and that is the only authority it needs.

Communication: a Postgres message bus

Every agent communicates through public.agent_messages. Postgres LISTEN/NOTIFY wakes consumers in real time; the table itself is the durable record of every signal that ever travelled between agents.

ColumnPurpose
idUUID, primary key
from_agentOriginator
to_agentTarget (or * for broadcast)
topicSubject (stance.change, setup.proposed, risk.veto, …)
payloadJSONB body
idempotency_keyDedupe
parent_message_idConversation thread
signed_by[]FactChecker / DoubleChecker signatures
created_atWhen emitted
processed_atWhen consumed

This single table is what you replay when you want to understand why the fund did what it did. Time-travel by SQL.

The 10-step lifecycle

Every agent inherits from AgentBase and implements the same loop:

  1. Read philosophy. Reload context/philosophy.md (catches operator updates without restart).
  2. Read own context. Load this agent's working notes from context/<agent>/.
  3. Read active stance. Pull the current CEO stance from app_state.
  4. Read the bus. Consume new messages on subscribed topics.
  5. Form a hypothesis. Apply skills (skills/iqntx-*/SKILL.md) to inputs.
  6. Consult. Call the LLM Router with the relevant skill.
  7. Propose. Emit a draft message to the bus (unsigned).
  8. Sign for FactChecker. Wait for FactChecker re-verification.
  9. Sign for DoubleChecker. Wait for blind second opinion.
  10. Journal. Write the decision and outcome to context/journal/<date>/ (markdown) and agent_journal (Postgres).

No agent skips a step. No agent is special. The Risk Gate runs the same 10 steps the Strategist does. The CEO runs the same 10 steps the StrategyBank does.

Three independent gates

A trade reaches the EA only after three independent gates sign:

Risk Gate
Pass 1
Stance · size · DD · correlation
FactCheck
Pass 2
Re-verify inputs are still true
DoubleCheck
Pass 3
Blind second opinion
EA
Fires
Order leaves the system

Failed gates are not failures — they are journal entries. The Self-Optimizer reads near-misses every night and looks for patterns (e.g., "every time Macro is RISK_OFF and Strategist proposes a long, the Risk Gate vetoes" — useful feedback).

Read the full methodology →

Subscription-first LLM routing

Routing one LLM call across 32 agents would be expensive. That is why iQntX runs subscription-first:

  • Claude (CLI / Max x20) — primary for reasoning. CLI subprocess, no API cost.
  • Codex CLI — primary for code-shaped tasks (regex, MQL5 fragments, JSON validation).
  • Anthropic API — fallback for Claude when CLI is down.
  • OpenAI API — fallback for Codex when CLI is down.

A circuit breaker trips a route after consecutive failures and moves the next call to the next route. A cost ledger journals every call (route, tokens, cost). You always know where the money went.

Three architectures, same instrument universe
32-agent baseline (teal), single-model control (gray), unguarded retail EA (red). Synthetic backtest. The point is shape, not numbers.
illustrative
iQntX 32-agent baseline (illustrative)
Single-model bot (control)
Typical retail EA (no risk gate)
Total return
+51.40%
Sharpe ratio
6.14
Win rate
63.1%
Max drawdown
-2.08%

Why this beats a single-model bot

When a single-model bot is wrong, it stays wrong until it is killed. When iQntX is wrong:

  • The Risk Gate vetoes setups that don't fit the current stance.
  • The FactChecker invalidates stale signatures.
  • The DoubleChecker fails to second the trade.
  • The Macro Officer flips RISK_OFF and shrinks the strategy bank.
  • The CEO escalates stance to DEFENSIVE or LOCKDOWN.
  • The watchdog halts everything if any invariant breaks.

Six independent paths to "don't trade." A single-model bot has zero.

Join the waitlist

We open cohorts in waves. Early-access pricing is locked the moment you join. Waitlist costs nothing and you can leave at any time.

You may also want

FAQ

Frequently asked questions

Don't see your question? Email hello@iqntx.com — we'll add it.

What does 'multi-agent' actually mean here?

It means each AI agent has one job, runs the same 10-step lifecycle, and communicates with other agents via a Postgres-backed message bus — never via direct calls. No agent owns the whole trade. The architecture is closer to a microservices org chart than a single chatbot.

How do the agents communicate?

Through a Postgres LISTEN/NOTIFY message bus (table: agent_messages). Each agent reads from the bus, processes messages, emits new messages, and persists its journal entry. No direct function calls between agents — the bus is the single source of truth for inter-agent traffic.

Why does message-bus coordination matter?

Two reasons: replay-ability and resilience. Replay-ability — you can pause the bus, inspect every message ever sent, and replay history step by step. Resilience — if any agent crashes, the bus is unaffected; the agent is restarted and resumes from the last consumed message.

Does each agent have its own LLM call?

Yes. Each agent that needs reasoning calls the LLM Router with the specific skill (defined as a markdown file under skills/iqntx-*/SKILL.md). The router picks the route (Claude CLI, Codex CLI, Anthropic API, OpenAI API) based on availability and cost policy.

How do you keep 32 agents from going in circles?

Three mechanisms: (1) a max-depth on message chains, (2) idempotency keys on every message, (3) the FactChecker — every decision must be re-verified against current state before it gets signed. Loops can't survive a re-verification step.

Can I add my own agent?

Yes. New agents inherit from AgentBase and implement the 10-step lifecycle. They register with the SkillLoader, subscribe to message-bus topics, and start contributing on the next cycle. The Strategy Department especially is designed for expansion (tier 1–4 expansion agents already use this pattern).

What's the catch?

Cost of LLM calls. 32 agents reasoning at once is more expensive than one chatbot — which is exactly why iQntX is subscription-first (Claude Max x20 + Codex CLI), with API as fallback only. A typical operator running the system on a subscription pays for the subscription, not per-token.

Early access · Limited cohorts

Get on the waitlist.

Be first in line when private access opens. We onboard in waves so the system never gets in front of itself.

+ Add details (helps us prioritize your cohort)
Join the waitlist