Automated Trading Bot using
Moving Average Crossover Strategy

An automated trading bot in Python that leverages a moving average crossover strategy to make buy/sell decisions in financial markets. The bot utilizes the Alpaca API for accessing real-time market data and executing trades. The strategy involves calculating short-term and long-term moving averages of asset prices and generating buy signals when the short-term moving average crosses above the long-term moving average, indicating a potential bullish trend reversal, and sell signals when the opposite occurs. Implemented risk management measures and backtesting to evaluate the bot's performance before deployment.

Decision Tree Implementation
from Scratch in Python

A Python-based decision tree algorithm from first principles, without relying on any machine learning libraries. The decision tree algorithm is designed to recursively partition the feature space based on the values of input features and their corresponding labels. Implemented key components of the decision tree algorithm, including splitting criteria selection, tree node creation, and tree traversal for prediction. Evaluated the performance of the decision tree algorithm using the Iris dataset from scikit-learn, achieving over 90% accuracy on testing data. The decision tree algorithm demonstrates a fundamental understanding of decision tree principles and serves as a foundational building block for machine learning algorithms.

Fantasy Premier League
Team Optimizer

A Python-based optimizer for Fantasy Premier League (FPL), a popular fantasy football game. Utilized data analytics and machine learning techniques to predict player performance and optimize team selection for each gameweek. Gathered data from the official Premier League API and applied feature engineering to extract relevant player attributes. Trained machine learning models, including linear regression and gradient boosting regression, to predict player points per game (PPG) and total points. Formulated the team selection problem as an optimization task, considering budget and position constraints. Implemented optimization algorithms such as linear programming and heuristic methods to select the best starting 11 players for each gameweek.