Blog entry
Four Months Later: What Survived
30 July 2026 · 3 min read
A follow-up to the March snapshot. Since then: a planning-data SaaS grew up and survived its first real data bug, four months of dry-run evidence killed most of a trading system, the physics-LLM program wrapped, and this site learned to rebuild itself.
In March I posted a snapshot of the workbench. Four months on, the honest update is that the most useful thing I built was evidence — some of it confirming, most of it killing. Here’s where everything landed.
The data product grew up
PlanningWatch started as an experiment in scraping Irish council planning portals. It’s now a live SaaS at €29/mo: 31 councils ingested nightly, roughly 12,300 applications tracked, an API with webhooks, and per-council health checks so I know the moment a source goes quiet.
It also survived its first proper data bug. I had assumed council reference numbers were unique. They’re unique per council — two different councils will happily both issue reference 24/1234 — and my globally-unique constraint had been silently dropping colliding records for months. 1,284 references collided across councils. One composite constraint and a full re-scrape later, the database went from 8,201 applications to 12,320. The lesson is old but earns restating: uniqueness is a property of a scope, and you should know exactly which scope you’re claiming.
The trading system met four months of reality
The March post described a multi-strategy trading system in dry-run. The dry run did its job, which is to say it killed most of the system.
The copy-trading bot made 3,122 paper trades in four months: −$224, a 28.3% win rate, negative every single month. Retired. The funding-carry idea died before deployment — gross carry ran between −3% and +2% annualised in 2026, so there was nothing to harvest. A statistical structure scan closed the rest: daily reversion’s edge died in 2022, ETH/BTC is a random walk, and the genuinely real sub-daily signals sit roughly 15× below taker fees.
Two things survived and earned forward tests: a monthly cross-sectional momentum strategy (backtest Sharpe 1.68 — which is exactly why it gets a paper run instead of money) and a day-of-week seasonality in BTC that replicated out of sample at +0.96 Sharpe net of fees. Both get judged in October. The full graveyard is on the dead ends page, and the live experiments are on now.
The dry run’s main value was making those losses fake. I recommend it.
The physics-LLM program wrapped
All of the GPT-2 experiments from the physics-inspired LLM research are complete. The follow-up rounds sharpened the picture: a Gamma-distributed Lloyd-Max quantization grid beat naive absmax by 53× in perplexity, with a fitted shape parameter of k = 1.405 — close to what Dyson Brownian motion predicts for the weight spectrum. Random-matrix-theory-guided pruning came in 83–91% better than random. And a joint entropy-plus-Hessian allocation experiment closed off one direction cleanly: entropy alone wins, and the Hessian proxy was the wrong signal.
The cross-experiment lesson: physics signals are directionally correct, but they need calibration-based error compensation to beat the naive methods at usable perplexity. Scaling the best results to LLaMA-7B is blocked on a 24 GB GPU, so the program is paused rather than finished.
This site now maintains itself
The site you’re reading was rebuilt in July — new identity, no client-side framework code, and a homepage chart of last night’s PlanningWatch ingestion rendered at build time. A scheduled job refreshes the data and redeploys every night at 04:30 UTC. If the timestamps on the now page go stale, something broke and the page will tell on itself. That page — every system I run unattended, with honest statuses and judge dates — plus the dead ends page are the additions I’m happiest with. Negative results rarely get written up; they’re the most useful thing I produced all spring.
There’s also a €0 betting experiment running — it logs value signals against sharp-book closing lines without staking anything, to test whether the one retail edge everyone cites actually shows up. Kill condition: pooled CLV ≤ 0 by late September.
More updates when the judges rule.