Notable Projects


QUANTITATIVE/ALGORITHMIC STRATEGY DEVELOPMENT

Worked with private client to implement a research workflow that used Deep Learning and Machine Learning models for portfolio optimization relative to a benchmark portfolio. Machine learning frameworks used include Tensorflow, Keras, Xgboost, PyPortfolioOpt, RiskfolioLib, and CVXPY.

Worked with private client converting Matlab strategies into Python for the purposes of drawdown research. Used Machine Learning and other statistical analysis to attempt to improve existing risk adjusted performance.

See <Mixture Model Trading (Part 1, Part 2, Part 3, Part 4, Part 5, Github Repo)>. This research demonstrates a systematic trading strategy development workflow from theory to implementation to testing. It focuses on the concept of using Gaussian Mixture Models as a method for return distribution prediction and then using a simple market timing strategy to take advantage of the predicted asset return outliers. 

See <Asset Pricing using Extreme Liquidity with Python (Part 1, Part 2)>. This research focuses on replicating the results of an intriguing research paper titled "Asset Pricing with Extreme Liquidity Risk" by Ying Wu where he demonstrates a method to price stocks based on calculating an "Extreme Liquidity Risk" (ELR) index. I use a dataset of approximately 3000 stocks to implement the daily illiquidity measures, and the Hill estimator in an attempt to reproduce the findings. The Hill estimator is a mathematical tool which allows us to make inferences about tails of heavy-tailed distributions. I use the Gelman scaler to standardize the features and returns, and implement a Bayesian generalized linear model to examine the relationship between the ELR and the scaled cross sectional returns of the dataset. 

See <Institutional Level Long/Short Strategies in Quantopian (OCF/EV)>. This is an algorithmic trading strategy implementation using the Quantopian platform. It leverages one factor, the Operating Cash Flow (OCF) / Enterprise Value (EV) ratio. It is a market-neutral, sector-neutral strategy modeled with transaction costs/slippage and volume constraints. 

See <Backtesting the Implied Volatility Long/Short Strategy>. This algorithmic trading strategy is a stylized implementation of a research paper titled  "What Does Individual Option Volatility Smirk Tell Us About Future Equity Returns?" by Yuhang Xing, Xiaoyan Zhang and Rui Zhao. The strategy uses a skew factor based on the implied volatility of the underlying stock/ETF's options. Based on the factor ranking a long/short, market neutral portfolio was constructed and tracked for nearly 6 months before the Yahoo Finance Options API stopped functioning. The strategy leveraged Python, the now defunct Yahoo Finance Options API, and the Quantopian platform.

See <A Dead Simple 2-Asset Portfolio that Crushes the S&P500 (Part 1, Part 1.5, Part 2, Part 3)>. Parts 1, and 1.5 of this series explores the backtest implementation of a clever leveraged ETF strategy. It looks at implementation using a weighting scheme that mimics risk-parity, and the opposite and examines the results. Part 2 of the series explores some of the quantitative relationships between leveraged ETFs, Beta Slippage and Volatility. The series leverages Python, the Quantopian platform, and the Yahoo Finance API. Part 3 updates the research re-examining the original return relationships between the ETFs while also implementing multiple prototype strategies. These strategies are meant to improve the risk-adjusted performance of the original strategies.

See <Exploring the Relationship Between SPY and TLT>. This can be considered Part 2.5 of the "A Dead Simple 2-Asset Portfolio that Crushes the S&P500 ". This article explores why the strategy is successful while also exposing the strategy's sensitivity to the negative correlation between the two assets. The article identifies three (3) possible states of the assets' relationship: both assets lose value, both assets gain value, both assets move in opposition. From the strategy perspective 2 of the 3 states are beneficial, both gaining or moving in opposition. These two (2) favorable states represent ~85% of the time period studied (~14 years).  This article leverages Python, and the Yahoo Finance API.

ETF (custom/composite) analytics and implied (forecast) returns

See <Composite Macro ETF Weekly Analytics>. This was a bi-weekly/weekly series of custom composite ETF reporting analytics that lasted nearly a year. The primary goal was to provide useful macroeconomic performance analysis, via custom ETF composites, to gain insight into macroeconomic trends. I used Python, the Yahoo Finance API, and YCharts.com to create these reports.

