Bot won't connect? Start here.
The SDK only mirrors events your bot already produces — it never touches your broker or orders. So when something's off, it's almost always one of a handful of things. Work top to bottom.
First: run the 30-second self-test
From the machine your bot runs on, with your real key. If this shows up on the dashboard, the connection works and the problem is in your bot's event calls — not the pipe.
import os
from elevate import Monitor
m = Monitor(api_key="em_live_YOUR_KEY", bot="my_bot", mode="paper")
m.signal(sym="ES", side="long", reason="self_test", price=5100.0)
m.fill(sym="ES", qty=1, price=5100.0, side="buy")
m.exit(sym="ES", qty=1, price=5102.0, pnl=100.0, reason="self_test")
m.close()
print("sent — now open the dashboard, Connect, and look for bot=my_bot") - Appears in the live feed (~5s): the pipe is fine — jump to "no trades / no score" below.
- Nothing appears: it's the key or network egress — see "shows nothing" and "401s" below.
Common issues
I connected but the dashboard shows nothing
Checks
- Are you signed in AND did you click connect? The dashboard only streams after Connect.
- Is your bot actually running and emitting events right now? A dormant bot shows nothing until it fires a signal or heartbeat.
- Is the API key correct? A wrong key fails silently — the SDK swallows the 401 so your bot keeps trading. Re-copy it from Account → API keys.
- Does the bot's
bot=name match? Events are grouped under your key's label — check the bot filter dropdown for the right name. - Can the bot's machine reach
app.elevatemindstudio.net:443(outbound HTTPS)? On a locked-down VPS this is the usual culprit.
Fix
Run the self-test snippet above from the bot's machine with your real key. If bot=my_bot appears in the live feed within ~5s, the pipe works and the issue is in your bot's event calls. If it doesn't appear, it's the key or network egress.
My bot shows online but there are no trades, no score, no ranking
Checks
- Is your bot calling
mon.exit(...)when a position closes? Closed-trade stats (P&L per trade, win rate, Sharpe, ElevateMind Score, leaderboard) are ALL derived fromexitevents. - Heartbeat and risk events keep the dot green but never produce trades — they're status pings, not closed trades.
- Has the bot actually closed a trade since you wired it? You need at least one
exitwith a realizedpnl.
Fix
Add a mon.exit(sym, qty, price, pnl, reason) call in your position-close handler (where you already compute realized P&L for your own logs). The dashboard fills in after the first exit.
My bot shows under the wrong name
Checks
- The dashboard groups by the API key's label, not the
bot=string in your code. - If you renamed the bot in code, the key label didn't change automatically.
Fix
Keep the key label and your bot= name the same. Rename the key in Account → API keys to match your bot, or vice-versa.
My paper/demo bot shows as 'live' (or the Live board shows the wrong pill)
Checks
- Is
mode=set when you build the Monitor? It defaults tolive. - The Mode filter and the Live board read this field directly.
Fix
Pass mode="paper" / "demo" / "evaluation" (e.g. from an ELEVATE_MODE env var) when constructing the Monitor. One Monitor per mode if a bot runs across several accounts.
My bot went offline / events stopped
Checks
- A bot with no events for 5+ minutes fades to offline. That's expected when it's between sessions.
- Did the bot process crash or lose network? Events are dropped silently when ElevateMind is unreachable (so trading is never blocked).
- Is
mon.close()hooked on shutdown? Without it, the last queued events are lost on a clean exit.
Fix
If the bot is idle between sessions, call mon.heartbeat() once a minute to stay green. If it crashed, check the bot's own logs — ElevateMind only mirrors, it never affects the trading loop.
Nothing posts at all / I get 401s
Checks
- Is the key active? A revoked or deleted key 401s. Check Account → API keys.
- Are you posting to the right base URL? Production is
https://app.elevatemindstudio.net. - If you point at a raw IP with a domain certificate, TLS verification will fail — use the domain, or disable verify only for a temporary IP setup.
Fix
Re-issue a key from Account → API keys, drop it in the bot's .env as ELEVATE_API_KEY, and restart the bot. Never hardcode or commit keys.
Backtest: my symbol isn't in the list
Checks
- Only symbols we have cached bars for are backtestable. The grid shows exactly what's available.
- Micro contracts (MES, MNQ, MGC…) appear next to their full-size parent and reuse the same bars.
Fix
Pick the closest available product (or its micro). If you need a symbol we don't list yet, contact support — we add products as our data coverage grows.
Backtest: the P&L looks ~10x too big or too small
Checks
- Did you pick the full-size contract when your bot trades the micro (or vice-versa)? A micro is 1/10 the dollar multiplier of its parent.
Fix
Match the contract size to what you actually trade — MES ($5/pt) vs ES ($50/pt), MNQ ($2) vs NQ ($20), etc.
Quick diagnostic checklist
- Signed in and clicked connect?
- Bot process running and emitting right now?
- API key correct, active, and in the bot's
.env? - Outbound 443 to
app.elevatemindstudio.netopen from the bot's machine? bot=name matches the key label?mode=set correctly (live / paper / demo / evaluation)?mon.exit()wired (needed for trades, score, ranking)?mon.close()hooked on shutdown?
Still stuck after these? Email support with your bot name, mode, and what the self-test did — we'll trace it with you. See also the SDK docs.