Competitive programmer · Singapore
Zheyuan
Yu
- Codeforces Grandmaster (2488)
- USACO Platinum, perfect scorer
- Code Jam & Hacker Cup Top 50
- USAMO Qualifier
Quant research intern at MS Capital · Cambridge CS this autumn · open to quant internships
About
I'm starting Computer Science at Cambridge this year. Most of my time so far has gone to competitive programming and a graph-neural-network research project; more recently to computer vision at Huawei and quantitative research at MS Capital, where I read the literature and test the strategies myself.
Education
University of Cambridge
BA Computer Science, St John's College
2026 – 2029 · United Kingdom
NUS High School of Math and Science
Honors in Mathematics; Majors in CS, Physics, Chemistry
2020 – 2023 · Singapore

Three projects: two public and independently checkable (one runs in your browser), one private.
market-gnn
Public · CI passing2026Does a stock-relationship graph add signal? Twelve leak-controlled experiments.
Twelve pre-registered experiments on whether a stock-relationship graph adds out-of-sample signal — as a correlation proxy and as a real economic link (SEC 13F institutional co-holding), with zero-parameter reads, a GNN-vs-matched-MLP A/B, and a learned temporal model. The answer is mostly no, measured so it can be trusted: every null is powered, every positive is stress-tested. 91 tests, CI green.
- Nothing is taken on faith: point-in-time everything, purged walk-forward, HAC/FDR statistics with a minimum-detectable-effect next to every null — and planted-signal recoveries proving the pipeline detects exactly what each experiment claims to test before any real-data null is believed.
- Return alpha: null everywhere. The correlation proxy and the genuine 13F co-holding link (built from the raw SEC filings, filing-lag PIT) are both powered nulls (co-holding IC +0.012 vs MDE 0.025), for a zero-parameter read and a learned GConvGRU alike. Risk too: a graph-structured covariance ties Ledoit–Wolf (graphical lasso 0.98×, n.s.) — no edge for the minimum-variance portfolio.
- The one positive respects its own pre-registered ceiling: neighbours' vol innovations carry FDR-significant information about forward volatility along the co-holding topology (+0.038, t 2.65, rewire-clean) — reported as information travelling with the topology, never causal spillover, because shared factor-vol exposure is observationally equivalent by design.
- It demotes its own best result: the López-de-Prado battery (CSCV over the config grid, PBO 0.437 ≈ noise; deflated Sharpe 0.74) downgrades the short-term-reversal control from “real signal” to “association, not a strategy — even gross.” REVIEW.md logs every bug adversarial review caught along the way, including a headline number that turned out to be a linear-algebra artifact.
- Python
- PyTorch
- GraphSAGE · GConvGRU
- SEC 13F
- NumPy · pandas
- GitHub Actions (CI)
Clone it and run the tests — the leak controls are verifiable, not claimed.
Method
Point-in-time graph
purged walk-forward
HAC + FDR + MDE
planted-signal recovery
PBO / deflated Sharpe
orderbook
Public · CI · 2026A low-latency matching engine in C++ — that you can run in your browser.
A header-only, price-time-priority limit order book (limit / market / IOC / FOK), with zero engine allocations on the hot path after sized construction, verified by differential fuzzing against a naive reference — and validated against NASDAQ itself by replaying a full TotalView-ITCH day through it. Compiled to WebAssembly, the same engine runs a live simulated market in the browser — and two quant applications on top of it: an execution / transaction-cost lab and an automated market maker.
- C++20
- WebAssembly
- Emscripten
- TypeScript
- GitHub Actions (CI)
quantnews
Private · 2026News-driven systematic equity signals.
A systematic equity trading system. It reads news and filings, turns them into ranked, risk-checked trade ideas, and tracks which ones I actually took and how they turned out.
- Python
- SQLite
- Anthropic API
- SEC EDGAR
- yfinance
- GitHub Actions
Code private; a personal research system.
Four roles, from teaching contest algorithms to quant research.
MS Capital
Apr 2026 – Present · SingaporeQuantitative Research Intern
- Researched factor momentum: pulled strategies from the academic literature, implemented them, and backtested out of sample to see which held up.
- Engineered features from raw market data and evaluated signals on held-out periods, controlling for lookahead and overfitting.
- Built the agent pipelines that made the whole research loop repeatable, from raw data to backtest.
- Factor momentum
- Backtesting
- Feature engineering
- AI agents
Huawei Singapore
Jan 2026 – Mar 2026 · SingaporeComputer Vision Algorithm Engineer Intern
- Built models to pull regions of interest out of images under tight compression limits.
- Looked into the trade-off between latent-space regularization and reconstruction quality in generative models.
- Put together a hybrid VAE and reinforcement-learning setup for adaptive image compression.
- VAE
- Reinforcement learning
- Image compression
- PyTorch
Temasek International
Oct 2023 – Dec 2023 · SingaporeData Analytics Intern
- Analyzed financial datasets with SQL and Tableau to surface trends for the investment team.
- Built dashboards adopted by senior analysts for portfolio reporting.
- Presented findings to stakeholders to inform investment decisions.
- SQL
- Tableau
- Dashboards
- Financial analysis
NUS December Course
Nov 2022 – Dec 2022 · SingaporeLecturer
- Wrote the curriculum and original contest problems for 100+ of the country's top students.
- Ran workshops on algorithms, data structures, and problem-solving with the other lecturers.
- Teaching
- Curriculum
- Competitive programming
The competitive record.
Programming and olympiad maths. The top ones link out so you can check them.
Competitive Programming
Mathematics
Scholarships
2022 · Unpublished research
Optimizing Longest Simple Path with Machine Learning
Karimi Zayan, Zheyuan Yu, Tia Shi Wei. Mentored by Rishabh Anand and Ng Chee Loong, NUS High School.
The longest simple path problem is a classic NP-complete problem, with applications from circuit-board design to robotics. We approximate it on general undirected, unweighted graphs by training a GraphSAGE graph neural network to score each edge on its likelihood of lying on the longest path, then running beam search over those scores to construct the path.
- Trained a GraphSAGE GNN to classify edges by their probability of belonging to the longest simple path, using adjacency-matrix eigenvectors as node features and a weighted loss to correct dataset bias.
- Drove beam search with the product of predicted edge weights, keeping the top candidates at each extension step.
- Generalized beyond the training distribution: trained on 20-vertex graphs, evaluated on graphs up to 200 vertices.
Results
performance ratio, higher is better. +0.6 points over the 2010 baseline. Axis zoomed to 0.95–0.98.
Trained on 20-vertex graphs, the model still finds near-optimal paths on graphs up to 200 vertices, generalizing well beyond its training size, and edges a 2010 genetic-algorithm baseline.