Skip to content

feat(tools): add tide-chart equity forecast comparison dashboard#7

Merged
e35ventura merged 5 commits intoentrius:mainfrom
eren-karakus0:tools/tide-chart
Mar 1, 2026
Merged

feat(tools): add tide-chart equity forecast comparison dashboard#7
e35ventura merged 5 commits intoentrius:mainfrom
eren-karakus0:tools/tide-chart

Conversation

@eren-karakus0
Copy link
Contributor

@eren-karakus0 eren-karakus0 commented Feb 27, 2026

Tool Name

Tide Chart

Summary

Interactive HTML dashboard that overlays 24-hour probability cones for 5 correlated equities (SPY, NVDA, TSLA, AAPL, GOOGL) on a single view. Uses get_prediction_percentiles and get_volatility from the Synth API to compare forecasted moves, volatility, and asymmetric risk across equities with SPY as the benchmark anchor.

Demo

tide_chart_demo.mp4

Technical Document

Included at tools/tide-chart/README.md. Covers:

  • What the tool does and the problem it solves
  • How probability cones are normalized and compared
  • Metric calculations (median move, skew, range, relative to SPY)
  • Synth API integration details
  • Usage instructions

Related Issues

Fixes #4

Testing

  • Tests pass in mock mode (python -m pytest tools/tide-chart/tests/ -v) - 12/12 passed
  • Manually tested with mock data
  • Tests added in tools/tide-chart/tests/

Checklist

  • 1-page technical document at tools/tide-chart/README.md
  • Tool lives in its own subfolder under tools/
  • Tool uses synth_client.SynthClient for all Synth API access
  • Code follows project style guidelines
  • Self-review completed

Interactive HTML dashboard comparing 24h probability cones for
5 equities (SPY, NVDA, TSLA, AAPL, GOOGL) using Synth API data.

- Probability cone overlay chart (5th-95th percentile, normalized to % change)
- Sortable rank table with median move, volatility, skew, and vs SPY metrics
- Insight cards for directional alignment, widest range, and asymmetric skew
- Scroll-to-zoom, keyboard accessible, dark premium fintech theme
- 12 tests passing in mock mode

Fixes entrius#4
@e35ventura
Copy link
Collaborator

can you add nominal values as well, so it is not only percentages

Display dollar amounts next to percentage values in the ranking table
(Median Move, Skew, Range columns) and chart hover tooltips, giving
users both relative and absolute context for forecast moves.
Reduce tooltip percentage precision from 3 to 2 decimal places for
cleaner hover display. Update README to reflect nominal dollar values
in the equity rankings table description.
@eren-karakus0
Copy link
Contributor Author

Done! Added nominal dollar values in the latest commits:

  • Table: Median Move, Skew, and Range columns now show both percentage and dollar amount - e.g. +0.253% (+$0.49)
  • Chart tooltip: Hover now displays Median: +0.25% (+$0.49) with the dollar equivalent
  • Dollar values are styled in a muted secondary font so the percentage stays the primary read

Also updated README to reflect the new nominal display.

Plotly's d3-format specifiers are unreliable in unified hover mode,
causing raw floats with excessive decimals. Pre-format percentage and
nominal values in Python to guarantee 2 decimal places.
@eren-karakus0
Copy link
Contributor Author

image

@e35ventura
Copy link
Collaborator

couple notes (once these are addressed, looks good to merge):

  1. when you deselect asset it should also remove the cloud associated with assets projection (and rescale visual for current assets selected)
  2. range should also show equity price like high end and low end (examples: maybe new column with the +3.2 and -2.9 to quickly explain size of projection cloud and or 157.8 and 153.4)
  3. add tooltip to clarify columns
  4. add to chart a way for time associated with the step to be more understandable (ie. 9:30 am et)

- Add legendgroup to traces so clicking legend toggles band + line
  together, with y-axis autorange on legend toggle/double-click
- Replace step-based x-axis with ET timezone time labels (5-min intervals)
- Add 24h Bounds column showing projected price at 5th/95th percentile
- Add CSS tooltips on column headers with descriptions
- Add price_high/price_low projection bounds to metrics
- Set default drag mode to pan instead of zoom
- Improve sort arrow design with inline glyphs and accent highlight
- Improve section title and insight label font visibility
- Add mobile responsive table scroll for narrow screens
- Add tests for projection bounds and new HTML features
@eren-karakus0
Copy link
Contributor Author

Hey @e35ventura, thanks for the feedback! All 4 items have been addressed:

1. Legend click - cloud toggle + rescale

  • Added legendgroup to all 3 traces per asset (upper/lower/median), so clicking the legend toggles the entire probability cone together
  • Added plotly_legendclick and plotly_legenddoubleclick event handlers that trigger yaxis.autorange after toggle, ensuring proper rescale

2. Projection bounds (price levels)

  • Added a new 24h Bounds column showing the projected price range at 5th and 95th percentile (e.g. $538.20 - $557.80)
  • Column is sortable by lower bound price level

3. Column header tooltips

  • Added CSS tooltips on all metric columns (hover or keyboard focus to see descriptions)
  • Example: hovering "Skew" shows "Upside minus downside - positive means bullish bias"

4. Chart time axis

  • Replaced step-based x-axis with ET timezone labels in 12h format (e.g. 03:45 PM)
  • Hover template updated to show time instead of step number
  • Default drag mode changed to pan (more natural for time series)

All 14 tests passing. Let me know if anything needs further adjustments!

@e35ventura e35ventura merged commit 6ed8160 into entrius:main Mar 1, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Tide Chart: Equity Forecast Comparison Dashboard

2 participants