Auto Chart
Time series analysis and signal processing are among the most compelling areas within statistics and, more recently, data science. Unlike many domains where transformer architectures now dominate, financial forecasting still relies on a diverse ecosystem of modeling approaches, each offering distinct advantages and limitations.
​
My interest in this space began in high school with a simple question: “If technical analysts trade solely based on chart patterns, why can’t a machine learn to do it better?” While I later learned just how complex the problem truly is, that initial curiosity led me to develop a financial data science project that significantly deepened my understanding of both modeling and software engineering.
​
During this work, I noticed a surprising lack of commercial AI tools capable of reliably modeling short-term price action, despite clear evidence that professionals have devoted substantial effort to the problem. I believe this challenge arises from a meaningful disconnect between technical analysis (TA) practitioners and data scientists. TA traders have effectively built their own domain-specific statistical framework, and markets often react to these signals because so many participants rely on them. This dynamic makes conventional modeling approaches less effective on highly traded assets at small time scales.
​
To bridge that gap, I developed Autochart, a Python package that generates graphical representations and engineered statistical features derived from widely used TA patterns. The goal is to embed into the feature space the same signals that many traders respond to, allowing machine learning models to better interpret market dynamics. In parallel, I am designing a custom model architecture to leverage these features for predicting short-term price movements.
​
Although this project focuses on financial markets, it has strong relevance to robotics. Robotic systems generate continuous streams of sensor data—force readings, joint states, IMU measurements, and other signals that must be interpreted in real time. The techniques underpinning this project, including time-series modeling, signal decomposition, feature engineering, and online prediction, directly translate to robotic perception, control optimization, and fault detection. This work strengthened my ability to extract structure from noisy temporal data, a skill that is foundational to building robust intelligent robotic systems.
Level generation and grading
Levels are a common tool used by technical analysis traders to identify an area where price consolidates. Plotting levels on a candle-stick chart helps traders predict the future movement of the stock. Autochart can automatically detect and plot relevant levels for OHLC data. In addition it can create a graded breakdown of each level, showing the strength of the level over time, and how each interaction with the stock impacts its strength. With this tool traders can easily generate levels and tune the generation parameters to their liking. It is also possible to create a level and have the program evaluate its strength.


Trend line generation and grading
Trend lines are lines that indicate the trend or long term movement of a stock, they can be interpreted similar to levels. Autochart can generate and grade trendlines in the same way as levels.


Text based recursive backtesting
Another tool that can be very useful to traders and those looking to generate features for financial models is a backtesting environment. This allows users to to test different mechanical trading strategies on historical data, and gives statistics about the performance of the strategy. Different commonly used indicators can be tested in confluence with each other to see if certain combinations have significant power of inference on future prices. Also, CV-grid search or some other similar method can be used to test a large number of different indicators and find the best ones. This is very helpful for finding the best features for a model. For this version of a backtesting environment, the idea was to make it as easy to use as possible, with a simple "chat" based interaction loop. This would make it simple to operate for those without coding experience, and meant it could easily be operated by an LLM, which would have been part of a larger project that never came to fruition. This user could use simple forgiving syntax to specify the logic for the buy-to-open, buy-to-close, sell-to-open, and sell-to-close, as well as the entity being traded, and other specifics of how the backtest should operate. Then the program would return a graphical representation of how the backtest went, a table with important statistics like PnL, CAGR, and Sharpe/Sortino ratios, and finally a .csv file that included a complete list of each trade and the realized and unrealized PnL at each time step.
