Inspiration

I was interested in developing tools in Finance to help make it more accessible and easy to use for everybody. I wanted a tool that could help programmers work on prototypes on MVPs quicker, or enable students or less experienced professionals to play around and learn about algotrading in a simple environment.

What it does

The user can drag "Blocks" to visually describe how they want their algorithm to work. When ready, they can Compile their Blocks down to Python code which gets sent to our Flask server and executed there. Then, we return the user a list of trades they made and a graph so they can measure their performance. We enabled the users to test using historical data so they can make sure it works in the past and experiment with new techniques in a completely risk-free environment.

How we built it

We used Python and Flask for the server. For the front-end we used Google's library Blockly to work with the Block programming. We used W3.CSS and Charts.js to help with the visual appearance of the application. We also worked with the Capital One Nessie API.

Challenges we ran into

Working with Blockly, because it was completely new for us. It is a powerful tool but took a while to understand, but once we learned it was very neat. Making the Python code able to work with our interface on the server was also a bit of a challenge.

Accomplishments that we're proud of

Making a product that actually works and looks nice. We believe that Finance is always moving toward a faster, more automated future and this enables people of all levels of experience and knowledge to learn and have fun. The project is on Github so anybody can download it and start modifying it or run it themselves on a localhost Flask server.

What we learned

Blockly, a lot about small nuances of Python and learning how to fix some specific bugs when dealing with code uploading

What's next for StockBlocks

Currently the Live Mode is not fully functional because we have no way to directly place orders, I would like to be able to get this working in the future hopefully. I'd also like to see some more contributions by adding new blocks to give users even more options.

Share this project:

Updates