Ethan Holly's Personal Projects


This is an overview of my recent personal projects, including demo videos, technical details, and links to source code github. Enjoy browsing!

Claude-Powered Music Tutor

GitHub Repo

In this project, I developed a prototype Claude-powered music tutor that interactively trains a student to play an instrument, through a call-and-response method. The teacher plays a phrase, conditioned on an initial complexity setting, and then the student tries to play it back. The LLM is then asked to compare the notes the student responded with, evaluates the student in terms of pitch, rhythmic, and expressive accuracy, and then decides what to play the next time around.

2D Fighting Game AI Project

GitHub Repo

In this project, I wrote a 2D fighting game in Python using Pygame, and implemented an AI opponent using a neural network trained with reinforcement learning (PPO), pretrained from BC on human demonstrations and PPO trained with self-play. However, the RL agent was too aggressive and not fun to play against, so I switched to an evolutionary strategy, over hardcoded agents that were authored and mutated by successive calls to Claude. After training, I chose an Aggressive and Defensive agent from the elites, and adapted them to Easy, Medium, and Hard difficulties by prompting Claude to modify their behavior. The final result is a fun-to-play-against AI that can be adapted to different skill levels.

Topdown Shooter AI Project

GitHub Repo

In this project, I wrote a simple topdown shooter game in Python using Pygame, and implemented an AI bot using a neural network trained with reinforcement learning (PPO). Unlike the fighting game, this game require significantly more long-term cohesive action, as the game involves positioning and approaching or retreating from enemies. To get training to be stable and fast, I had to tune the reward function, carefully design the training setup, and design an observation and action space that was expressive yet simple. For example, I represented the observations space around the agent with metadata about which directions of radial movement would move toward and away from enemies, as computed by A*.

LLM Trading Project

GitHub Repo
LLM Trading Demo

In this project, I developed a trading bot that leverages Claude Sonnet 4 to make informed trading decisions. The bot analyzes market data, news articles, and social media sentiment each day, iteratively conducting more and more refined searches for five iterations each day. Then, it generates a prediction about stock performance for the next day and conditions a trading strategy based on that prediction. The bot was backtested over historical stock performance data from Dec 2024 through May 2025, using NewsAPI to simulate the news environment at each day.