← Results index

Improve individual experiment result graphs

2026-08-17T20:46:37Z Website/UI completed Experiment detail charts now match strategy page quality with Chart.js equity vs S&P and x-aligned signal driver subplots showing actual drivers, distinct fixed/dynamic entry/exit thresholds, multi-condition inputs and rich tooltips, responsive at desktop and 375px.
experiments charts feature

Objective

Bring individual experiment charts to approximately the quality and interpretability of individual strategy charts. Label every axis and unit, improve titles/ticks/date readability, add legends, support desktop and narrow widths, add an x-aligned signal/indicator plot beneath the main performance chart where applicable, plot the actual signal-driving variable with state transitions, show fixed/dynamic and distinct entry/exit thresholds, expose multi-condition inputs and responsible condition, and provide signal event context (date, before/after state, indicator value, threshold, contributing conditions). Reuse shared dependency-free chart components rather than duplicating logic and add executable browser coverage for simple and complex experiments.

Approach

Extended the deterministic experiments payload builder to emit a driver signalSeries per experiment (canonical thresholds per finding: UVOL/DVOL 22 vs 12, VIX backwardation ensemble, NH-NL SMA50, etc.) with values, thresholds, active/trigger arrays, and enriched signals with indicatorValue/thresholdValue/conditionId/contributingConditions/priorState/newState. Added shared Chart.js helpers renderExperimentEquityChart and renderExperimentSignalChart in docs/assets/js/charts.js reusing baseOptions/COLORS/makeSignalsBandPlugin so visual conventions (IBM Plex Sans, grid rgba, legend top, responsive, margins) match strategy pages. Rewrote docs/assets/js/site.js:drawExperimentChart to delegate to those helpers, render two x-aligned canvases (#experiment-chart tall + #experiment-signal-chart) inside .chart-frame, and populate enriched #signal-markers data attrs for tests. Updated research/reports/scaffold.py:render_experiment_detail to emit both canvases in chart-panel sections and load Chart.js via charts=True. Regenerated docs/site-data/experiments/*.json and detail HTML via scaffold and rebuilt the shared artifact manifest.

Files / code / data changed

Validation

Results

Every experiment detail page now shows a polished primary Cumulative performance (rebased to 1.0) line chart with Date x-axis, Equity y-axis, legend (Experiment vs S&P dashed), and a directly beneath x-aligned signal driver chart plotting the actual indicator (e.g., UVOL/DVOL ratio, VIX backwardation score) with entry threshold (solid #1a4a6e dashed 6,4) and exit threshold (dashed 4,4 #b05a1e) distinctly styled, dynamic thresholds as rolling series, and multi-condition inputs (VIX9D/VIX/VIX3M/VXV) with palette colors. State transitions are marked as triangle triggers and shaded active bands; hover tooltips show date, prior->new state, indicator value with unit, required threshold, and contributing condition. Charts reuse strategy page typography/margins/grid and remain readable at 375px (experiment 309px, signal 275px within viewport). No secret or private data in public docs artifacts.

Links

Source artifact: research/results/qm-mhyq.md