A web platform that gets more people investing — without asking them to learn the markets first.
My final-year dissertation. An end-to-end product: a reinforcement learning agent that handles the trading, a Flet web app that handles the user, and a glossary that handles the bit nobody likes — the jargon.
Why I built it.
The UK has a quiet financial problem. Most people here don't invest — they keep their money in cash, watch inflation eat it, and then assume the stock market is something for other people. The two big reasons I kept hearing from friends and family were the same: "I don't know what I'm doing" and "I don't have time to keep track of it."
So I tried to build something that took both reasons off the table. A web app where you put money in (simulated, in this case), an AI agent handles the trading on your behalf, and the bits you do want to learn — what a P/E ratio is, what a dividend actually does — are right there on the same site, written for someone seeing them for the first time.
"More people investing is good for everyone. The barriers aren't really intelligence — they're confidence and time. Both are solvable."
What it does.
The platform has three connected pieces:
1. The web app
Built in Flet — the Python framework that compiles to Flutter. Users create an account, "deposit" simulated funds, and watch the agent trade on their behalf. Their portfolio updates in real time, with a clean dashboard showing positions, returns, and the agent's recent decisions. Building it in Flet meant I could keep the whole stack in Python and ship a real interactive UI without dropping into a separate frontend framework.
2. The agent
A reinforcement learning agent using Proximal Policy Optimisation (PPO), trained on historical S&P 500 data from Yahoo Finance and Alpha Vantage. It makes daily binary decisions — be in the market, or be in cash — with the goal of buying dips and selling near peaks. PPO over DQN because the dynamics are non-stationary and the policy-gradient approach is more stable on financial environments where reward variance is brutal.
3. The educational layer
A finance glossary plus a couple of explainer pages. The glossary covers the terms that show up when people first try to engage with markets — P/E, market cap, dividend, yield, drawdown — written in the kind of language someone would actually use to explain it to a friend. The point isn't to turn users into analysts. It's to make the dashboard they're looking at less foreign.
The honest result on the agent.
In backtesting, the agent matched buy-and-hold roughly. It didn't blow up, it didn't beat the index, it broadly tracked it.
This is, on reflection, exactly what efficient market theory would predict. The S&P 500 is the most analysed time series on Earth. Any short-term timing edge available from raw price action has long since been arbitraged out by people with vastly more compute, data, and infrastructure than a final-year dissertation can muster.
What the agent did demonstrate:
- It learned something — it didn't behave randomly, and its policy responded sensibly to features like trailing volatility and drawdown depth
- It avoided catastrophic positioning — it didn't, for instance, go long during March 2020 and ride the entire Covid drawdown
- The training pipeline was stable, reproducible, and tunable
For the broader product question — whether an agent like this is the right thing to put in front of new investors — the more interesting answer is that matching the index is honestly fine. A simple index strategy beats most active retail behaviour anyway. The interesting product work was never going to be in a magic alpha-generating algorithm.
What I'd do differently.
- Lean further into the educational side. The glossary was the part users responded to most. With more time I'd have built a proper learn-as-you-go layer, surfacing definitions inline as people clicked through the dashboard.
- Pick a less efficient market for the agent. The S&P 500 was the wrong target if I wanted to demonstrate timing edge. Small-cap equities or specific commodities would have given more signal to learn from.
- Cleaner backtesting hygiene. Lookahead bias is the cardinal sin of quant projects. I was careful, but a more rigorous walk-forward methodology would strengthen the result.
- Consider whether the agent is even the right answer. A passive index tracker plus the educational layer might do more for the actual mission than a clever RL agent ever will.
What it taught me.
This was the first project where I had to think about a real product, not just an algorithm. The agent was the bit I was being graded on, but the web app was the bit that mattered for the thing I actually cared about. Most of the decisions I'm proudest of weren't in the reward function — they were in the dashboard layout, the glossary tone, and the question of how much complexity to hide from someone seeing their portfolio for the first time.
It also gave me the foundation for what came next. The trading-adjacent thinking that runs through Market Brief is a direct downstream effect — the same instinct, applied to a different problem.