Or maybe it's a brother. Up to you!
It can easily be accessed from here, as a GitHub Page.
What it does is pretty straight-forward:
Loads a number of snapshots of a certain type (daily, weekly, etc.), and creates 3 charts for them, with the values in USD, HIVE, and BTC for the selected total or token/diesel pool.
As easy as it seems, and as quickly as a working prototype was ready, making it work for different edge cases was a different deal altogether (for example: different treatment if we have few data points or many). I even tried charts.js
at first and then switched to D3.js
.
As I was getting ready to write this post, I realized I show nowhere the name of the account for which the charts are for. That's not a big deal unless you want to create a screenshot to show to someone else. Otherwise, if you organize your snapshots well, knowing which ones you loaded won't be an issue. However, I will add that username in a future release.
The next two things that came to my mind were about defensive programming, which I wasn't doing in this case. If the user mixes up snapshots of different accounts or of different types this could create some issues. The second one shouldn't be an issue since their structure is the same, and the date is recorded in full. But mixing up snapshots of different accounts would create messy and worthless charts. So, I'll have to check on that in the future. Right now, for this initial version, I rely on the fact the user doesn't purposely want to break the app.
Enough talk! Let's look at some pretty charts, shall we? Looks like my portfolio is doing well for this account for the period selected. I haven't selected a longer period, because right before that I started tracking the L1 holdings and that, as you can imagine, squeezes the chart a bit.
But I was curious why the 150 jump in HIVE from one day to the next, from 3rd to 4rd. That makes me think that I'll need to add the price of each "coin" (if we include USD in that category, lol, to make it easier to find a word) at every data point, in the tooltips.
Interesting how it looks the growth by only the Hive L1 tokens:
Look what happened with their USD and BTC value in the second part of the interval!😀
And here's how my SWAP.HIVE:SWAP.BTC diesel pool position evolved on the same interval:
And... surprise, surprise! My Hive-Engine tokens (on this account) seem to be doing well:
Nice evolution by LEO lately:
What Next?
Besides what I already mentioned here, I have more ideas about how this can become even more powerful. It would help if I could get unitary historical prices for... anything.😀 I mean, prices from a more distant past, when I wasn't tracking them. BTC historical prices won't be a problem. Maybe (I'm not sure), HIVE and HBD too. But HE tokens and diesel pool positions, that would likely be tough.
If you have some ideas of your own, let me know, and I'll see what I can do about it.
If you use the tool(s) and notice any discrepancies or potential bugs, also let me know. I practically only started to delve into analyzing chart data and see if they are off in any way.
Interested in Creating Your Own Snapshots?
To use Hive Portfolio Charter you need snapshots to load, which are structured as JSON files.
You can use snapshots created by Hive Portfolio Tracker, or you can create your own using another tool.
For the second case, I'll add the example structure of a snapshot JSON file below:
{
"metadata": {
"account": "username",
"snapshot_timestamp": "2025-07-10 08:09:43",
"snapshot_unix": 1752124183,
"script_version": "1.61 (informative only, you can ignore this line)",
"prices": {
"hive_usd": 0.220848,
"hbd_usd": 1.084,
"btc_usd": 111139,
"hive_btc_ratio": 503237
},
"snapshot_type": "daily",
"filename": "2025-07-10.json"
},
"summary": {
"total_portfolio": {
"usd": 39.45123246254131,
"hive": 178.635226321005,
"btc": 0.0003549719941923295
},
"layer1_total": {
"usd": 4.27431648401188,
"hive": 19.354109994257954,
"btc": 3.845919509813729e-05
},
"tokens_total": {
"usd": 6.11387377937088,
"hive": 27.68362756,
"btc": 5.501105623922187e-05
},
"pools_total": {
"usd": 29.063042199158552,
"hive": 131.59748876674706,
"btc": 0.0002615017428549704
},
"token_count": 1,
"pool_count": 1,
"layer1_assets": 4
},
"layer1_holdings": {
"liquid_hive": {
"amount": 19.353,
"price_usd": 0.220848,
"value_usd": 4.274071344,
"value_hive": 19.353,
"value_btc": 3.845698939166269e-05
},
"hive_power": {
"owned": 0.0011099942579528785,
"delegated_in": 0.0,
"delegated_out": 0.0,
"effective": 0.0011099942579528785,
"price_usd": 0.220848,
"value_usd": 0.0002451400118803773,
"value_hive": 0.0011099942579528785,
"value_btc": 2.2057064745982714e-09
},
"savings_hive": {
"amount": 0.0,
"price_usd": 0.220848,
"value_usd": 0.0,
"value_hive": 0.0,
"value_btc": 0.0
},
"liquid_hbd": {
"amount": 0.0,
"price_usd": 1.084,
"value_usd": 0.0,
"value_hive": 0.0,
"value_btc": 0.0
},
"savings_hbd": {
"amount": 0.0,
"price_usd": 1.084,
"value_usd": 0.0,
"value_hive": 0.0,
"value_btc": 0.0
},
"totals": {
"total_hive_amount": 19.354109994257954,
"total_hbd_amount": 0.0,
"total_value_usd": 4.27431648401188,
"total_value_hive": 19.354109994257954,
"total_value_btc": 3.845919509813729e-05
}
},
"tokens": {
"SWAP.HIVE": {
"liquid": 27.68362756,
"staked": 0.0,
"delegated": 0.0,
"total_amount": 27.68362756,
"prices": {
"hive": 1.0,
"usd": 0.220848
},
"market": {
"volume_24h_usd": 0.0
},
"values": {
"usd": 6.11387377937088,
"hive": 27.68362756,
"btc": 5.501105623922187e-05
}
}
},
"diesel_pools": {
"SWAP.HIVE:SWAP.BTC": {
"pool_name": "SWAP.HIVE:SWAP.BTC",
"shares": 0.14674544674178985,
"share_percentage": 0.026104473011190413,
"base_amount": 131.59748876674706,
"quote_amount": 0.0002577834304269863,
"values": {
"usd": 29.063042199158552,
"hive": 131.59748876674706,
"btc": 0.0002615017428549704
}
}
}
}