My third portfolio tracker
What Interests Me This Week
My first portfolio tracker was a pure spreadsheet living within Google Docs. It captured every transaction as a row. It didn't take long before the amount of transactions overwhelmed the system.
The second tracker abandoned the spreadsheet and started anew as Jupyter Lab project. The core of the idea was still the same: capture every atomic transaction, analyze the portfolio through the aggregation of all transactions. There's no performance problem this time, the only problem is it's the wrong design to have to capture every transaction.
The amount of trades and onchain tx became too overwhelming to have to enter by hand each time. It got to the point where I dread making trades at all just to avoid the bookkeeping. One wrong input will throw off everything over time. What's the point of replicating tx records if they already exist onchain and exchanges?
So why are these important? The quality of your trades is a function in relation to what's in the rest of your portfolio. The fact that Ether makes a good buy (for instance) doesn't mean you should buy more if your portfolio is already overloaded with it.
In a world where assets are spreaded across multiple chains and centralized exchanges, it's not simple tell how much of what you own. It's made worse by stakes and liquidity pools.
I've stopped using my second tracker for maybe half a year now. Whatever it shows now cannot be trusted. That's mean I'm pretty much driving blind when it comes to portfolio construction.
Now the third iteration of my custom-made portfolio tracker is coming together. It's a pure Python project running as a command line interface for now. I might give it a text-based user interface if I get around to it.
I code named it Animal Spirit. My default Python VM manager is miniconda, which means I run conda activate animalspirit
each session. That's incidentally ultra cool.
The most important thing it does is to give me a breakdown of the assets in my portfolio so I can assess its risk profile. I need it to do that without me having to insert transaction records by hand. It's imperative that using it doesn't psychologically impact my trades.
Turn out this can be pulled off by using CCXT
library to talk to centralized exchanges; and combining Zapper, Debank and Zerion APIs to read onchain assets. Zerion API is the most problematic to the three but I managed to get the other two working, so that covers a lot of ground.
Seeing a simple pie chart breakdown can be a real game changer. It's possible that I've been feeling some sense of burn out lately because I haven't had a bird's eyes analytics. As a result I've been chasing opportunities like a dog chasing its own tail.
I suspect not every investor feels the need to see the big picture of where they are at any moment and still manage to feel safe. That's not me, but I'm very curious about how those that fly by the seats of their pants operate successfully.