Spaces:
Running on Zero
Running on Zero
File size: 6,740 Bytes
46f1a78 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 | # Design reference — Backtest Lab
Extracted from `Bit Trading Portal Dashboard/Backtest Lab.dc.html` plus the Bit
design system (`_ds/bit-design-system-b707c3d1…`). This file is the contract the
Gradio UI is built against; `assets/tokens/*.css` and `assets/fonts/*` are
vendored verbatim from that design system.
## Design system
Dark-first, terminal-flavoured. Tokens only — components never use raw colors.
| Role | Token | Value |
|---|---|---|
| Canvas | `--bg-canvas` | `#161512` (stone-950) |
| Panel | `--bg-panel` | `#1d1c18` (stone-900) |
| Raised | `--bg-raised` | `#24221d` (stone-850) |
| Border subtle / default | `--border-subtle` / `--border-default` | `#2c2a24` / `#3d3a32` |
| Text primary / secondary / tertiary | | `#f7f4ec` / `#b6b09a` / `#6f6a56` |
| Primary accent | `--accent-amber` / `-strong` | `#af9209` / `#cfab0a` |
| Secondary accent | `--accent-moss` / `-strong` | `#68781e` / `#7d901f` |
| Up / down | `--fin-up` / `--fin-down` | `oklch(66% .22 149)` / `oklch(62% .26 24)` |
Colorblind mode (`[data-colorblind=true]`) swaps up/down to blue/orange, and
direction is **also** marked with ▲/▼ glyphs — never color alone.
Fonts: headings `Styrene A` (400), body system sans (300), `JetBrains Mono` for
numbers, `Mac Minecraft` for the 8–10px pixel labels. Sizes are small:
`--text-2xs:8px … --text-base:12px … --text-4xl:62px`.
Radii are near-square (`--radius-sm:4px`, `--radius-md:8px`); panels are a 1px
border, no drop shadows (`--shadow-panel: 0 0 0 1px var(--border-default)`).
Section headings are ALL-CAPS Styrene with `--tracking-wide`; micro-labels are
uppercase Mac Minecraft with `--tracking-wider`.
## Layout
Three zones; left `286px`, right `306px` (collapses to `46px`), center fluid.
- **Top bar** — BIT mark, `BIT / Backtest Lab`, context chip
(`BTC-USD · 1H · 2021-08-15 → 2026-08-15 · WALK-FORWARD`), run-status chip,
elapsed (`~4S`), amber **â–¶ Run backtest**, Display menu (Dark mode /
Colorblind-safe prices, footnote `UP/DOWN ALSO MARKED ▲ ▼`), `Portal ↗`.
- **Left — Strategy Builder** (`CFG #0142`), five numbered collapsible sections:
1. Strategy — preset select + params
2. Universe & Data — ticker chips (`+ ticker`), Asset class segmented
(Crypto/Equities/Both), Timeframe chips, Date range (`1Y 3Y 5Y Max`),
Regime filter (`Bull only / Bear only / Chop only`, `NEW` badge)
3. Costs & Execution — Commission/side `0.10%`, Slippage `5 BPS`,
slippage model (`Fixed bps / Volume-scaled / Spread-based`),
fill (`Next bar open / Same bar close`), funding.
Warning: **"Costs on. Turning these off is how strategies lie to you."**
4. Sizing & Risk — sizing (`Fixed % / Kelly fraction / Vol-target 15% ann.`),
leverage `1X…3X`, Max position `35%`, Max concurrent `2`
5. Validation — `TRAIN 12MO · TEST 3MO · ROLL 3MO`, ■TRAIN / ■TEST bands,
OOS holdout `LAST 6MO`
Footer: `Save config`, `Share link`.
- **Center — Results Canvas**, tabs: `Overview · Trades · Comparison · Robustness · Report`
- **Right — Run Manager** — `RUNNING · {progress}`, Run history (`n/6 SELECTED`,
star = favourite, Sharpe color-coded), Trending public configs, `Clone config`,
`Metrics glossary`.
- **Footer** — always visible:
"Simulated results with modeled costs. Backtests are hypotheses, not promises.
Past performance does not predict future results. Not financial advice."
Right: `BITTRADING SDK 0.9.3`.
## States
- **Empty**: "No run loaded" / "Configure a strategy on the left, or start from a
worked example and edit it." + `Load example: Sentiment-Gated Momentum · BTC 1h`
+ shortcut hints `⌘↵ RUN`, `⌘S SAVE CONFIG`, `⌘K COMMANDS`.
- **Loading**: staged labels — `Fetching data`, `Simulating N trades`,
`Walk-forward window k/n`, `Computing robustness`.
## Tab contents
**Overview** — stat band (each stat shows `IS x · OOS y`); `EQUITY CURVE`
(`STRATEGY VS BUY & HOLD`, log-scale toggle, drawdown shading, hatched `HOLDOUT`
band, `REGIME` strip); `UNDERWATER · MAX −23.6%`; `ROLLING 90D SHARPE · MEDIAN 1.24`;
price+trades chart (`▲ ENTRY · ▼ EXIT · HOLLOW = SHORT · HOVER A FLAG FOR THE TRADE CARD`);
`NET P&L DISTRIBUTION`, `HOLDING PERIOD (HOURS)`, `MAE / MFE SCATTER`;
`COSTS PAID TOTAL: $1,842` with the note that the costed number is the real one.
**Trades** — `312 TOTAL · SHOWING 14`, `Export CSV →`, sortable columns:
id, entry/exit time, side, entry/exit px, size, gross, costs, net, R, duration,
MAE, trigger.
**Comparison** — `Time-scale matrix` (`CELL = OOS SHARPE · CLICK TO LOAD RUN`,
scale −0.5 → 2.0), `n/6 SELECTED`, small-multiples equity grid, overlaid
cumulative return (`SHARED SCALE · OOS PERIOD SHADED`), metrics table
(rows: Total return, CAGR, OOS Sharpe, Max drawdown, Win rate, Trades; best
value amber+bold), `RETURN CORRELATION · ARE THESE THE SAME BET?`,
`RETURN ACROSS REGIMES · BULL / BEAR / CHOP`.
**Robustness** — `Overfit verdict` with grade + checklist; `PARAMETER SENSITIVITY ·
FAST MA × SLOW MA · OOS SHARPE` heatmap with `□ CHOSEN` marker;
`MONTE CARLO · 1,000 TRADE RESHUFFLES` cone with `P5 / P50 / P95` and
`P(RUIN > 30% DD)`; `WALK-FORWARD WINDOWS · OOS RETURN` bars with
`CONSISTENCY 6/8 POSITIVE`; `SLIPPAGE STRESS · SHARPE VS BPS`.
**Report** — prose summary, `EQUITY CURVE · STRATEGY VS BUY & HOLD`,
`CONFIG SNAPSHOT`, verdict line, actions: `Export PDF`, `Publish to leaderboard`,
`Publish to graveyard`, `Copy share link`, `Export trades CSV`, `Open in Colab`.
## Presets (design list)
`SMA Crossover`, `RSI Mean Reversion`, `Bollinger Breakout`, `MACD Momentum`,
`Sentiment-Gated Momentum`, `Chronos Forecast Follower`, `Pairs Trading`,
`Buy & Hold (benchmark)`, `Custom (code)`.
`Custom (code)` is shown **disabled** — see DECISIONS.md (D-004). Executing
user-supplied strategy code is forbidden by the build spec, so the control is
present but inert with an explanation rather than silently removed.
## Glossary copy (verbatim, used in the Run Manager tray)
- **SHARPE** — Annualized mean excess return divided by return volatility. Above 1 is good; above 3 usually means a bug.
- **SORTINO** — Sharpe with only downside deviation in the denominator.
- **MAX DRAWDOWN** — Worst peak-to-trough decline of the equity curve.
- **PROFIT FACTOR** — Gross profit over gross loss. Below 1.2 rarely survives real costs.
- **R-MULTIPLE** — Trade P&L expressed in units of initial risk.
- **MAE / MFE** — Worst and best unrealized excursion while the trade was open.
- **WALK-FORWARD** — Train on a rolling window, test on the next unseen window, repeat.
- **OOS** — Out of sample: data the parameters never saw during fitting.
|