Skip to content

600+ passing tests behind every number on screen

Practise crypto trading on real history, without seeing the next candle.

EdgeTest replays historical crypto markets one bar at a time. You take entries and exits as the tape moves, pay spread, slippage and commission on every fill, and end up with a permanent, filterable record of what you actually did — plus a prop-firm evaluation simulator that enforces the rules that end most funded runs.

passing tests
600+passing tests
indicators
32indicators
chart types
15chart types
drawing tools
71drawing tools

Why it exists

Most backtesting tools let you cheat, and then flatter you about it.

Scroll a chart back and you can already see where price went. Fill at the printed close and your costs vanish. Re-enter a symbol you are already long and a naive simulator happily opens a second, imaginary position. Each shortcut makes the equity curve prettier and the practice worthless.

EdgeTest was built to remove those shortcuts one at a time. Bars are revealed in sequence. Fills pay a half-spread offset, slip by a configurable number of ticks or percent, and are charged commission, optionally per side. A second order on a symbol you already hold nets against the existing position — adding and re-averaging, or reducing, closing, or flipping it — with realized PnL booked only on the part you actually closed.

It grew incrementally over many sessions, one milestone at a time: the replay engine, then the order and position accounting, then drawings and indicators, then prop-firm rules, then the journal, then the deep analytics. Each pass left its reasoning in the code — the conventions chosen, the alternatives rejected, and the things deliberately not built.

A human cannot look at a chart and tell whether a Sortino ratio, a trailing drawdown floor, or a netted average entry price is correct.

So every one of them is checked against a figure derived by hand before the code was written.

The rule the codebase follows

Every new money-math metric gets a hand-derived fixture. Not a snapshot of whatever the code happened to produce — an independently worked-out number the code then has to match. Snapshot tests only prove behaviour did not change. They cannot prove it was ever right.

How it’s tested

The boring guarantee: the arithmetic is right.

A backtester is only worth the arithmetic underneath it. This is how that arithmetic is held in place.

Every money metric has a hand-derived fixture

Fill costs, realized PnL, R-multiples, MAE/MFE, drawdown floors, payout dollars and netting splits are each asserted against numbers worked out by hand first and written into the test file. Nobody can eyeball whether a Sortino ratio is right by looking at a chart.

Six hundred-plus tests, all passing

The engine is pure math with no React and no fetch, precisely so it can be tested this way. The replay scheduler takes its clock by injection, and the Monte Carlo resampler takes its random source by injection, so both are deterministic under test.

Persistence is proven by cold restart

Session state, drawings, chart settings and templates are not assumed durable. They were verified by shutting the app down and bringing it back up, then checking the restored state matched.

Deliberate gaps are labelled, not hidden

Where a tool is not built, the interface says so and gives the reason, instead of rendering a button that quietly does nothing. Twenty-four toolbar entries are labelled that way today.

$ npx vitest run

 Test Files  44 passed (44)
      Tests  686 passed (686)

Output from a real run of the suite in this repository.

What’s in it

A full replay desk, not a demo.

Everything below is implemented and shipped in the app today.

Bar-by-bar replay

Historical crypto candles, revealed one bar at a time, so you cannot see the future you are about to trade.

  • Step a bar at a time, or run the tape at 1x, 4x, or max speed
  • Keeps advancing in a backgrounded tab — max speed is for unattended fast-forwarding
  • Eleven wired timeframes from 1m to monthly, plus custom intervals, all rolled up from a 1-minute source
  • Switch timeframe mid-session without disturbing an open position
  • Up to three panes, each showing any symbol in the session

Fills that cost you something

A paper fill at the printed close is a lie. Every entry and exit here pays the spread, slips, and is charged commission.

  • Slippage in ticks or percent, per-instrument tick size
  • Spread applied as a half-spread offset in ticks or percent
  • Commission as percent or flat, optionally charged per side
  • Market, limit, and stop orders, with take-profit and stop-loss triggers
  • Price alerts on levels, absolute moves, percentage moves, and channel breaks

Position accounting that nets

Trading the same symbol again does not open a second ticket. The engine nets against what you already hold.

  • Same-direction orders add to the position and re-average the entry
  • Opposite-direction orders reduce, close, or flip it
  • Realized PnL is booked on the reduced portion only
  • One open position per symbol, enforced by the ledger, not by convention
  • Equity, floating PnL, and margin all recomputed on every tick

Prop-firm simulation

