Objective
Restore the interactive signal research workflow on Other / Indicators so a researcher can choose multiple published buy and sell signals, combine each side with boolean logic, inspect fired events, and compare the resulting S&P strategy with S&P buy-and-hold.
Approach
- Added separate multi-select buy and sell groups with independent AND/OR operators.
- Defined AND as same-day intersection and OR as same-day union of the published discrete
triggerarrays. - Kept the selected card's underlying series and threshold as a diagnostic pane.
- Added one labeled marker dataset per selected source signal. Buy and sell markers use distinct colors and triangle directions; holding bands show the combined strategy position.
- Reused the existing monthly-return stats contract for CAGR, volatility, Sharpe, Sortino, and maximum drawdown, with the existing one-bar execution lag.
Files changed
research/reports/templates/pages/indicators.html.j2docs/assets/css/site.cssdocs/assets/js/site.jsdocs/assets/js/charts.jsdocs/other-indicators.htmltests/test_signals_page.pytests/test_site_ia.py
Validation
node --check docs/assets/js/site.js && node --check docs/assets/js/charts.jspython3 -m pytest -q tests/test_signals_page.py tests/test_site_ia.py --tb=short— 26 passed.python3 research/scripts/check_static_reports.py docs— local bundle and canary routes valid.python3 -m research.artifacts check --mode full --offline— deterministic and current.- Browser smoke test on the actual local Other / Indicators page selected two buy signals with AND and two sell signals with OR; the page updated its expression note, displayed separate labeled Buy/Sell marker datasets, and updated comparative Strategy/S&P stats.