qsm quant research console
checking…
Research tool, not an investment product. Every price source here β€” live feed included β€” covers only companies that exist today. Delisted and bankrupt names are missing, so backtests are optimistic and no amount of cross-validation fixes it. Live data makes the prices current, not the universe honest. What else to watch for β†’

Loading…

No run selected.

Configure a run on the left and press Run backtest. A 300-name synthetic run takes well under a minute.

β€”

Model fund the model invests on its own

Your holdings

Analytics

If the model had $10,000

Holdings

A paper record, not a broker. Nothing is ordered β€” quantities and entry prices are what you told it, valued at the latest price. No costs, tax or slippage are applied.

These are backtest outputs, not recommendations. β€œLong / short” is what the model’s rule would have held on the last day of the tested sample, from a strategy whose own net Sharpe you can read on the Results tab. It has not been risk-checked, it ignores your existing positions and taxes, and on a universe of companies listed today it is measured with survivorship bias baked in.
Live prices off

Live forecast record

Every time you run qsm update, that day's forecasts are written down. Once the horizon elapses the real outcome is joined on. This is the model's record on predictions whose answers were genuinely unknown when it made them β€” the backtest numbers elsewhere are replays.

Update history

cd /Users/Johnny/quant-stock-model
.venv/bin/qsm update --universe sp500

Display

Live prices

Polling pauses automatically while this tab is in the background.

Run defaults

These pre-fill the New run panel. Changing them here does not re-run anything.

Account & environment

This runs entirely on your machine β€” there is no account, no login and no data leaves your computer except the price requests to the data provider.

What the model did

Console

Nothing running.

Live feed

Daily adjusted prices from Yahoo β€” no API key or account needed. Downloads are cached for 12 hours; tick Force refresh under Advanced settings to pull fresh bars.

What the numbers mean

IC (information coefficient)
Daily rank correlation between the forecast and what actually happened. This is the cleanest read on forecast quality because it does not depend on how you build the portfolio. 0.01–0.03 is a real signal. Above 0.15 on daily data is almost always a bug β€” start with the null test.
IC t-stat
Whether that IC is distinguishable from zero. Below about 2, you have not found anything, regardless of how good the equity curve looks.
Sharpe before vs after costs
The gap is what trading costs you. A signal that only works before costs is not a strategy. Raise the cost slider until it breaks β€” that tells you the real margin.
Turnover
Fraction of the book traded per day. High turnover against a thin edge is a donation to your broker.
Max drawdown
Peak-to-trough loss. The number that actually ends strategies, since it determines whether you are still holding the position when it recovers.

Why the null test matters

Backtest bugs almost always produce good-looking results, so a strong number is weak evidence on its own. The null test runs the whole pipeline on data containing no signal at all, where the correct answer is β€œnothing.” Run it after any change you make to features or labels. If it passes, you did not introduce lookahead.

Known limitations

  • Survivorship bias β€” including on the live feed. A price API tells you what companies trading today did in the past. It cannot tell you which names were in the index in 2016 and have since been delisted, and the preset universes are lists of firms prominent now. Every backtest here is therefore optimistic. Fresher prices do not fix this; point-in-time constituent data (CRSP, Compustat, Sharadar) does, and it is not free.
  • Stale data on the archives. Kaggle coverage ends 2017 (huge) or 2020 (jackson). The live source runs to the last close.
  • No sector neutrality. The book can concentrate in one sector, so some apparent alpha may be an uncompensated factor tilt.
  • Simplified costs. A flat per-notional charge. Real costs include the spread, market impact, borrow fees, and names you simply cannot short.
  • Multiple testing. Every knob you turn while watching the result spends some of the sample's validity. The walk-forward is honest per run; it cannot protect you from picking the best of fifty runs.