MEng | SWE | Financial Services

My Portfolio

Thomas Haile

Software engineer. I build things that are actually useful.

About

I graduated from the University of Leeds with an MEng in Electronic and Computer Engineering, achieving first class honours. My degree spanned hardware systems, signal processing, and software — which means I think carefully about the full stack, from silicon up.

During my placement year I worked as a software engineering intern at Deloitte in London, building production tooling and contributing to client-facing systems across consulting engagements. I'm now working at Wells Fargo in London as a graduate software engineer, focused on the engineering problems that sit at the intersection of financial systems and modern software infrastructure.

Outside of work I build tools I wanted but couldn't find. I default to C++ when compute matters, Python when speed of iteration matters, and TypeScript everywhere else.

C++PythonTypeScriptJavaScriptReactNext.jsFastAPIPostgreSQLTimescaleDBTailwind CSSRechartsDockerLinuxGitVite

Projects

QuantView dashboard showing a configured portfolio with the metrics grid and cumulative return chart

QuantView — Market Analytics Platform

Live

Free, no-paywall portfolio analytics for investors who want real insight without the clutter.

C++ReactTypeScriptTimescaleDBPostgreSQLTailwindRechartsVercelAlpaca API

QuantView is a market analytics engine and dashboard built for quant-curious investors who find existing tools either paywalled or painful to use. Most free platforms are cluttered, assume prior expertise, and bury the useful output behind configuration forms. QuantView takes the opposite approach: configure a portfolio of up to ten symbols, pick a time range, and the analytics are right there on the same page.

The backend is written in C++ — chosen because the compute-heavy paths (rolling risk metrics, bootstrap simulations, portfolio analytics across large symbol universes) would be a meaningful bottleneck in an interpreted language. It compiles to a self-contained binary, runs on a single Ubuntu server, and talks to a TimescaleDB instance for time-series storage. Market data is sourced from Alpaca Markets and stored locally, so outputs are consistent and don't depend on third-party availability at query time. A scheduled cron pipeline handles end-of-day ingestion and pre-computes daily analytics snapshots so API responses stay fast.

The dashboard surfaces: cumulative portfolio returns, a rolling risk and performance grid (annualised volatility, Sharpe, Sortino, max drawdown, VaR 95%, Expected Shortfall, beta, alpha, Calmar), a holding-period return distribution, and a forward return cone — a block-bootstrap simulation over 2,000 paths that gives a percentile spread of possible outcomes without pretending to be a forecast.

Neuro Index dashboard showing the circular NeuroGauge score and ±5-day sparkline
Neuro Index weekend predictor showing unit sliders and the neurochemical curve for the following week

Neuro Index — Alcohol Impact Tracker

Live

A personal PWA that models how alcohol actually affects your brain chemistry — not just while drinking, but for the 72 hours that follow.

Next.js 14FastAPIPythonPostgreSQLSupabaseRailwayVercelTailwindReact Query

Most alcohol trackers stop at BAC. Neuro Index goes further — it models the neurochemical aftermath of a drinking session and gives you a composite wellbeing score (0–100) that predicts how you'll feel tomorrow and the day after. It's a personal PWA, installable from Safari or Chrome on mobile.

The scientific core is a pure Python package. BAC is calculated using the Widmark equation, with each drink modelled as a gut compartment feeding a blood compartment via a first-order ODE solved with RK45. The model accounts for body composition, chronic drinking history (enzyme induction), and personal elimination rate. On top of that, a neurochemical model drives four systems using BAC as the input signal: dopamine (~48h recovery, 35% weight), serotonin (~72h, 30%), GABA (~24h, 25%), and cortisol stress rebound (~36h, 10%). Each follows a depletion-recovery ODE, and the composite Neuro Index is the weighted sum clipped to 0–100.

After logging at least seven daily self-ratings, the model self-calibrates — an L-BFGS-B optimisation fits four personal parameters by minimising RMSE between predicted and actual morning scores. The weekend predictor lets you drag sliders for Friday/Saturday units and shows the resulting neurochemical curve for the following week, plus three summary metrics: lowest point, days below 80, and days to 95% recovery.

Install as app

iOS

Safari → share icon → “Add to Home Screen”

Android

Chrome → three-dots → “Add to Home Screen” or “Install app”