The Model
Prices come from a model of the economy and interest rates, each company's earnings and fair value, volatility that clusters, stocks that move together, and an order book where size costs more. It's checked against real markets, and you can inspect every part of it.
Measured against real markets
pt-v21, the default model in tradefloor 0.10.2, passes all 40 pre-registered validation criteria on held-out seeds. They cover replays of the 2008 and 2020 crises, how often crashes happen, trading bots built to exploit a leak in the model, interest rates, earnings and the cost of trading. All 19 statistics in the one-year validation panel fall within bands measured on real markets. The criteria and their pass marks were fixed before the model was graded. The scripts and results are published.
| Check | Real markets | tradefloor | Pass mark |
|---|---|---|---|
| Average yearly return | 6.2% | 6.4% | 4.2% to 8.2% |
| How much the index swings in a year | 18.1% | 18.0% | 14.5% to 21.7% |
| Falls of 10% or more, per decade | 3.65 | 4.24 | 1.8 to 7.3 |
| Worst fall in a 2020-style crash | 34% | 35% | 24% to 44% |
| Worst fall in a 2022-style crash | 25% | 24% | 18% to 33% |
| How closely stocks moved together at the 2008 peak | 0.75 | 0.82 | 0.60 to 0.90 |
All 40 results · How they're measured · Why this preset
Limits of the result
tradefloor doesn't predict real prices, even where it matches these figures. A strategy that makes money here may not make money in live trading. The validation covers a stated range of uses, called the envelope. The one-year panel certifies runs of up to 252 trading days, and the model has six named gaps, among them that volatility memory decays faster than real past the first day and that a driven scenario moves prices at about half to four-fifths of the real size. tf.envelope.check() tells you whether a question falls inside the envelope.
A model you can inspect
The docs explain each part of the model and list all 313 variables you can set, with where each value came from. You can see what drives a result before you rely on it.
341 variables in one engine
Every dot is a variable of model pt-v21, grouped by the part of the market it controls. Press play to watch a real run of 12 companies over 120 days, with a liquidity crisis on day 60.
What each part of the model is doing today
- Economy and rates35bond yield 4.18%
- VIX35VIX 59.5
- Volatility63avg move 1.28%
- Valuation and earnings24P/E 18.5
- Crises and stress24recession odds 42%
- Shocks and jumps19largest move 3.1%
- Liquidity and volume171,838M shares
- Order book26spread 32.7 bp
- Crowd and mispricing11off fair value 0.4%
- Correlation87correlation 0.93
You can set 313 of the 341 variables. The rest are fixed in the preset or derived from others. A line joins a variable to another part of the market if raising the variable by a quarter moved that part in an 80-day test run. That happened for 32 variables. Each bar runs from the reading's lowest to its highest in the run, and its tick marks the normal level, the average before the crisis. A dot glows brighter the further its part moved that day. Hover a dot for its name, its default value and what it moved.
How prices are made · Model parameters · The engine in the docs