← All work

2026 · Full-stack Developer

Easeason

Open-source research visualization tool exploring historical market seasonality across stocks, crypto, and indices.

Stack
Nuxt 4 · TypeScript · Vue · ECharts · Tailwind CSS · shadcn-vue · Yahoo Finance · Vitest
Category
Open Source · Research · Data Visualization
Visit project

What shipped

  • Server-side market-data processing, with historical OHLCV fetched from Yahoo Finance through Nitro API routes.
  • { "Reusable seasonal calculations": "daily adjusted-close returns, day-of-year classification, and election-cycle grouping." }
  • Interactive ECharts visualizations with animated January-to-December playback and PNG export.
  • AI-readable Markdown endpoint so an LLM can consume the seasonal dataset with its surrounding context.
Easeason

Easeason is a small open-source research visualization tool for exploring how assets have historically moved through the calendar year — across stocks, crypto, and indices, and by U.S. presidential election-cycle windows. It is a research surface, not a prediction engine: it visualizes historical patterns, and it does not claim those patterns forecast the future.

What it does

Browse a curated set of assets grouped into Crypto, US Stocks, IDX Stocks, and Indices. Open any symbol and Easeason renders a seasonal profile — cumulative return across the calendar year — for a chosen window: all years, election years, pre-election, mid-term, post-election, Trump presidency years, or the current year. Statistical summaries (average, median, standard deviation, win rate, best and worst return, year-end return) sit alongside the chart.

Engineering

Market data is the hard part. Historical OHLCV is fetched server-side from Yahoo Finance through Nitro API routes, so the browser never talks to the data provider directly. Seasonal calculations run on a daily adjusted-close return basis, classify each year into an election-cycle category, and produce the day-of-year cumulative-return series that both the chart and the export endpoints consume.

The visualization layer is ECharts: responsive, themed for dark/light mode, with animated year playback from January 1 through December 31 and speed control.

Research export

The chart exports as PNG, but the research path also includes Markdown: a per-symbol export of the seasonality context, and an AI-readable Markdown endpoint structured so a language model can consume the seasonal dataset together with its explanation.

Decisions

  • Server-side data fetching. Yahoo data stays behind Nitro routes, keeping client logic focused on the dataset rather than the transport.
  • Calculations as isolated, tested utilities. The seasonality math lives in server utilities under Vitest coverage, so the algorithm is auditable instead of buried in chart code.
  • Markdown as an interface. Making research exportable and machine-readable extends the tool beyond a browser session.