Botlio is an investment platform that lets users build a custom portfolio tailored to their investment priorities and around stocks they already own.

Current automated investing platforms use a method called Modern Portfolio Theory (MPT) first introduced in 1952 to construct user portfolios. The tools asks a user for her investment goal then find the minimum variance portfolio that meets the expected return target that would get the user to their goal in some specified time period. These methods have several key drawbacks:

  1. They assume that future returns and correlations will follow historical trends and don’t take into account additional risk factors that outperform the market over the long-run
  2. They do not take into account a user’s additional investment priorities such as: dividend yield, market beta and diversification
  3. They do not take into account a user’s current investment holdings
  4. They overutilize ETFs as investment vehicles

What it does

We have created a simple process that first asks a user to rank her investment priorities and any current holdings then automatically suggests additional stocks such that the overall portfolio best meets the user’s investment priorities. We visualize the portfolio’s attributes to make the results more understandable to users. Visualizations include: allocation chart, expected return, style exposures, industry exposures and market cap exposures. The user can then connect to an online brokerage from the site, we’re currently using TradeKing, and purchase the suggested additional stocks.

How we built it

The underlying algorithm is a genetic algorithm that iterates through millions of possible portfolios and selects the one that maximizes a fitness function uniquely created by the user’s investment priority rankings. We use Apache Spark to run the calculations in parallel and subsequently return the results in real-time.

Challenges we ran into

This was our first experience with Apache Spark, and figuring out how to link job creation to a real time webapp was a particularly difficult challenge. We eventually settled on using Google's Dataproc service with a Python Server interface that would interact with Spark and with our webapp. We also feel our code is not fully optimized for Spark as it could be. Again, this may have to do with learning more about Spark.

Accomplishments that we're proud of

We have a database of nearly 3,000 public companies, a genetic algorithm that is highly customizable and user-centered, and a web app that can present and share insights to help people make investment decisions even today.

What we learned

We learned we need to learn more.

What's next for Botlio

So much. Optimizing with Spark to make the algorithm more performant. Adding more investing information. Calculating new statistics using Spark through Monte Carlo simulations. We really think Botlio can be a user-centered investment helper, and we want to see it through.

Share this project: