Your experiment starts here.
Choose your settings and run a historical test.
Results
Portfolio value
Drawdown from prior peak
Zero marks a new high. Lower values show the loss from the latest portfolio peak.
Trade history
| Date | Side | Price | Units* | Cost |
|---|
*Units in the adjusted-price series. Final holdings remain open and are marked to market.
Experiment archive
This browser · latest 10 runsSaved locally on this device. Export JSON to keep a portable copy with the complete dataset and results.
READ THE ASSUMPTIONS
What this backtest actually measures.
Execution & data
A signal uses the previous session’s close and executes at the current close. It first earns the next session’s return. Warmup data comes before your chosen start date. Each strategy and the benchmark pay the same proportional costs; fractional units are allowed. Cash earns zero. No leverage, taxes, separate slippage, or forced final sale.
SPY uses Yahoo Finance daily adjusted closes from 2020 onward. The data date and last successful retrieval appear in the setup panel. The production workflow is scheduled on weekdays at 23:30 UTC (7:30 p.m. Eastern during daylight saving time; 6:30 p.m. in winter). Only completed sessions are included; this is not an intraday quote feed. Adjusted prices incorporate distributions and splits; they are a research approximation, not executable historical quotes. Data source ↗
Strategy rules
Time-series momentum compares yesterday’s close with the close one lookback earlier. The moving-average filter compares yesterday’s close with the average of the preceding lookback closes, including yesterday. It owns the asset only when yesterday’s close is strictly above that average; equality means cash. Both rules act at today’s close and use the same buy-and-hold benchmark and trade-cost setting.
Understanding the metrics
Total return: percentage change from starting capital after modeled costs. Annualized return: geometric return scaled to 252 trading observations. Sharpe: mean daily return divided by sample daily standard deviation, multiplied by √252, assuming a zero risk-free rate. Undefined for constant returns. Maximum drawdown: largest decline from a previous portfolio peak, including starting capital. Volatility: sample daily standard deviation multiplied by √252.
What a good result does not prove
Choosing parameters after inspecting results can overfit this history. This lab does not perform out-of-sample validation. A single ETF and one period do not establish robustness. Imported data must have a consistent daily frequency and adjustment basis. Historical results do not predict future returns.