See <How I Use Implied Cost of Capital (ICC) as a Market Valuation Tool>. This article demonstrates an alternative application of a popular fundamental valuation model previously used to estimate expected returns. To  estimate expected returns the model takes as inputs a combination of book value per share, ROE, analysts' forward earnings estimates, and a long term growth rate. Superficially, it is a simple a residual income model that solves for the rate of return that equates a stock's current price with its estimated future residual income. I liked the model more for its use as a proxy for analyst/market sentiment rather than expected returns.

investment process development

See <The 5 Pillars of Winning Consistently>. The pillars are: Fundamental Analysis, Quantitative Analysis, Market/Investor Sentiment Analysis, Risk Management, and Evaluation. The 5 Pillars represents a synthesized and distilled investment framework anyone can apply as a basis for their own investment strategies. The process is inclusive of all strategy types. 

data scraping to access free market data

See <How To Get Free Intraday Options Data With Pandas-DataReader>. This is a detailed article that shows the reader how to implement an sequential web scraper to extract and aggregate free options data for the purposes of research and education. It uses the Python programming language and Yahoo Finance's free website data.

See <How to Build a Sequential Option Scraper with Python and Requests>. This is a detailed article that shows the reader how to implement an sequential web scraper to extract and aggregate free options data for the purposes of research and education. It uses the Python programming language and Barchart.com's free website data.

See <How to Scrape and Parse 600 ETF Options in 10 mins with Python and Asyncio>. This is a detailed article that shows the reader how to implement an asynchronous web scraper to extract and aggregate free options data for the purposes of research and education. It uses the Python programming language and Barchart.com's free website data

See <Aggregating Free Options Data with Python>. This is a detailed article that shows the reader how to create and implement a web scraper to extract and aggregate free options data for the purposes of research and education. It uses the Python programming language and Barchart.com's free website data.

See <Get Free Financial Data w/ Python (Earnings Estimates-From Yahoo Finance)>. A Python code example to scrape equity earnings estimates from the Yahoo Finance website. 

See <How to get Free Intraday Stock Data with Python and BarCharts OnDemand API>. This article details the process of requesting a BarChart OnDemand API key and creating some basic Python functions to query the API for minute level stock data. It also explores data storage considerations and demonstrates use of HDF5 format for I/O for the ~20 million datapoints the script collects.

See <Get Free Financial Data w/ Python (Fundamental Ratios-From Finviz.com)>. A simple Python script to scrape stock fundamental data from Finviz.com. The code is easily adaptable.

See <How to get Free Intraday Stock Data from Netfonds>. This article adapted some Python code from the book "Python for Finance" by Yves Hilpisch. At the time the example code did not work, I was able to fix it and add some functionality before Netfonds stopped supporting their free market data.

historical economic/market analysis

See <How do Bank Stocks Perform During Periods of Rising Rates?>. This paper used a combination of Python programming and the Yahoo Finance API to answer the title question. The analysis debunked some popular myths and supported some non-intuitive conclusions while identifying likely regime change in the historical data. Additionally demonstrates the use of Python for data processing (cleaning, selecting, indexing), data analysis, and visualization.

See <European Sovereign Debt Crisis Redux, What's the Playbook?>. This article was written just after Greece had rejected austerity measures in July 2015. Given a similar stress event, the 2011 European Sovereign Debt Crisis, I thought it relevant to look for insight into potential market scenarios by comparing the two periods. This article was created using a combination of Python programming and the Yahoo Finance API.  

fundamental investment research

See <Why I'm Bullish on Facebook (FB) Long Term>. This analysis focused on the bull case for investing in Facebook (FB) long term. Consider FB's market performance since the publish date of the article ( June 2014). My article thesis centered on the following inferences:

  • FB is the current market leader in the social networking space

  • FB has just begun to monetize its user base and ad platform

  • Whatsapp's potential value is much greater than the $19 Billion paid

  • The Mobile Technology Industry will continue to grow globally