Market Synthesis: an open research engine for macro imbalances
An academic research project detecting gaps between market narrative and structural reality — with predictions published openly for scientific scrutiny.
Research output — not investment advice. This is the published output of an academic research system (a PhD project at RMIT University). It is not financial advice, not a recommendation, and not a solicitation. The author is not a financial adviser. Predictions are experimental and frequently wrong. Past performance does not indicate future results. Do your own research.
Most large drawdowns do not come from small forecasting errors. They come from sudden shifts in policy, liquidity, correlation, or narrative. Market Synthesis is a research system designed to flag those shifts before they are obvious in price alone — and to publish what it finds, openly, so the predictions can be examined, challenged, and improved.
→ See the live detected-gaps log · Help improve the research
The core idea: Soros-style imbalance detection
The system is built around a simple market reality: when market narrative and structural reality diverge, price can move violently when that gap closes.
This is the same style of thinking behind classic macro dislocation trades:
Narrative"] -->|"diverges from"| B["⚙️ Structural
Reality"] B -->|"tension builds"| C["🏛️ Policy
Defense"] C -->|"credibility breaks"| D["💥 Violent
Repricing"] D -->|"new consensus forms"| A style A fill:#eef4ff,stroke:#4f7ee8,color:#0f2b57 style B fill:#fef3c7,stroke:#d97706,color:#78350f style C fill:#fee2e2,stroke:#dc2626,color:#7f1d1d style D fill:#dcfce7,stroke:#16a34a,color:#14532d
Soros-style reflexivity cycle — Market Synthesis detects the gap between narrative and reality
The system is designed to detect those high-tension setups early and score how actionable they are.
What this research project does
Given an event context and relevant market narrative, the engine produces:
- a directional view (
long,short,neutral) - a confidence score (0-100)
- a structured explanation of why that view was reached
Every detected gap — score, direction, and full reasoning — is published to the detected-gaps log for open scrutiny. The goal is not to advise anyone’s portfolio; it is to test, in public, whether an adversarial multi-agent LLM system can detect macro regime gaps, and to improve it through community feedback.
Why this is more than “one model, one opinion”
A single agent can sound convincing while missing the best counter-argument. This framework forces internal disagreement before a conclusion is allowed.
Multi-stage orchestration flow (production logic)
Guardian / GNews / NYT APIs
Fetches real contemporaneous
news coverage"] ENRICH --> CLASS["📋 Classifier
Sonnet 4.5
Routes to 1 of 7 domains"] subgraph PARALLEL1["Round 1: Domain-Specific Debate (parallel)"] direction LR PROS["⚔️ Prosecutor
Haiku 4.5
Category-specific
argues FOR the gap"] DEF["🛡️ Defender
Haiku 4.5
Category-specific
argues AGAINST"] EXPERT["🔬 Domain Expert
Sonnet 4.5
Specialist analysis"] end CLASS -->|"routes Prosecutor + Defender
+ Expert by category"| PARALLEL1 PROS --> ADJ DEF --> ADJ EXPERT --> ADJ ADJ["⚖️ Adjudicator
Sonnet 4.5
Synthesizes all arguments
Direction + confidence + horizon"] subgraph PARALLEL2["Round 3: Post-verdict (parallel)"] direction LR TRADE["🎯 Trade Expression
Haiku 4.5
Maps verdict to correct
tradeable direction"] CAL["📊 Calibration Agent
Haiku 4.5
Adjusts probability for
ECE optimization"] end ADJ --> TRADE ADJ --> CAL TRADE --> OUTPUT["📊 Final Verdict
Direction · Confidence · Reasoning"] CAL --> OUTPUT style INPUT fill:#1d4ed8,stroke:#153ca8,color:#ffffff style ENRICH fill:#dbeafe,stroke:#3b82f6,color:#1e3a5f style CLASS fill:#f0f9ff,stroke:#0284c7,color:#0c4a6e style PARALLEL1 fill:#eef4ff,stroke:#4f7ee8 style PARALLEL2 fill:#f0f9ff,stroke:#0284c7 style PROS fill:#dcfce7,stroke:#16a34a,color:#14532d style DEF fill:#fee2e2,stroke:#dc2626,color:#7f1d1d style EXPERT fill:#fef3c7,stroke:#d97706,color:#78350f style ADJ fill:#e0e7ff,stroke:#4f46e5,color:#312e81 style TRADE fill:#fef3c7,stroke:#d97706,color:#78350f style CAL fill:#f0f9ff,stroke:#0284c7,color:#0c4a6e style OUTPUT fill:#1d4ed8,stroke:#153ca8,color:#ffffff
8-agent adversarial orchestration — enrichment feeds real news into domain-specialized Prosecutor, Defender, and Expert agents
This creates practical advantages over single-agent output:
- Real news enrichment: debates are informed by actual contemporaneous coverage, not thin descriptions.
- Full domain specialization: all 3 debate agents (Prosecutor, Defender, Expert) use category-specific prompts — 7 × 3 = 21 specialized prompt templates.
- Lower one-sided bias: every thesis is stress-tested before scoring.
- Better calibration: confidence is corrected after adjudication, not guessed in one pass.
- Deterministic guardrails: when the system’s own signals say “no trade,” direction is forced to neutral.
Evidence snapshot
v38 full portfolio backtest (140 trades, 12 years, real news feeds, adversarial exit system, market-data-driven entry gates):
| Metric | Value |
|---|---|
| Coverage | 2014-01-01 to 2026-06-01 (12 years) |
| Dates of news indexed | 6,155 |
| Headlines indexed | 632,000+ (Guardian + NYT + GDELT + FOMC + EDGAR) |
| Trades executed | 140 |
| Win rate | 83.6% (117 wins / 23 losses) |
| Median P&L per trade | +10.7% |
| Mean P&L per trade | +54.8% (excl. Venezuela hyperinflation outliers) |
| Worst trade | -19.4% (bounded by vol-based stop-loss) |
| OOS validation (2023 onward) | 42 trades, 81% WR, +9.2% median |
| Cost per emitted signal | ~$0.04 (8 API calls per debate) |
These are backtested research results, not a live track record, and not a promise of future behaviour. The detected-gaps log is where the system is now tested forward, in the open.
Per-category performance (v38)
| Category | Trades | Win Rate | Mean P&L | Median P&L |
|---|---|---|---|---|
| Commodity | 46 | 100% | +23.5% | +10.3% |
| Geopolitical | 20 | 90% | +25.1% | — |
| Sovereign Debt | 30 | 80% | — | +17.5% |
| Central Bank | 16 | 69% | +35.7% | — |
| Currency Peg | 10 | 70% | +108.9% | — |
| Real Estate | 14 | 64% | +38.8% | — |
Reading the numbers: these are real P&L numbers from a full backtest against yfinance historical prices. For each signal, the system enters a position in the category-appropriate instrument via an LLM instrument selector with coherence gate. The adversarial exit system (same debate structure as entry) runs periodically until the narrative-reality gap closes. A volatility-based stop-loss (3-sigma of 5-day returns) is the only mechanical override.
Commodity is the standout category at 100% win rate across 46 trades. Geopolitical runs at 90% over 20 trades. These are classic Soros-style setups where structural supply/demand imbalance or policy impossibility creates a clear gap that the market is slow to price.
Out-of-sample holds up: the 42 trades from 2023 onward (unseen during development) maintain 81% win rate and +9.2% median, confirming the system generalizes beyond the training window.
| Full methodology: Methodology | Full findings: Findings | Technical summary: Technical |
Domain expert routing
Events are classified into 7 specialized categories, each with a purpose-built expert:
| Category | Expert Focus | v38 Trades |
|---|---|---|
| Commodity | Supply chains, physical markets, storage | 46 |
| Sovereign Debt | Debt sustainability, contagion, restructuring | 30 |
| Geopolitical | Sanctions, trade wars, regime changes, EM crises | 20 |
| Central Bank | Monetary policy, rate cycles, plumbing | 16 |
| Real Estate | Bubbles, valuations, reflexivity | 14 |
| Currency Peg | FX reserves, peg mechanics, carry trades | 10 |
| Market Structure | Leverage, short squeezes, flash crashes, LDI | — |
This is open research — help improve it
The system is wrong often, and why it is wrong is the most valuable data there is. If you see a prediction where the market moved against the call because of an event the debate missed, a data source it should enrich from, or an adversarial angle it skipped — that feedback directly shapes the next iteration.
- Browse the detected-gaps log — every call, score, and full reasoning
- Join the discussion / give feedback — challenge the calls, suggest enrichment
- Methodology · Findings · Technical summary
An open PhD research project — Ben Lvovsky, RMIT University. Not investment advice.