Skip to content

Quick Start

This guide walks you through running your first backtest and reading the results. No account required.

  1. Load data

    Open backtest.marketheist.io and locate the Data panel at the top of the page.

    • Enter a ticker in the Ticker field. Any Yahoo Finance symbol works: ^NDX, AAPL, BTC-USD, GLD.
    • Choose a Frequency: Daily, Weekly, or Monthly. Daily is a good starting point.
    • Click Load. The equity chart on the left will populate with the full price history available.

    TIP

Use ^NDX (Nasdaq-100) or ^GSPC (S&P 500) for your first test — these have long, clean histories going back to the early 2000s. :::

  1. Configure a backtest

    In the Strategy panel:

    • Indicator: Select an indicator from the dropdown. SMA Crossover or RSI are good starting points.
    • Parameters: Each indicator exposes 1–3 numeric parameters. For SMA Crossover you'll set a short window and a long window (e.g., 20 and 50 days).
    • Position Rule: Choose how the indicator signal translates into a long position.
      • Threshold — go long when the indicator value exceeds a number you set.
      • Crossover — go long when the indicator crosses above its own moving average.
      • Percentile — go long when the indicator is in the top N% of its recent history.
    • Date Range: Optionally restrict the backtest to a sub-period using the date pickers.
  2. Run and read the results

    Click Run Backtest. Results appear within a second or two.

    The Equity Curve panel shows your strategy (blue) vs. buy-and-hold (grey). Key metrics are shown in the summary row above the chart:

    MetricWhat it means
    SharpeRisk-adjusted return. Above 1.0 is competitive; above 1.5 is strong.
    CAGRCompound annual growth rate — your annualized return.
    Max DDMaximum drawdown — worst peak-to-trough loss during the period.
    % InvestedFraction of calendar days your strategy held a position.

    See Metrics for a deeper explanation of each number, and the Metrics Glossary for formal definitions of all reported statistics.

  3. Save a preset

    Once you have parameters you like, click Save Preset and give it a name. Presets persist across sessions.

    To load a preset later, click the preset name in the Saved Presets list. This restores the full configuration including ticker, frequency, indicator, and parameters.

  4. Add a second backtest for comparison

    Click + Add Backtest to open a second strategy panel. Configure different parameters (or a different indicator entirely) and click Run again.

    Both equity curves appear on the same chart in different colors, and the metrics summary shows both side-by-side. This makes it easy to compare, for example, a 20/50-day SMA crossover against a 50/200-day crossover on the same data.

    WARNING

Comparing many parameter combinations on the same data can lead to overfitting — inadvertently tuning parameters to past noise rather than true signal. Use Parameter Sweep and Walk-Forward Optimization to validate that your results are robust. :::

Next steps


FAQ

What data sources are supported?

Any ticker available on Yahoo Finance — stocks, ETFs, indices (e.g. ^GSPC, ^NDX), crypto (e.g. BTC-USD), commodities (e.g. GLD), and foreign equities. Data is fetched on demand each time you click Load.

Do I need an account to use the tool?

No. The backtesting tool, all indicators, charts, and metrics are fully available without signing in. An account unlocks additional features like cloud-synced presets and strategy sharing.

How far back does the data go?

As far as Yahoo Finance has records for that ticker. For major US indices like ^GSPC and ^NDX, daily data typically extends back to the early 2000s or earlier.

What indicators are available?

RSI, Bollinger Bands, MA Crossover (SMA/EMA), ADX, ATR, CCI, OBV, Stochastic, and VWAP Deviation. You can also write custom indicators in Python — see Custom Indicators.

Why is my Sharpe ratio negative?

A negative Sharpe ratio means the strategy returned less than the risk-free rate (approximately 0%). It usually indicates the signal is inverting — try reversing your position rule (e.g. switch "above threshold" to "below threshold") or adjusting parameters.

MarketHeist Backtest Engine