Lab Notes
How Spectral got built. The hypotheses, the failures, the methodology, and what survived.
This is the running build log for Spectral, our first project. We started out to test whether astrology had any signal for financial markets. The astrology died. The tool we built to kill it found a ~788-day cycle in the credit market instead. These notes walk through the whole arc — manifesto, scaffolding, failed hypotheses, and the methodology that kept us honest.
Read in order if you want the full story. Jump around if you don’t.
We're feeding astrology into a trading engine
Before you close this tab, give us three minutes to explain why that's not crazy.
Building JLMoney: a macro synthesis engine that shows its work
Phase 0. The scaffolding. Why Elixir, why CA-initialized genetic algorithms, and what success looks like before we touch real markets.
The GA found something. We don't trust it yet.
First contact with real market data. 60.3% accuracy, unanimous convergence on a regime engine, and one very suspicious 'consensus' number.
We built a GA to predict the S&P 500. Then we built the machine that killed it.
A 70.5% accurate model meets a leakage audit, a permutation test, and a null distribution that refuses to move. The model loses. That's the point.
We ran 393 statistical tests on astrology. One survived.
TIME 100, 10,000 stratified null dates, Fisher's exact tests, Bonferroni correction. One feature got through — and it's not the one we expected.
The Saturn signal survived. Now we need to explain why.
Permutation test: 0/10,000. Within-window era control: p = 0.002. The signal is not just 'born in the right era.' It's 'born in the right months within the right era.'
The Saturn signal didn't replicate.
Nobel laureates. 966 of them. Saturn in Taurus at 9.0% vs null base rate 8.6%. The hypothesis is dead — and the pipeline worked exactly as designed.
We tested astrology against 40,000 real events. The results were too good.
S&P 500, VIX, earthquakes, wars. Dozens of features survive correction — and then the aliasing confound shows up.
Three layers of signal, three different explanations
Slow-planet aliasing dies. September seasonality gets a costume change. And underneath both of them, Mars in Capricorn refuses to die.
There's a ~2.1-year cycle in market volatility. We found it with astrology.
We didn't find an astrological signal. We found an economic cycle. The astrology was just the detector.
We can see the cycle now. It's real and it's not Mars.
Bandpass filter, Hilbert transform, 788-day mean period, 8.4% of variance explained, Rayleigh R = 0.067. Two independent oscillators with similar frequencies.
It's the credit cycle.
One correlation came back at 0.975. High-yield bond volatility trails S&P volatility by 25 days. The whole cascade reads like a textbook credit cycle.
The GA doesn't have enough to chew on. That's the finding.
Walk-forward validation across three models and three horizons. AUC hovers near 0.5. The cycle is real — but not point-predictive in the feature space we have.