01
Markets & investment management
How decisions get made under uncertainty, and how much of a result is signal rather than noise.
I'm a Computer Information Systems student at Georgia State, graduating May 2027. Over the past two years I've built three data systems on my own: a forecasting model, a live esports analytics platform and a computer-vision tool that reads game broadcasts. I'm comfortable with messy data and careful about validating it before I trust it. Four projects are below, with the working parts left in.
What I'm paying attention to
01
How decisions get made under uncertainty, and how much of a result is signal rather than noise.
02
Workflow automation, data quality and controls, and finding the root cause instead of the symptom.
03
Python, SQL, and large datasets. Building pipelines, then checking whether the model actually beats the obvious baseline.
04
My concentration, and the part of all this that's moving fastest right now.
What I've built
A five-model PyTorch ensemble that predicts how many turrets fall in a professional League of Legends game, and the betting record I built around it: 1,395 graded positions over 27 months, +5.74% on stake. The inputs weren't in any public API, so I collected them by hand through Google Sheets and Apps Script, and where an automated source existed I checked it against 1,793 games I had counted myself: 85.3% exact agreement, and a statistically significant undercount in the feed (p < 0.001).
The interesting part is that the model is barely predictive. Its out-of-sample R² is −0.002, slightly worse than guessing the average every time, and the returns come from pricing rather than forecasting. I also found a data leak in my own validation: random splits were letting later games inform earlier predictions, which inflated my headline number from +1.44% to +9.59%. I published the smaller one.
PyTorch / pandas / NumPy / Apps Script
A booking application on a seven-table relational SQLite database with indexed tables for flights, seats and bookings. Seat availability is derived at query time with LEFT JOINs, not stored, and a partial unique index stops double-booking when requests overlap: twelve concurrent requests for one seat gave one booking, eleven refusals and no errors. An idempotent seed (15 flights, 17 airports, about 2,400 seats) and 144 passing tests cover concurrency, sign-in, access control and bad input; accounts use hashed passwords and CSRF protection, an admin panel is restricted by role, and an interactive seat map quotes prices live.
Python / Flask / SQLite / Deployed on Render
Riot's esports feed is live telemetry with no history: a game is gone a few hours after it ends. This keeps it. 682 games and 160,953 timeline events across 19 leagues so far, from six sources, behind a 57-endpoint API and a 15-page dashboard.
There is no timeline to ask for, so one is rebuilt by diffing the feed's snapshots frame by frame: every kill, objective and purchase, on the true in-game clock with pauses taken out. Captures that contradict themselves are refused, what the feed drops is retried, and every winner is checked against a second source.
The feed runs 60 to 150 seconds behind the game, and the gap changes by broadcast. The panel below probes for it, tells a paused game from a silent feed, and plays the game back as it happens.
Python / Live APIs / Dashboards
Reads professional broadcasts to capture what no API publishes: summoner spells and their cooldowns, items (about 85% agreement with Riot's data), kills, deaths and assists (97%), level (95%), creep score (90%), and every champion's position on the minimap, tracked every half-second. It learned a digit and icon set per broadcast, and each one is graded against Riot's feed.
Widening the match windows and carrying last-known positions raised kill placement on the map from 66% to 91%, checked against the broadcast camera itself: 99% of placed kills (104 of 105) fall inside the camera's view at the moment of the kill. It feeds the platform live, with roster checks so another stream's game can never leak in; the maps, summoner spells and quest items in the esports panel come from its logs.
Python / OpenCV / NumPy
Finishing a BBA in Computer Information Systems at Georgia State University's Robinson College of Business, concentration in Data Analytics & AI, GPA 3.67, Dean's List. Graduating May 2027.
Contact
I'm looking for a data or business analyst role. Email is the fastest way to reach me.
jimmy28tran@gmail.com