What's being ranked

d-rank publishes the full distribution of 12-month returns achievable by every possible portfolio of NASDAQ common stocks over a rolling window — not one index, not a handful of benchmarks. It answers "given everything I could have owned and every way I could have split it, where does my actual return fall?"

The portfolio model

A portfolio is 100 weight units of 1% each, allocated across up to 100 holdings — a weight shape: the multiset of unit counts per holding (e.g. {60, 30, 10} is a 3-stock portfolio weighted 60/30/10). There are exactly 190,569,292 distinct shapes (the integer partitions of 100), and d-rank processes every one of them, every window.

The model is a memoryless monthly rebalance: the shape — how concentrated or spread out the portfolio is — stays fixed across the 12-month window, but which stocks fill each weight slot is redrawn every month. Draws are asset-count-weighted: a monthly return level shared by 300 stocks is 300× as likely to be drawn as one hit by a single stock — the "random stock-picker" measure, drawing with replacement from that month's cross-section of returns.

This is deliberately not a buy-and-hold model. A buy-and-hold portfolio's monthly returns are serially correlated — the same stocks compound together for the full window. d-rank's monthly redraw removes that correlation by construction, so it answers a different, honest question: not "how did this specific set of holdings do," but "across everything a monthly-rebalanced portfolio of this shape could have held, how good was this outcome." Read the two curves d-rank publishes accordingly:

Concentration-conditioned curve
Shapes bucketed by effective holdings count, keff = 1/Σwi² (a 3-way equal split has keff = 3; a 60/30/10 split has keff = 1/(0.6² + 0.3² + 0.1²) ≈ 2.17). Select the bucket that matches your own portfolio's concentration for the closest comparison.
All-portfolios curve
A uniform mixture over all 190,569,292 shapes — the headline "every portfolio, weighted equally by shape" view.
Random stock-picker curve
A mixture weighted by the number of distinct asset assignments per shape (uniform over the underlying 1%-weight lattice rather than over shapes). This concentrates near ~100-holding portfolios by construction and is published as a secondary reference, not the headline.

Exact math, not simulation

For a fixed weight shape, the distribution of its monthly return over every possible way to fill that shape's slots is computed exactly, in one shot, by discrete convolution (a product of characteristic functions) over that month's cross-section — no individual asset assignment is ever enumerated. The 12 monthly distributions for a window are then compounded in log-return space to get the shape's exact 12-month return distribution. Per-shape results are accumulated into the published curves; the individual shape densities themselves aren't stored.

Returns are discretized to a 10 basis-point grid (0.10%) for this computation — "exact" throughout this methodology means exact given that discretization, not exact to the penny. Grids are sized to cover the full range of observed monthly extremes with padding, so no wraparound or clipping occurs.

Exact vs. grid mode

Every published window is stamped with the mode that produced it:

Exact mode
All 190,569,292 shapes processed individually. Used for the current window each month and for selected historical windows kept as validation references. This is the ground truth the site is named for.
Grid mode
149 canonical shapes spanning effective concentrations 1→100 (all two-part splits plus near-equal-weight portfolios at every holdings count), evaluated in seconds rather than CPU-hours, used for bulk historical backfill. A shape's return distribution depends almost entirely on its keff, so this is a second-order-accurate approximation of the exact result — not a different model. Historical windows are gradually re-run in exact mode as compute allows; each window's bundle records which mode is live.

Data

Prices come from EODHD (End of Day Historical Data), monthly adjusted-close total return series for NASDAQ common stocks. Each month's cross-section includes every stock that traded that month — both currently active and delisted issues. Excluding delisted stocks would silently drop the worst outcomes and bias every published curve upward (survivorship bias); d-rank includes them.

Sanity filters are applied to the raw data, and every exclusion is logged rather than silently discarded: rows require a positive price and both month-end closes present, and monthly returns of −100% or worse, or greater than +2,000%, are excluded as data errors. Nothing is winsorized or clipped to bring it into range — a row is either kept as reported or excluded and logged to a filter log published alongside the run; there is no in-between adjustment of the numbers themselves.

Where you fit in

The "your 12-month return" tool on the main page takes the return you type in and locates it on the selected curve by linear interpolation between the two nearest points of the published percentile grid (1,001 points per curve, spaced every 0.1 percentile) — the same client-side computation used to place the ETF anchor markers (QQQ, QQQE, ONEQ by default). No server, no account, nothing you enter leaves your browser.