We use Robinhood on a daily basis and we noticed that investing apps like Robinhood do not provide much information or statistics of how volatile our portfolios are and how we can adjust our portfolios to better suit our needs.

People who want to get into investing face 2 major problems.

  1. Once they identify a stock worth buying, they can’t figure out the right amount to buy - most of them over invest and base their decisions on how much money they have left to invest rather than a calculated amount which ends up in large losses.
  2. They are unsure when to invest. All traders are guilty of waiting too long; when prices jump, they think it will continue to rise and sell past optimality. When prices drop, they hold one hoping the stock will rise to mitigate their loss, only to end up losing 10-15% of their portfolio value.

The main goal of the product is to provide mid asset individual portfolio managers, like teachers or doctors with a very quick way to reviewing their portfolios while also giving them understandable insight on potential opportunities and threats based on stocks/industries/ETFs/securities that they have previously identified. We want to add value to their portfolio management experience without removing the instinctive nature of at-home traders.

What it does

Kuvera uses a versatile combination of human decision making and statistics to deliver powerful insights. The user begins by choosing stocks they are interested in. Kuvera then takes this input and calculates the optimal weights the user should invest in for each stock. Kuvera also suggests securities on a weekly basis that the user can add to their portfolio to reduce volatility. Kuvera provides options for stocks within preferred industries as well as markets the user has not invested in before. We believe that this is important for the user to understand each decision they make, and Kuvera provides them with the confidence to decide.

How we built it

The infrastructure runs on Google Cloud Platform with Dokku. Dokku allows for easy containerization, ensuring out deployments are all independent and that state is consistent. Combined with GCP, it was easy to set up and get running.

The frontend renderer runs on Flask with Sqlite3 as the database. Jinja templates allowed us to easily prototype the UI, as both of us were more familiar with infrastructural languages than ones like javascript. Sqlite3 has great integration with Python, allowing us to not have to mess with things like database connectors.

The backend endpoints also run on Flask, each exposing a service on a different endpoint. This allowed us to separate out concerns and redeploy per endpoint if necessary, allowing it to scale elegantly.

Challenges we ran into

It took us a while to unpack the Blackrock API since there was a lot of information available to us.

In the deployment side, Dokku also doesn't support Python C extensions properly, meaning that we had to convert the Procfile into a Dockerfile to deploy as a whole container instead of a buildscript.

Accomplishments that we're proud of

We developed a stock portfolio recommendation tool that takes in modern portfolio theory and applies it fast and efficient Python libraries, giving users the benefit of rapidly testing out best weights for stocks they like. It's something that we truly believe the younger generation of investors can take advantage of -- with new brokers promising zero fees and few accessible resources that exist, we believe we can easily fill that void.

What we learned

We learned that Scipy is extremely powerful for multivariable equations. Furthermore, the combination of Dokku and Google Cloud Platform is very conducive to rapid testing, as it was very easy to learn and set up.

What's next for Kuvera

We would like to add a feature to enable our users to begin options trading, as well as link to their brokerages to pull their information for them.

Built With

Share this project: