Results · Research Memo · Model Selection · Validation
Intraday equity price-discovery & market-neutral statistical-arbitrage research engine
CrossImpact studies whether information is absorbed unevenly across a tightly related basket of liquid US growth/technology equities. The project converts that hypothesis into a point-in-time research system: residual features → cross-sectional portfolio construction → next-minute simulated execution → transaction costs → share-level P&L → robustness and model-selection diagnostics.
Research status: development candidate, not a live or analyst-blind OOS track record. All February–July 2026 slices have now been inspected. The annualized figure below is a geometric extrapolation from 106 observed post-warmup sessions.
The publication headline is deliberately unlevered / 1× only.
| 1× result | Value |
|---|---|
| Observed period | 2 Mar–31 Jul 2026 |
| Trading sessions | 106 |
| Observed net return | +9.27% |
| Geometric annualized return | 23.45% |
| Annualized daily Sharpe | 4.59 |
| Annualized daily volatility | 4.62% |
| Maximum drawdown | -1.01% |
| Net P&L on $1m | +$92,672 |
| One-way effective cost assumption | 1.0 bp |
| Explicit leverage multiplier | None |
The 1× book remains positive under materially worse execution assumptions:
- 2 bp one-way cost: 16.90% annualized, Sharpe 3.41.
- 5-minute fill delay at 1 bp: 17.70% annualized, Sharpe 3.64.
- 2 bp + 5-minute delay simultaneously: 11.44% annualized, Sharpe 2.43.
These are development backtests, not claims of future/live performance.
v5.1 used equal pre-neutralization weights inside the 09:59 opening sleeve. v5.2 uses linear rank weights: the most extreme cross-sectional residuals receive more of the same 1× gross budget before exact aggregate dollar/beta neutralization.
The change was selected from pooled pre-June evidence:
| Opening allocation | Pre-June annualized | Pre-June Sharpe | Full 106-session annualized |
|---|---|---|---|
| Equal | 17.64% | 4.42 | 20.65% |
| Linear rank | 19.33% | 4.48 | 23.45% |
| More aggressive concentration | Rejected | Rejected | Not promoted |
The later June–July slice was checked after the linear-rank rule was chosen.
A drawdown budget is a ceiling, not a target. We tested more aggressive unlevered ways to deploy risk: narrower books, squared-rank concentration, earlier opening entries, a closing sleeve, and an overnight-gap sleeve. Those candidates either degraded the earlier chronological windows, became single-name dependent, or exposed portfolio-construction problems.
So the strategy stays near 1% observed drawdown. Forcing it toward 5% on the same sample would mean accepting weaker trades or over-concentrating the book, which is the opposite of good quant research.
CrossImpact tests two related price-discovery mechanisms:
- Opening cross-sectional continuation — after the market has traded for 30 minutes, beta-adjusted from-open returns contain information about short-horizon continuation across related equities.
- Conditional cross-impact continuation — after a material Nasdaq move, exactly seven of nine names showing persistent 15/30-minute residual direction identifies a regime in which cross-sectional residual continuation is more tradeable than broad residual momentum.
The system does not predict raw market direction. Each sparse alpha vector is projected onto exact aggregate dollar- and rolling Nasdaq-beta neutrality.
flowchart LR
A[1-minute OHLCV] --> B[Session-safe returns]
B --> C[Rolling NAS100 beta]
C --> D[Beta-adjusted residuals]
D --> E1[09:59 opening rank signal]
D --> E2[Conditional CrossImpact core]
E1 --> F[Sparse signed alpha vector]
E2 --> F
F --> G[Selected-support dollar/beta projection]
G --> H[1x gross target]
H --> I[Next-minute simulated execution]
I --> J[Costs + position ledger]
J --> K[P&L / drawdown / attribution]
K --> L[Cost, latency, bootstrap, audit trail]
- 09:59 ET: compute beta-adjusted return from the session open; rank the cross-section; construct a rank-weighted top-4/bottom-4 sparse target.
- 10:29 ET: replace the opening position only if the core CrossImpact gate is active and the Nasdaq shock exceeds the stricter q70 threshold.
- 10:59 and 11:59 ET: evaluate the standard CrossImpact core gate.
- Intraday only: all positions are liquidated; no overnight inventory.
A completed signal minute must precede the simulated fill. The headline configuration uses a one-minute signal-to-fill delay.
For stock (i), rolling benchmark beta is estimated from strictly prior intraday observations. Short-horizon residual return is approximately
[ \epsilon_{i,t}=r_{i,t}-\hat\beta_{i,t}r_{NQ,t}. ]
The opening sleeve ranks the beta-adjusted from-open residual. The selected tails receive linear rank magnitudes, giving the most extreme residuals more pre-neutralization weight.
The sparse signed alpha vector (v) is then projected to the nearest vector (w) satisfying
[ \mathbf{1}^T w = 0,\qquad \beta^T w = 0, ]
with all unselected names fixed at zero, and finally normalized to 1× gross.
Important construction detail: this is an aggregate exposure projection, not a hard per-name sign constraint. The projection can adjust or, in rare cases, change an individual selected name's sign to satisfy exact net/beta neutrality. The repo documents that explicitly because pretending otherwise would misdescribe the implemented portfolio.
| Slice | Observed return | Annualized | Sharpe | Max DD |
|---|---|---|---|---|
| Development | +1.85% | 8.77% | 1.89 | -2.38% |
| Validation | +2.03% | 15.54% | 3.30 | -0.72% |
| Later research slice | +3.96% | 32.26% | 4.88 | -1.01% |
| Post-warmup combined | +9.27% | 23.45% | 4.59 | -1.01% |
These slices are useful diagnostics, but because the project evolved while the overall sample was available they should not be presented as pristine OOS partitions.
The result reconciles to the trade/event ledger:
| Component | P&L |
|---|---|
| Opening sleeve gross | +$96,942 |
| Core sleeve gross | +$19,621 |
| Modeled transaction costs | -$23,891 |
| Net P&L | +$92,672 |
The opening sleeve is therefore the dominant contributor; the conditional core remains an economically distinct later-morning mechanism.
| One-way cost | Annualized | Sharpe | Max DD |
|---|---|---|---|
| 0.5 bp | 26.87% | 5.17 | -0.94% |
| 1.0 bp | 23.45% | 4.59 | -1.01% |
| 2.0 bp | 16.90% | 3.41 | -1.15% |
| 3.0 bp | 10.69% | 2.23 | -1.29% |
| 4.0 bp | 4.80% | 1.05 | -1.55% |
| Signal-to-fill delay | Annualized | Sharpe | Max DD |
|---|---|---|---|
| 1 min | 23.45% | 4.59 | -1.01% |
| 2 min | 21.60% | 4.25 | -0.97% |
| 3 min | 20.98% | 4.21 | -0.92% |
| 5 min | 17.70% | 3.64 | -1.05% |
The project also tests cost and latency jointly, not just one at a time.
The repository intentionally retains losing/fragile research. Highlights include:
- ungated residual momentum;
- weaker q50 shocks;
- 8/9 and 9/9 persistence regimes;
- volatility-normalized continuation;
- walk-forward Ridge forecasting;
- SPX+Nasdaq factor variants;
- alternative 30/45/90-minute schedules;
- narrower top-1/top-2 opening books;
- squared-rank opening concentration;
- earlier 09:44/09:49/09:54 entries;
- late-day continuation/reversal sleeves;
- overnight residual-gap continuation, rejected despite spectacular raw results because leave-one-out analysis showed severe AMD dependence and normalization/constraint audits did not support a stable cross-sectional interpretation.
See docs/MODEL_SELECTION_LOG.md and research/v5_2/ for the audit trail.
A circular five-session block bootstrap gives a sampling-only median annualized return of ~23.16% and a 95% range of roughly 7.90% to 43.21%.
That range does not account for researcher degrees of freedom, strategy selection, vendor-specific effects, capacity or real market impact. It is deliberately not presented as a confidence interval for future alpha.
The committed demonstration run uses public 1-minute OHLCV evaluation samples for nine US equities plus NAS100/SPX500 diagnostic indices. The bundled/public provider data do not contain historical NBBO quotes, so the 1–4 bp one-way execution costs are stress assumptions, not reconstructed spreads/market impact.
Raw third-party market files are excluded from the GitHub archive. Reproducible download scripts and a SHA-256 data manifest are included.
python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
make data # if raw public files are not already present
make reproducemake reproduce regenerates the research results/report, runs the test suite and runs result-integrity checks.
The result fingerprint records:
- raw-data SHA-256 manifest;
- configuration SHA-256;
- source/script tree SHA-256;
- Python / NumPy / pandas versions;
- deterministic bootstrap seed;
- experiment ID.
config/ frozen v5.2 research configuration
src/crossimpact/ feature, strategy and event-driven backtest engine
scripts/ data, research, report and validation entry points
tests/ leakage, neutrality, execution and accounting tests
research/ model-selection grids and rejected variants
research/v5_2/ final concentration/risk-budget research audit
results/ committed 1× ledgers, metrics and publication figures
docs/ research memo, architecture, design decisions, testing, limitations and interview notes
- Read this README.
- Open
docs/QUANT_RESEARCH_MEMO.md. - Inspect
results/figures/alpha_performance.pngandresults/figures/execution_robustness_heatmap.png. - Read
docs/MODEL_SELECTION_LOG.md— especially the rejected overnight result. - Read
docs/DESIGN_DECISIONS.mdanddocs/TESTING_AND_VALIDATION.md. - Inspect
src/crossimpact/strategy.py,src/crossimpact/backtest.py, and the tests.
docs/ARCHITECTURE.md— system/data-flow map and module responsibilities.docs/DESIGN_DECISIONS.md— modelling, portfolio, execution and validation choices with justifications.docs/TESTING_AND_VALIDATION.md— what the 16 tests and result-integrity checks protect against.PROJECT_STATUS.md— frozen research status and evidence boundary.PUBLISHING_CHECKLIST.md— final GitHub release steps and public-claim guardrails.
Freeze v5.2. Do not tune February–July again.
The next meaningful research step is a broader, longer and more execution-realistic experiment:
- 50–100 liquid US equities;
- QQQ / SPY / sector-ETF hierarchy rather than one benchmark only;
- multi-year 1-minute history;
- historical top-of-book/NBBO where possible;
- preregistered final holdout or prospective forward window;
- turnover-aware portfolio optimization and capacity analysis.
A higher return from new opportunities and new data would be meaningful. A higher return obtained by forcing this same 106-session sample toward a 5% drawdown would not.
MIT. Market-data rights remain with the respective data providers.




