The system, end to end.
Eva is a market intelligence engine with trading books attached. Four layers — a four-year cycle clock, a multi-timeframe stance engine, an ICT structure reader and a news pipeline — each write a timestamped artifact, and everything downstream consumes those artifacts rather than re-deriving them. This paper describes the architecture as built, including its limits.
1. Design position
Most automated trading products are a signal wrapped in an execution loop. Eva is built the other way around: the analysis is the asset, and the trading books are its first consumers. Every layer writes its conclusion to storage with a timestamp before anything acts on it, which has three consequences. The read can be audited after the fact against what was actually known at the time. It can be reused by other products without paying for the analysis twice. And it can be published — which is why the record on this site is generated from the same rows the system trades from.
Four commitments follow from that position, and the rest of the architecture serves them:
- Horizons stay separate. A four-year cycle view, a 30-minute structure read and a 60-second execution watcher answer different questions. They are never collapsed into one number.
- An idea must earn its existence. Proposals are checked against raw market data by code that does not share the proposer's blind spots.
- Risk is stated, then enforced. Stops and targets are exchange-side brackets on the live book, not intentions.
- The ledger is the product. Wins and losses publish the same way, and paper records are never blended with live ones.
2. Architecture overview
3. The data layer
The engine consumes exchange candles on three working timeframes — H4 for higher-timeframe structure, H1 for range state, M5 for entries — plus daily bars for calendar anchors and live spot reads for marking open positions. A weekly ETH/BTC ratio series produces a relative-strength context: when one asset is clearly stronger, the system avoids fighting that tilt, and when the ratio is neutral both assets are evaluated independently. Perpetual funding is sampled separately and reduced to a regime rather than a level.
From these inputs the context builder derives the objects the reader reasons over: market structure state, sweep-failure patterns at prior extremes, order blocks with their origin candles, higher-timeframe supply and demand zones and their mitigation state, the current 24-hour range, and a calendar level map running from the daily open out to the yearly open and prior-period midpoints. Each is computed programmatically, so a cited level always has a checkable origin.
4. The intelligence layers
Four layers run on four clocks. The full explanation, with the current output, is on the intelligence page; what follows is the architectural summary.
| Layer | Cadence | Artifact |
|---|---|---|
| Four-year cycle | Daily | Phase from a deterministic halving clock (4 halvings, three prior tops and bottoms, five named phases), plus a written thesis with a stated bias, confidence and invalidation, derived from twelve years of daily candles and gold ratios. |
| Stance | 30 min | Bullish / neutral / bearish per asset per timeframe, from deterministic features (moving averages, range position, swing structure, relative volume) synthesised with funding and macro context. BTC is decided first; ETH is read as the higher-beta conduit. |
| Structure | 30 min | A fully specified trade — entry, stop, staged targets, size, written thesis — or no trade. This is the only layer that produces positions. |
| News | 5 min | Per-headline severity, directional bias and an expiry, aggregated into a live posture that decays without intervention. |
The separation is enforced, not stylistic. The cycle thesis is a posture artifact: it is read by the dashboard and by downstream products, and by nothing in the trading path. No entry, stop or size is derived from it. We state this because a four-year chart next to a P&L curve invites the reader to assume a connection that does not exist.
5. The decision layer
Two paths can propose a trade. The main cycle runs every 30 minutes and hands the marked charts to a vision model prompted to behave like a disciplined structure trader: read the regime, work top-down from H4 to M5, cite only detected features, and either specify a complete trade or decline. The watchdog runs every 60 seconds and is purely programmatic — a small set of mechanical triggers, such as an order-block retest inside the entry band, which can only act within the structure the last full read established.
Both paths produce the same artifact and are subject to the same fate: most proposals never become positions. Across the recorded history, 97.3% of cycles end without one. Abstention is a first-class output rather than a failure to find something.
Macro enters here, and its permissions are deliberately asymmetric. Active context above a severity floor is injected into the prompt and the model is required to address it in writing — a decision that ignores live macro is rejected by the critic before publication. At higher severity a directional posture blocks mechanical entries that fight it, and a position-aware pass can ratchet stops toward the entry on open positions. News can refuse a trade and tighten a position; it can never open one or widen risk.
6. Validation and audit
A language model can hallucinate a level. The validator cannot. Every proposal is re-checked against the raw candles: cited order blocks must exist where claimed, stops must sit beyond real structure rather than at round numbers, targets must be reachable within the cited zones, and risk-reward must clear a floor. Higher-timeframe zones cited as if they were entry-timeframe ones are a specific, named failure mode with its own check. Proposals that fail are downgraded to no-trade and recorded with the reason.
An audit layer then scores each cycle's chart read — deductions for invented levels, misread structure, or sanitized output — and stores the score with the trades it produced, so read quality and P&L can be studied together. Every decision also stores a snapshot of the macro state it was made under, so a trade can be re-examined in the context it actually had rather than the context we remember.
7. Execution and risk
The live book trades a deliberately small, capped sleeve. Entries route as resting limit or market orders with exchange-side bracket protection; a position carries a hard stop and up to three take-profit legs. As each target pays, the stop trails behind banked gains, so a half-worked idea tends to end flat-to-green rather than round-tripping. Nothing averages down, and no position outlives its stop.
Sleeves are the unit of risk control: each book has a fixed capital allocation, a per-trade risk fraction, and daily-loss and concurrency halts. One executor serves every book, branching only on sleeve constants, and one shared definition governs how a position scales out — so the live book and the published paper book cannot quietly ladder differently.
8. The platform surface
Because every layer persists its output, the read is available as data. A token-authenticated API serves current and historical stances, the cycle thesis, macro and funding signals, volatility events, and the flagship book's ideas. It fails closed: with no token configured it refuses to answer rather than leaking a read.
Two independent services already run on it. The idea mill converts Eva's conclusions into a continuous public stream — a BTC stance flip mints an ETH follow-on, a severe headline mints a news idea framed against current structure, a funding regime switch mints a position-change card. The event-market bot takes its directional bias from the stance endpoint and has never run a chart read of its own. Both fail closed on staleness: past the freshness window the answer is no signal rather than an old one.
Consuming the read is cheap — a service token and an HTTP call. Adding an entirely new strategy inside the core is ordinary engineering work rather than a plugin drop-in, and we describe it that way rather than claiming a framework we have not built.
9. The ledger and publication
Every suggestion, fill, partial exit, stop move, and close writes to SQLite ledgers at event time. Public surfaces render from those ledgers directly — the same rows drive the operator's own view, the published books, and the figures on this site (regenerated by script, never typed). When a live position fully closes, the system renders an annotated chart of what happened — entry, opening stop, every target that paid, and a post-trade note that retells the original thesis rather than inventing a new one. Those charts are the case studies.
10. What we do not claim
The books are weeks old and small. A live record of single-digit closed trades supports no expectancy claim, and we do not make one. The paper book's replay studies suggest the chart reads are more often right than the stop placement — stopped trades that later reached their targets are a recurring pattern — which is why stop geometry is the active research front. Paper fills are simulated and labeled as such everywhere.
On the intelligence side the boundaries are just as specific. The cycle model informs posture and nothing else. The news pipeline reads headlines, not an economic calendar — it does not know what is scheduled for tomorrow, only what has broken, and it has 1,348 headlines of history to show for it. There is no social sentiment feed, no on-chain flow data in the trading path, and news never changes position size. Where the ICT literature describes concepts we have not implemented as code — fair value gaps, session killzones — we do not claim them, and our entry band deliberately sits shallower than the classic optimal-trade-entry zone.
Nothing on this site is investment advice, and no figure here is a promise of future performance. The honest pitch is the machinery: a market read that is computed, recorded and reusable; ideas that must survive validation; bounded risk; and a record that publishes before it resolves.