What changed,
and why.

A running record of improvements to the research engine and the decisions behind them, newest first.

New

A clearer research workspace

The portfolio builder and results dashboard now read as one guided workflow: start from an editable template, customize holdings, choose a comparison, then read the outcome before opening deeper diagnostics.

  • Six diversified starting portfolios, with explicit replacement and continued editing.
  • A direct portfolio-versus-benchmark result covering return, percentage-point difference, drawdown, and Sharpe.
  • Collapsible advanced analytics and per-holding attribution keep the first read focused.
Improved

Execution drag and uncertainty are visible

Rebalanced runs can now model transaction costs and slippage on gross traded notional. Results report turnover, total drag, and deterministic moving-block bootstrap ranges for total and annualized return.

Improved

The live chart enters the first viewport

The dated sample chart is now a visible part of the opening market rail on desktop and mobile. Frontend behavior and styling also moved into focused JavaScript and CSS assets while keeping the no-build deployment.

New

Broader benchmarks and a field guide

Portfolios can be compared with major equity, commodity, bond, real-estate, cash, and inflation references. A dedicated metrics guide explains the return and risk measures used throughout the workspace.

  • Market references include SPY, QQQ, DIA, VTI, GLD, TLT, BND, and VNQ.
  • Modeled HYSA and inflation hurdles make cash return and purchasing power explicit.
  • Light and dark themes follow the system preference and remain manually selectable.
Improved

The backtester becomes a complete workspace

The original dashboard was rebuilt around a benchmark-aware chart, portfolio attribution, rolling returns, a correlation matrix, CSV export, and an event log. The frontend moved from htmx fragments to a JSON/fetch-driven experience.

Fixed

Backtests render reliably

Form validation no longer silently blocks valid capital values, metric values render even in background tabs, and deep links cannot leave scroll-reveal sections hidden.