If you read my previous article then you will know I've decided to create a crypto portfolio tracker that I'm going to make freely available to all you nice people. This post is an update on my current progress and it will give you a better idea of how I'm coding it.
I'll be using Coingecko to get the latest coin prices and market data. Coingecko has a public application programming interface (API) that allows you to make requests for information and they will send you responses that contain the data you requested.
I will build a web API using fastapi, a modern, fast (high-performance) web framework for building APIs with Python 3.6+ based on standard Python type hints. On a basic level, I will be building a website using fastapi that you can start running and you will be able to use a browser to view your portfolio.
Everything will be written in Python, which is an extremely easy and intuitive coding language, and besides fastapi, I will be making use of another library called dash which can create some amazing, interactive plots.
To start with I'm going to code for the following features:
- Ability to input your coins and amounts to create a dated portfolio entry.
- Total portfolio balance.
- Pie chart of coins that make up the portfolio (percentage coins by the amount and monetary value).
- Table of market data for all portfolio coins (Name, Symbol, Current Price, Percentage change over last 24 hours, etc).
- A plot of portfolio value over time.
Making It Available
Once I've completed everything I will make it available as a package on PyPI which you will be able to download for free. The only requirement is you'll have to download Python to run the program and I'll write a short how-to guide on how to do that if you've never used Python before (don't worry, it's super easy and it will be just an easy download from the official Python website).
I've actually coded the first three bullet points above which was quite easy and straightforward. It starts getting complicated when we want to look at the portfolio balance over time, as we then need to not only get the price history for each coin in the portfolio but also determine the value over time which can change depending on how many you buy/sell on any particular date.
For the above step, I'm keeping things simple and will use the computer file system to save a CSV of all the necessary prices and calculated totals for each coin. I have most of the logic already written for this, and should be finishing this step quite soon.
I will begin moving on to coding the plotting logic using dash, so we'll be able to see some nice visualisations of what coins make up our portfolio and the balance of the portfolio over time.
Once that is done, it will be a case of playing around with some CSS styling to make it visually appealing, doing some testing to make sure it's robust, then uploading it to PyPI.
As I'm doing this in my spare time before work, it's taking a lot longer than it would if this was my sole focus. I'm also buying my first house with my girlfriend, and I find a lot of my time is spent emailing solicitors and estate agents with what appears to me to be doing their job for them. But hey, I need to pay my bills and get our house sorted, so I think this little side-project is going at a fairly good pace.
I aim to have everything complete in four weeks, though that may need to change depending on how easy the house purchase goes. Once done, you'll have a free bit of software that will allow you to track your crypto portfolio and will no longer need to give away your personal info to companies just so you can track your own portfolio.
Thanks for being patient, and my next update should be in four weeks time.