Projects all repositories
Migration Surge Prediction: An Early Warning System
Migration Surge Prediction: An Early Warning System
Python

SDSC 2005 · Introduction to Computational Social Science · City University of Hong Kong

Time seriesNLPTensorRTcuMLPolars

An early warning system for US visa-issuance surges that fuses 170k+ news articles, Google Trends interest and real exchange-rate signals across 15 origin countries into one panel. News is embedded, clustered and labelled on quantized TensorRT engines, and a horizon-aware ensemble forecasts surges one to six months ahead.

  • Walk-forward F1 0.96 at a 1-month lead, 0.86 at 6 months; recall never below 0.92
  • 170,784 articles crawled and filtered to 104,333, clustered with cuML HDBSCAN
  • Jina v5 embeddings at ~20k tokens/s via TensorRT INT4 (cosine 0.9999 vs FP32)
  • 58 of 392 country-event-lag signals survive Benjamini-Hochberg correction
NVIDIA Stock Analysis Dashboard
NVIDIA Stock Analysis Dashboard
Python

Streamlit and Plotly dashboard with LLM-backed signals

FintechLLMSentimentData fusion

Fuses ten years of NVDA price history with 7,000+ collected news articles into sentiment-driven signals, technical overlays and hypothetical trade analysis. Sentiment runs through FinBERT and VADER, the technical layer through the indicators-cli package, and the narrative layer through an LLM.

  • Market data, news sentiment, technical indicators and trade simulation in one view
Indicators CLI
Indicators CLI
Python

Open-source command-line tool, published on PyPI

CLIETLFinancePyPITesting

Fetches historical prices from Yahoo Finance and computes nine technical indicators across four timeframes, for one ticker or a batch, writing CSV, JSON, Parquet or Excel. Packaged, documented and released on PyPI, and reused as a dependency by the stock dashboard.

  • 9 indicators (SMA, EMA, MACD, RSI, Bollinger, ATR, OBV, ROC, Stochastic)
  • Batch tickers, custom configs, templates and optional GPU path
IoT Sensor Simulator
IoT Sensor Simulator
Rust

Open-source Kubernetes and Kafka deployment

RustKafkaKubernetesMicroservices

Live IoT sensor data is scarce and usually paywalled. This project replaces it with a configurable Rust producer/consumer fleet on Kafka, deployed to Kubernetes through ConfigMaps, so a simulation can be scaled to any stream rate and wired into other microservices.

SMS Scam Detection: MLOps Pipeline
SMS Scam Detection: MLOps Pipeline
Python

Tracked, reproducible classification experiments

MLOpsNLPScikit-learnMLflow

An end-to-end pipeline over 5,574 labelled SMS messages that compares five classifiers, with every run's hyperparameters, metrics and artefacts tracked in MLflow. The best model separates scams at 94% accuracy with a low false-positive rate.

  • 5,574 messages, 5 model families, MLflow experiment tracking
Portfolio Analysis and Optimization
Portfolio Analysis and Optimization
Python

GE2260 · Introduction to Finance · City University of Hong Kong

Quantitative financeStatisticsMarkowitzMonte Carlo

Constructs a 60/40 fixed-income and growth portfolio from five years of price history, then locates the efficient frontier with Markowitz mean-variance optimization and 20,000 Monte Carlo paths. The growth sleeve prices 18.3% expected annual return at 11.5% volatility, and the blended portfolio is projected to beat the S&P 500 on return and drawdown alike.

  • 20,000 Monte Carlo simulations; collar hedge for high-volatility regimes
  • Diversification verified across a five-year correlation matrix

Research projects with a paper are listed under publications; everything else I have built in the open lives on GitHub.