I Was Quiet. The Machine Wasn’t.
Munyaradzi Muzuva5 min read·Just now--
The macro commentary didn’t stop. Neither did the mild chaos. But somewhere between dissecting Fed decisions and watching the dollar do its thing, I went down a rabbit hole. This is the story of what came out the other side.
There’s a particula kind of frustration that only quants and data people know. It’s not dramatic — no one’s yelling, no market is crashing (well, sometimes one is, but that’s unrelated). It’s the quiet, grinding annoyance of spending more time collecting data than actually thinking about it.
Every week: open browser, navigate to three different sites, download CSVs, cross-reference tickers, clean up the mess, paste into Excel, build a chart, realise you forgot to update the date range, start over. Rinse. Repeat. Lose the will to live.
That was the itch. AutoReporter is the scratch.
What AutoReporter Actually Is
At its core, AutoReporter is a Python pipeline that automates equity and market data reporting — end to end. You run it, it fetches data, crunches numbers, builds charts, and hands you a formatted PDF report. No manual downloading. No copy-pasting. No existential dread.
Specifically, it:
- Pulls live market data from multiple sources — including global equities and local Botswana Stock Exchange (BSE) listings
- Calculates key metrics — returns over multiple horizons, rolling volatility, and cross-asset correlations
- Generates visualisations — price charts, return distributions, correlation heatmaps — the works
- Generates AI-powered insights — the pipeline doesn’t just surface numbers, it interprets them. An LLM layer reads the calculated metrics and produces contextual commentary on what the data is actually saying — the kind of narrative that used to require a human sitting down and thinking about it
- Assembles everything into a clean PDF report — structured, readable, and ready to share or archive
The idea was simple: reduce the distance between raw data and insight. Stop being a human copy-paste machine. Be an analyst.
The Frictions (A Love Story in Three Acts)
No project goes smoothly. Anyone who tells you theirs did is either lying or hasn’t finished it yet.
Act I: The Data Source Problem
Getting global data — US equities, indices, FX — was relatively painless. Libraries like yfinance and Stooq exist precisely because this is a solved problem in developed markets.
The BSE was a different conversation entirely. Local market data infrastructure in Africa is, to put it charitably, still finding itself. There’s no clean API, no standardised feed. The workaround involved manual CSV exports and building ingestion logic that could handle the BSE’s particular formatting quirks. It worked. It was not pretty. It is currently not complaining.
Act II: The PDF Layout Wars
Generating a PDF sounds like the easy part. It is not the easy part.
Getting charts, tables, and text to behave consistently across a programmatically generated document is a special kind of puzzle. Margins shift. Charts overflow. Tables that look fine in isolation somehow decide to stage a protest when rendered with everything else. The solution was iterative — layout logic rebuilt several times until things sat where they were supposed to sit, reliably, every time.
Act III: Making It Actually Useful
A pipeline that works once is a script. A pipeline that works reliably, produces consistent output, and can be updated without breaking everything else — that’s infrastructure.
This meant building proper data validation (because sometimes sources return garbage), making the metrics modular (so you can add or swap indicators without touching the core), and structuring the output so the report actually communicates something rather than just dumping numbers onto a page.
What It Can’t Do (Yet)
Honesty is a feature, not a bug. Current limitations worth naming:
- BSE data is still partially manual. Until there’s a proper public API or data feed for the local exchange, some human intervention remains upstream.
- It’s not fully automated end-to-end. You still need to trigger it. Scheduled, autonomous execution is on the roadmap — it’s not here yet.
- The report format is fixed. It produces one style of report. Customisation per use-case requires getting into the code. (Which is fine for say, investment firms and all)
What’s Next
AutoReporter currently does the full job — fetch, calculate, visualise, interpret, report. The next question isn’t what it produces. It’s when and how.
Right now, it still needs you to run it. The obvious next step is removing that dependency entirely — scheduled, autonomous execution that generates and delivers reports without a human in the loop. Set it and forget it. Your own little analyst that clocks in whether you remember to ask it to or not.
But the more interesting direction is further than that. A report is a monologue. What comes after AutoReporter is a conversation — something you can push back on, ask follow-up questions, drill into a specific position or sector, and get answers grounded in the same data the report was built from. Less “here is what happened” and more “let’s talk about what this means.”
An analyst assistant, essentially. One that doesn’t take lunch breaks or charge by the hour.
More on that when there’s more to show.
Why This Matters (The Part I Actually Care About)
Building tools like this isn’t just a technical exercise. It’s about closing the infrastructure gap.
African capital markets — and Botswana’s in particular — deserve the same quality of analytical tooling that gets taken for granted in New York or London. The data exists. The talent exists. The gap is largely in the plumbing.
AutoReporter i small plumbing. But it’s plumbing that points in the right direction.
The views expressed are the author’s own and do not constitute investment advice. The reports will tell you what the data suggests. What you do with that is entirely your problem.
If this was useful, interesting, or mildly entertaining — follow along. More coming.