The problem
Trading 212 is very good at executing orders and much less good at telling you how you're actually doing. The app shows your positions and a headline return; it doesn't show win rate, realized versus unrealized P&L, currency effects, or where your risk is concentrated. All of that information is technically in your hands already — buried in a raw CSV export listing every order you've ever placed.
What I built
PanoTrading turns that export into answers. You upload your complete history; it rebuilds your actual trades from the raw rows, computes the numbers Trading 212 never shows you, and keeps your holdings valued in real time.
- Full-history import — thousands of order rows parsed and normalized in seconds
- A trade-construction engine that matches raw fills into coherent positions and round-trip trades
- Realized & unrealized P&L, win rate, and per-instrument performance
- Risk view: position sizing and exposure, with alerts when limits are approached
- Live valuations from real-time stock prices and exchange rates, so multi-currency portfolios stay accurate
- Insights that flag patterns — what your winning trades have in common that your losing ones don't
How it works
From a raw export to a live dashboard:
- Upload the full Trading 212 CSV export
- Parse & normalize the raw order rows
- Trade-construction engine matches fills into positions
- Persist to SQL Server
- Enrich with live quotes & FX rates
- Dashboards: P&L, win rate, risk, insights
The UI is Blazor with MudBlazor; data lives in SQL Server through EF Core; sign-in is Google OAuth. Live prices and exchange rates come from external market-data APIs behind a cache, so valuations stay fresh without burning through provider rate limits.
Hard problems
- The importer is the product. Real exports are messy: partial fills, currency conversions, edge cases that only show up in someone else's multi-year history. Most of the engineering went into producing numbers people trust.
- Live data on a budget — refreshing quotes for many users' holdings without exceeding API quotas meant caching, batching, and being deliberate about what "real time" actually needs to mean.
- Insight over noise: choosing the handful of metrics that change a trader's behavior instead of shipping forty charts.
Results & lessons
Hundreds of traders use PanoTrading today. The lesson it hammered home: users forgive a plain interface, but they never forgive a wrong P&L. Accuracy in the boring ingestion layer — not the dashboard visuals — is what retains people.