Projects

A selection of things I've designed and built โ€” from live web applications to applied machine-learning research. Each reflects hands-on delivery, not just management.

๐ŸšŒ
KMB Bus Display
Real-time transit web app
Live Demo

A real-time bus arrival board that pulls live estimated-time-of-arrival data from Hong Kong's KMB open data API and renders it in a clean, responsive display. Demonstrates front-end development, asynchronous API calls, and live data handling โ€” end to end.

HTML JavaScript REST API Responsive UI
๐ŸŒ
Personal Portfolio Website
The site you're viewing now
Live

Designed and coded from scratch โ€” no templates or site builders. Features a responsive layout, scroll animations, and an experience timeline. Deployed on GitHub Pages with a custom domain routed through Cloudflare DNS. This page itself is the proof of the work.

HTML CSS JavaScript GitHub Pages Cloudflare DNS
๐Ÿค–
LLM-based Thematic Index Evaluation
MSc Capstone ยท The University of Hong Kong
Research

Capstone research for my MSc in Financial Technology & Data Analytics. Evaluated the use of large language models to construct thematic investment indices, applying hit-rate analysis and systematic model benchmarking to assess reliability against baseline approaches.

Python LLM / Prompting Model Evaluation Financial Data

Academic project โ€” full methodology available on request.

๐Ÿ“Š
Stock Analyst
Deterministic equity research ยท ็ขบๅฎšๆ€ง่‚ก็ฅจ็ ”็ฉถ
Case Study

An equity research tool that takes a US ticker and returns a five-factor quant rating graded against 489 sector peers, a DCF and multiples valuation, technical trend and key levels, plus a bilingual research report. Every number is computed in Python from filed data โ€” there is no LLM anywhere in the critical path, so the same input always produces the same output and every figure is auditable.

Python FastAPI SEC EDGAR / FRED Deterministic scoring
โค๏ธ
Threshold Zone Bench
Heart-rate training zones ยท ๅฟƒ็އ่จ“็ทดๅ€้–“
Live Demo

A heart-rate zone calculator for endurance athletes that shows the error other calculators hide. It supports three anchoring methods — lactate threshold, heart rate reserve and maximum heart rate — draws the zones at their true position on a real bpm scale rather than as equal-width bars, and propagates the ±10 bpm uncertainty of an age-estimated maximum into every boundary. A companion methodology page explains each formula, its source study, and the pros and cons of each method.

HTML CSS Vanilla JavaScript Zero dependencies EN / ไธญๆ–‡
๐ŸŽฒ
Dice Roller
Three dice, one tap
Live Demo

A minimal three-dice roller: one button rolls all three, with a tumble animation, a running total and keyboard rerolling. Built as a single self-contained HTML file โ€” no frameworks, no build step, no dependencies, and it works offline once loaded.

HTML CSS Animation Vanilla JavaScript Zero dependencies