1. System Overview
DOCS SYNCED WITH THE DEPLOYED COCKPIT VERSION
ElquoAI is a professional-grade quantitative execution engine and risk-controlled cockpit for cryptocurrency futures markets. The core mission, in priority order: capital preservation first, market-flow continuation second, opportunistic trend capitalization third.
The engine scans markets on a schedule, grades candidate setups with large language models, audits every candidate against a mathematical risk policy, and — only on the plans where you enable it — executes on your own exchange account through restricted API keys. Users retain full self-custodial control over exchange permissions at all times.
What ElquoAI is not
- Not a broker or custodian. Your funds never move to ElquoAI. All positions live on your exchange account, under your keys.
- Not financial advice. Signals and setups are generated for informational purposes; execution is voluntary and user-configured.
- Not a "always in the market" bot. The most common verdict on a choppy day is
NO_TRADE— the engine is built to refuse risk, not to manufacture it.
Reading order for an audit: section 3 explains how a trade decision is produced, section 4 the mathematical limits around it, and section 5 exactly what happens with your money and your keys.
2. Core Architecture
PROCESS MODEL · DATA STORES · FAILURE ISOLATION
ElquoAI runs as a decoupled multi-process suite so that web traffic, scanning, execution auditing, and price monitoring cannot degrade each other. A web request spike never delays a stop-loss check; a scanner outage never takes the dashboard down.
Processes and their jobs
| Process | Job | If it fails |
|---|---|---|
| status_server.py | Serves the cockpit API and legacy pages. Stateless over the database. | Dashboard unavailable; scanning, monitoring, and exchange-side brackets unaffected. |
| daemon.py | The coordinator: polls user schedules, manages cooldowns, launches isolated scans per account. | No new scans start; open positions stay protected by exchange-side stop orders. |
| worker.py | Runs one scan cycle: market data, LLM grading, policy audit, verdict. | The scan is graded SYSTEM_ERROR and excluded from performance stats. |
| paper_monitor.py | Tracks synthetic paper positions against live prices to validate risk settings. | Paper stats pause; no effect on live trading. |
| main.go | Go WebSocket monitor: subscribes to the live Binance price feed and tracks every open bracket in real time. | Exchange-side stop/target orders still rest on Binance itself (see section 5). |
Failure isolation
Auxiliary fetchers (news, macro calendar, Telegram feed) are wrapped in their own error boundaries: a failing news source can degrade news context, but it can never interrupt scanning or touch execution. The trading core is deliberately isolated from every enrichment path.
3. Execution Pipeline
SCHEDULING · GRADING · POLICY · VERDICTS
Every scan runs the same multi-stage pipeline. Nothing skips stages, and a failure at any stage degrades to a safe verdict — never to an unaudited trade.
3.1 Scheduling
Scans start from your plan's schedule: fixed daily queues on Essential, adaptive volatility-following schedules on Dynamic and above. Each plan has a hard daily scan allowance (5 / 8 / 14 / 24 across the paid tiers). The scheduler also respects news block windows: scans are automatically shifted away from high-impact macro prints (CPI, FOMC) instead of grading into chaos.
3.2 Market flow scan
The worker pulls candle histories and order-book state from the market-data feed, checks volatility and volume trends, and short-lists assets worth grading this cycle.
3.3 AI grading
A combined scout-and-validator prompt runs as a single LLM call: the scout side forms a trading thesis with a concrete bracket (entry, stop-loss, take-profit targets), the validator side audits that thesis against the same market data. The primary route is a frontier Anthropic Claude model with automatic fallback to secondary providers if the primary is unavailable. If the model output cannot be parsed, the scan is graded SYSTEM_ERROR — it is never silently retried into a trade.
3.4 Policy check
The risk engine (decision_policy.py) audits every candidate: duplicate exposure block, margin feasibility, fee-adjusted risk/reward threshold, daily drawdown headroom. A candidate that fails any check is refused regardless of how confident the model was.
3.5 Verdicts
| Verdict | Meaning | What happens next |
|---|---|---|
| TRADE candidate | A concrete bracket passed grading and every policy gate. | Delivered per your plan: alert, approval checkpoint, or autopilot execution. |
| NO_TRADE | Conditions are sideways, news-blocked, or below quality thresholds. | Full stop until the next scheduled scan. A NO_TRADE never schedules its own rerun — the engine cannot talk itself into a trade. |
| SYSTEM_ERROR | API timeout, feed drop, or unparseable model output. | Logged and excluded from performance grading — a technical failure is never counted as a missed or losing setup. |
Stability guarantee: rerun chains are hard-capped. A scan may schedule at most one follow-up, and only when a concrete bracket is actively forming; otherwise it converts to NO_TRADE. There is no path in the scheduler that loops scans back-to-back.
4. Capital & Risk Model
SIZING · R:R CONSTRAINT · CIRCUIT BREAKERS
Risk rules are centralized in decision_policy.py and applied before any execution path is reached. They are mathematical constraints, not model suggestions — the LLM cannot override them.
4.1 Dynamic margin sizing
The maximum margin for a single position derives from account equity, your configured risk factor, and exchange leverage bounds:
4.2 Net risk/reward constraint
A candidate is invalid unless its reward-to-risk ratio — after estimated maker/taker fees — clears the minimum threshold:
4.3 Worked example
Example calculation with a $10,000 account, 1.5% risk per trade:
| Risk budget | $10,000 × 1.5% = $150 |
| Bracket | Entry $64,200 · Stop $63,650 · Stop distance $550 |
| Position size | $150 / $550 = 0.2727 BTC (≈ $17,509 notional) |
| Margin at 10× | ≈ $1,751 |
| Worst case at stop | −$150 (1.5% of equity) plus fees |
The dollar loss at the stop is fixed by construction — a wider stop means a smaller position, never a bigger loss.
4.4 Hard circuit breakers
| Breaker | Trigger | Effect |
|---|---|---|
| Max daily drawdown | Realized + unrealized daily loss exceeds your configured cap | Execution stops for the rest of the trading day. |
| News block window | High-impact macro event within 15 minutes (before or after) | Trading halted through the window; scans shift to post-print absorption. |
| Duplicate symbol block | An active position already exists in the same symbol and direction | The new candidate is refused — no exposure stacking. |
5. Your Money & Your Keys
CUSTODY · KEY SECURITY · FAILURE MODES
This section answers the question an experienced trader should ask before connecting anything: what exactly happens with my money?
5.1 Custody model
Your funds never leave your exchange account. ElquoAI holds no balances, processes no deposits, and has no withdrawal path. The engine interacts with your account exclusively through exchange API keys that you create, you restrict, and you can revoke at any second from your exchange dashboard.
5.2 API key security
- Keys are encrypted at rest with AES-GCM (authenticated encryption; a unique nonce per secret) and stored in that encrypted form only.
- Decryption happens inside the execution process at the moment an order or telemetry call is made — keys are not held decrypted in long-lived state.
- A background API auditor continuously re-checks key permissions. If withdrawal rights or unverified permissions ever appear on a connected key, the key is de-authorized for execution instantly.
5.3 The execution path of one trade
- A graded candidate passes every policy gate (sections 3-4).
- On Pro, the bracket waits at an approval checkpoint — nothing is sent until you explicitly approve. On Apex autopilot, execution proceeds within your configured bounds.
- The entry order is placed on your exchange account under your key.
- Protective orders rest on the exchange itself: the stop-loss is a real
STOP_MARKETorder and each take-profit a realTAKE_PROFIT_MARKETorder on Binance — not just software levels inside ElquoAI. - The Go WebSocket monitor tracks the position tick-by-tick as a second layer of enforcement and telemetry.
Because the bracket rests on the exchange, a full ElquoAI outage does not leave a position unprotected: your stop-loss and take-profit orders remain live on Binance even if every ElquoAI process is down.
5.4 Failure modes, honestly
| Scenario | What happens |
|---|---|
| ElquoAI servers go down | No new scans or entries. Open positions keep their exchange-side stop and target orders. |
| Price feed drops mid-scan | The scan grades SYSTEM_ERROR; no order is produced from partial data. |
| You revoke the API key | Execution stops immediately. Existing exchange orders remain yours to manage on the exchange. |
| Exchange-side outage | Outside ElquoAI's control — the same risk as manual trading. The engine does not retry blindly into an unstable exchange. |
5.5 What ElquoAI cannot do
- Withdraw, transfer, or move funds in any direction — ever.
- Trade outside the futures permissions you granted the key.
- Exceed the drawdown, margin, and exposure limits you configured.
6. Exchange Setup Guide
KEY CREATION · PERMISSIONS · AUDITOR
Connecting an exchange takes five steps and roughly five minutes:
- In your exchange account dashboard, create a new API key dedicated to ElquoAI — never reuse a key another service already holds.
- Set the permission profile exactly as below — reading plus futures trading, nothing else.
- If your exchange supports it, restrict the key to IP access listsfor defense in depth.
- Paste the key and secret into the cockpit's exchange settings. They are AES-GCM encrypted before they are stored (section 5.2).
- The API auditor validates the key's permission profile before execution is enabled — and keeps re-checking it for as long as the key is connected.
Required permission profile
| Permission | Setting | Why |
|---|---|---|
| Enable Reading | ENABLED | Account telemetry: balances, positions, order state. |
| Enable Futures | ENABLED | Required for bracket execution on futures markets. |
| Spot & Margin Trading | DISABLED | Not used by the engine; smaller attack surface. |
| Enable Withdrawals | DISABLED | Hard safety cutoff. The auditor de-authorizes any key found with withdrawal rights. |
ElquoAI will never ask you to enable withdrawals, and no legitimate message from us will ever request your key outside the cockpit settings page.
7. Backtesting Suite
SANDBOX · PAPER · REPLAY
Three simulation layers exist so that a strategy configuration can be evaluated without risking capital, each one closer to live conditions:
| Mode | Availability | What it does |
|---|---|---|
| Sandbox | Free preview | Cockpit layout with delayed, cached data. No scans run for your account. |
| Paper trading | Dynamic + | Real-time evaluation on live prices with virtual positions; tracks net returns after simulated fees. Paper positions are only created from concrete graded brackets — never from vague ideas. |
| Replay backtester | Pro (10-step) / Apex (50-step) | Replays execution step-by-step over historical data so you can stress-test continuation rulesets and risk levels against what the engine would actually have done. |
Replay results are labeled as simulations everywhere they appear — simulated performance never mixes with live performance statistics.
8. Concrete Setup Examples
GRADED CANDIDATE · NO_TRADE · FIELD REFERENCE
A graded trade candidate produced by the scout and approved by the validator looks like this:
{
"symbol": "BTCUSDT",
"direction": "LONG",
"entry": 59250.00,
"stop_loss": 58600.00,
"take_profit": 61200.00,
"risk_pct": 1.5,
"leverage": 10,
"net_rr_ratio": 3.0,
"setup_thesis": "Trend continuation breakout above key resistance with strong volume confirmation."
}And a refusal — the verdict you will see most on ranging days:
{
"verdict": "NO_TRADE",
"reason": "Range-bound structure; no continuation setup meets the net R:R threshold.",
"rerun_after_minutes": 0
}Field reference
| Field | Meaning |
|---|---|
| entry / stop_loss / take_profit | The concrete bracket. Placed as real orders on the exchange when executed. |
| risk_pct | Share of account equity at risk if the stop is hit (position size derives from this). |
| net_rr_ratio | Reward-to-risk after estimated fees; must clear the policy minimum. |
| rerun_after_minutes | Always 0 on NO_TRADE — refusals never schedule their own retry. |
9. FAQ & Troubleshooting
OPERATIONS · GRADING · ACCESS
Why does the system show SYSTEM_ERROR?SYSTEM_ERROR is graded when exchange APIs time out, WebSocket feeds drop, or a model payload cannot be parsed. It is excluded from performance statistics by design — a technical failure is never counted as a missed or losing setup.
Because the engine refused risk. Sideways structure, news block windows, or failed R:R thresholds all produce NO_TRADE verdicts, and a refusal never reruns itself. On genuinely poor days, zero trades is the correct output.
Per day: 5 on Essential, 8 on Dynamic, 14 on Pro, 24 on Apex — with 4 / 8 / 20 / 50 assets scanned concurrently. The full gate-by-gate breakdown is on the pricing page's capability matrix.
Which AI models run my scans?The primary route is a frontier Anthropic Claude model running the combined scout-and-validator analysis in a single call, with automatic fallback to secondary providers (OpenAI, Google) if the primary route is unavailable. Fallbacks follow the same output contract and the same policy audit.
Where does the market data come from?Live Binance futures market data (prices, candles, order-book depth) via a dedicated market-data feed service — the same feed that powers the public order book on the landing page.
Can ElquoAI withdraw my funds?No. There is no withdrawal code path, keys are required to have withdrawals disabled, and the API auditor de-authorizes any key where withdrawal permissions appear. See section 5.
What happens to open trades if ElquoAI goes down?Stop-loss and take-profit orders rest on the exchange itself as real orders, so open positions keep their protection through an ElquoAI outage. No new positions are opened while the engine is down.
Where do I find this documentation?At docs.elquoai.com (also reachable at elquoai.com/docs), always in sync with the deployed cockpit version.
