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 marketheist.io/backtest/ 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