All projects
Software2026

Portfolio Vision

A web app that takes a portfolio of funds and shows you the companies you actually own underneath them, with live prices and a breakdown by sector and country.

Built first as a command-line tool, then rebuilt as a full web app running at portfoliovision.online.

Part 1 · Command-line tool
The first version ran in a terminal. You type in what you hold, and it opens each fund up into the companies inside it, repeating that on any fund it finds along the way.
  • →Prints the combined result with sector and country breakdowns
  • →An honest note on how much of the portfolio it could not account for
  • →Two funds holding each other would loop forever, so it watches for that and stops
PythonCLIJSON
Portfolio Vision Python CLI decomposing a portfolio in the terminal
The CLI output, trimmed: currency detection, the input portfolio, and the top of the unwrapped holdings table.
Part 2 · Web App
The web version does the same work behind a real interface, live at portfoliovision.online.
  • →Sign in with Google or a code emailed to you
  • →Portfolios save to your account, where nobody else can reach them
  • →Prices come in live, and the whole thing flips between US and Canadian dollars at the current rate
ReactViteTailwind CSSSupabaseGoogle CloudVercel
The Portfolio Vision web app showing a decomposed portfolio with live prices
The deployed app at portfoliovision.online, with live prices and saved per-user portfolios.
Highlights
→Opens funds up into what they actually hold across 750+ tickers, following funds inside funds without ever going round in circles
→Live prices across the US and Canadian exchanges, fetched through a small service I wrote rather than a paid data provider, which cut $30+ a month in costs and the request limits that came with them
→Sign in with Google or a one-time emailed code, with rules on the database itself so one account can never read another one’s portfolios
→Switch between US and Canadian dollars at the live rate, either for one holding or across the whole portfolio
→400+ page views in the first week after launch
→Built, deployed and running on my own domain, with every key kept out of the code
Austin Zhai