SpikeWatch is a desktop trading workbench for crypto futures. Backtest your strategies on real exchange data, then run them live with the same code path — TP, SL, trailing stops included.
Different libraries for backtesting and live trading. TP/SL logic that drifts apart in production. Hand-rolled rate limiters that 429 your account at the worst possible moment. We've been there.
Your backtest hits TP on the next bar; production fires SL first. Same idea, different code paths, different results.
REST loops, CSV logs, Streamlit on top, hope for the best. One bad weekend and the whole thing crashes silently.
Daily, hourly, ad-hoc. Each gives a different ratio, none of them agree, and you have no idea which to trust.
Every feature is built on a single shared core. If a backtest is profitable, the live run executes the exact same TP/SL/trailing logic — pinned by 15 golden tests.
trade_state.step() is the single function that decides every exit —
live ticks and backtest candles share it.
One file per strategy. Subclass Strategy, list your params,
write signal() — UI and engine pick it up automatically.
Single aiohttp.ClientSession with a 20-wide
semaphore. ~50 s monitoring cycles dropped to 3–5 s.
Reads each exchange's quota header in real time. Pauses at 80%, backs off exponentially on 429. Resets on the next 2xx.
Lifetime history in WAL-mode SQLite. Idempotent inserts keyed on (symbol, exchange, open_time). CSV mirror for safe rollback.
Log returns of the resampled equity curve, crypto 24/7/365 calendar. Sortino & Calmar reported alongside, same denominator.
PyQt + pyqtgraph. Open trades, equity curve, color-coded sweep telemetry — and your last session restores on launch.
Binance USDT-M Futures and Bitget USDT Futures v2 today. Add a third exchange behind the same data-layer interface.
Cross-thread updates over a single signal bus. Trade opens, closes, and telemetry flow into the UI without polling.
Loading representative backtest…
—
Each lives in strategies_pkg/ as ~50 lines of code.
Add yours the same way — zero edits to the engine.
A ±N% candle close opens a trade in the move's direction. The original SpikeWatch signal — dead simple, very fast.
Short/long EMA cross opens; the reverse cross closes. Classic trend-follower with configurable periods.
Bollinger-style entry on a band breach; closes when price touches the moving-average mean. Showcased above.
from ..strategy_base import ParamSpec, Strategy, register @register class MyStrategy(Strategy): NAME = "My Custom Strategy" PARAMS = [ ParamSpec(name="lookback", label="Lookback", default=14, kind="int"), ] def signal(self, i, bars): # your logic here return "long" # or "short" / None
That's it. The UI builds inputs from PARAMS, the engine picks
it up at startup, and your strategy runs through the same
trade_state.step() as every other signal.
You've got a Jupyter notebook full of ideas. Drop them into
strategies_pkg/ and see how they hold up
on six months of 1-minute data.
You want to stop refreshing the chart. SpikeWatch monitors hundreds of symbols at once and acts when your conditions hit.
Burned once by a backtest that worked in Pandas but failed in production? Live and backtest share one function. No drift.
Launch pricing — locked for two years on annual plans.
For the spreadsheets-at-2am crowd.
Full backtester + live automation.
For research teams & multi-strategy desks.
Paper trading is always free. Live automation requires a Pro or Quant subscription and your own exchange API keys (read+trade scopes; no withdrawal).
No. SpikeWatch is a desktop app that runs on your machine. Your exchange API keys stay local. Withdrawal permission is never required (and should never be granted to any trading bot).
It doesn't. Both call the same trade_state.step()
function — backtest passes OHLC bars, live passes single-price
ticks. Fifteen golden tests pin the contract so they can't diverge.
Binance USDT-M Futures and Bitget USDT Futures v2 today. The data layer is exchange-agnostic at call sites, so adding a third is a one-file lift.
Yes — see the code snippet in the Strategies section. Subclass
Strategy, register it, drop the file in
strategies_pkg/. Pro and Quant tiers run
custom strategies in production.
Yes. They come from running the actual Mean Reversion strategy
in SpikeWatch against BTCUSDT 1-minute klines from Binance
between 1 Jan and 22 May 2026 — roughly 204k candles producing
7,844 trades. The numbers shown were exported straight from the
app's Export Backtest… button, no manual
editing. As always, past performance doesn't guarantee future
results — run your own parameters in the app to compare.
Yes. The backtester tier is free, no credit card. We charge only when you turn on live automation.
Download the desktop app and run your first backtest in under five minutes.