Arconian
A rule-based system for trading short-term drift in U.S. small caps that absorb information slowly, scored by a five-signal composite and held for 1–3 days. The backtest looked like a weak but real signal. Per-day tests, one of them pre-registered, showed the composite doesn’t rank stocks, so I closed the project.
- Python
- SQLite
- CRSP via WRDS
- pytest
The idea comes from the literature on slow information diffusion: a stock with thin analyst coverage and little institutional ownership absorbs news more slowly than a large, heavily covered name. Arconian looked inside that slow universe for days when something unusual happened (a volume spike, an outsized move, a break from its sector) and planned to hold for the 1–3 days it should take the price to finish adjusting, in the direction of the day’s move.
I built the system with AI-assisted development from a whitepaper I designed: I worked with Claude on the design documents and used Claude Code to generate the codebase and carry out each later piece of work from a written brief, while the thesis, the validation gates, the research questions and the calls about what the results meant were mine. It came to about 12,000 lines of Python plus tests: a daemon that scanned three times a day, scored every name and paper-traded the ones that cleared the bar. The public repository is a snapshot of private work. Arconian is the third iteration of Zinnia, a private project I started in April 2025.
A backtest over 1.29 million stock-days gave a pooled IC of +0.013, which I read as a weak but real signal. An exploratory per-day check across the backtest’s 362 days showed it was a between-day time effect. A pooled correlation is satisfied just as well by days when the whole market scored high and then rose as by stocks that beat their peers, and a strategy that picks a few names a day only earns the second kind. Measured across stocks within each day, the composite’s IC averages −0.003 (Newey-West t = −0.54).
That test still had a hole. Most of the signals say something unusual happened, not which way, so a stock that rose and kept rising cancels one that fell and kept falling. The test the thesis called for uses signed returns, so I recovered each day’s direction from CRSP and pre-registered a signed-return test. I wrote the pre-registration after I had seen the raw-return results on the same data, and it fixed the test, the sample and the decision rule: the signal is alive only if its per-day IC has a Newey-West t of at least 2.0 and the top decile is profitable after 120 bps of costs for longs and 150 bps for shorts.
On the 288 of 362 days my CRSP access covers, the signed IC is −0.004 (t = −1.18) and the top decile loses about 136 bps per trade after costs. By the rule I fixed in advance, the signal is dead, so I closed the project rather than repair the operations layer and restart the paper-trading clock.
Two things I’d do differently. Test the cross-sectional IC before building anything: a per-day Spearman takes eleven seconds to run and would very likely have ended the project in April, before the paper trader, the risk engine and two months of operations. And check that a test matches the hypothesis before trusting its answer; my first decisive test couldn’t see the effect the thesis predicted.