Evaluations fail on rules, not on returns. This models the rules, including the ones that quietly end runs.

  • Multi-phase evaluations with per-phase profit targets
  • Static max drawdown, trailing drawdown, and daily-loss limits
  • Consistency caps — no single day may exceed a set share of total profit
  • Four ready templates: two-step, one-step, instant funded, two-step with consistency
  • Payout schedules on daily, weekly, or monthly cycles, with live telemetry of how far you are from every floor

Statistics worth trusting

The numbers you would actually change your behaviour over — each one covered by its own fixture.

  • Net PnL, win rate, profit factor, expectancy, average R, max drawdown, Sharpe, Sortino, win/loss streaks
  • Breakdowns by side, hour of day, day of week, and month, plus a performance calendar
  • MAE / MFE analytics: ideal RR, missed profit, average drawdown on winners
  • Returns distribution, outlier detection, profit structure, buy-and-hold benchmark, CAGR
  • Equity curve, RR simulator, and a Monte Carlo bootstrap with risk-of-ruin

A journal that reopens the chart

Every closed trade is a permanent record you can filter, annotate, and replay in its original context.

  • Filter by asset, session, strategy, recency, outcome, mood, and free text
  • Click any trade to reopen it on a read-only historical chart
  • Log confidence, mood, and tiredness per trade, plus a reusable confluence-tag library
  • Export the filtered set to CSV
  • Name strategies and roll performance up per strategy across every session tagged with it

Chart work you already know

Seventy-one working drawing tools, thirty-two indicators, fifteen chart types. Nothing is a screenshot.

  • Trendlines, rays, channels, the pitchfork family, Gann tools, Fibonacci in ten forms
  • Harmonic patterns, Elliott wave sets, cycles, brushes, shapes, text, and long/short position tools
  • Ichimoku, SuperTrend, Parabolic SAR, ADX/DI, Bollinger, Keltner, Donchian, VWAP and anchored VWAP, and 23 more
  • Candles, hollow candles, Heikin Ashi, bars, line, line with markers, area, baseline, columns, step, Renko, Kagi, Point & Figure, line break, and range
  • Volume profile, fixed-range and anchored profiles, and TPO market profile

Nothing is lost on refresh

Cursor, balance, open positions, drawings, and chart settings are durable — proven by real cold restarts, not by hope.

  • Replay position, balance, and open positions persist per session
  • Drawings and chart settings persist, and can be saved as named templates reusable across sessions
  • Scrub back to any earlier point for a read-only review that cannot touch the live ledger
  • Theme and language live on the account, so they follow you across devices

Eight USDT pairs

BTC, ETH, SOL, BNB, XRP, ADA, AVAX and DOGE, each with its own tick size feeding the fill-cost model.

Multi-symbol sessions

One session can hold several symbols with one balance across them, arranged in up to three panes.

Non-destructive review

Scrub back to any earlier bar and read the state as of that instant. Reviewing history cannot alter it.

Pricing

Plans

Accounts are free to create. Trial gives you one real session — up to 249 trades or 7 days from signup — to actually put the engine through its paces, not a crippled demo. Upgrading happens from the Account page after you're in — sales tax for your own country is calculated automatically at checkout.

Trial

One real session — a genuine trial, not a nagware demo.

Freeforever

  • One session, up to 249 trades or 7 days from signup
  • All 32 indicators and 15 chart types
  • One strat, basic stats (net PnL, win rate, total trades)
  • Journal: first 30 trades, then 1 free AI report
Create an account

Lite

Full advanced analysis and Prop Sim, on a lifetime cap.

$5per month

  • Up to 3 sessions and 3 Prop Sim challenges, ever
  • Unlimited strats and trades
  • Full advanced statistics — Sharpe, Sortino, drawdown, streaks, and more
  • RR Simulator, Monte Carlo, and the full Prop Sim rules engine
  • Journal: first 30 trades, then 1 free AI report
Create an account

Pro

Popular

Everything, fully unlimited.

$10per month

  • Unlimited sessions, trades, strats, and Prop Sim challenges
  • Full, unlimited, ongoing Journal — no trade cap
  • AI journal analysis, regenerated once per day
  • Advanced statistics — Sharpe, Sortino, drawdown, streaks, and more
  • RR Simulator, Monte Carlo, and full Prop Sim access
Create an account

Find out what your strategy does when it cannot see ahead.

Create an account, pick a pair and a starting balance, and start the tape.