I learn fast, and I finish.
I keep semiconductor equipment running at Lam Research, where a wrong call ends up on a wafer. On my own time I do machine learning research, and then I try to break the results.
Gradient-boosted trees, a mixture density network, a graph neural network, a transformer, a mixture of experts. None of them survived its checks, and I'd rather find that out myself than believe a backtest.
Work index
What I've worked on
Pick a row for the full story.
House rules · Four rules I hold myself to.
Read all of it.
The manual, the source, the changelog. Picking up a field quickly mostly comes down to not skipping the dull parts.
A backtest is a claim.
It isn't a result until it beats a control that was built to fake it.
Done means it works.
Not that it compiles, not that the suite is green. I run the thing and look at what it did.
Get the answer.
I keep going until I have one, even when the answer is no.
Six eras of research. None found an edge.
June to September 2025. Six model families on daily data for about 7,000 US stocks.
The last model looked great. Then I ran 200 random-entry portfolios with the same stops, sizing and market filter. Their median Sharpe was 1.54, and the model's three runs landed at the 24th, 86th and 88th percentile of random. It was measuring a bull market.
A leak-free test found the signal was there, just pointed at the wrong thing: AUC 0.589 against 0.504 for shuffled labels, nearly all of it from predicting volatility. Plain direction scored 0.513.
Sharpe ratio · the model against random picks
Each era ended when it had its answer, and none of the answers was an edge. The last one looked like one until random entry, with the same stops, sizing and market filter, scored in the same range.
| Era | Dates | Model | Outcome |
|---|---|---|---|
| Aura | Jun 13–24 | LightGBM cross-sectional classifier, 74 features | Sharpe 0.25 against 0.74 for its own random-entry control. |
| Benchmark | Jun 13 | Eight naive predictors, written to give Aura something to beat | The run's data or analysis turned out bad. |
| Buzwup | Jun 26 – Jul 1 | LightGBM, “3% exit within 5 days”, with taxes modelled | Lost 99.95% of its capital in backtest. |
| Catalyst | Jul 6 | Keras mixture density network, 7 Gaussian components | The run's data or analysis turned out bad. |
| Geralt | Jul 8 – Aug 16 | Graph neural network over 6,222 stocks, then a market-wide transformer | Never learned the scale of its own target. Its sanity checks caught it. |
| Darth | Aug 17 – Sep 16 | Mixture-of-experts classifier, PyTorch on CUDA | Walk-forward Sharpe 1.09 / 2.17 / 2.20, all inside the middle 90% of random entry. |
Nothing here ever placed a trade. I directed the research and designed the checks. The code was AI-executed.
A course that teaches an AI coding agent end to end, and checks your work instead of trusting it.
I wanted to know the whole tool, not the ten percent most people use. So I'm building the course that forces me through all of it: thirty modules in dependency order, a dated timeline of every feature, and hands-on drills against a practice repo.
Every drill is graded by a script. Each grader has to fail on the untouched repo and pass on the solved one, or the test suite fails. Every timeline entry carries a source link, or the build fails.
Alpha. Runs locally, not public yet. I designed it, set the bar, and review every change. The code is AI-implemented.
E-commerce for a Ugandan charity, built by volunteers
The Murphy Charitable Foundation Uganda needed a storefront that could take donations and sell goods without a budget for software. I led the frontend: component architecture, the design system, and the review process that let a rotating cast of volunteers ship without stepping on each other.
Equipment maintenance tracking, designed from the lab floor
A tool goes down. Three people each know part of why, and none of it is written anywhere. Six months later the same failure costs the same afternoon. I built the tracker I wanted on the floor, organized around equipment and its history rather than tickets. First on MERN, then rewritten on Next.js and Postgres once client-side fetching stopped paying for itself.
A browser extension that asks if you really want to post that
Recommendation algorithms learn from what you engage with, and arguing with strangers teaches them to show you more strangers to argue with. This extension watches what you type into a reply box and gives you a moment to reconsider before you post. Nothing you type leaves the machine. A tone classifier is the next milestone.
Background
Where the hours went
Lam Research
2021 – nowLaboratory Service Engineer II
Root cause across mechanical, electrical, gas, vacuum and software. In 2026 I was the tool-service expert on a customer escalation taskforce: seven tools back in production, and a recipe race condition traced to a step that called a transfer device idle without waiting for it to say so.
4Human Corporation
2024Volunteer Lead Frontend Engineer
Led the frontend on the largest build at a nonprofit that writes software for other nonprofits.
Oregon Tech
2020BS Mechanical Engineering, Applied Math minor
Cum laude, Tau Beta Pi. The math minor is where the statistics came from.
Contact
Write to me
If you're working on models that have to hold up, or software that has to agree with a machine, I'd like to hear about it.
connor.skudlarek@gmail.comNext.js, statically exported, served from a small server in Oregon.