Selected work

Personal project · Data pipeline · May — June 2025

WarStock

A scheduled Python pipeline that turns market data and news feeds into an inspectable, experimental signal.

Role
Project creator
Timeline
May — June 2025
Stack
Python · React + Vite · GitHub Actions · RSS · Recharts · Vercel
Project at a glance
5 tickers · 3 RSS searches · Hourly automation
WarStock terminal showing a risk score, historical graph, and raw dataView full image

Overview

WarStock runs a scheduled Python model, persists timestamped score history, and serves it to a React dashboard through a serverless API with a direct-data fallback.

Composite indicators can look authoritative while hiding fragile inputs. This project treats the result as an experimental signal and makes its data sources, weighting, history, and limitations inspectable.

How it works

Follow the data from input to interface.

  1. Feeds

    Read five market tickers and three news RSS searches each hour.

  2. Python

    Score inputs, reuse valid values on source failure, and save timestamped history.

  3. Dashboard

    Serve the history through an API with a raw-data fallback and CSV export.

What I built

  • Built the Python ingestion and scoring pipeline, persisted history, serverless API, and terminal-style React dashboard.

  • Integrated five Yahoo Finance tickers and three Google News RSS searches without requiring application secrets.

  • Added browser-side JSON and CSV exports, manual refresh controls, and continuous integration for backend checks and the production frontend build.

Key choices

  • Kept the model deliberately simple: an 80% stock signal and 20% keyword-weighted news signal, normalized to 100.

  • Logged source errors and reused the previous valid component when an upstream feed failed.

  • Made component scores, history, and exports visible so the output can be audited instead of treated as a prediction.

Outcomes

  • Runs the complete ingestion-to-visualization loop every hour through GitHub Actions.

  • Continues serving score history through a raw GitHub fallback if the Vercel API route is unavailable.

  • Demonstrates scheduled data processing, error handling, persistence, API delivery, visualization, and export in one small system.