2.0 KiB
Market Day View Component Benchmark
Date: 2026-08-31
Scope
The platform-expression selection loop already iterates one factor slice for a
single trading date. The previous implementation still resolved the same date
in the market and candidate BTreeMap for every symbol. DailySnapshotView
borrows the existing immutable market/factor/candidate slices and dense row
position arrays once per date, then performs only symbol_id -> row lookups.
The view does not copy snapshots, cache strategy results, share account state, or change missing-row behavior. The optimization is independent of strategy text, thresholds, rolling windows, execution mode and portfolio size.
Release Component A/B
Contract:
- 6,000 symbols;
- 200 complete lookup rounds;
- each lookup reads market close and candidate
allow_buy; - baseline and view checksums must be exactly equal;
cargo test --release, system allocator, local macOS host.
| Round | Baseline seconds | Day view seconds |
|---|---|---|
| 1 | 0.009000 | 0.002939 |
| 2 | 0.004370 | 0.001555 |
| 3 | 0.004274 | 0.001578 |
Median component time changed from 0.004370s to 0.001578s, an observed
reduction of about 63.9% (2.77x). This is a component result only and is
not a complete backtest SLA.
Correctness Gates
- sparse market-only symbols remain absent from factor/candidate views;
- dense and binary-search fallback lookup semantics remain unchanged;
- full engine suite: 529 passed, 3 ignored manual benchmarks;
- next-open execution-day risk, minute matching, fees, slippage, volume limits, corporate actions, delisting and futures tests all passed.
Deployment Status
Not deployed. The 177 FIDC-managed Boris factor task is still active, so no Source Lake, backtest service or engine restart is allowed. After the task ends naturally, acceptance must use the same frozen bundle and compare daily selection, orders, fills, holdings, NAV, risk facts and canonical digest for multiple daily/minute and fixed/dynamic-universe strategies.