Test a signal against the history this terminal holds
The availability lag and the survivorship bias are stated on the result rather than assumed away. A signal the server has not declared is refused, not approximated.
Backtest sandbox
Long-or-flat signals over this app's own daily bars and its own point-in-time SEC filings. Every rule the engine follows is stated on this screen, and a run it cannot perform honestly is refused with the reason rather than served with a caveat.
Choose a signal and at least one symbol.
Read this before the number
Fundamentals become visible on the filing date
Every fundamental read is keyed to the SEC filing date and never to the period end. A figure for a period ending 31 December that was filed on 21 February is invisible to this backtest until 21 February. Bars before the fact exists are counted as undecided and hold nothing — which is not the same fact as the signal saying flat, and is reported separately.
The universe is survivorship-biased
The universe is whatever the price provider will answer for today. A company delisted, acquired or bankrupted during the window cannot be entered, because there is nothing to fetch. This app holds no delisting or index-membership history, so the bias cannot be removed here — it is disclosed. Read every figure as conditional on the symbols having survived to today.
One path is not evidence
A run is a single historical path with one parameter set. Nothing is out-of-sample, nothing is cross-validated, no parameter was chosen before seeing the data, and no confidence interval is attached. It describes what the rule would have done. It does not forecast.
Set up a run
What this run will and will not include
Included (0)
Nothing. Every friction below is excluded, so the result is a gross return before any cost of trading.
Excluded (6)
- Transaction cost — none applied. This run will be GROSS.
- Slippage and market impact — never modelled here; this app has no basis on which to estimate either for you.
- Borrow cost — not applicable and not modelled: every shipped signal is long-or-flat, and a short side would need a stock-loan fee and a locate this app does not have.
- Commission, spread and tax — not modelled.
- Risk-free rate — none supplied, so no Sharpe ratio is computed. A Sharpe against an assumed cash rate is an assumed Sharpe.
- Interest on cash — a flat or undecided sleeve is held at 0%, not at a money-market rate.
The default transaction cost is 0 basis points, which means the default result EXCLUDES transaction costs, slippage, market impact and taxes. Nothing here estimates them for you; enter a figure you can defend or read the result as gross.
No risk-free rate is assumed. Without one, Sharpe is not computed and is reported as unavailable rather than computed against an invented cash rate.
No run yet. Nothing is fetched and nothing is computed until you press Run.
A run needs at least 60 sessions covered by every selected symbol before any statistic is computed. The window is never padded to reach that number.
Signals this app will not backtest
Each of these was designed and then deliberately not shipped. The absence is listed so it reads as a decision rather than an oversight.
Any signal with a short side
Missing: borrow availability and borrow cost
A short position's return depends on the stock-loan fee and on whether a locate existed at all. This app has neither series, so a short backtest would be a made-up number with a real chart around it.
Backtest of a saved screen's membership
Missing: point-in-time screen membership history
The app records what a screen returns now, not what it returned on each past date. Backtesting today's members over the past is the definition of survivorship bias, so the screen backtest is not shipped rather than shipped with a warning.
Earnings surprise / estimate revision
Missing: a point-in-time consensus estimate history
The estimates this app can reach are current estimates. Comparing a past actual against a present estimate scores a forecast nobody made. Without an estimate-as-of-then series the signal cannot be computed honestly.
Intraday strategies
Missing: more than eight days of minute bars
The provider serves 1m bars for eight calendar days. A strategy evaluated over eight days is noise with a performance number attached.
News or filing sentiment
Missing: a timestamped historical archive
News is fetched live and not archived per date, so the set of articles retrievable for a past day is whatever survives today — a different and unknowable set from what existed then.